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