Prev: DABF Up: Map Next: DB7E
DB2E: Print Numbers
Used by the routines at D352, Print_Bonus and Handler_MainMenu.
Input
A Number of digits to print
BC Screen co-ordinates where to print
DE Pointer to address of digits to print
Print_Numbers DB2E PUSH AF Stash AF on the stack.
DB2F CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
DB32 POP AF Restore AF from the stack.
DB33 RRCA RRCA.
DB34 LD B,A B=A.
This entry point is used by the routines at Print_Score and Print_Level.
Print_Numbers_0 DB35 LD A,(DE) A=*DE.
DB36 LD C,A C=A.
DB37 AND %11110000 Keep only bits 4-7.
DB39 RRCA RRCA.
DB3A CALL Print_Numbers_1 Call Print_Numbers_1.
DB3D INC HL Increment HL by one.
DB3E LD A,C A=C.
DB3F AND %00001111 Keep only bits 0-3.
DB41 RLCA RLCA.
DB42 RLCA
DB43 RLCA
DB44 CALL Print_Numbers_1 Call Print_Numbers_1.
DB47 INC DE Increment DE by one.
DB48 INC HL Increment HL by one.
DB49 DJNZ Print_Numbers_0 Decrease counter by one and loop back to Print_Numbers_0 until counter is zero.
DB4B RET Return.
Print_Numbers_1 DB4C PUSH BC Stash BC, DE and HL on the stack.
DB4D PUSH DE
DB4E PUSH HL
DB4F LD B,$00 B=00.
DB51 LD C,A C=A.
DB52 PUSH HL Stash HL on the stack.
DB53 LD HL,$F2CE HL=CustomFont.
DB56 ADD HL,BC HL+=BC.
DB57 POP DE Restore DE from the stack.
DB58 LD B,$08 B=08.
Print_Numbers_2 DB5A LD A,(HL) A=*HL.
DB5B LD (DE),A Write A to *DE.
DB5C INC HL Increment HL by one.
DB5D LD IX,$D83A IX=Time.
DB61 BIT 1,(IX+$00) Test bit 1 of *IX+00.
DB65 JR Z,Print_Numbers_3 Jump to Print_Numbers_3 if HL is zero.
DB67 LD A,B Jump to Print_Numbers_3 if B is not equal to 05.
DB68 CP $05
DB6A JR NZ,Print_Numbers_3
DB6C PUSH HL Stash HL on the stack.
DB6D EX DE,HL Exchange the DE and HL registers.
DB6E LD DE,$06E0 HL-=06E0.
DB71 SBC HL,DE
DB73 EX DE,HL Exchange the DE and HL registers.
DB74 POP HL Restore HL from the stack.
DB75 JR Print_Numbers_4 Jump to Print_Numbers_4.
Print_Numbers_3 DB77 INC D Increment D by one.
Print_Numbers_4 DB78 DJNZ Print_Numbers_2 Decrease counter by one and loop back to Print_Numbers_2 until counter is zero.
DB7A POP HL Restore HL, DE and BC from the stack.
DB7B POP DE
DB7C POP BC
DB7D RET Return.
Prev: DABF Up: Map Next: DB7E