Here is the BBC code, .ssd for the bin to bcd described in sample code here
http://www.retrosoftware.co.uk/wiki/index.php/BIN/HEX_to_BCD_%28to_Decimal%29In case you don't know, you can just copy here and then paste in BeebEm (if you don't have line numbers, just AUTO and then paste).
Code:
10*K.10O.|MREN.|M*FX12,4|ML.|M
20bin_as_bcd = &70
30FOR O = 0 TO 2 STEP 2
40P% = &5200
50[OPT O
60.hex_to_bcd
70sei
80sed
90tya
100pha
110lsr A : lsr A : lsr A : lsr A
120tay
130lda bits1512_b0,Y
140sta bin_as_bcd+0
150lda bits1512_b1,Y
160sta bin_as_bcd+1
170lda bits1512_b2,Y
180sta bin_as_bcd+2
190pla
200and #&F
210tay
220clc
230lda bits118_b0,Y
240adc bin_as_bcd+0
250sta bin_as_bcd+0
260lda bits118_b1,Y
270adc bin_as_bcd+1
280sta bin_as_bcd+1
290lda #0
300adc bin_as_bcd+2
310sta bin_as_bcd+2
320txa
330lsr A : lsr A : lsr A
340tay
350clc
360lda bits73_b0,Y
370adc bin_as_bcd+0
380sta bin_as_bcd+0
390lda bits73_b1,Y
400adc bin_as_bcd+1
410sta bin_as_bcd+1
420lda #0
430adc bin_as_bcd+2
440sta bin_as_bcd+2
450txa
460and #7
470adc bin_as_bcd+0
480sta bin_as_bcd+0
490lda #0
500adc bin_as_bcd+1
510sta bin_as_bcd+1
520lda #0
530adc bin_as_bcd+2
540sta bin_as_bcd+2
550cld
560cli
570rts
580.bits1512_b2
590EQUB &00
600EQUB &00
610EQUB &00
620EQUB &01
630EQUB &01
640EQUB &02
650EQUB &02
660EQUB &02
670EQUB &03
680EQUB &03
690EQUB &04
700EQUB &04
710EQUB &04
720EQUB &05
730EQUB &05
740EQUB &06
750.bits1512_b1
760EQUB &00
770EQUB &40
780EQUB &81
790EQUB &22
800EQUB &63
810EQUB &04
820EQUB &45
830EQUB &86
840EQUB &27
850EQUB &68
860EQUB &09
870EQUB &50
880EQUB &91
890EQUB &32
900EQUB &73
910EQUB &14
920.bits1512_b0
930EQUB &00
940EQUB &96
950EQUB &92
960EQUB &88
970EQUB &84
980EQUB &80
990EQUB &76
1000EQUB &72
1010EQUB &68
1020EQUB &64
1030EQUB &60
1040EQUB &56
1050EQUB &52
1060EQUB &48
1070EQUB &44
1080EQUB &40
1090.bits118_b1
1100EQUB &00
1110EQUB &02
1120EQUB &05
1130EQUB &07
1140EQUB &10
1150EQUB &12
1160EQUB &15
1170EQUB &17
1180EQUB &20
1190EQUB &23
1200EQUB &25
1210EQUB &28
1220EQUB &30
1230EQUB &33
1240EQUB &35
1250EQUB &38
1260.bits118_b0
1270EQUB &00
1280EQUB &56
1290EQUB &12
1300EQUB &68
1310EQUB &24
1320EQUB &80
1330EQUB &36
1340EQUB &92
1350EQUB &48
1360EQUB &04
1370EQUB &60
1380EQUB &16
1390EQUB &72
1400EQUB &28
1410EQUB &84
1420EQUB &40
1430.bits73_b1
1440EQUB &00
1450EQUB &00
1460EQUB &00
1470EQUB &00
1480EQUB &00
1490EQUB &00
1500EQUB &00
1510EQUB &00
1520EQUB &00
1530EQUB &00
1540EQUB &00
1550EQUB &00
1560EQUB &00
1570EQUB &01
1580EQUB &01
1590EQUB &01
1600EQUB &01
1610EQUB &01
1620EQUB &01
1630EQUB &01
1640EQUB &01
1650EQUB &01
1660EQUB &01
1670EQUB &01
1680EQUB &01
1690EQUB &02
1700EQUB &02
1710EQUB &02
1720EQUB &02
1730EQUB &02
1740EQUB &02
1750EQUB &02
1760.bits73_b0
1770EQUB &00
1780EQUB &08
1790EQUB &16
1800EQUB &24
1810EQUB &32
1820EQUB &40
1830EQUB &48
1840EQUB &56
1850EQUB &64
1860EQUB &72
1870EQUB &80
1880EQUB &88
1890EQUB &96
1900EQUB &04
1910EQUB &12
1920EQUB &20
1930EQUB &28
1940EQUB &36
1950EQUB &44
1960EQUB &52
1970EQUB &60
1980EQUB &68
1990EQUB &76
2000EQUB &84
2010EQUB &92
2020EQUB &00
2030EQUB &08
2040EQUB &16
2050EQUB &24
2060EQUB &32
2070EQUB &40
2080EQUB &48
2090]
2100NEXT
2110FOR T% = 0 TO 65535
2120X%=T% MOD 256
2130Y%=T% DIV 256
2140CALL hex_to_bcd
2150dec$=STR$(T%)
2160dec$=STRING$(5-LEN(dec$),"0") + dec$
2170bcd$=CHR$(48+(bin_as_bcd?2))
2180bcd$=bcd$ + CHR$(48+(bin_as_bcd?1 DIV 16))
2190bcd$=bcd$ + CHR$(48+(bin_as_bcd?1 MOD 16))
2200bcd$=bcd$ + CHR$(48+(bin_as_bcd?0 DIV 16))
2210bcd$=bcd$ + CHR$(48+(bin_as_bcd?0 MOD 16))
2220PRINT dec$,bcd$
2230IF dec$ <> bcd$ THEN INPUT A$
2240NEXT