From ab3385672bfe3f24c19fb305b23273daa421a3e9 Mon Sep 17 00:00:00 2001 From: Michaelangel007 Date: Thu, 6 Jul 2017 15:28:28 -0700 Subject: [PATCH] Save another 8 bytes --- README.md | 29 +++++++++++++---------------- print_uint16 | Bin 96 -> 88 bytes print_uint16.s | 10 ++-------- print_uint16_sp | Bin 98 -> 90 bytes print_uint16_sp.s | 11 ++--------- print_uint16_zp | Bin 84 -> 76 bytes print_uint16_zp.s | 10 ++-------- 7 files changed, 19 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index ee6be24..ed35679 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ Features: * Highly optimized for space -* No zero-page usage [version](print_uint16.s) 89 ($59) bytes -* With zero-page usage [version](print_uint16_zp.s) 77 ($4D) bytes -* With stack var usage [version](print_uint16_sp.s) 91 ($5B) bytes +* No zero-page usage [version](print_uint16.s) 81 ($51) bytes +* With zero-page usage [version](print_uint16_zp.s) 69 ($45) bytes +* With stack var usage [version](print_uint16_sp.s) 83 ($53) bytes * Only 2 ROM entry points: COUT, SCRN2 * Includes 7 byte demo @@ -19,17 +19,16 @@ Sans-Zero-Page version: ```asm 0800:A9 12 A2 34 4C 07 08 8E -0808:5F 08 48 A2 00 8E 5C 08 -0810:8E 5D 08 8E 5E 08 A2 10 -0818:F8 0E 5F 08 68 2A 48 A0 -0820:FD B9 5F 07 79 5F 07 99 -0828:5F 07 C8 D0 F4 CA D0 E9 -0830:68 D8 A0 03 B9 5B 08 20 +0808:57 08 48 A2 00 8E 54 08 +0810:8E 55 08 8E 56 08 A2 10 +0818:F8 0E 57 08 68 2A 48 A0 +0820:FD B9 57 07 79 57 07 99 +0828:57 07 C8 D0 F4 CA D0 E9 +0830:68 D8 A0 03 B9 53 08 20 0838:41 08 88 D0 F7 8A F0 0E 0840:60 48 20 7B F8 20 4B 08 0848:68 29 0F D0 01 CA E8 F0 -0850:EF C9 0A 90 02 69 06 69 -0858:B0 4C ED FD 00 00 00 00 +0850:EF 4C E5 FD 00 00 00 00 ``` With-Zero-Page version: @@ -44,8 +43,7 @@ With-Zero-Page version: 0930:39 09 88 D0 F7 8A F0 0E 0938:60 48 20 7B F8 20 43 09 0940:68 29 0F D0 01 CA E8 F0 -0948:EF C9 0A 90 02 69 06 69 -0950:B0 4C ED FD +0948:EF 4C E5 FD ``` With-Stack-Page version: @@ -61,9 +59,8 @@ With-Stack-Page version: 0A38:98 F0 19 60 BD 01 01 7D 0A40:01 01 9D 01 01 E8 60 48 0A48:20 7B F8 20 51 0A 68 29 -0A50:0F D0 01 88 C8 F0 E4 C9 -0A58:0A 90 02 69 06 69 B0 4C -0A60:ED FD +0A50:0F D0 01 88 C8 F0 E4 4C +0A58:E5 FD ``` # License diff --git a/print_uint16 b/print_uint16 index 52d3717bd9562e34eeeada2377fcca1223c58c23..b8cfe95ca1bdb4ca988e9e71634a56bb701d297e 100644 GIT binary patch literal 88 zcmV-e0H^<{5~4Ir2MCT=2uPv;j#LPaRS1q&2%-@94p#_hDoCLHxmO2yR|lC_2guO$ u%FyX(*q{TsQwShI2#C=4itr9#NFaOoAWH~nDG$&A%INU#Oy&Im0002v!Xz93 literal 96 zcmV-m0H6P<5~4Ir2MCT|2uPv;j$8UQ2#C=4itr9#NFaOoAWH~nDG$&A%INU#$qJAHX$EPqOzr&u0000e CV<%Yv diff --git a/print_uint16.s b/print_uint16.s index 02a4f88..9a74f1d 100644 --- a/print_uint16.s +++ b/print_uint16.s @@ -5,7 +5,7 @@ ; Thanks to Gids for nudging a zero-page version ; F8 ROM Entry Points -COUT = $FDED +PRHEXZ = $FDE5 SCRN2 = $F879 ORG $800 @@ -82,13 +82,7 @@ _HexNib _HaveLeadingDigit INX ; X = flag to specify non-zero leading digit was seen BEQ _PrintDone - - CMP #$A ; n < 10 ? - BCC _Hex2Asc - ADC #6 ; n += 6 $A -> +6 + (C=1) = $11 -_Hex2Asc - ADC #'0' + $80 ; inverse=remove #$80 - JMP COUT + JMP PRHEXZ _bcd ds 3 ; 6 chars for printing dec _temp db 0 diff --git a/print_uint16_sp b/print_uint16_sp index e945de6a3015191040a8d39d8aec9ace5bf79f91..5c37466acfb3eabd82462db42a228622c8dd40cf 100644 GIT binary patch delta 8 PcmYd_nh?(H^YkwO4p;-# delta 16 Xcmaz_nh?%?l4}A}CR^qPpSOPjG4BS_ diff --git a/print_uint16_sp.s b/print_uint16_sp.s index 989859c..e1c6890 100644 --- a/print_uint16_sp.s +++ b/print_uint16_sp.s @@ -5,7 +5,7 @@ ; Thanks to Gids for nudging a zero-page version ; F8 ROM Entry Points -COUT = $FDED +PRHEXZ = $FDE5 SCRN2 = $F879 ORG $A00 ; Intentionally different from sans-zero-page & with-zero-page @@ -90,12 +90,5 @@ _HexNib _HaveLeadingDigit INY ; Y = output string length BEQ _PrintDone - - CMP #$A ; n < 10 ? - BCC _Hex2Asc - ADC #6 ; n += 6 $A -> +6 + (C=1) = $11 -_Hex2Asc - ADC #'0' + $80 ; inverse=remove #$80 -PutChar - JMP COUT + JMP PRHEXZ diff --git a/print_uint16_zp b/print_uint16_zp index 079b6530ee1a62bebc7336eb9aa5e5b93d9787b6..256baccf772d388c16aa4788164f2e08139ce2f3 100644 GIT binary patch delta 8 PcmWIXnc&In^YkwO4L}2{ delta 16 XcmeYXnc&HNl4}A}CR^qPpSOPjFNX%G diff --git a/print_uint16_zp.s b/print_uint16_zp.s index 6b924f5..2fba519 100644 --- a/print_uint16_zp.s +++ b/print_uint16_zp.s @@ -5,7 +5,7 @@ ; Thanks to Gids for nudging a zero-page version ; F8 ROM Entry Points -COUT = $FDED +PRHEXZ = $FDE5 SCRN2 = $F879 ; Zero-Page Version - 4 locations used @@ -86,11 +86,5 @@ _HexNib _HaveLeadingDigit INX ; X = flag to specify non-zero leading digit was seen BEQ _PrintDone - - CMP #$A ; n < 10 ? - BCC _Hex2Asc - ADC #6 ; n += 6 $A -> +6 + (C=1) = $11 -_Hex2Asc - ADC #'0' + $80 ; inverse=remove #$80 - JMP COUT + JMP PRHEXZ