![]() |
Routines |
Prev: 28160 | Up: Map | Next: 28292 |
Used by the routines at 28295, 28337 and 28760. Computes the ASCII codes for the digits of the number in HL, stores them in the buffer at 32714, and then prints them.
|
||||||
28186 | PUSH DE | Save the display file address | ||||
28187 | EX DE,HL | Transfer the number to print to DE | ||||
28188 | LD HL,32719 | Fill the number string buffer at 32714 with space characters | ||||
28191 | LD B,5 | |||||
28193 | DEC L | |||||
28194 | LD (HL),32 | |||||
28196 | DJNZ 28193 | |||||
28198 | LD A,48 | 48 is the ASCII code for the digit '0' | ||||
28200 | LD BC,55536 | BC=-10000 | ||||
28203 | EX DE,HL | Transfer the number to print to HL | ||||
28204 | ADD HL,BC | Is HL>=10000? | ||||
28205 | JR C,28235 | Jump if so to compute and store the 10000s digit | ||||
28207 | INC E | Point DE at the slot for the 1000s digit in the number string buffer | ||||
28208 | SBC HL,BC | Add the 10000 back | ||||
28210 | LD BC,64536 | BC=-1000 | ||||
28213 | ADD HL,BC | Is HL>=1000? | ||||
28214 | JR C,28248 | Jump if so to compute and store the 1000s digit | ||||
28216 | INC E | Point DE at the slot for the 100s digit in the number string buffer | ||||
28217 | SBC HL,BC | Add the 1000 back | ||||
28219 | LD BC,65436 | BC=-100 | ||||
28222 | ADD HL,BC | Is HL>=100? | ||||
28223 | JR C,28261 | Jump if so to compute and store the 100s digit | ||||
28225 | INC E | Point DE at the slot for the 10s digit in the number string buffer | ||||
28226 | SBC HL,BC | Add the 100 back | ||||
28228 | LD C,246 | BC=-10 | ||||
28230 | ADD HL,BC | Is HL>=10? | ||||
28231 | JR C,28273 | Jump if so to compute and store the 10s digit | ||||
28233 | JR 28280 | Jump forward to compute and store the units digit | ||||
Compute and store the 10000s digit.
|
||||||
28235 | INC A | Get the ASCII code for the 10000s digit in A | ||||
28236 | ADD HL,BC | |||||
28237 | JR C,28235 | |||||
28239 | LD (DE),A | Place the 10000s digit into the number string buffer | ||||
28240 | SBC HL,BC | |||||
28242 | INC E | Point DE at the slot for the 1000s digit | ||||
28243 | LD A,47 | |||||
28245 | LD BC,64536 | BC=-1000 | ||||
Compute and store the 1000s digit.
|
||||||
28248 | INC A | Get the ASCII code for the 1000s digit in A | ||||
28249 | ADD HL,BC | |||||
28250 | JR C,28248 | |||||
28252 | LD (DE),A | Place the 1000s digit into the number string buffer | ||||
28253 | LD A,47 | |||||
28255 | SBC HL,BC | |||||
28257 | LD BC,65436 | BC=-100 | ||||
28260 | INC E | Point DE at the slot for the 100s digit | ||||
Compute and store the 100s digit.
|
||||||
28261 | INC A | Get the ASCII code for the 100s digit in A | ||||
28262 | ADD HL,BC | |||||
28263 | JR C,28261 | |||||
28265 | LD (DE),A | Place the 100s digit into the number string buffer | ||||
28266 | LD A,47 | |||||
28268 | SBC HL,BC | |||||
28270 | LD C,246 | BC=-10 | ||||
28272 | INC E | Point DE at the slot for the 10s digit | ||||
Compute and store the 10s digit.
|
||||||
28273 | INC A | Get the ASCII code for the 10s digit in A | ||||
28274 | ADD HL,BC | |||||
28275 | JR C,28273 | |||||
28277 | LD (DE),A | Place the 10s digit into the number string buffer | ||||
28278 | LD A,48 | |||||
Compute and store the units digit.
|
||||||
28280 | SBC HL,BC | |||||
28282 | INC E | Point DE at the slot for the units digit | ||||
28283 | ADD A,L | A=ASCII code for the units digit | ||||
28284 | LD (DE),A | Place it into the number string buffer | ||||
The number string buffer is now ready.
|
||||||
28285 | LD E,202 | DE=32714 (start of the number string buffer) | ||||
28287 | POP HL | Restore the display file address to HL | ||||
28288 | EX DE,HL | Transfer it to DE, and point HL at the number string buffer at 32714 | ||||
28289 | JP 28160 | Print the number |
Prev: 28160 | Up: Map | Next: 28292 |