; called a lot!
.export tosadda0, tosaddax
- .importzp sp, tmp1
+ .importzp sp
tosadda0:
ldx #0
tosaddax:
- ldy #0
- clc
- adc (sp),y ; lo byte
- sta tmp1 ; save it
- txa
- iny
- adc (sp),y ; hi byte
+ clc
+.ifpc02
+ adc (sp) ; 65C02 version - saves 2 cycles
+ ldy #1
+.else
+ ldy #0
+ adc (sp),y ; lo byte
+ iny
+.endif
+ pha ; save it
+ txa
+ adc (sp),y ; hi byte
tax
clc
lda sp
sta sp
bcc L1
inc sp+1
-L1: txa ; Test high byte
- bmi L2
- bne L3
- lda tmp1 ; Get low byte
- rts
-
-; Value is negative
-
-L2: lda tmp1 ; Get low byte
- ldy #$FF ; Force negative
- rts
-
-; Value is positive != 0
-
-L3: lda tmp1 ; Get low byte
- ldy #1
+L1: pla ; Restore low byte
rts