User Tools

Site Tools


base:more_hexadecimal_to_decimal_conversion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revisionBoth sides next revision
base:more_hexadecimal_to_decimal_conversion [2015-04-17 04:33] – external edit 127.0.0.1base:more_hexadecimal_to_decimal_conversion [2017-03-18 09:14] – BinBcd for values up to 99 verz
Line 58: Line 58:
 BCD .DS  2 BCD .DS  2
 </code> </code>
 +
 +Here a stripped down version to compute a BCD number not larger than 99 (single byte). You send and receive the value in A. The intermediate variables are in page zero.
 +<code>
 +; Convert a 7 bit binary value to BCD
 +;
 +; This routine converts a binary value to BCD; the value cannot be larger than 99.
 +; Same working principle of the other routines.
 +; The value to convert is sent in A, and the result will be in A. X value is destroyed.
 +; The routine executes in 124 cycles (+rts). 
 +;
 +; Verz!!! 18-Mar-2017
 +
 +BinBcd_sb ldx #$7 ; The number of source bits     2c
 + asl ; 2c
 +; ldx #$6 ; you can replace the  LDX#$7/ASL with LDX#$6/ASL/ASL
 +; asl ; to compute values up to 63 (as for a clock)
 +; asl
 + sta <bin ; 3c
 + lda #$0 ; Ensure the result is clear    2c
 + sed ; Switch to decimal mode 2c
 +CnvBit_sb asl <BIN ; Shift out one bit 5c |
 + sta <BCD0 ; 3c |
 + adc <BCD0 ; 3c | 16c
 + dex ; And repeat for next bit 2c |
 + bne CnvBit_sb ; 3c |
 + cld ; Back to binary 2c
 + rts  ; All Done.
 +
 +BIN .equ  $fc
 +BCD0 .equ  $fb
 +</code>
 +
 Here is an equivalent routine for converting 16-bit numbers: Here is an equivalent routine for converting 16-bit numbers:
 <code> <code>
base/more_hexadecimal_to_decimal_conversion.txt · Last modified: 2019-08-16 01:44 by verz