]> git.sur5r.net Git - cc65/commitdiff
Make _printf() __fastcall__
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 1 Dec 2000 10:21:18 +0000 (10:21 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 1 Dec 2000 10:21:18 +0000 (10:21 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@507 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/_printf.h
libsrc/common/_printf.s
libsrc/common/printf.s

index 03e8f7307be596bd83b8a9c020ce02caa54f9fc0..9b5c26609f346026e2b62393acc36f35ff79d34d 100644 (file)
@@ -34,7 +34,7 @@ struct outdesc {
 
 
 /* Internal formatting routine */
-int _printf (struct outdesc* d, const char* format, va_list ap);
+int __fastcall__ _printf (struct outdesc* d, const char* format, va_list ap);
 
 
 
index d60ebdfe9cb0bce91979446993ed492634db05ad..f390828ae011950527f62fd513de05fde19d6ab1 100644 (file)
@@ -241,16 +241,17 @@ __printf:
 
 ; Save the register bank variables into the save area
 
-       ldx     #5
-Save:  lda     regbank,x
-       sta     RegSave,x
-       dex
+       pha                             ; Save low byte of ap
+               ldy     #5
+Save:  lda     regbank,y
+       sta     RegSave,y
+       dey
                bpl     Save
 
 ; Get the parameters from the stack
 
-       jsr     popax                   ; Argument list pointer
-       sta     ArgList
+       pla                             ; Restore low byte of ap
+       sta     ArgList                 ; Argument list pointer
        stx     ArgList+1
 
        jsr     popax                   ; Format string
index ad26b865576e5d6ea201a4ad81b16da84120ed43..3f95f8e6b067008c01774705669dede275f995b1 100644 (file)
@@ -60,15 +60,15 @@ _printf:
        lda     (ptr1),y
        jsr     pushax
 
-; Push the va_list
+; Push va_list (last parameter to vfprintf)
 
-       lda     ptr1
-       ldx     ptr1+1
+       lda     ptr1
+       ldx     ptr1+1
        jsr     pushax
 
 ; Call vfprintf
 
-       jsr     _vfprintf       
+       jsr     _vfprintf
 
 ; Cleanup the stack. We will return what we got from vfprintf