Prev: 808A Up: Map Next: 80D1
8092: Print an option on the intro screen
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