From 2f2bced53124ed03ed33e1ba3a3e9c197b10834a Mon Sep 17 00:00:00 2001 From: uz Date: Tue, 15 Sep 2009 21:25:44 +0000 Subject: [PATCH] Shrink atoi by using negeax instead of inlined code. git-svn-id: svn://svn.cc65.org/cc65/trunk@4179 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/common/atoi.s | 42 +++++++++++------------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/libsrc/common/atoi.s b/libsrc/common/atoi.s index 673275573..d55ddb9e8 100644 --- a/libsrc/common/atoi.s +++ b/libsrc/common/atoi.s @@ -6,7 +6,7 @@ ; .export _atoi, _atol - .import __ctype + .import negeax, __ctype .importzp sreg, ptr1, ptr2, tmp1 .include "ctype.inc" @@ -111,48 +111,28 @@ L7: iny inc ptr1+1 bne L6 -; Conversion done. Be shure to negate the value if needed. +; Conversion done. Load the low 16 bit into A/X -L8: lda ptr2 - ldx ptr2+1 - ldy tmp1 ; sign - beq L9 +L8: lda ptr2 + ldx ptr2+1 -; Negate the 32 bit value in ptr2/sreg +; Negate the value if necessary, otherwise we're done - sec - lda ptr2 - eor #$FF - adc #0 - sta ptr2 - lda ptr2+1 - eor #$FF - adc #0 - sta ptr2+1 - lda sreg - eor #$FF - adc #0 - sta sreg - lda sreg+1 - eor #$FF - adc #0 - sta sreg+1 + ldy tmp1 ; sign + beq L9 ; Branch if positive -; Done, load the low 16 bit into A/X +; Negate the 32 bit value in ptr2/sreg -L9: lda ptr2 - ldx ptr2+1 ; get value - rts + jmp negeax ; ; Helper functions ; -mul2: - asl ptr2 +mul2: asl ptr2 rol ptr2+1 rol sreg rol sreg+1 ; * 2 - rts +L9: rts -- 2.39.5