Routines |
Prev: 6BB2 | Up: Map | Next: 6C17 |
|
||||||||
6BB4 | LD HL,$E30B | |||||||
6BB7 | LD B,L | B=11 | ||||||
6BB8 | DEC L | Clear the buffer at E300, which will be used to store the ASCII codes of the digits | ||||||
6BB9 | LD (HL),$00 | |||||||
6BBB | DJNZ $6BB8 | |||||||
6BBD | LD A,$30 | 0x30 is the code for '0' | ||||||
Before inserting any ASCII codes into the buffer, we need to figure out whether the first digit is the 10000s, 1000s, 100s, 10s or units digit.
|
||||||||
6BBF | LD BC,$D8F0 | BC=-10000 | ||||||
6BC2 | EX DE,HL | DE=E300 | ||||||
6BC3 | ADD HL,BC | Subtract 10000 | ||||||
6BC4 | JR C,$6BE4 | Jump if it 'went' | ||||||
6BC6 | SBC HL,BC | Otherwise add the 10000 back | ||||||
6BC8 | LD BC,$FC18 | BC=-1000 | ||||||
6BCB | ADD HL,BC | Subtract 1000 | ||||||
6BCC | JR C,$6BF1 | Jump if it 'went' | ||||||
6BCE | SBC HL,BC | Otherwise add the 1000 back | ||||||
6BD0 | LD BC,$FF9C | BC=-100 | ||||||
6BD3 | ADD HL,BC | Subtract 100 | ||||||
6BD4 | JR C,$6BFE | Jump if it 'went' | ||||||
6BD6 | SBC HL,BC | Otherwise add the 100 back | ||||||
6BD8 | LD C,$F6 | BC=-10 | ||||||
6BDA | ADD HL,BC | Subtract 10 | ||||||
6BDB | JR C,$6C0A | Jump if it 'went' | ||||||
6BDD | SBC HL,BC | Otherwise add the 10 back | ||||||
6BDF | LD A,L | A=units left | ||||||
6BE0 | AND A | Are there any? | ||||||
6BE1 | RET Z | Return if not (nothing to do) | ||||||
6BE2 | JR $6C12 | Jump forward to place the units digit into the buffer | ||||||
Compute and insert the 10000s digit.
|
||||||||
6BE4 | INC A | Get the ASCII code for the 10000s digit in A | ||||||
6BE5 | ADD HL,BC | |||||||
6BE6 | JR C,$6BE4 | |||||||
6BE8 | SBC HL,BC | |||||||
6BEA | LD BC,$FC18 | BC=-1000 | ||||||
6BED | LD (DE),A | Place the 10000s digit into the buffer | ||||||
6BEE | LD A,$2F | |||||||
6BF0 | INC E | Move DE along to the next slot in the buffer | ||||||
Compute and insert the 1000s digit.
|
||||||||
6BF1 | INC A | Get the ASCII code for the 1000s digit in A | ||||||
6BF2 | ADD HL,BC | |||||||
6BF3 | JR C,$6BF1 | |||||||
6BF5 | SBC HL,BC | |||||||
6BF7 | LD BC,$FF9C | BC=-100 | ||||||
6BFA | LD (DE),A | Place the 1000s digit into the buffer | ||||||
6BFB | LD A,$2F | |||||||
6BFD | INC E | Move DE along to the next slot in the buffer | ||||||
Compute and insert the 100s digit.
|
||||||||
6BFE | INC A | Get the ASCII code for the 100s digit in A | ||||||
6BFF | ADD HL,BC | |||||||
6C00 | JR C,$6BFE | |||||||
6C02 | SBC HL,BC | |||||||
6C04 | LD (DE),A | Place the 100s digit into the buffer | ||||||
6C05 | LD C,$F6 | BC=-10 | ||||||
6C07 | LD A,$2F | |||||||
6C09 | INC E | Move DE along to the next slot in the buffer | ||||||
Compute and insert the 10s digit.
|
||||||||
6C0A | INC A | Get the ASCII code for the 10s digit in A | ||||||
6C0B | ADD HL,BC | |||||||
6C0C | JR C,$6C0A | |||||||
6C0E | SBC HL,BC | |||||||
6C10 | LD (DE),A | Place the 10s digit into the buffer | ||||||
6C11 | INC E | Move DE along to the next slot in the buffer | ||||||
Compute and insert the units digit.
|
||||||||
6C12 | LD A,L | A=number of units left | ||||||
6C13 | ADD A,$30 | A=ASCII code for the units digit | ||||||
6C15 | LD (DE),A | Place this into the buffer | ||||||
6C16 | RET |
Prev: 6BB2 | Up: Map | Next: 6C17 |