Initial revision
[fw/sdcc] / device / lib / small / vprintf.asm
1 ;--------------------------------------------------------
2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 ; Version 2.1.9Ga Sun Jan 16 17:31:21 2000
4
5 ;--------------------------------------------------------
6         .module vprintf
7 ;--------------------------------------------------------
8 ; publics variables in this module
9 ;--------------------------------------------------------
10         .globl _lsd
11         .globl _lower_case
12         .globl _output_to_string
13         .globl _vprintf_PARM_2
14         .globl _vsprintf_PARM_3
15         .globl _vsprintf_PARM_2
16         .globl _radix
17         .globl _value
18         .globl _output_ptr
19         .globl _vsprintf
20         .globl _vprintf
21 ;--------------------------------------------------------
22 ; special function registers
23 ;--------------------------------------------------------
24 ;--------------------------------------------------------
25 ; special function bits 
26 ;--------------------------------------------------------
27 ;--------------------------------------------------------
28 ; internal ram data
29 ;--------------------------------------------------------
30         .area   DSEG    (DATA)
31 G$output_ptr$0$0==.
32 _output_ptr:
33         .ds     0x0003
34 G$value$0$0==.
35 _value:
36         .ds     0x0005
37 G$radix$0$0==.
38 _radix:
39         .ds     0x0001
40 _vsprintf_PARM_2:
41         .ds     0x0003
42 _vsprintf_PARM_3:
43         .ds     0x0001
44 _vsprintf_width_1_1:
45         .ds     0x0001
46 _vsprintf_length_1_1:
47         .ds     0x0001
48 _vsprintf_c_1_1:
49         .ds     0x0001
50 _vsprintf_sloc0_1_0:
51         .ds     0x0001
52 _vsprintf_sloc1_1_0:
53         .ds     0x0001
54 _vsprintf_sloc2_1_0:
55         .ds     0x0001
56 _vsprintf_sloc3_1_0:
57         .ds     0x0001
58 _vsprintf_sloc4_1_0:
59         .ds     0x0001
60 _vsprintf_sloc5_1_0:
61         .ds     0x0001
62 _vsprintf_sloc6_1_0:
63         .ds     0x0001
64 _vsprintf_sloc7_1_0:
65         .ds     0x0003
66 _vprintf_PARM_2:
67         .ds     0x0001
68 ;--------------------------------------------------------
69 ; overlayable items in internal ram 
70 ;--------------------------------------------------------
71         .area _DUMMY
72         .area   OSEG    (OVR,DATA)
73 ;--------------------------------------------------------
74 ; indirectly addressable internal ram data
75 ;--------------------------------------------------------
76         .area   ISEG    (DATA)
77 ;--------------------------------------------------------
78 ; bit data
79 ;--------------------------------------------------------
80         .area   BSEG    (BIT)
81 G$output_to_string$0$0==.
82 _output_to_string:
83         .ds     0x0001
84 G$lower_case$0$0==.
85 _lower_case:
86         .ds     0x0001
87 G$lsd$0$0==.
88 _lsd:
89         .ds     0x0001
90 _vsprintf_left_justify_1_1:
91         .ds     0x0001
92 _vsprintf_zero_padding_1_1:
93         .ds     0x0001
94 _vsprintf_prefix_sign_1_1:
95         .ds     0x0001
96 _vsprintf_prefix_space_1_1:
97         .ds     0x0001
98 _vsprintf_signed_argument_1_1:
99         .ds     0x0001
100 _vsprintf_char_argument_1_1:
101         .ds     0x0001
102 _vsprintf_long_argument_1_1:
103         .ds     0x0001
104 ;--------------------------------------------------------
105 ; external ram data
106 ;--------------------------------------------------------
107         .area   XSEG    (XDATA)
108 ;--------------------------------------------------------
109 ; global & static initialisations
110 ;--------------------------------------------------------
111         .area GSINIT (CODE)
112 ;--------------------------------------------------------
113 ; code
114 ;--------------------------------------------------------
115         .area CSEG (CODE)
116         Fvprintf$output_char$0$0 ==.
117 ;       vprintf.c 63
118 ;       -----------------------------------------
119 ;        function output_char
120 ;       -----------------------------------------
121 _output_char:
122         ar2 = 0x02
123         ar3 = 0x03
124         ar4 = 0x04
125         ar5 = 0x05
126         ar6 = 0x06
127         ar7 = 0x07
128         ar0 = 0x00
129         ar1 = 0x01
130         push    _bp
131         mov     _bp,sp
132 ;       vprintf.c 0
133         mov     r2,dpl
134 ;       vprintf.c 65
135 ; Peephole 111   removed ljmp by inverse jump logic
136         jnb  _output_to_string,00102$
137 00107$:
138 ;       vprintf.c 67
139         mov     r3,_output_ptr
140         mov     r4,(_output_ptr + 1)
141         mov     r5,(_output_ptr + 2)
142         inc     _output_ptr
143         clr     a
144         cjne    a,_output_ptr,00108$
145         inc     (_output_ptr + 1)
146 00108$:
147         mov     dpl,r3
148         mov     dph,r4
149         mov     b,r5
150         mov     a,r2
151         lcall   __gptrput
152 ; Peephole 132   changed ljmp to sjmp
153         sjmp 00104$
154 00102$:
155 ;       vprintf.c 71
156         mov     dpl,r2
157         lcall   _putchar
158 00104$:
159         mov     sp,_bp
160         pop     _bp
161         C$vprintf.c$73$1$1 ==.
162         XFvprintf$output_char$0$0 ==.
163         ret
164         Fvprintf$output_digit$0$0 ==.
165 ;       vprintf.c 77
166 ;       -----------------------------------------
167 ;        function output_digit
168 ;       -----------------------------------------
169 _output_digit:
170         push    _bp
171         mov     _bp,sp
172 ;       vprintf.c 79
173         mov     r2,dpl
174         clr     c
175         mov     a,#0x09
176         subb    a,r2
177         clr     a
178         rlc     a
179 ; Peephole 105   removed redundant mov
180         mov  r3,a
181         cjne    a,#0x01,00109$
182 00109$:
183         clr     a
184         rlc     a
185 ; Peephole 105   removed redundant mov
186         mov  r3,a
187 ; Peephole 110   removed ljmp by inverse jump logic
188         jz  00103$
189 00110$:
190         mov     a,#0x30
191         add     a,r2
192         mov     r3,a
193 ; Peephole 132   changed ljmp to sjmp
194         sjmp 00104$
195 00103$:
196 ; Peephole 111   removed ljmp by inverse jump logic
197         jnb  _lower_case,00105$
198 00111$:
199         mov     a,#0x57
200         add     a,r2
201         mov     r4,a
202 ; Peephole 132   changed ljmp to sjmp
203         sjmp 00106$
204 00105$:
205         mov     a,#0x37
206         add     a,r2
207         mov     r4,a
208 00106$:
209         mov     ar3,r4
210 00104$:
211         mov     dpl,r3
212         lcall   _output_char
213 00101$:
214         mov     sp,_bp
215         pop     _bp
216         C$vprintf.c$80$1$1 ==.
217         XFvprintf$output_digit$0$0 ==.
218         ret
219         Fvprintf$output_2digits$0$0 ==.
220 ;       vprintf.c 84
221 ;       -----------------------------------------
222 ;        function output_2digits
223 ;       -----------------------------------------
224 _output_2digits:
225         push    _bp
226         mov     _bp,sp
227 ;       vprintf.c 87
228         mov     r2,dpl
229 ;       vprintf.c 86
230         mov     a,r2
231         swap    a
232         anl     a,#0x0f
233         mov     dpl,a
234         push    ar2
235         lcall   _output_digit
236         pop     ar2
237 ;       vprintf.c 87
238         mov     a,#0x0f
239         anl     a,r2
240         mov     dpl,a
241         lcall   _output_digit
242 00101$:
243         mov     sp,_bp
244         pop     _bp
245         C$vprintf.c$88$1$1 ==.
246         XFvprintf$output_2digits$0$0 ==.
247         ret
248         Fvprintf$calculate_digit$0$0 ==.
249 ;       vprintf.c 92
250 ;       -----------------------------------------
251 ;        function calculate_digit
252 ;       -----------------------------------------
253 _calculate_digit:
254 ;       vprintf.c 96
255         mov     r2,#0x20
256 00103$:
257         cjne    r2,#0x00,00112$
258 ; Peephole 132   changed ljmp to sjmp
259         sjmp 00107$
260 00112$:
261 ;       vprintf.c 115
262           clr  c
263           mov  a,_value+0
264           rlc  a
265           mov  _value+0,a
266           mov  a,_value+1
267           rlc  a
268           mov  _value+1,a
269           mov  a,_value+2
270           rlc  a
271           mov  _value+2,a
272           mov  a,_value+3
273           rlc  a
274           mov  _value+3,a
275           mov  a,_value+4
276           rlc  a
277           mov  _value+4,a
278 ;       vprintf.c 117
279         clr     c
280         mov     a,0x0004 + _value
281         subb    a,_radix
282 ; Peephole 132   changed ljmp to sjmp
283 ; Peephole 160   removed sjmp by inverse jump logic
284         jc   00105$
285 00113$:
286 ;       vprintf.c 119
287         clr     c
288         mov     a,0x0004 + _value
289         subb    a,_radix
290         mov     0x0004 + _value,a
291 ;       vprintf.c 120
292         mov     a,#0x01
293         add     a,_value
294         mov     _value,a
295 00105$:
296 ;       vprintf.c 96
297         dec     r2
298 ; Peephole 132   changed ljmp to sjmp
299         sjmp 00103$
300 00107$:
301         C$vprintf.c$123$1$1 ==.
302         XFvprintf$calculate_digit$0$0 ==.
303         ret
304         G$vsprintf$0$0 ==.
305 ;       vprintf.c 127
306 ;       -----------------------------------------
307 ;        function vsprintf
308 ;       -----------------------------------------
309 _vsprintf:
310 ;       vprintf.c 0
311         mov     r2,dpl
312         mov     r3,dph
313         mov     r4,b
314 ;       vprintf.c 141
315         mov     _output_ptr,r2
316         mov     (_output_ptr + 1),r3
317         mov     (_output_ptr + 2),r4
318 ;       vprintf.c 142
319         mov     a,r2
320         orl     a,r3
321         orl     a,r4
322 ; Peephole 109   removed ljmp by inverse jump logic
323         jnz  00102$
324 00262$:
325 ;       vprintf.c 144
326         clr     _output_to_string
327 ; Peephole 132   changed ljmp to sjmp
328         sjmp 00237$
329 00102$:
330 ;       vprintf.c 148
331         setb    _output_to_string
332 ;       vprintf.c 151
333 00237$:
334 00193$:
335         mov     r2,_vsprintf_PARM_2
336         mov     r3,(_vsprintf_PARM_2 + 1)
337         mov     r4,(_vsprintf_PARM_2 + 2)
338         mov     a,#0x01
339         add     a,r2
340         mov     r5,a
341 ; Peephole 180   changed mov to clr
342         clr  a
343         addc    a,r3
344         mov     r6,a
345         mov     ar7,r4
346         mov     _vsprintf_PARM_2,r5
347         mov     (_vsprintf_PARM_2 + 1),r6
348         mov     (_vsprintf_PARM_2 + 2),r7
349         mov     dpl,r2
350         mov     dph,r3
351         mov     b,r4
352         lcall   __gptrget
353 ; Peephole 166   removed redundant mov
354         mov  r2,a
355         mov  _vsprintf_c_1_1,r2 
356         jnz     00263$
357         ljmp    00195$
358 00263$:
359 ;       vprintf.c 153
360         mov     a,_vsprintf_c_1_1
361         cjne    a,#0x25,00264$
362         sjmp    00265$
363 00264$:
364         ljmp    00191$
365 00265$:
366 ;       vprintf.c 155
367         clr     _vsprintf_left_justify_1_1
368 ;       vprintf.c 156
369         clr     _vsprintf_zero_padding_1_1
370 ;       vprintf.c 157
371         clr     _vsprintf_prefix_sign_1_1
372 ;       vprintf.c 158
373         clr     _vsprintf_prefix_space_1_1
374 ;       vprintf.c 159
375         clr     _vsprintf_signed_argument_1_1
376 ;       vprintf.c 160
377         mov     _radix,#0x00
378 ;       vprintf.c 161
379         clr     _vsprintf_char_argument_1_1
380 ;       vprintf.c 162
381         clr     _vsprintf_long_argument_1_1
382 ;       vprintf.c 163
383         mov     _vsprintf_width_1_1,#0x00
384 ;       vprintf.c 167
385         mov     _vsprintf_PARM_2,r5
386         mov     (_vsprintf_PARM_2 + 1),r6
387         mov     (_vsprintf_PARM_2 + 2),r7
388 00104$:
389         mov     dpl,_vsprintf_PARM_2
390         mov     dph,(_vsprintf_PARM_2 + 1)
391         mov     b,(_vsprintf_PARM_2 + 2)
392         inc     _vsprintf_PARM_2
393         clr     a
394         cjne    a,_vsprintf_PARM_2,00266$
395         inc     (_vsprintf_PARM_2 + 1)
396 00266$:
397         lcall   __gptrget
398         mov     _vsprintf_c_1_1,a
399 ;       vprintf.c 169
400         mov     dpl,_vsprintf_c_1_1
401         lcall   _isdigit
402         mov     r1,dpl
403         mov     a,r1
404 ; Peephole 110   removed ljmp by inverse jump logic
405         jz  00108$
406 00267$:
407 ;       vprintf.c 171
408         mov     b,#0x0a
409         mov     a,_vsprintf_width_1_1
410         mul     ab
411         mov     r5,a
412         mov     a,_vsprintf_c_1_1
413         add     a,#0xd0
414 ; Peephole 105   removed redundant mov
415         mov  r6,a
416         add     a,r5
417 ;       vprintf.c 173
418 ; Peephole 105   removed redundant mov
419         mov  _vsprintf_width_1_1,a
420         jnz     00268$
421         mov     a,#0x01
422         sjmp    00269$
423 00268$:
424         clr     a
425 00269$:
426 ; Peephole 105   removed redundant mov
427         mov  r7,a
428 ; Peephole 110   removed ljmp by inverse jump logic
429         jz  00104$
430 00270$:
431 ;       vprintf.c 176
432         setb    _vsprintf_zero_padding_1_1
433 ;       vprintf.c 178
434 ; Peephole 132   changed ljmp to sjmp
435         sjmp 00104$
436 00108$:
437 ;       vprintf.c 181
438         mov     dpl,_vsprintf_c_1_1
439         push    ar5
440         push    ar6
441         push    ar7
442         push    ar1
443         lcall   _islower
444         mov     r2,dpl
445         pop     ar1
446         pop     ar7
447         pop     ar6
448         pop     ar5
449         mov     a,r2
450         cjne    a,#0x01,00271$
451 00271$:
452         cpl     c
453         mov     _lower_case,c
454 ;       vprintf.c 182
455 ; Peephole 111   removed ljmp by inverse jump logic
456         jnb  _lower_case,00110$
457 00272$:
458 ;       vprintf.c 184
459         mov     a,#0xdf
460         anl     a,_vsprintf_c_1_1
461         mov     _vsprintf_c_1_1,a
462 00110$:
463 ;       vprintf.c 187
464         mov     a,_vsprintf_c_1_1
465         cjne    a,#0x20,00273$
466         mov     a,#0x01
467         sjmp    00274$
468 00273$:
469         clr     a
470 00274$:
471 ; Peephole 105   removed redundant mov
472         mov  _vsprintf_sloc0_1_0,a
473         jz      00275$
474         ljmp    00113$
475 00275$:
476         mov     a,_vsprintf_c_1_1
477         cjne    a,#0x2b,00276$
478         mov     a,#0x01
479         sjmp    00277$
480 00276$:
481         clr     a
482 00277$:
483 ; Peephole 105   removed redundant mov
484         mov  _vsprintf_sloc1_1_0,a
485         jz      00278$
486         ljmp    00112$
487 00278$:
488         mov     a,_vsprintf_c_1_1
489         cjne    a,#0x2d,00279$
490         mov     a,#0x01
491         sjmp    00280$
492 00279$:
493         clr     a
494 00280$:
495 ; Peephole 105   removed redundant mov
496         mov  _vsprintf_sloc2_1_0,a
497         jz      00281$
498         ljmp    00111$
499 00281$:
500         mov     a,_vsprintf_c_1_1
501         cjne    a,#0x42,00282$
502         mov     a,#0x01
503         sjmp    00283$
504 00282$:
505         clr     a
506 00283$:
507 ; Peephole 105   removed redundant mov
508         mov  _vsprintf_sloc3_1_0,a
509         jz      00284$
510         ljmp    00114$
511 00284$:
512         mov     a,_vsprintf_c_1_1
513         cjne    a,#0x43,00285$
514         mov     a,#0x01
515         sjmp    00286$
516 00285$:
517         clr     a
518 00286$:
519 ; Peephole 105   removed redundant mov
520         mov  _vsprintf_sloc4_1_0,a
521         jz      00287$
522         ljmp    00116$
523 00287$:
524         mov     a,_vsprintf_c_1_1
525         cjne    a,#0x44,00288$
526         mov     a,#0x01
527         sjmp    00289$
528 00288$:
529         clr     a
530 00289$:
531 ; Peephole 105   removed redundant mov
532         mov  _vsprintf_sloc5_1_0,a
533         jz      00290$
534         ljmp    00137$
535 00290$:
536         mov     a,_vsprintf_c_1_1
537         cjne    a,#0x49,00291$
538         mov     a,#0x01
539         sjmp    00292$
540 00291$:
541         clr     a
542 00292$:
543 ; Peephole 105   removed redundant mov
544         mov  _vsprintf_sloc6_1_0,a
545         jz      00293$
546         ljmp    00137$
547 00293$:
548         mov     a,_vsprintf_c_1_1
549         cjne    a,#0x4c,00294$
550         mov     a,#0x01
551         sjmp    00295$
552 00294$:
553         clr     a
554 00295$:
555 ; Peephole 105   removed redundant mov
556         mov  r0,a
557 ; Peephole 109   removed ljmp by inverse jump logic
558         jnz  00115$
559 00296$:
560         mov     a,_vsprintf_c_1_1
561         cjne    a,#0x4f,00297$
562         ljmp    00139$
563 00297$:
564         mov     a,_vsprintf_c_1_1
565         cjne    a,#0x50,00298$
566         ljmp    00133$
567 00298$:
568         mov     a,_vsprintf_c_1_1
569         cjne    a,#0x53,00299$
570 ; Peephole 132   changed ljmp to sjmp
571         sjmp 00117$
572 00299$:
573         mov     a,_vsprintf_c_1_1
574         cjne    a,#0x55,00300$
575         ljmp    00140$
576 00300$:
577         mov     a,_vsprintf_c_1_1
578         cjne    a,#0x58,00301$
579         ljmp    00141$
580 00301$:
581         ljmp    00142$
582 ;       vprintf.c 190
583 00111$:
584         setb    _vsprintf_left_justify_1_1
585 ;       vprintf.c 191
586         ljmp    00104$
587 ;       vprintf.c 193
588 00112$:
589         setb    _vsprintf_prefix_sign_1_1
590 ;       vprintf.c 194
591         ljmp    00104$
592 ;       vprintf.c 196
593 00113$:
594         setb    _vsprintf_prefix_space_1_1
595 ;       vprintf.c 197
596         ljmp    00104$
597 ;       vprintf.c 199
598 00114$:
599         setb    _vsprintf_char_argument_1_1
600 ;       vprintf.c 200
601         ljmp    00104$
602 ;       vprintf.c 202
603 00115$:
604         setb    _vsprintf_long_argument_1_1
605 ;       vprintf.c 203
606         ljmp    00104$
607 ;       vprintf.c 206
608 00116$:
609         mov     a,_vsprintf_PARM_3
610         add     a,#0xff
611         mov     r0,a
612         mov     _vsprintf_PARM_3,r0
613         mov     dpl,@r0
614         lcall   _output_char
615 ;       vprintf.c 207
616         ljmp    00143$
617 ;       vprintf.c 210
618 00117$:
619         mov     a,_vsprintf_PARM_3
620         add     a,#0xfd
621         mov     r0,a
622         mov     _vsprintf_PARM_3,r0
623         mov     ar2,@r0
624         inc     r0
625         mov     ar5,@r0
626         inc     r0
627         mov     ar6,@r0
628         dec     r0
629         dec     r0
630         mov     _value,r2
631         mov     (_value + 1),r5
632         mov     (_value + 2),r6
633 ;       vprintf.c 212
634         mov     dpl,r2
635         mov     dph,r5
636         mov     b,r6
637         lcall   _strlen
638         mov     r2,dpl
639         mov     r5,dph
640         mov     _vsprintf_length_1_1,r2
641 ;       vprintf.c 213
642 ; Peephole 112   removed ljmp by inverse jump logic
643         jb   _vsprintf_left_justify_1_1,00124$
644 00302$:
645         clr     c
646         mov     a,_vsprintf_length_1_1
647         subb    a,_vsprintf_width_1_1
648 ; Peephole 108   removed ljmp by inverse jump logic
649         jnc  00124$
650 00303$:
651 ;       vprintf.c 215
652         clr     c
653         mov     a,_vsprintf_width_1_1
654         subb    a,_vsprintf_length_1_1
655         mov     _vsprintf_width_1_1,a
656 ;       vprintf.c 216
657         mov     r5,_vsprintf_width_1_1
658 00118$:
659         mov     ar6,r5
660         dec     r5
661         mov     _vsprintf_width_1_1,r5
662         cjne    r6,#0x00,00304$
663         mov     a,#0x01
664         sjmp    00305$
665 00304$:
666         clr     a
667 00305$:
668 ; Peephole 105   removed redundant mov
669         mov  r7,a
670 ; Peephole 109   removed ljmp by inverse jump logic
671         jnz  00124$
672 00306$:
673 ;       vprintf.c 218
674         push    ar5
675         push    ar6
676         push    ar7
677         mov     dpl,#0x20
678         lcall   _output_char
679         pop     ar7
680         pop     ar6
681         pop     ar5
682 ;       vprintf.c 222
683 ; Peephole 132   changed ljmp to sjmp
684         sjmp 00118$
685 00124$:
686         mov     r5,_value
687         mov     r6,(_value + 1)
688         mov     r7,(_value + 2)
689         mov     dpl,r5
690         mov     dph,r6
691         mov     b,r7
692         lcall   __gptrget
693 ; Peephole 105   removed redundant mov
694         mov  _vsprintf_sloc6_1_0,a
695 ; Peephole 110   removed ljmp by inverse jump logic
696         jz  00126$
697 00307$:
698 ;       vprintf.c 223
699         mov     a,#0x01
700         add     a,r5
701         mov     _vsprintf_sloc7_1_0,a
702 ; Peephole 180   changed mov to clr
703         clr  a
704         addc    a,r6
705         mov     (_vsprintf_sloc7_1_0 + 1),a
706         mov     (_vsprintf_sloc7_1_0 + 2),r7
707         mov     _value,_vsprintf_sloc7_1_0
708         mov     (_value + 1),(_vsprintf_sloc7_1_0 + 1)
709         mov     (_value + 2),(_vsprintf_sloc7_1_0 + 2)
710         mov     dpl,r5
711         mov     dph,r6
712         mov     b,r7
713         lcall   __gptrget
714         mov     r2,a
715         push    ar2
716         push    ar5
717         push    ar6
718         push    ar7
719         mov     dpl,r2
720         lcall   _output_char
721         pop     ar7
722         pop     ar6
723         pop     ar5
724         pop     ar2
725 ; Peephole 132   changed ljmp to sjmp
726         sjmp 00124$
727 00126$:
728 ;       vprintf.c 225
729         jb      _vsprintf_left_justify_1_1,00308$
730         ljmp    00143$
731 00308$:
732         clr     c
733         mov     a,_vsprintf_length_1_1
734         subb    a,_vsprintf_width_1_1
735         jc      00309$
736         ljmp    00143$
737 00309$:
738 ;       vprintf.c 227
739         clr     c
740         mov     a,_vsprintf_width_1_1
741         subb    a,_vsprintf_length_1_1
742         mov     _vsprintf_width_1_1,a
743 ;       vprintf.c 228
744         mov     r2,_vsprintf_width_1_1
745 00127$:
746         mov     ar5,r2
747         dec     r2
748         mov     _vsprintf_width_1_1,r2
749         cjne    r5,#0x00,00310$
750         mov     a,#0x01
751         sjmp    00311$
752 00310$:
753         clr     a
754 00311$:
755 ; Peephole 105   removed redundant mov
756         mov  r6,a
757         jz      00312$
758         ljmp    00143$
759 00312$:
760 ;       vprintf.c 230
761         push    ar2
762         push    ar5
763         push    ar6
764         mov     dpl,#0x20
765         lcall   _output_char
766         pop     ar6
767         pop     ar5
768         pop     ar2
769 ;       vprintf.c 236
770 ; Peephole 132   changed ljmp to sjmp
771         sjmp 00127$
772 00133$:
773         mov     a,_vsprintf_PARM_3
774         add     a,#0xfd
775         mov     r0,a
776         mov     _vsprintf_PARM_3,r0
777         mov     ar2,@r0
778         inc     r0
779         mov     ar5,@r0
780         inc     r0
781         mov     ar6,@r0
782         dec     r0
783         dec     r0
784         mov     _value,r2
785         mov     (_value + 1),r5
786         mov     (_value + 2),r6
787 ;       vprintf.c 238
788         clr     c
789         mov     a,#0x03
790         subb    a,0x0002 + _value
791 ; Peephole 108   removed ljmp by inverse jump logic
792         jnc  00200$
793 00313$:
794         mov     r2,#0x04
795 ; Peephole 132   changed ljmp to sjmp
796         sjmp 00201$
797 00200$:
798         mov     r2,0x0002 + _value
799 00201$:
800         mov     a,r2
801 ; Peephole 180   changed mov to clr
802 ; Peephole 186   optimized movc sequence
803         mov  dptr,#_memory_id
804         movc a,@a+dptr
805         mov     r2,a
806         mov     dpl,r2
807         lcall   _output_char
808 ;       vprintf.c 239
809         mov     dpl,#0x3a
810         lcall   _output_char
811 ;       vprintf.c 240
812         mov     a,0x0002 + _value
813 ; Peephole 110   removed ljmp by inverse jump logic
814         jz  00135$
815 00314$:
816         mov     a,0x0002 + _value
817         cjne    a,#0x03,00315$
818 ; Peephole 132   changed ljmp to sjmp
819         sjmp 00135$
820 00315$:
821 ;       vprintf.c 241
822         mov     dpl,0x0001 + _value
823         lcall   _output_2digits
824 00135$:
825 ;       vprintf.c 242
826         mov     dpl,_value
827         lcall   _output_2digits
828 ;       vprintf.c 243
829 ;       vprintf.c 247
830 ; Peephole 132   changed ljmp to sjmp
831         sjmp 00143$
832 00137$:
833         setb    _vsprintf_signed_argument_1_1
834 ;       vprintf.c 248
835         mov     _radix,#0x0a
836 ;       vprintf.c 249
837 ;       vprintf.c 252
838 ; Peephole 132   changed ljmp to sjmp
839         sjmp 00143$
840 00139$:
841         mov     _radix,#0x08
842 ;       vprintf.c 253
843 ;       vprintf.c 256
844 ; Peephole 132   changed ljmp to sjmp
845         sjmp 00143$
846 00140$:
847         mov     _radix,#0x0a
848 ;       vprintf.c 257
849 ;       vprintf.c 260
850 ; Peephole 132   changed ljmp to sjmp
851         sjmp 00143$
852 00141$:
853         mov     _radix,#0x10
854 ;       vprintf.c 261
855 ;       vprintf.c 265
856 ; Peephole 132   changed ljmp to sjmp
857         sjmp 00143$
858 00142$:
859         mov     dpl,_vsprintf_c_1_1
860         lcall   _output_char
861 ;       vprintf.c 267
862 00143$:
863 ;       vprintf.c 269
864         mov     a,_radix
865         jnz     00316$
866         ljmp    00193$
867 00316$:
868 ;       vprintf.c 275
869 ; Peephole 111   removed ljmp by inverse jump logic
870         jnb  _vsprintf_char_argument_1_1,00152$
871 00317$:
872 ;       vprintf.c 277
873         mov     a,_vsprintf_PARM_3
874         add     a,#0xff
875         mov     r0,a
876         mov     _vsprintf_PARM_3,r0
877         mov     ar2,@r0
878         mov     a,r2
879         rlc     a
880         subb    a,acc
881         mov     r5,a
882         mov     r6,a
883         mov     r7,a
884         mov     _value,r2
885         mov     (_value + 1),r5
886         mov     (_value + 2),r6
887         mov     (_value + 3),r7
888 ;       vprintf.c 278
889 ; Peephole 132   changed ljmp to sjmp
890 ; Peephole 164   removed sjmp by inverse jump logic
891         jb   _vsprintf_signed_argument_1_1,00153$
892 00318$:
893 ;       vprintf.c 280
894         mov     0x0001 + _value,#0x00
895 ;       vprintf.c 281
896         mov     0x0002 + _value,#0x00
897 ;       vprintf.c 282
898         mov     0x0003 + _value,#0x00
899 ; Peephole 132   changed ljmp to sjmp
900         sjmp 00153$
901 00152$:
902 ;       vprintf.c 285
903 ; Peephole 111   removed ljmp by inverse jump logic
904         jnb  _vsprintf_long_argument_1_1,00149$
905 00319$:
906 ;       vprintf.c 287
907         mov     a,_vsprintf_PARM_3
908         add     a,#0xfc
909         mov     r0,a
910         mov     _vsprintf_PARM_3,r0
911         mov     ar2,@r0
912         inc     r0
913         mov     ar5,@r0
914         inc     r0
915         mov     ar6,@r0
916         inc     r0
917         mov     ar7,@r0
918         dec     r0
919         dec     r0
920         dec     r0
921         mov     _value,r2
922         mov     (_value + 1),r5
923         mov     (_value + 2),r6
924         mov     (_value + 3),r7
925 ; Peephole 132   changed ljmp to sjmp
926         sjmp 00153$
927 00149$:
928 ;       vprintf.c 291
929         mov     a,_vsprintf_PARM_3
930         add     a,#0xfe
931         mov     r0,a
932         mov     _vsprintf_PARM_3,r0
933         mov     ar2,@r0
934         inc     r0
935         mov     ar5,@r0
936         dec     r0
937         mov     a,r5
938         rlc     a
939         subb    a,acc
940         mov     r6,a
941         mov     r7,a
942         mov     _value,r2
943         mov     (_value + 1),r5
944         mov     (_value + 2),r6
945         mov     (_value + 3),r7
946 ;       vprintf.c 292
947 ; Peephole 112   removed ljmp by inverse jump logic
948         jb   _vsprintf_signed_argument_1_1,00153$
949 00320$:
950 ;       vprintf.c 294
951         mov     0x0002 + _value,#0x00
952 ;       vprintf.c 295
953         mov     0x0003 + _value,#0x00
954 00153$:
955 ;       vprintf.c 299
956 ; Peephole 111   removed ljmp by inverse jump logic
957         jnb  _vsprintf_signed_argument_1_1,00158$
958 00321$:
959 ;       vprintf.c 301
960         mov     a,(_value + 3)
961 ; Peephole 111   removed ljmp by inverse jump logic
962         jnb  acc.7,00155$
963 00322$:
964 ;       vprintf.c 302
965         clr     c
966         clr     a
967         subb    a,_value
968         mov     r2,a
969         clr     a
970         subb    a,(_value + 1)
971         mov     r5,a
972         clr     a
973         subb    a,(_value + 2)
974         mov     r6,a
975         clr     a
976         subb    a,(_value + 3)
977         mov     r7,a
978         mov     _value,r2
979         mov     (_value + 1),r5
980         mov     (_value + 2),r6
981         mov     (_value + 3),r7
982 ; Peephole 132   changed ljmp to sjmp
983         sjmp 00158$
984 00155$:
985 ;       vprintf.c 304
986         clr     _vsprintf_signed_argument_1_1
987 00158$:
988 ;       vprintf.c 307
989         mov     _vsprintf_length_1_1,#0x00
990 ;       vprintf.c 308
991         setb    _lsd
992 ;       vprintf.c 309
993         mov     r2,#0x00
994 00162$:
995         mov     a,_value
996 ; Peephole 162   removed sjmp by inverse jump logic
997         jz   00324$
998 00323$:
999 ; Peephole 132   changed ljmp to sjmp
1000         sjmp 00163$
1001 00324$:
1002         mov     a,0x0001 + _value
1003 ; Peephole 162   removed sjmp by inverse jump logic
1004         jz   00326$
1005 00325$:
1006 ; Peephole 132   changed ljmp to sjmp
1007         sjmp 00163$
1008 00326$:
1009 ;       vprintf.c 310
1010         mov     a,0x0002 + _value
1011 ; Peephole 162   removed sjmp by inverse jump logic
1012         jz   00328$
1013 00327$:
1014 ; Peephole 132   changed ljmp to sjmp
1015         sjmp 00163$
1016 00328$:
1017         mov     a,0x0003 + _value
1018         jnz     00329$
1019         mov     a,#0x01
1020         sjmp    00330$
1021 00329$:
1022         clr     a
1023 00330$:
1024         mov     r5,a
1025         mov     _vsprintf_length_1_1,r2
1026         mov     a,r5
1027 ; Peephole 109   removed ljmp by inverse jump logic
1028         jnz  00164$
1029 00331$:
1030 00163$:
1031 ;       vprintf.c 312
1032         mov     0x0004 + _value,#0x00
1033 ;       vprintf.c 313
1034         push    ar2
1035         lcall   _calculate_digit
1036         pop     ar2
1037 ;       vprintf.c 327
1038           jb   _lsd,1$
1039           pop  b                ; b = <lsd>
1040           mov  a,_value+4       ; a = <msd>
1041           swap a
1042           orl  b,a              ; b = <msd><lsd>
1043           push b
1044           sjmp 2$
1045 1$:
1046           mov  a,_value+4       ; a = <lsd>
1047           push acc
1048 2$:
1049 ;       vprintf.c 329
1050         inc     r2
1051 ;       vprintf.c 330
1052 ; Peephole 167   removed redundant bit moves (c not set to _lsd)
1053         cpl  _lsd 
1054 ; Peephole 132   changed ljmp to sjmp
1055         sjmp 00162$
1056 00164$:
1057 ;       vprintf.c 333
1058         mov     a,_vsprintf_width_1_1
1059 ; Peephole 162   removed sjmp by inverse jump logic
1060         jz   00333$
1061 00332$:
1062 ; Peephole 132   changed ljmp to sjmp
1063         sjmp 00166$
1064 00333$:
1065 ;       vprintf.c 338
1066         mov     _vsprintf_width_1_1,#0x01
1067 00166$:
1068 ;       vprintf.c 342
1069 ; Peephole 112   removed ljmp by inverse jump logic
1070         jb   _vsprintf_zero_padding_1_1,00171$
1071 00334$:
1072 ;       vprintf.c 344
1073         mov     a,#0x01
1074         add     a,_vsprintf_length_1_1
1075         mov     r2,a
1076         mov     r5,_vsprintf_width_1_1
1077 00167$:
1078         clr     c
1079         mov     a,r2
1080         subb    a,r5
1081         clr     a
1082         rlc     a
1083         mov     r2,a
1084         mov     _vsprintf_width_1_1,r5
1085         mov     a,r2
1086 ; Peephole 110   removed ljmp by inverse jump logic
1087         jz  00171$
1088 00335$:
1089 ;       vprintf.c 346
1090         push    ar5
1091         mov     dpl,#0x20
1092         lcall   _output_char
1093         pop     ar5
1094 ;       vprintf.c 347
1095         dec     r5
1096 ; Peephole 132   changed ljmp to sjmp
1097         sjmp 00167$
1098 00171$:
1099 ;       vprintf.c 351
1100 ; Peephole 111   removed ljmp by inverse jump logic
1101         jnb  _vsprintf_signed_argument_1_1,00180$
1102 00336$:
1103 ;       vprintf.c 353
1104         mov     dpl,#0x2d
1105         lcall   _output_char
1106 ;       vprintf.c 355
1107         dec     _vsprintf_width_1_1
1108 ; Peephole 132   changed ljmp to sjmp
1109         sjmp 00258$
1110 00180$:
1111 ;       vprintf.c 357
1112         mov     a,_vsprintf_length_1_1
1113 ; Peephole 110   removed ljmp by inverse jump logic
1114         jz  00258$
1115 00337$:
1116 ;       vprintf.c 360
1117 ; Peephole 111   removed ljmp by inverse jump logic
1118         jnb  _vsprintf_prefix_sign_1_1,00175$
1119 00338$:
1120 ;       vprintf.c 362
1121         mov     dpl,#0x2b
1122         lcall   _output_char
1123 ;       vprintf.c 364
1124         dec     _vsprintf_width_1_1
1125 ; Peephole 132   changed ljmp to sjmp
1126         sjmp 00258$
1127 00175$:
1128 ;       vprintf.c 366
1129 ; Peephole 111   removed ljmp by inverse jump logic
1130         jnb  _vsprintf_prefix_space_1_1,00258$
1131 00339$:
1132 ;       vprintf.c 368
1133         mov     dpl,#0x20
1134         lcall   _output_char
1135 ;       vprintf.c 370
1136         dec     _vsprintf_width_1_1
1137 ;       vprintf.c 375
1138 00258$:
1139         mov     r2,_vsprintf_width_1_1
1140 00182$:
1141         mov     ar5,r2
1142         dec     r2
1143         clr     c
1144         mov     a,_vsprintf_length_1_1
1145         subb    a,r5
1146 ; Peephole 108   removed ljmp by inverse jump logic
1147         jnc  00260$
1148 00340$:
1149 ;       vprintf.c 377
1150 ; Peephole 111   removed ljmp by inverse jump logic
1151         jnb  _vsprintf_zero_padding_1_1,00202$
1152 00341$:
1153         mov     r5,#0x30
1154 ; Peephole 132   changed ljmp to sjmp
1155         sjmp 00203$
1156 00202$:
1157         mov     r5,#0x20
1158 00203$:
1159         push    ar2
1160         mov     dpl,r5
1161         lcall   _output_char
1162         pop     ar2
1163 ;       vprintf.c 381
1164 ; Peephole 132   changed ljmp to sjmp
1165         sjmp 00182$
1166 00260$:
1167         mov     r2,_vsprintf_length_1_1
1168 00185$:
1169         mov     ar5,r2
1170         dec     r2
1171         mov     a,r5
1172         jnz     00342$
1173         ljmp    00193$
1174 00342$:
1175 ;       vprintf.c 383
1176 ; Peephole 167   removed redundant bit moves (c not set to _lsd)
1177         cpl  _lsd 
1178 ;       vprintf.c 398
1179           jb   _lsd,3$
1180           pop  acc              ; a = <msd><lsd>
1181           nop                   ; to disable the "optimizer"
1182           push acc
1183           swap a
1184           anl  a,#0x0F          ; a = <msd>
1185           sjmp 4$
1186 3$:
1187           pop  acc
1188           anl  a,#0x0F          ; a = <lsd>
1189 4$:
1190           mov  _value+4,a
1191 ;       vprintf.c 400
1192         mov     dpl,0x0004 + _value
1193         push    ar2
1194         lcall   _output_digit
1195         pop     ar2
1196 ; Peephole 132   changed ljmp to sjmp
1197         sjmp 00185$
1198 00191$:
1199 ;       vprintf.c 407
1200         mov     dpl,_vsprintf_c_1_1
1201         lcall   _output_char
1202         ljmp    00193$
1203 00195$:
1204 ;       vprintf.c 413
1205 ; Peephole 111   removed ljmp by inverse jump logic
1206         jnb  _output_to_string,00198$
1207 00343$:
1208         mov     dpl,#0x00
1209         lcall   _output_char
1210 00198$:
1211         C$vprintf.c$414$1$1 ==.
1212         XG$vsprintf$0$0 ==.
1213         ret
1214         G$vprintf$0$0 ==.
1215 ;       vprintf.c 418
1216 ;       -----------------------------------------
1217 ;        function vprintf
1218 ;       -----------------------------------------
1219 _vprintf:
1220 ;       vprintf.c 420
1221         mov     _vsprintf_PARM_2,dpl
1222         mov     (_vsprintf_PARM_2 + 1),dph
1223         mov     (_vsprintf_PARM_2 + 2),b
1224         mov     _vsprintf_PARM_3,_vprintf_PARM_2
1225 ; Peephole 181   used 16 bit load of dptr
1226         mov  dptr,#0x0000
1227         mov     b,#0x00
1228         lcall   _vsprintf
1229 00101$:
1230         C$vprintf.c$421$1$1 ==.
1231         XG$vprintf$0$0 ==.
1232         ret
1233         .area   CSEG    (CODE)
1234 Fvprintf$memory_id$0$0 == .
1235 _memory_id:
1236         .ascii /IXCP-/
1237         .byte   0