Routines |
Prev: 33115 | Up: Map | Next: 33210 |
Routine that prints a string of text for menu 1 (32825) and menu 2 (33051). The menu font used is the standard ZX Spectrum ROM character set, rather than the in-game text characters.
|
||||
33145 | LD DE,(35776) | Get the address pointer for the address of the text to print (e.g. 35778/35994). | ||
33149 | LD A,(DE) | Get first byte = length of text string | ||
33150 | INC DE | Increment to start of text string, and store address | ||
33151 | LD (35776),DE | |||
33155 | LD (35773),A | Store the length of string (number of characters) | ||
33158 | LD (35774),HL | Store screen address position | ||
Loop for printing the text characters on screen
|
||||
33161 | LD DE,(35776) | Get the next text character to print | ||
33165 | LD A,(DE) | |||
33166 | INC DE | Increment to next text character and store address for future printing | ||
33167 | LD (35776),DE | |||
33171 | LD HL,(23606) | Get pointer to the ZX Spectrum character set (CHARS) | ||
33174 | LD D,0 | Get the text character's ASCII value (store in DE register pair) | ||
33176 | LD E,A | |||
33177 | LD B,8 | 8 pixel rows to print | ||
33179 | ADD HL,DE | Calculate the address of the character in the character set ready to print [CHARS address + (character ASCII value x 8)] and swap into DE | ||
33180 | DJNZ 33179 | |||
33182 | EX DE,HL | |||
33183 | LD HL,(35774) | Get the screen address position | ||
33186 | LD C,H | Preserve screen address of top pixel row in C register | ||
33187 | LD B,8 | 8 pixel lines to print | ||
Draw the 8 pixel row bytes of the text character
|
||||
33189 | LD A,(DE) | Get pixel row byte of character | ||
33190 | INC DE | (and move pointer along to the next one) | ||
33191 | LD (HL),A | Copy byte onto screen | ||
33192 | INC H | Move down 1 pixel line | ||
33193 | DJNZ 33189 | Repeat for 8 pixel rows to print full text character | ||
Move on to the next character in the string and next screen position
|
||||
33195 | INC L | Move one horizontal character position to the right... | ||
33196 | LD H,C | Retrieve vertical screen address of top pixel row from C register and put into high byte of H register | ||
33197 | LD (35774),HL | ...and store this screen address ready for next character | ||
33200 | LD A,(35773) | Decrement and re-store the text length counter | ||
33203 | DEC A | |||
33204 | LD (35773),A | |||
33207 | JR NZ,33161 | Repeat loop x number of characters in the text string | ||
33209 | RET |
Prev: 33115 | Up: Map | Next: 33210 |