From: pjs Date: Wed, 9 Mar 2005 20:41:09 +0000 (+0000) Subject: fix leading zero support in printf_fast X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=278985655656ed610ae22bd47da9bd6596288b83;p=fw%2Fsdcc fix leading zero support in printf_fast git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3691 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 807437e4..5b95f8b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-03-09 Paul Stoffregen + + * device/lib/printf_fast.c: fix leading zero format, eg "%02d" + 2005-05-09 Raphael Neider * src/SDCCopt.c (killDeadCode): fixed bug #1156016 diff --git a/device/lib/printf_fast.c b/device/lib/printf_fast.c index 1db10082..4382d643 100644 --- a/device/lib/printf_fast.c +++ b/device/lib/printf_fast.c @@ -93,6 +93,7 @@ static bit long_flag, short_flag, print_zero_flag, negative_flag; #ifdef FIELD_WIDTH static bit field_width_flag; +static bit leading_zero_flag; static data unsigned char field_width; #endif @@ -161,6 +162,7 @@ printf_format: clr _negative_flag #ifdef FIELD_WIDTH clr _field_width_flag + clr _leading_zero_flag mov r1, #_field_width mov @r1, #0 #endif @@ -181,6 +183,10 @@ printf_format_loop: jnc printf_nondigit2 #ifdef FIELD_WIDTH printf_digit: + jnz printf_digit_2 + cjne a, _field_width, printf_digit_2 + setb _leading_zero_flag +printf_digit_2: setb _field_width_flag mov r2, a mov a, @r1 @@ -286,6 +292,7 @@ printf_string: #ifdef FIELD_WIDTH jnb _field_width_flag, printf_str_loop + clr _leading_zero_flag // never leading zeros for strings push dpl push dph printf_str_fw_loop: @@ -1409,6 +1416,10 @@ printf_i2bcd_add_skip: printf_space_loop: //mov a, #' ' mov a, #32 + jnb _leading_zero_flag, printf_space_output + //mov a, #'0' + mov a, #48 +printf_space_output: lcall printf_putchar dec _field_width printf_space: