;-------------------------------------------------------- ; File Created by SDCC : free open source ANSI-C Compiler ; Version 3.9.3 #11345 (Linux) ;-------------------------------------------------------- .module printf_large .optsdcc -mstm8 ;-------------------------------------------------------- ; Public variables in this module ;-------------------------------------------------------- .globl _strlen .globl __print_format ;-------------------------------------------------------- ; ram data ;-------------------------------------------------------- .area DATA ;-------------------------------------------------------- ; ram data ;-------------------------------------------------------- .area INITIALIZED ;-------------------------------------------------------- ; absolute external ram data ;-------------------------------------------------------- .area DABS (ABS) ; default segment ordering for linker .area HOME .area GSINIT .area GSFINAL .area CONST .area INITIALIZER .area CODE ;-------------------------------------------------------- ; global & static initialisations ;-------------------------------------------------------- .area HOME .area GSINIT .area GSFINAL .area GSINIT ;-------------------------------------------------------- ; Home ;-------------------------------------------------------- .area HOME .area HOME ;-------------------------------------------------------- ; code ;-------------------------------------------------------- .area CODE ; ../printf_large.c: 116: output_digit (unsigned char n, bool lower_case, pfn_outputchar output_char, void* p) ; ----------------------------------------- ; function output_digit ; ----------------------------------------- _output_digit: ; ../printf_large.c: 118: register unsigned char c = n + (unsigned char)'0'; ld a, (0x04, sp) add a, #0x30 ; ../printf_large.c: 120: if (c > (unsigned char)'9') cp a, #0x39 jrule 00104$ ; ../printf_large.c: 122: c += (unsigned char)('A' - '0' - 10); add a, #0x07 ; ../printf_large.c: 123: if (lower_case) tnz (0x05, sp) jreq 00104$ ; ../printf_large.c: 124: c += (unsigned char)('a' - 'A'); add a, #0x20 00104$: ; ../printf_large.c: 126: output_char( c, p ); ldw x, (0x09, sp) pushw x push a push #(00119$) push #(00119$ >> 8) push #(00119$ >> 16) ldw x, (0x0d, sp) pushw x ld a, (0x0e, sp) push a retf 00119$: addw sp, #3 ; ../printf_large.c: 127: } retf ; ../printf_large.c: 149: output_2digits (unsigned char b, bool lower_case, pfn_outputchar output_char, void* p) ; ----------------------------------------- ; function output_2digits ; ----------------------------------------- _output_2digits: push a ; ../printf_large.c: 151: output_digit( b>>4, lower_case, output_char, p ); ld a, (0x05, sp) swap a and a, #0x0f ld (0x01, sp), a ldw x, (0x0a, sp) pushw x ldw x, (0x0a, sp) pushw x ld a, (0x0b, sp) push a ld a, (0x0b, sp) push a ld a, (0x07, sp) push a callf _output_digit addw sp, #7 ; ../printf_large.c: 152: output_digit( b&0x0F, lower_case, output_char, p ); ld a, (0x05, sp) and a, #0x0f ld (0x01, sp), a ldw x, (0x0a, sp) pushw x ldw x, (0x0a, sp) pushw x ld a, (0x0b, sp) push a ld a, (0x0b, sp) push a ld a, (0x07, sp) push a callf _output_digit ; ../printf_large.c: 153: } addw sp, #8 retf ; ../printf_large.c: 168: calculate_digit (value_t _AUTOMEM * value, unsigned char radix) ; ----------------------------------------- ; function calculate_digit ; ----------------------------------------- _calculate_digit: sub sp, #9 ; ../printf_large.c: 170: unsigned long ul = value->ul; ldw y, (0x0d, sp) ldw (0x01, sp), y ldw x, y ldw y, (0x2, y) ldw x, (x) ldw (0x08, sp), y ldw (0x06, sp), x ; ../printf_large.c: 171: unsigned char _AUTOMEM * pb4 = &value->byte[4]; ldw x, (0x01, sp) addw x, #0x0004 ldw (0x03, sp), x ; ../printf_large.c: 172: unsigned char i = 32; ld a, #0x20 ld (0x05, sp), a ; ../printf_large.c: 174: do 00103$: ; ../printf_large.c: 176: *pb4 = (*pb4 << 1) | ((ul >> 31) & 0x01); ldw x, (0x03, sp) ld a, (x) sll a ld xl, a ld a, (0x06, sp) sll a clr a rlc a pushw x or a, (2, sp) popw x ldw x, (0x03, sp) ld (x), a ; ../printf_large.c: 177: ul <<= 1; sll (0x09, sp) rlc (0x08, sp) rlc (0x07, sp) rlc (0x06, sp) ; ../printf_large.c: 179: if (radix <= *pb4 ) cp a, (0x0f, sp) jrc 00104$ ; ../printf_large.c: 181: *pb4 -= radix; ldw x, (0x03, sp) ld a, (x) sub a, (0x0f, sp) ldw x, (0x03, sp) ld (x), a ; ../printf_large.c: 182: ul |= 1; ld a, (0x09, sp) or a, #0x01 ld yl, a ld a, (0x08, sp) ld yh, a ld a, (0x07, sp) ld xl, a ld a, (0x06, sp) ld xh, a ldw (0x08, sp), y ldw (0x06, sp), x 00104$: ; ../printf_large.c: 184: } while (--i); dec (0x05, sp) jrne 00103$ ; ../printf_large.c: 185: value->ul = ul; ldw x, (0x01, sp) ldw y, (0x08, sp) ldw (0x2, x), y ldw y, (0x06, sp) ldw (x), y ; ../printf_large.c: 186: } addw sp, #9 retf ; ../printf_large.c: 434: _print_format (pfn_outputchar pfn, void* pvoid, const char *format, va_list ap) ; ----------------------------------------- ; function _print_format ; ----------------------------------------- __print_format: sub sp, #45 ; ../printf_large.c: 466: charsOutputted = 0; clrw x ldw (0x10, sp), x ; ../printf_large.c: 475: while( c=*format++ ) ldw x, sp addw x, #15 ldw (0x12, sp), x ldw x, sp addw x, #5 ldw (0x14, sp), x addw x, #0x0004 ldw (0x16, sp), x ldw (0x18, sp), x ldw y, (0x16, sp) ldw (0x1a, sp), y 00231$: ldw x, (0x36, sp) ld a, (x) incw x ldw (0x36, sp), x ld xl, a tnz a jrne 00627$ jpf 00233$ 00627$: ; ../printf_large.c: 477: if ( c=='%' ) ld a, xl cp a, #0x25 jreq 00630$ jpf 00229$ 00630$: ; ../printf_large.c: 479: left_justify = 0; clr (0x1c, sp) ; ../printf_large.c: 480: zero_padding = 0; clr (0x1d, sp) ; ../printf_large.c: 481: prefix_sign = 0; clr (0x1e, sp) ; ../printf_large.c: 482: prefix_space = 0; clr (0x1f, sp) ; ../printf_large.c: 483: signed_argument = 0; clr (0x20, sp) ; ../printf_large.c: 484: char_argument = 0; clr (0x21, sp) ; ../printf_large.c: 485: long_argument = 0; clr (0x22, sp) ; ../printf_large.c: 486: float_argument = 0; clr (0x23, sp) ; ../printf_large.c: 487: radix = 0; clr (0x24, sp) ; ../printf_large.c: 488: width = 0; clrw x ldw (0x25, sp), x ; ../printf_large.c: 489: decimals = -1; ldw x, #0xffff ldw (0x2a, sp), x ; ../printf_large.c: 491: get_conversion_spec: ldw y, (0x36, sp) ldw (0x28, sp), y 00101$: ; ../printf_large.c: 493: c = *format++; ldw x, (0x28, sp) ld a, (x) ld (0x2d, sp), a ldw x, (0x28, sp) incw x ldw (0x28, sp), x ldw (0x36, sp), x ; ../printf_large.c: 495: if (c=='%') ld a, (0x2d, sp) cp a, #0x25 jrne 00103$ ; ../printf_large.c: 497: OUTPUT_CHAR(c, p); ldw x, (0x34, sp) pushw x ld a, (0x2f, sp) push a push #(00635$) push #(00635$ >> 8) push #(00635$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00635$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x10, sp), x ; ../printf_large.c: 498: continue; jra 00231$ 00103$: ; ../printf_large.c: 501: if (isdigit(c)) ld a, (0x2d, sp) cp a, #0x30 jrc 00110$ ld a, (0x2d, sp) cp a, #0x39 jrugt 00110$ ; ../printf_large.c: 503: if (decimals==-1) ldw x, (0x2a, sp) incw x jrne 00107$ ; ../printf_large.c: 505: width = 10*width + c - '0'; ldw x, (0x25, sp) sllw x sllw x addw x, (0x25, sp) sllw x ldw (0x03, sp), x clr (0x2c, sp) ldw x, (0x03, sp) addw x, (0x2c, sp) ldw (0x26, sp), x subw x, #0x0030 ldw (0x2c, sp), x ; ../printf_large.c: 506: if (width == 0) ldw (0x25, sp), x jrne 00101$ ; ../printf_large.c: 509: zero_padding = 1; ld a, #0x01 ld (0x1d, sp), a jra 00101$ 00107$: ; ../printf_large.c: 514: decimals = 10*decimals + c - '0'; ldw x, (0x2a, sp) sllw x sllw x addw x, (0x2a, sp) sllw x ldw (0x03, sp), x clr (0x2c, sp) ldw x, (0x03, sp) addw x, (0x2c, sp) ldw (0x2a, sp), x subw x, #0x0030 ldw (0x2c, sp), x ldw (0x2a, sp), x ; ../printf_large.c: 516: goto get_conversion_spec; jra 00101$ 00110$: ; ../printf_large.c: 519: if (c=='.') ld a, (0x2d, sp) cp a, #0x2e jrne 00115$ ; ../printf_large.c: 521: if (decimals==-1) ldw x, (0x2a, sp) incw x jreq 00647$ jpf 00101$ 00647$: ; ../printf_large.c: 522: decimals=0; clrw x ldw (0x2a, sp), x ; ../printf_large.c: 525: goto get_conversion_spec; jpf 00101$ 00115$: ; ../printf_large.c: 528: if (islower(c)) ld a, (0x2d, sp) cp a, #0x61 jrc 00117$ ld a, (0x2d, sp) cp a, #0x7a jrugt 00117$ ; ../printf_large.c: 530: c = toupper(c); ld a, (0x2d, sp) and a, #0xdf ld (0x2d, sp), a ; ../printf_large.c: 531: lower_case = 1; ld a, #0x01 ld (0x27, sp), a ; ../printf_large.c: 534: lower_case = 0; .byte 0xc5 00117$: clr (0x27, sp) 00118$: ; ../printf_large.c: 536: switch( c ) ld a, (0x2d, sp) cp a, #0x20 jrne 00651$ jpf 00122$ 00651$: ld a, (0x2d, sp) cp a, #0x2b jrne 00654$ jpf 00121$ 00654$: ld a, (0x2d, sp) cp a, #0x2d jrne 00657$ jpf 00120$ 00657$: ld a, (0x2d, sp) cp a, #0x42 jrne 00660$ jpf 00123$ 00660$: ld a, (0x2d, sp) cp a, #0x43 jrne 00663$ jpf 00129$ 00663$: ld a, (0x2d, sp) cp a, #0x44 jrne 00666$ jpf 00154$ 00666$: ld a, (0x2d, sp) cp a, #0x46 jrne 00669$ jpf 00158$ 00669$: ld a, (0x2d, sp) cp a, #0x48 jrne 00672$ jpf 00101$ 00672$: ld a, (0x2d, sp) cp a, #0x49 jrne 00675$ jpf 00154$ 00675$: ld a, (0x2d, sp) cp a, #0x4a jrne 00678$ jpf 00101$ 00678$: ld a, (0x2d, sp) cp a, #0x4c jreq 00128$ ld a, (0x2d, sp) cp a, #0x4f jrne 00684$ jpf 00155$ 00684$: ld a, (0x2d, sp) cp a, #0x50 jrne 00687$ jpf 00152$ 00687$: ld a, (0x2d, sp) cp a, #0x53 jrne 00690$ jpf 00133$ 00690$: ld a, (0x2d, sp) cp a, #0x54 jrne 00693$ jpf 00101$ 00693$: ld a, (0x2d, sp) cp a, #0x55 jrne 00696$ jpf 00156$ 00696$: ld a, (0x2d, sp) cp a, #0x58 jrne 00699$ jpf 00157$ 00699$: ld a, (0x2d, sp) cp a, #0x5a jrne 00702$ jpf 00101$ 00702$: jpf 00159$ ; ../printf_large.c: 538: case '-': 00120$: ; ../printf_large.c: 539: left_justify = 1; ld a, #0x01 ld (0x1c, sp), a ; ../printf_large.c: 540: goto get_conversion_spec; jpf 00101$ ; ../printf_large.c: 541: case '+': 00121$: ; ../printf_large.c: 542: prefix_sign = 1; ld a, #0x01 ld (0x1e, sp), a ; ../printf_large.c: 543: goto get_conversion_spec; jpf 00101$ ; ../printf_large.c: 544: case ' ': 00122$: ; ../printf_large.c: 545: prefix_space = 1; ld a, #0x01 ld (0x1f, sp), a ; ../printf_large.c: 546: goto get_conversion_spec; jpf 00101$ ; ../printf_large.c: 547: case 'B': /* byte */ 00123$: ; ../printf_large.c: 548: char_argument = 1; ld a, #0x01 ld (0x21, sp), a ; ../printf_large.c: 549: goto get_conversion_spec; jpf 00101$ ; ../printf_large.c: 556: case 'L': /* long */ 00128$: ; ../printf_large.c: 557: long_argument = 1; ld a, #0x01 ld (0x22, sp), a ; ../printf_large.c: 558: goto get_conversion_spec; jpf 00101$ ; ../printf_large.c: 560: case 'C': 00129$: ; ../printf_large.c: 561: if( char_argument ) tnz (0x21, sp) jreq 00131$ ; ../printf_large.c: 562: c = va_arg(ap,char); ldw x, (0x38, sp) incw x ldw (0x38, sp), x addw x, #0xffff ld a, (x) jra 00132$ 00131$: ; ../printf_large.c: 564: c = va_arg(ap,int); ldw x, (0x38, sp) incw x incw x ldw (0x38, sp), x decw x decw x ld a, (0x1, x) 00132$: ; ../printf_large.c: 565: OUTPUT_CHAR( c, p ); ldw x, (0x34, sp) pushw x push a push #(00705$) push #(00705$ >> 8) push #(00705$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00705$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x10, sp), x ; ../printf_large.c: 566: break; jpf 00160$ ; ../printf_large.c: 568: case 'S': 00133$: ; ../printf_large.c: 569: PTR = va_arg(ap,ptr_t); ldw x, (0x38, sp) incw x incw x ldw (0x38, sp), x decw x decw x ldw x, (x) ldw (0x05, sp), x ; ../printf_large.c: 582: length = strlen(PTR); pushw x callf _strlen addw sp, #2 ldw (0x28, sp), x ; ../printf_large.c: 584: if ( decimals == -1 ) ldw x, (0x2a, sp) incw x jrne 00135$ ; ../printf_large.c: 586: decimals = length; ldw y, (0x28, sp) ldw (0x2a, sp), y 00135$: ; ../printf_large.c: 588: if ( ( !left_justify ) && (length < width) ) tnz (0x1c, sp) jrne 00277$ ldw x, (0x28, sp) cpw x, (0x25, sp) jrnc 00277$ ; ../printf_large.c: 590: width -= length; ldw x, (0x25, sp) subw x, (0x28, sp) ; ../printf_large.c: 591: while( width-- != 0 ) ldw y, (0x10, sp) ldw (0x25, sp), y ldw (0x2c, sp), x 00136$: ldw x, (0x2c, sp) ldw y, (0x2c, sp) decw y ldw (0x2c, sp), y tnzw x jreq 00312$ ; ../printf_large.c: 593: OUTPUT_CHAR( ' ', p ); ldw x, (0x34, sp) pushw x push #0x20 push #(00712$) push #(00712$ >> 8) push #(00712$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00712$: addw sp, #3 ldw x, (0x25, sp) incw x ldw (0x25, sp), x jra 00136$ ; ../printf_large.c: 597: while ( (c = *PTR) && (decimals-- > 0)) 00312$: ldw y, (0x25, sp) ldw (0x10, sp), y ldw y, (0x2c, sp) ldw (0x25, sp), y 00277$: ldw y, (0x10, sp) ldw (0x2c, sp), y 00143$: ldw x, (0x05, sp) ld a, (x) ld (0x11, sp), a jreq 00313$ ldw x, (0x2a, sp) cpw x, #0x0000 jrsle 00313$ ldw x, (0x2a, sp) decw x ldw (0x2a, sp), x ; ../printf_large.c: 599: OUTPUT_CHAR( c, p ); ldw x, (0x34, sp) pushw x ld a, (0x13, sp) push a push #(00716$) push #(00716$ >> 8) push #(00716$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00716$: addw sp, #3 ldw x, (0x2c, sp) incw x ldw (0x2c, sp), x ; ../printf_large.c: 600: PTR++; ldw x, (0x05, sp) incw x ldw (0x05, sp), x jra 00143$ 00313$: ldw y, (0x2c, sp) ldw (0x10, sp), y ; ../printf_large.c: 603: if ( left_justify && (length < width)) tnz (0x1c, sp) jrne 00718$ jpf 00160$ 00718$: ldw x, (0x28, sp) cpw x, (0x25, sp) jrc 00719$ jpf 00160$ 00719$: ; ../printf_large.c: 605: width -= length; ldw x, (0x25, sp) subw x, (0x28, sp) ldw (0x2a, sp), x ldw (0x25, sp), x ; ../printf_large.c: 606: while( width-- != 0 ) ldw y, (0x2c, sp) ldw (0x29, sp), y ldw y, (0x25, sp) ldw (0x2c, sp), y 00146$: ldw x, (0x2c, sp) ldw y, (0x2c, sp) decw y ldw (0x2c, sp), y tnzw x jrne 00720$ jpf 00314$ 00720$: ; ../printf_large.c: 608: OUTPUT_CHAR( ' ', p ); ldw x, (0x34, sp) pushw x push #0x20 push #(00721$) push #(00721$ >> 8) push #(00721$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00721$: addw sp, #3 ldw x, (0x29, sp) incw x ldw (0x29, sp), x jra 00146$ ; ../printf_large.c: 613: case 'P': 00152$: ; ../printf_large.c: 614: PTR = va_arg(ap,ptr_t); ldw x, (0x38, sp) incw x incw x ldw (0x2a, sp), x ldw (0x38, sp), x ldw x, (0x2a, sp) decw x decw x ldw (0x2c, sp), x ldw (0x2a, sp), x ldw x, (x) ldw (0x2c, sp), x ldw (0x05, sp), x ; ../printf_large.c: 658: OUTPUT_CHAR('0', p); ldw x, (0x34, sp) pushw x push #0x30 push #(00723$) push #(00723$ >> 8) push #(00723$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00723$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x2c, sp), x ldw (0x2a, sp), x ; ../printf_large.c: 659: OUTPUT_CHAR('x', p); ldw x, (0x34, sp) pushw x push #0x78 push #(00724$) push #(00724$ >> 8) push #(00724$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00724$: addw sp, #3 ldw x, (0x2a, sp) incw x ldw (0x2c, sp), x ldw (0x2a, sp), x ; ../printf_large.c: 660: OUTPUT_2DIGITS( value.byte[1] ); ld a, (0x06, sp) ld (0x2d, sp), a ldw x, (0x34, sp) pushw x ldw x, (0x34, sp) pushw x ld a, (0x35, sp) push a ld a, (0x2c, sp) push a ld a, (0x33, sp) push a callf _output_2digits addw sp, #7 ldw x, (0x2a, sp) incw x incw x ldw (0x2c, sp), x ldw (0x2a, sp), x ; ../printf_large.c: 661: OUTPUT_2DIGITS( value.byte[0] ); ld a, (0x05, sp) ld (0x2d, sp), a ldw x, (0x34, sp) pushw x ldw x, (0x34, sp) pushw x ld a, (0x35, sp) push a ld a, (0x2c, sp) push a ld a, (0x33, sp) push a callf _output_2digits addw sp, #7 ldw x, (0x2a, sp) incw x incw x ldw (0x2c, sp), x ldw (0x10, sp), x ; ../printf_large.c: 663: break; jra 00160$ ; ../printf_large.c: 666: case 'I': 00154$: ; ../printf_large.c: 667: signed_argument = 1; ld a, #0x01 ld (0x20, sp), a ; ../printf_large.c: 668: radix = 10; ld a, #0x0a ld (0x24, sp), a ; ../printf_large.c: 669: break; jra 00160$ ; ../printf_large.c: 671: case 'O': 00155$: ; ../printf_large.c: 672: radix = 8; ld a, #0x08 ld (0x24, sp), a ; ../printf_large.c: 673: break; jra 00160$ ; ../printf_large.c: 675: case 'U': 00156$: ; ../printf_large.c: 676: radix = 10; ld a, #0x0a ld (0x24, sp), a ; ../printf_large.c: 677: break; jra 00160$ ; ../printf_large.c: 679: case 'X': 00157$: ; ../printf_large.c: 680: radix = 16; ld a, #0x10 ld (0x24, sp), a ; ../printf_large.c: 681: break; jra 00160$ ; ../printf_large.c: 683: case 'F': 00158$: ; ../printf_large.c: 684: float_argument=1; ld a, #0x01 ld (0x23, sp), a ; ../printf_large.c: 685: break; jra 00160$ ; ../printf_large.c: 687: default: 00159$: ; ../printf_large.c: 689: OUTPUT_CHAR( c, p ); ldw x, (0x34, sp) pushw x ld a, (0x2f, sp) push a push #(00725$) push #(00725$ >> 8) push #(00725$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00725$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x2c, sp), x ldw (0x10, sp), x ; ../printf_large.c: 872: return charsOutputted; jra 00160$ ; ../printf_large.c: 691: } 00314$: ldw y, (0x29, sp) ldw (0x10, sp), y ldw y, (0x2c, sp) ldw (0x25, sp), y 00160$: ; ../printf_large.c: 693: if (float_argument) tnz (0x23, sp) jreq 00226$ ; ../printf_large.c: 695: value.f = va_arg(ap, float); ldw x, (0x38, sp) addw x, #0x0004 ldw (0x38, sp), x subw x, #0x0004 ldw y, x ldw y, (0x2, y) ldw x, (x) ldw (0x07, sp), y ldw (0x05, sp), x ; ../printf_large.c: 697: PTR=""; ldw x, #(___str_0 + 0) ldw (0x05, sp), x ; ../printf_large.c: 698: while (c=*PTR++) ldw y, (0x10, sp) ldw (0x2c, sp), y 00161$: ldw y, (0x05, sp) ldw (0x28, sp), y ldw x, y incw x ldw (0x2a, sp), x ldw (0x05, sp), x ldw x, (0x28, sp) ld a, (x) ld xl, a tnz a jrne 00727$ jpf 00231$ 00727$: ; ../printf_large.c: 700: OUTPUT_CHAR (c, p); ldw y, (0x34, sp) pushw y ld a, xl push a push #(00728$) push #(00728$ >> 8) push #(00728$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00728$: addw sp, #3 ldw x, (0x2c, sp) incw x ldw (0x2c, sp), x ldw (0x10, sp), x jra 00161$ 00226$: ; ../printf_large.c: 718: else if (radix != 0) tnz (0x24, sp) jrne 00730$ jpf 00231$ 00730$: ; ../printf_large.c: 723: unsigned char MEM_SPACE_BUF_PP *pstore = &store[5]; ldw x, (0x12, sp) ldw (0x2b, sp), x ; ../printf_large.c: 726: if (char_argument) tnz (0x21, sp) jreq 00172$ ; ../printf_large.c: 728: value.l = va_arg(ap, char); ldw x, (0x38, sp) incw x ldw (0x38, sp), x addw x, #0xffff ld a, (x) clrw x ld xl, a clrw y ldw (0x07, sp), x ldw (0x05, sp), y ; ../printf_large.c: 729: if (!signed_argument) tnz (0x20, sp) jrne 00173$ ; ../printf_large.c: 731: value.l &= 0xFF; ldw x, (0x07, sp) clr a ld xh, a clrw y ldw (0x07, sp), x ldw (0x05, sp), y jra 00173$ 00172$: ; ../printf_large.c: 734: else if (long_argument) tnz (0x22, sp) jreq 00169$ ; ../printf_large.c: 736: value.l = va_arg(ap, long); ldw x, (0x38, sp) addw x, #0x0004 ldw (0x38, sp), x subw x, #0x0004 ldw y, x ldw y, (0x2, y) ldw x, (x) ldw (0x07, sp), y ldw (0x05, sp), x jra 00173$ 00169$: ; ../printf_large.c: 740: value.l = va_arg(ap, int); ldw x, (0x38, sp) incw x incw x ldw (0x38, sp), x decw x decw x ldw x, (x) clrw y tnzw x jrpl 00734$ decw y 00734$: ldw (0x07, sp), x ldw (0x05, sp), y ; ../printf_large.c: 741: if (!signed_argument) tnz (0x20, sp) jrne 00173$ ; ../printf_large.c: 743: value.l &= 0xFFFF; ldw y, (0x07, sp) clrw x ldw (0x07, sp), y ldw (0x05, sp), x 00173$: ; ../printf_large.c: 747: if ( signed_argument ) tnz (0x20, sp) jreq 00178$ ; ../printf_large.c: 749: if (value.l < 0) ldw x, (0x05, sp) jrpl 00175$ ; ../printf_large.c: 750: value.l = -value.l; ldw y, (0x07, sp) ldw (0x03, sp), y ldw y, (0x05, sp) ldw (0x01, sp), y ldw y, (0x03, sp) negw y ldw x, (0x01, sp) jrnc 00738$ incw x 00738$: negw x ldw (0x07, sp), y ldw (0x05, sp), x ; ../printf_large.c: 752: signed_argument = 0; .byte 0xc5 00175$: clr (0x20, sp) 00178$: ; ../printf_large.c: 756: lsd = 1; ld a, #0x01 ld (0x2d, sp), a ; ../printf_large.c: 758: do { ldw y, (0x2b, sp) ldw (0x29, sp), y clrw x ldw (0x2b, sp), x 00182$: ; ../printf_large.c: 759: value.byte[4] = 0; clr (0x09, sp) ; ../printf_large.c: 761: calculate_digit(&value, radix); ldw x, (0x14, sp) ld a, (0x24, sp) push a pushw x callf _calculate_digit addw sp, #3 ; ../printf_large.c: 765: if (!lsd) tnz (0x2d, sp) jrne 00180$ ; ../printf_large.c: 767: *pstore = (value.byte[4] << 4) | (value.byte[4] >> 4) | *pstore; ldw x, (0x18, sp) ld a, (x) swap a and a, #0xf0 ld xl, a ldw y, (0x18, sp) ld a, (y) swap a and a, #0x0f pushw x or a, (2, sp) popw x ld (0x28, sp), a ldw x, (0x29, sp) ld a, (x) or a, (0x28, sp) ldw x, (0x29, sp) ld (x), a ; ../printf_large.c: 768: pstore--; ldw x, (0x29, sp) decw x ldw (0x29, sp), x jra 00181$ 00180$: ; ../printf_large.c: 772: *pstore = value.byte[4]; ldw x, (0x16, sp) ld a, (x) ldw x, (0x29, sp) ld (x), a 00181$: ; ../printf_large.c: 774: length++; ldw x, (0x2b, sp) incw x ldw (0x2b, sp), x ; ../printf_large.c: 775: lsd = !lsd; ld a, (0x2d, sp) sub a, #0x01 clr a rlc a ld (0x2d, sp), a ; ../printf_large.c: 776: } while( value.ul ); ldw x, (0x14, sp) ldw y, x ldw y, (0x2, y) ldw (0x03, sp), y ldw x, (x) ldw y, (0x03, sp) jrne 00182$ tnzw x jrne 00182$ ; ../printf_large.c: 778: if (width == 0) ldw y, (0x29, sp) ldw (0x21, sp), y ldw y, (0x2b, sp) ldw (0x23, sp), y ldw x, (0x25, sp) jrne 00186$ ; ../printf_large.c: 783: width = 1; ldw x, #0x0001 ldw (0x25, sp), x 00186$: ; ../printf_large.c: 787: if (!zero_padding && !left_justify) tnz (0x1d, sp) jrne 00191$ tnz (0x1c, sp) jrne 00191$ ; ../printf_large.c: 789: while ( width > (unsigned char) (length+1) ) ldw y, (0x10, sp) ldw (0x29, sp), y ldw y, (0x25, sp) ldw (0x2b, sp), y 00187$: ld a, (0x24, sp) inc a clrw x ld xl, a cpw x, (0x2b, sp) jrnc 00316$ ; ../printf_large.c: 791: OUTPUT_CHAR( ' ', p ); ldw x, (0x34, sp) pushw x push #0x20 push #(00747$) push #(00747$ >> 8) push #(00747$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00747$: addw sp, #3 ldw x, (0x29, sp) incw x ldw (0x29, sp), x ; ../printf_large.c: 792: width--; ldw x, (0x2b, sp) decw x ldw (0x2b, sp), x jra 00187$ 00316$: ldw y, (0x29, sp) ldw (0x10, sp), y ldw y, (0x2b, sp) ldw (0x25, sp), y 00191$: ; ../printf_large.c: 796: if (signed_argument) // this now means the original value was negative tnz (0x20, sp) jreq 00201$ ; ../printf_large.c: 798: OUTPUT_CHAR( '-', p ); ldw x, (0x34, sp) pushw x push #0x2d push #(00750$) push #(00750$ >> 8) push #(00750$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00750$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x10, sp), x ; ../printf_large.c: 800: width--; ldw x, (0x25, sp) decw x ldw (0x25, sp), x jra 00202$ 00201$: ; ../printf_large.c: 802: else if (length != 0) ldw x, (0x23, sp) jreq 00202$ ; ../printf_large.c: 805: if (prefix_sign) tnz (0x1e, sp) jreq 00196$ ; ../printf_large.c: 807: OUTPUT_CHAR( '+', p ); ldw x, (0x34, sp) pushw x push #0x2b push #(00753$) push #(00753$ >> 8) push #(00753$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00753$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x10, sp), x ; ../printf_large.c: 809: width--; ldw x, (0x25, sp) decw x ldw (0x25, sp), x jra 00202$ 00196$: ; ../printf_large.c: 811: else if (prefix_space) tnz (0x1f, sp) jreq 00202$ ; ../printf_large.c: 813: OUTPUT_CHAR( ' ', p ); ldw x, (0x34, sp) pushw x push #0x20 push #(00755$) push #(00755$ >> 8) push #(00755$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00755$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x10, sp), x ; ../printf_large.c: 815: width--; ldw x, (0x25, sp) decw x ldw (0x25, sp), x 00202$: ; ../printf_large.c: 820: if (!left_justify) tnz (0x1c, sp) jrne 00210$ ; ../printf_large.c: 822: while ( width-- > length ) ldw y, (0x10, sp) ldw (0x29, sp), y ldw y, (0x25, sp) ldw (0x2b, sp), y 00203$: ldw y, (0x2b, sp) ldw x, (0x2b, sp) decw x ldw (0x2b, sp), x ldw x, y cpw x, (0x23, sp) jrule 00317$ ; ../printf_large.c: 824: OUTPUT_CHAR( zero_padding ? '0' : ' ', p ); tnz (0x1d, sp) jreq 00236$ ldw x, #0x0030 .byte 0xbc 00236$: ldw x, #0x0020 00237$: ld a, xl ldw x, (0x34, sp) pushw x push a push #(00759$) push #(00759$ >> 8) push #(00759$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00759$: addw sp, #3 ldw x, (0x29, sp) incw x ldw (0x29, sp), x jra 00203$ 00210$: ; ../printf_large.c: 830: if (width > length) ldw x, (0x25, sp) cpw x, (0x23, sp) jrule 00207$ ; ../printf_large.c: 831: width -= length; ldw x, (0x25, sp) subw x, (0x23, sp) ldw (0x28, sp), x jra 00309$ 00207$: ; ../printf_large.c: 833: width = 0; clrw x ldw (0x28, sp), x ; ../printf_large.c: 872: return charsOutputted; jra 00309$ ; ../printf_large.c: 837: while( length-- ) 00317$: ldw y, (0x29, sp) ldw (0x10, sp), y ldw y, (0x2b, sp) ldw (0x28, sp), y 00309$: ldw y, (0x21, sp) ldw (0x2b, sp), y ldw y, (0x10, sp) ldw (0x25, sp), y 00215$: ldw x, (0x23, sp) ldw y, (0x23, sp) decw y ldw (0x23, sp), y tnzw x jreq 00318$ ; ../printf_large.c: 839: lsd = !lsd; ld a, (0x2d, sp) sub a, #0x01 clr a rlc a ; ../printf_large.c: 840: if (!lsd) ld (0x2d, sp), a jrne 00213$ ; ../printf_large.c: 842: pstore++; ldw x, (0x2b, sp) incw x ; ../printf_large.c: 843: value.byte[4] = *pstore >> 4; ldw (0x2b, sp), x ld a, (x) swap a and a, #0x0f ldw x, (0x16, sp) ld (x), a jra 00214$ 00213$: ; ../printf_large.c: 847: value.byte[4] = *pstore & 0x0F; ldw x, (0x2b, sp) ld a, (x) and a, #0x0f ldw x, (0x16, sp) ld (x), a 00214$: ; ../printf_large.c: 850: output_digit( value.byte[4], lower_case, output_char, p ); ldw x, (0x1a, sp) ld a, (x) ld (0x2a, sp), a ldw x, (0x34, sp) pushw x ldw x, (0x34, sp) pushw x ld a, (0x35, sp) push a ld a, (0x2c, sp) push a ld a, (0x30, sp) push a callf _output_digit addw sp, #7 ; ../printf_large.c: 851: charsOutputted++; ldw x, (0x25, sp) incw x ldw (0x25, sp), x jra 00215$ 00318$: ldw y, (0x25, sp) ldw (0x10, sp), y ; ../printf_large.c: 856: if (left_justify) tnz (0x1c, sp) jrne 00766$ jpf 00231$ 00766$: ; ../printf_large.c: 858: while (width-- > 0) ldw y, (0x25, sp) ldw (0x2c, sp), y ldw y, (0x28, sp) ldw (0x2a, sp), y 00218$: ldw x, (0x2a, sp) ldw y, (0x2a, sp) decw y ldw (0x2a, sp), y tnzw x jrne 00767$ jpf 00231$ 00767$: ; ../printf_large.c: 860: OUTPUT_CHAR(' ', p); ldw x, (0x34, sp) pushw x push #0x20 push #(00768$) push #(00768$ >> 8) push #(00768$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00768$: addw sp, #3 ldw x, (0x2c, sp) incw x ldw (0x2c, sp), x ldw (0x10, sp), x jra 00218$ 00229$: ; ../printf_large.c: 868: OUTPUT_CHAR( c, p ); ldw y, (0x34, sp) pushw y ld a, xl push a push #(00770$) push #(00770$ >> 8) push #(00770$ >> 16) ldw x, (0x38, sp) pushw x ld a, (0x39, sp) push a retf 00770$: addw sp, #3 ldw x, (0x10, sp) incw x ldw (0x10, sp), x jpf 00231$ 00233$: ; ../printf_large.c: 872: return charsOutputted; ldw x, (0x10, sp) ; ../printf_large.c: 873: } addw sp, #45 retf .area CODE .area CONST .area CONST ___str_0: .ascii "" .db 0x00 .area CODE .area INITIALIZER .area CABS (ABS)