| www.retrosoftware.co.uk http://www.retrosoftware.co.uk/forum/ |
|
| BIN/HEX to BCD (to Decimal) http://www.retrosoftware.co.uk/forum/viewtopic.php?f=73&t=639 |
Page 1 of 1 |
| Author: | tricky [ Tue Jun 28, 2011 11:13 am ] | ||
| Post subject: | BIN/HEX to BCD (to Decimal) | ||
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%29 In 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
|
|||
| Page 1 of 1 | All times are UTC [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|