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 