Prev: A556 Up: Map Next: A5AA
A570: Draw the number saved in charcode buffer at $A23D into display file
Used by the routines at 98C9, 98D9, 9918 and 9D68.
Input
E Horizontal position of the unit digit
L Vertical position of the number to draw
B Number of digits to draw
A570 PUSH IX Save IX
A572 LD IX,$A23F Point IX to the unit charcode to draw
A576 LD H,$00 Computes offset for vertical position
A578 ADD HL,HL
A579 LD D,$00 Save DE
A57B PUSH DE
A57C LD DE,$AC9A Set HL to point to address of first digit into display file lookup table
A57F ADD HL,DE
A580 LD E,(HL) Set DE to the corresponding address into display file
A581 INC HL
A582 LD D,(HL)
A583 POP HL Restore HL
A584 ADD HL,DE Adds horizontal position to address on display file
A585 EX DE,HL Exchange DE and HL
A586 PUSH BC Save BC
A587 PUSH DE Save DE
A588 LD L,(IX+$00) Set HL to the charcode digit pointed by IX
A58B LD H,$00
A58D ADD HL,HL Computes offset of the charcode into charset table to set HL to the graphics data for the digit
A58E ADD HL,HL
A58F ADD HL,HL
A590 LD BC,$6206
A593 ADD HL,BC
A594 CALL $A5A1 Draw digit into display file
A597 INC IX Point IX to the next charcode digit
A599 POP DE Restore DE
A59A DEC DE Point DE to the position of the previous digit into display file
A59B POP BC Restore BC
A59C DJNZ $A586 Jump back until all digits copied
A59E POP IX Restore IX
A5A0 RET
Draw digit into display file
A5A1 LD B,$08 Set B to the number of bytes to draw
A5A3 LD A,(HL) Copy graphics data from HL to display file
A5A4 LD (DE),A
A5A5 INC HL Increment address of graphic data
A5A6 INC D Increment address of display file (next line)
A5A7 DJNZ $A5A3 Jump back until the digit is draw
A5A9 RET
Prev: A556 Up: Map Next: A5AA