User Tools

Site Tools


base:int16_and_uint16_conversion_to_string

Differences

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

Link to this comparison view

Next revision
Previous revision
Last revisionBoth sides next revision
base:int16_and_uint16_conversion_to_string [2019-08-16 17:23] – created verzbase:int16_and_uint16_conversion_to_string [2019-08-16 23:49] verz
Line 3: Line 3:
 _UtoA converts an unsigned number\\ _UtoA converts an unsigned number\\
 The conversion is obtained via a BCD intermediate value. The conversion is obtained via a BCD intermediate value.
-<code>+<code 6502acme>
 bcd     = $61    ; system Fac, 3 bytes bcd     = $61    ; system Fac, 3 bytes
 int16   = $64    ; system Fac, 2 bytes int16   = $64    ; system Fac, 2 bytes
Line 22: Line 22:
  
 _ItoA _ItoA
-        lda int16+1+        lda int16+1           ; is it positive
         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 #'-'              ; prepares the sign value
         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 '-' before the number
         sta CnvStr,x         sta CnvStr,x
 _enditoa _enditoa
Line 54: Line 54:
 ;------------------------------- ;-------------------------------
 ; ;
-;       Call with 16 bit number in lobyte/hibyte+;       Call with 16 bit number in int16
 ;       result in CnvStr ;       result in CnvStr
 ;------------------------------- ;-------------------------------
Line 60: Line 60:
  
 _UtoA _UtoA
-        jsr BINBCD16_2+        jsr BINBCD16          ; converts the number to BCD
         ;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 '0'
         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     ;                               5         ROL int16+1     ;                               5
-;        LDA bcd+0      ; And add into result             +;        LDA bcd+0      ;              
-        ADC bcd+0       ;                               3+        ADC bcd+0       ; And add into result           3
         STA bcd+0       ;                               3         STA bcd+0       ;                               3
-        ASL int16       ; Shift out one bit             5+        ASL int16       ;                               5
         ROL int16+1     ;                               5         ROL int16+1     ;                               5
         ADC bcd+0       ;                               3         ADC bcd+0       ;                               3
         STA bcd+0       ;                               3         STA bcd+0       ;                               3
-        ASL int16       ; Shift out one bit             5+        ASL int16       ;                               5
         ROL int16+1     ;                               5         ROL int16+1     ;                               5
         ADC bcd+0       ;                               3         ADC bcd+0       ;                               3
         STA bcd+0       ;                               3         STA bcd+0       ;                               3
-        ASL int16       ; Shift out one bit             5+        ASL int16       ;                               5
         ROL int16+1     ;                               5         ROL int16+1     ;                               5
         ADC bcd+0       ;                               3         ADC bcd+0       ;                               3
         STA bcd+0       ;                               3         STA bcd+0       ;                               3
-        ASL int16       ; Shift out one bit             5+        ASL int16       ;                               5
         ROL int16+1     ;                               5         ROL int16+1     ;                               5
         ADC bcd+0       ;                               3         ADC bcd+0       ;                               3
         STA bcd+0       ;                               3         STA bcd+0       ;                               3
-        ASL int16       ; Shift out one bit             5+        ASL int16       ;                               5
         ROL int16+1     ;                               5         ROL int16+1     ;                               5
         ADC bcd+0       ;                               3         ADC bcd+0       ;                               3
Line 196: Line 196:
  
 usage example: usage example:
-<code>+<code 6502tasm >
 Example Example
         lda #0         lda #0
base/int16_and_uint16_conversion_to_string.txt · Last modified: 2019-08-18 09:35 by verz