![]() |
Routines |
| Prev: 28160 | Up: Map | Next: 28292 |
|
||||||||||
| 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 |