
 1000  *SAVE S.PRODOS NUMOUT
 1010  *--------------------------------
 1020         .OR $A62F
 1030         .TA $800
 1040  *--------------------------------
 1050  *   CONVERT 00.XX.AA FROM BINARY TO DECIMAL
 1060  *   STORE UNITS DIGIT AT $201,Y
 1070  *   STORE OTHER DIGITS AT SUCCESSIVE LOWER ADDRESSES
 1080  *
 1090  *      Note:  it is assumed and required that
 1100  *             ACCUM+2 already by zeroed!
 1110  *             Either that, or already set to the
 1120  *             highest byte of a 24-bit value.
 1130  *--------------------------------
 1140  CONVERT.TO.DECIMAL
 1150         STX ACCUM+1
 1160         STA ACCUM
 1170  .1     JSR DIVIDE.ACCUM.BY.TEN
 1180         LDA REMAINDER
 1190         ORA #"0"
 1200         STA BUFFER+1,Y
 1210         DEY
 1220         LDA ACCUM    CHECK IF QUOTIENT ZERO
 1230         ORA ACCUM+1
 1240         ORA ACCUM+2
 1250         BNE .1
 1260         RTS
 1270  *--------------------------------
 1280  DIVIDE.ACCUM.BY.TEN
 1290         LDX #24      24 BITS IN DIVIDEND
 1300         LDA #0       START WITH REM=0
 1310         STA REMAINDER
 1320  .1     JSR SHIFT.ACCUM.LEFT
 1330         ROL REMAINDER
 1340         SEC          REDUCE REMAINDER MOD 10
 1350         LDA REMAINDER
 1360         SBC #10
 1370         BCC .2       STILL < 10
 1380         STA REMAINDER
 1390         INC ACCUM    QUOTIENT BIT
 1400  .2     DEX          NEXT BIT
 1410         BNE .1
 1420         RTS
 1430  *--------------------------------
 1440  ACCUM      .EQ $BCAF,BCB0,BCB1
 1450  REMAINDER  .EQ $BCB2
 1460  BUFFER     .EQ $0200
 1470  *--------------------------------
 1480         .OR $AAD7
 1490         .TA $900
 1500  *--------------------------------
 1510  SHIFT.ACCUM.LEFT
 1520         ASL ACCUM
 1530         ROL ACCUM+1
 1540         ROL ACCUM+2
 1550         RTS
 1560  *--------------------------------
 1570         .LIF

