



       NAM BINBCD
       OPT MEM
       OPT S
       SPC 1
**********
*      THIS ROUTINE CONVERTS A 16-BIT UNSIGNED BINARY
*      NUMBER TO A PACKED 5-DIGIT (3 BYTE) BCD
*      EQUIVALENT.  REV. 1.0   10/18/75
*      AUTHOR:  DON L. JACKSON, MOTOROLA SPD M/D BB102
**********
       SPC 1
       ORG $0
BIN1   RMB 1 *MS BYTE OF BINARY NUMBER
BIN0   RMB 1 *LS BYTE OF BINARY NUMBER
DEC2   RMB 1 *MS 1 DIGIT  OF BCD RESULT
DEC1   RMB 1 *   2 DIGITS OF BCD RESULT
DEC0   RMB 1 *LS 2 DIGITS OF BCD RESULT
       SPC 1
CONB7  FCB $28,1,,$64,,,$32,,,$16,,0
CONB15 FCB $68,$27,3,$84,$63,1,$92,$81,0
       FCB ,$56,2,0
       ORG $500
BINBCD CLR A *CLEAR THE
       STA A DEC1 *  RESULT
       STA A DEC2 *    AREA
       SPC 1
       LDA B BIN0
       AND B #$F *SAVE 4 LSB
       ABA *ADD TO ACC A
       DAA *DECIMAL ADJUST
       STA A DEC0 *STORE IN ANSWER LSD
       SPC 1
       LDX #CONB7-3
       LDA B BIN0 *LOAD LOWEST 8 BITS
       AND B #$F0 *SAVE 4 MSB OF LOWEST BYTE
       BSR BITSR
       LDX #CONB15-3
       LDA B BIN1 *LOAD HIGHEST 8 BITS
BITSR  INX *SET X TO CONSTANT
       INX
       INX
       ASL B *SHIFT BIT TO CARRY
       BCC NEXTB *BRANCH IF BIT IS ZERO
       BSR ADDSR *ADD CONSTANT IF NOT ZERO
NEXTB  TST B
       BNE BITSR *DO NEXT BIT IF ANY REMAIN
       RTS
       SPC 1
ADDSR  LDA A DEC0 *ADD CONSTANT TO RESULT
       ADD A 0,X *  SUBROUTINE.
       DAA
       STA A DEC0
       LDA A DEC1
       ADC A 1,X
       DAA
       STA A DEC1
       LDA A DEC2
       ADC A 2,X
       DAA
       STA A DEC2
       RTS 
       MON
