]> git.sur5r.net Git - cc65/commitdiff
Fixed two bugs, made the sources somewhat better readable.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 28 Sep 2009 17:47:33 +0000 (17:47 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 28 Sep 2009 17:47:33 +0000 (17:47 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4256 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/vsnprintf.s
libsrc/common/vsprintf.s

index 2e5f8a0565e070cf794195abd95a1150d36f8da4..10dc7fa1dc4ee02f51764ec4312b57b4cd4f1c60 100644 (file)
 ; Static data for the _vsnprintf routine
 ;
 
-outdesc:                       ; Static outdesc structure
-       .word   0               ; ccount
-       .word   out             ; Output function pointer
-       .word   0               ; ptr
-               .word   0               ; Buffer size
+outdesc:                       ; Static outdesc structure
+ccount: .word   0               ; ccount
+func:   .word   out            ; Output function pointer
+bufptr: .word   0              ; ptr
+bufsize:.word   0               ; Buffer size
 
 .code
 
@@ -40,12 +40,12 @@ out:
 ; Calculate the space left in the buffer. If no space is left, don't copy
 ; any characters
 
-        lda     outdesc+6               ; Low byte of buffer size
+        lda     bufsize                 ; Low byte of buffer size
         sec
-        sbc     outdesc+0               ; Low byte of bytes already written
+        sbc     ccount+0                ; Low byte of bytes already written
         sta     ptr1
-        lda     outdesc+7
-        sbc     outdesc+1
+        lda     bufsize+1
+        sbc     ccount+1
         sta     ptr1+1
         bcs     @L0                     ; Space left
         lda     #0
@@ -55,14 +55,14 @@ out:
 ; Replace the pointer to d by a pointer to the write position in the buffer
 ; for the call to memcpy that follows.
 
-@L0:    lda     outdesc+0
+@L0:    lda     bufptr+0
         clc
-        adc     outdesc+4
+        adc     ccount+0
         ldy     #4
         sta     (sp),y
 
-        lda     outdesc+1
-        adc     outdesc+5
+        lda     bufptr+1
+        adc     ccount+1
         iny
         sta     (sp),y
 
@@ -74,19 +74,19 @@ out:
 
         pha
         clc
-        adc     outdesc+0
-        sta     outdesc+0
+        adc     ccount+0
+        sta     ccount+0
         txa
-        adc     outdesc+1
-        sta     outdesc+1
+        adc     ccount+1
+        sta     ccount+1
         pla
 
 ; if (Count > Left) Count = Left;
 
-        cmp     ptr1
-        bne     @L1
         cpx     ptr1+1
-@L1:    bcs     @L2
+        bne     @L1
+        cmp     ptr1
+@L1:    bcc     @L2
         lda     ptr1
         ldx     ptr1+1
 
@@ -107,8 +107,8 @@ _vsnprintf:
 ; Setup the outdesc structure
 
        lda     #0
-       sta     outdesc
-       sta     outdesc+1       ; Clear ccount
+       sta     ccount+0
+       sta     ccount+1        ; Clear ccount
 
 ; Get the size parameter and replace it by a pointer to outdesc. This is to
 ; build a stack frame for the call to _printf.
@@ -128,22 +128,22 @@ _vsnprintf:
         lda     #>outdesc
         sta     (sp),y
 
-; Write size-1 to the outdesc structure
+; Write size-1 to outdesc.uns
 
         ldx     ptr1
         ldy     ptr1+1
         dex
         bne     L1
         dey
-L1:     stx     outdesc+6
-        sty     outdesc+7
+L1:     stx     bufsize+0
+        sty     bufsize+1
 
-; Copy buf to the outdesc structure
+; Copy buf to the outdesc.ptr
 
         ldy     #5
         jsr     ldaxysp
-        sta     outdesc+4
-        stx     outdesc+5
+        sta     bufptr+0
+        stx     bufptr+1
 
 ; Restore low byte of ap and call _printf
 
@@ -152,19 +152,19 @@ L1:     stx     outdesc+6
 
 ; Terminate the string
 
-        lda     outdesc+0
-        ldx     outdesc+1
-        cpx     outdesc+7
+        lda     ccount+0
+        ldx     ccount+1
+        cpx     bufsize+1
         bne     L2
-        cmp     outdesc+6
+        cmp     bufsize+0
 L2:     bcc     L3
-        lda     outdesc+6
-        ldx     outdesc+7
+        lda     bufsize+0
+        ldx     bufsize+1
         clc
-L3:     adc     outdesc+4
+L3:     adc     bufptr+0
         sta     ptr1
         txa
-        adc     outdesc+5
+        adc     bufptr+1
         sta     ptr1+1
 
         lda     #0
@@ -173,8 +173,8 @@ L3:     adc     outdesc+4
 
 ; Return the number of bytes written and drop buf
 
-        lda     outdesc         ; ccount
-        ldx     outdesc+1
+        lda     ccount+0
+        ldx     ccount+1
        jmp     incsp2
 
 ; Bail out if size is zero
index c6084bdda7591072c46c310b70f91216a7a297ed..4c265ec220b935cd8d0984d91f9711e42b4d039e 100644 (file)
@@ -1,33 +1,32 @@
 ;
-; int vsprintf (char* Buf, const char* Format, va_list ap);
+; int __fastcall__ vsprintf (char* Buf, const char* Format, va_list ap);
 ;
 ; Ullrich von Bassewitz, 2009-09-26
 ;
 
        .export         _vsprintf
-       .import         ldax0sp, pushax, staxysp
+       .import         pushw0sp, staxysp
        .import         _vsnprintf
 
 
 ; ----------------------------------------------------------------------------
 ; vsprintf - formatted output into a buffer
 ;
-; int vsprintf (char* buf, const char* format, va_list ap);
+; int __fastcall__ vsprintf (char* buf, const char* format, va_list ap);
 ;
 
 
 _vsprintf:
-       pha                     ; Save low byte of ap
+       pha                     ; Save low byte of ap
         txa
         pha                     ; Save high byte of op
 
 ; Build a stackframe for vsnprintf. To do that, we move format one word down,
-; and store 0x7FF (INT_MAX) as size.
+; and store 0x7FFF (INT_MAX) as size.
 
-        jsr     ldax0sp         ; Get format
-        jsr     pushax          ; And push it
-        lda     #$7F
-        ldx     #$FF            ; INT_MAX
+        jsr     pushw0sp        ; Get format and push it
+        lda     #$FF
+        ldx     #$7F            ; INT_MAX
         ldy     #2
         jsr     staxysp