diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /device/lib/stm8-large/printf_large.asm | |
| download | sdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz | |
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'device/lib/stm8-large/printf_large.asm')
| -rw-r--r-- | device/lib/stm8-large/printf_large.asm | 1426 |
1 files changed, 1426 insertions, 0 deletions
diff --git a/device/lib/stm8-large/printf_large.asm b/device/lib/stm8-large/printf_large.asm new file mode 100644 index 0000000..41c3930 --- /dev/null +++ b/device/lib/stm8-large/printf_large.asm @@ -0,0 +1,1426 @@ +;-------------------------------------------------------- +; 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="<NO FLOAT>"; + 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 "<NO FLOAT>" + .db 0x00 + .area CODE + .area INITIALIZER + .area CABS (ABS) |
