Prev: 6C82 Up: Map Next: 6CB6
6C96: Print Character
Used by the routines at PrintStringColour, DrawHUDPanel and Score_1UP.
Input
A ASCII value to print
HL Screen address
PrintScreen 6C96 PUSH BC Stash BC, DE and HL on the stack.
6C97 PUSH DE
6C98 PUSH HL
6C99 LD L,A Set HL to the character code.
6C9A LD H,$00
6C9C ADD HL,HL Calculate offset for ASCII character (HL=HL * 8).
6C9D ADD HL,HL
6C9E ADD HL,HL
6C9F LD DE,($5C36) DE=CHARS.
6CA3 ADD HL,DE DE=HL + 3C00. For examples of usage;
Letter ASCII Value * 8 (offset) CHARS + offset
"U" 55 02A8 3EA8
"L" 4C 0260 3E60
"T" 54 02A0 3EA0
"I" 49 0248 3E48
"M" 4D 0268 3E68
"A" 41 0208 3E08
"T" 54 02A0 3EA0
"E" 45 0228 3E28
6CA4 EX DE,HL
Print the character to the screen.
6CA5 POP HL Restore HL, containing the screen buffer location, from the stack.
6CA6 LD B,$08 B=08 (08 rows of pixels).
PrintScreen_Loop 6CA8 LD A,(DE) Copy a byte of the character to the screen buffer.
6CA9 LD (HL),A
6CAA INC DE Move on to the next byte of the character.
6CAB INC H Move onto the next pixel line.
6CAC DJNZ PrintScreen_Loop Decrease the pixel row counter by one and loop back to PrintScreen_Loop until all 08 rows have been drawn.
6CAE POP DE Restore DE and BC from the stack.
6CAF POP BC
Reset HL and move to the next column, ready to print the next character.
6CB0 LD A,H H=H - 08 (reset the display line).
6CB1 SUB $08
6CB3 LD H,A
6CB4 INC L Move on to the next screen column.
6CB5 RET Return.
Prev: 6C82 Up: Map Next: 6CB6