base:int16_and_uint16_conversion_to_string
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
base:int16_and_uint16_conversion_to_string [2019-08-16 17:25] – verz | base:int16_and_uint16_conversion_to_string [2019-08-16 23:24] – verz | ||
---|---|---|---|
Line 22: | Line 22: | ||
_ItoA | _ItoA | ||
- | lda int16+1 | + | lda int16+1 |
bpl _pos | bpl _pos | ||
- | _neg clc | + | _neg clc ; it's negative: let's 2complement it |
lda int16 | lda int16 | ||
eor #$ff | eor #$ff | ||
Line 34: | Line 34: | ||
adc #0 | adc #0 | ||
sta int16+1 | sta int16+1 | ||
- | lda #' | + | lda #' |
sta sgn | sta sgn | ||
- | _pos jsr _UtoA | + | _pos jsr _UtoA ; the work is done by _UtoA routine |
- | lda sgn | + | lda sgn ; if the sign was negative |
- | beq _enditoa | + | beq _enditoa |
- | dex | + | dex ; adds ' |
sta CnvStr,x | sta CnvStr,x | ||
_enditoa | _enditoa | ||
Line 60: | Line 60: | ||
_UtoA | _UtoA | ||
- | jsr BINBCD16_2 | + | jsr BINBCD16 |
;lda bcd+2 | ;lda bcd+2 | ||
- | and #$0f | + | and #$0f ; extracts every byte and adds $30 |
ora #$30 | ora #$30 | ||
sta CnvStr+1 | sta CnvStr+1 | ||
Line 95: | Line 95: | ||
ldx #1 ; remove 0s at beginning | ldx #1 ; remove 0s at beginning | ||
_rem0 lda CnvStr,x | _rem0 lda CnvStr,x | ||
- | cmp #$30 | + | cmp #$30 ; if it's a ' |
bne _rts | bne _rts | ||
lda #$20 ; put a space instead | lda #$20 ; put a space instead | ||
sta CnvStr, | sta CnvStr, | ||
inx | inx | ||
- | cpx #$5 | + | cpx #$5 ; exits before last digit |
bne _rem0 | bne _rem0 | ||
Line 140: | Line 140: | ||
CBIT1 ASL int16 ; Shift out one bit 5 | CBIT1 ASL int16 ; Shift out one bit 5 | ||
ROL int16+1 | ROL int16+1 | ||
- | ; LDA bcd+0 ; And add into result | + | ; LDA bcd+0 ; |
- | ADC bcd+0 ; | + | ADC bcd+0 ; |
STA bcd+0 ; | STA bcd+0 ; | ||
- | ASL int16 ; | + | ASL int16 ; |
ROL int16+1 | ROL int16+1 | ||
ADC bcd+0 ; | ADC bcd+0 ; | ||
STA bcd+0 ; | STA bcd+0 ; | ||
- | ASL int16 ; | + | ASL int16 ; |
ROL int16+1 | ROL int16+1 | ||
ADC bcd+0 ; | ADC bcd+0 ; | ||
STA bcd+0 ; | STA bcd+0 ; | ||
- | ASL int16 ; | + | ASL int16 ; |
ROL int16+1 | ROL int16+1 | ||
ADC bcd+0 ; | ADC bcd+0 ; | ||
STA bcd+0 ; | STA bcd+0 ; | ||
- | ASL int16 ; | + | ASL int16 ; |
ROL int16+1 | ROL int16+1 | ||
ADC bcd+0 ; | ADC bcd+0 ; | ||
STA bcd+0 ; | STA bcd+0 ; | ||
- | ASL int16 ; | + | ASL int16 ; |
ROL int16+1 | ROL int16+1 | ||
ADC bcd+0 ; | ADC bcd+0 ; |
base/int16_and_uint16_conversion_to_string.txt · Last modified: 2019-08-18 09:35 by verz