Routines |
Prev: 808A | Up: Map | Next: 80D1 |
Used by the routine at 8000.
|
||||
8092 | LD IX,$8122 | 8122 = options data | ||
8096 | LD IY,$826B | 826B = strings to print | ||
809A | LD B,$05 | Five lines | ||
809C | PUSH BC | Remember number of lines. | ||
This entry point is used by the routines at 91E8 (printing the score) and 949E (printing the number of lives).
|
||||
809D | LD H,$00 | Put the Y position in HL. | ||
809F | LD L,(IX+$01) | |||
80A2 | ADD HL,HL | Double it to point at a whole word. | ||
80A3 | LD DE,$EA60 | Add the base pointer to screen addresses (EA60). so HL now points to the right row on screen. | ||
80A6 | ADD HL,DE | |||
80A7 | LD D,$00 | Put the X position in DE. | ||
80A9 | LD E,(IX+$00) | |||
80AC | LD A,(HL) | Extract the screen address for this row and put it in HL. | ||
80AD | INC HL | |||
80AE | LD H,(HL) | |||
80AF | LD L,A | |||
80B0 | ADD HL,DE | Add the column, so HL points to the correct place on screen. | ||
80B1 | LD A,(IY+$00) | Get the character to print. | ||
80B4 | RES 7,A | Bit 7 is used as a string terminator, not used here. | ||
80B6 | CALL $80D1 | Print the character. | ||
80B9 | LD A,(IY+$00) | Get the character again. | ||
80BC | INC IY | Move to the next character. | ||
80BE | INC HL | Move to the next screen position. | ||
80BF | BIT 7,A | If bit 7 is not set, loop back to print the next character. | ||
80C1 | JR Z,$80B1 | |||
80C3 | INC IX | Move to the next location data. | ||
80C5 | INC IX | |||
80C7 | INC IX | |||
80C9 | INC IX | |||
80CB | INC IX | |||
80CD | POP BC | Restore the number of lines. | ||
80CE | DJNZ $809C | Loop back round if there is more to do, otherwise exit. | ||
80D0 | RET |
Prev: 808A | Up: Map | Next: 80D1 |