]> git.sur5r.net Git - cc65/blob - libsrc/common/vprintf.s
CMOS optimisation
[cc65] / libsrc / common / vprintf.s
1 ;
2 ; Ullrich von Bassewitz, 2003-06-02
3 ;
4 ; int __fastcall__ vprintf (const char* format, va_list ap);
5 ;
6
7         .export         _vprintf
8         .import         _vfprintf, _stdout
9         .import         decsp2
10         .importzp       sp
11
12
13 .proc   _vprintf
14
15 ; Save A which contains the low part of ap
16
17         pha
18
19 ; Allocate one more word on the stack
20
21         jsr     decsp2
22
23 ; Move the format parameter down and store stdout in it's place
24
25         ldy     #2
26         lda     (sp),y
27         ldy     #0
28         sta     (sp),y
29         ldy     #3
30         lda     (sp),y
31         ldy     #1
32         sta     (sp),y
33
34         iny
35         lda     _stdout
36         sta     (sp),y
37         iny
38         lda     _stdout+1
39         sta     (sp),y
40
41 ; Restore A
42
43         pla
44
45 ; Call vfprintf (stdout, format, ap) which will cleanup the stack and return
46
47         jmp     _vfprintf
48
49 .endproc
50
51