;
; EAX = TOS - EAX
;
- .export tossubeax
- .import addysp1
- .importzp sp, sreg, tmp1, tmp2
+ .export tossub0ax, tossubeax
+ .import addysp1
+ .importzp sp, sreg
+
+ .macpack cpu
+
+tossub0ax:
+ ldy #$00
+ sty sreg
+ sty sreg+1
tossubeax:
+ sec
+ eor #$FF
+.if (.cpu .bitand CPU_ISET_65SC02)
+ adc (sp) ; 65SC02 version - saves 2 cycles
+ ldy #1
+.else
ldy #0
- sec
- sta tmp1
- lda (sp),y
- sbc tmp1 ; byte 0
- sta tmp2 ; use as temp storage
- iny
- stx tmp1
- lda (sp),y
- sbc tmp1 ; byte 1
+ adc (sp),y ; lo byte
+ iny
+.endif
+ pha ; Save low byte
+ txa
+ eor #$FF
+ adc (sp),y ; byte 1
tax
iny
lda (sp),y
lda (sp),y
sbc sreg+1 ; byte 3
sta sreg+1
- lda tmp2 ; load byte 0
- jmp addysp1 ; drop TOS
+ pla ; Restore byte 0
+ jmp addysp1 ; Drop TOS