Routines |
Prev: 8A37 | Up: Map | Next: 8A61 |
Used by the routines at GameMenu, Select1Or2PlayerGame, Select_Yes/No, PlayerNameInput, Print_Header, ChooseLocationOrTakeJob, Handler_LocationChoice, Erase_ArrowSymbol, Print_ArrowSymbol, Handler_SubGame, HighScoreTable and 9754.
|
||||||||||
Print_String | 8A3D | LD A,(HL) | Fetch a character from the string pointer and store it in A. | |||||||
8A3E | PUSH HL | Stash the string pointer on the stack. | ||||||||
8A3F | AND %01111111 | Strip off the termination bit. | ||||||||
Fetch the font UDG for the current character.
|
||||||||||
8A41 | LD L,A | Create an offset in HL. | ||||||||
8A42 | LD H,$00 | |||||||||
8A44 | ADD HL,HL | Letter UDGs are 08 bytes, so multiply HL by 08. | ||||||||
8A45 | ADD HL,HL | |||||||||
8A46 | ADD HL,HL | |||||||||
8A47 | LD BC,$F740 | Add Font to HL to reference the UDG for the current letter in the string. | ||||||||
8A4A | ADD HL,BC | |||||||||
Now print it to the screen buffer.
|
||||||||||
8A4B | CALL Print_Character | Call Print_Character. | ||||||||
8A4E | POP HL | Restore the string pointer from the stack. | ||||||||
8A4F | INC DE | Increment the screen buffer pointer by one. | ||||||||
8A50 | BIT 7,(HL) | Test for the termination bit in the current letter *HL. | ||||||||
8A52 | INC HL | Increment the string pointer by one. | ||||||||
8A53 | JR Z,Print_String | Jump to Print_String until the terminator bit is found. | ||||||||
8A55 | RET | Return. | ||||||||
Printing routine.
|
||||||||||
Print_Character | 8A56 | LD B,$08 | Set a counter in B of 08 for the number of bytes in a letter UDG. | |||||||
8A58 | PUSH DE | Stash the screen buffer pointer on the stack. | ||||||||
Print_Character_Loop | 8A59 | LD A,(HL) | Fetch the letter UDG byte from *HL... | |||||||
8A5A | LD (DE),A | ...and write it to the screen buffer using the position stored in *DE. | ||||||||
8A5B | INC HL | Increment the string pointer by one. | ||||||||
8A5C | INC D | Move right one byte to the next screen buffer position. | ||||||||
8A5D | DJNZ Print_Character_Loop | Decrease the UDG byte counter by one and loop back to Print_Character_Loop until the letter has been printed to the screen. | ||||||||
8A5F | POP DE | Restore the screen buffer pointer from the stack. | ||||||||
8A60 | RET | Return. |
Prev: 8A37 | Up: Map | Next: 8A61 |