Routines 
Prev: 19FB  Up: Map 


OUT_NUM_1  1A1B  PUSH DE  Save the other registers throughout the subroutine.  
1A1C  PUSH HL  
1A1D  XOR A  Clear the A register.  
1A1E  BIT 7,B  Jump forward to print a zero rather than '2' when reporting on the editline.  
1A20  JR NZ,OUT_NUM_4  
1A22  LD H,B  Move the number to the HL register pair.  
1A23  LD L,C  
1A24  LD E,$FF  Flag 'no leading spaces'.  
1A26  JR OUT_NUM_3  Jump forward to print the number.  
The entry point OUT_NUM_2, used by the routine at OUT_LINE, will lead to the number indirectly addressed by the HL register pair being printed. This time any necessary leading spaces will appear. Again the limit of correctly printed numbers is 9,999.


OUT_NUM_2  1A28  PUSH DE  Save the DE register pair.  
1A29  LD D,(HL)  Fetch the number into the DE register pair and save the pointer (updated).  
1A2A  INC HL  
1A2B  LD E,(HL)  
1A2C  PUSH HL  
1A2D  EX DE,HL  Move the number to the HL register pair and flag 'leading spaces are to be printed'.  
1A2E  LD E,$20  
Now the integer form of the number in the HL register pair is printed.


OUT_NUM_3  1A30  LD BC,$FC18  This is '1,000'.  
1A33  CALL OUT_SP_NO  Print a first digit.  
1A36  LD BC,$FF9C  This is '100'.  
1A39  CALL OUT_SP_NO  Print the second digit.  
1A3C  LD C,$F6  This is '10'.  
1A3E  CALL OUT_SP_NO  Print the third digit.  
1A41  LD A,L  Move any remaining part of the number to the A register.  
OUT_NUM_4  1A42  CALL OUT_CODE  Print the digit.  
1A45  POP HL  Restore the registers before returning.  
1A46  POP DE  
1A47  RET 
Prev: 19FB  Up: Map 