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

Both sides previous revision Previous revision
Next revision
Previous revision
base:int16_and_uint16_conversion_to_string [2019-08-16 17:25]
verz
base:int16_and_uint16_conversion_to_string [2019-08-18 09:35] (current)
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+        ldy #$0 
 +        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 35:
         adc #0         adc #0
         sta int16+1         sta int16+1
-        lda #'-' +        ldy #'-'              ; prepares the sign value
-        sta sgn+
  
-_pos    jsr _UtoA+_pos    sty sgn 
 +        jsr _UtoA             ; the work is done by _UtoA routine
  
-        lda sgn +        ldy 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 60: Line 61:
  
 _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 96:
         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 113: Line 114:
 ;       needs the pos of the first digit in .X  ;       needs the pos of the first digit in .X 
 ;       result in CnvTrm ;       result in CnvTrm
 +;       if the result is to be in CnvStr then change CnvTrm to CnvStr
 ;------------------------------- ;-------------------------------
 _TrimNum _TrimNum
Line 119: Line 121:
         beq _rts         beq _rts
 _trmlp  lda CnvStr,x _trmlp  lda CnvStr,x
-        sta CnvTrm,y+        sta CnvTrm,     ; Change to "sta CnvStr,y" to put the trimmed string in CnvStr
         beq _rts         beq _rts
         inx         inx
Line 129: Line 131:
  
 ;------------------------------- ;-------------------------------
-; Converts a 16bit number in BCD+; Converts a 16bit number to BCD
 ;------------------------------- ;-------------------------------
 BINBCD16 BINBCD16
Line 140: Line 142:
 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 198:
  
 usage example: usage example:
-<code>+<code 6502tasm >
 Example Example
-        lda #0 
-        sta sgn 
         lda #$c0         lda #$c0
         sta int16         sta int16
Line 211: Line 211:
  
  
-        lda #0 
-        sta sgn 
         lda #$c0         lda #$c0
         sta int16         sta int16
base/int16_and_uint16_conversion_to_string.1565969143.txt.gz · Last modified: 2019-08-16 17:25 by verz