.import addysp1
.importzp sp, sreg, tmp1
+ .macpack cpu
+
; EAX = TOS + EAX
tosaddeax:
- ldy #0
- clc
- adc (sp),y ; byte 0
+ clc
+.if (.cpu .bitand CPU_ISET_65SC02)
+ adc (sp) ; 65SC02 version - saves 2 cycles
+ ldy #1
+.else
+ ldy #0
+ adc (sp),y ; lo byte
+ iny
+.endif
sta tmp1 ; use as temp storage
- iny
txa
adc (sp),y ; byte 1
tax
.import addysp1
.importzp sp, sreg
+ .macpack cpu
+
tossubeax:
- ldy #0
- sec
+ sec
eor #$FF
- adc (sp),y ; byte 0
+.if (.cpu .bitand CPU_ISET_65SC02)
+ adc (sp) ; 65SC02 version - saves 2 cycles
+ ldy #1
+.else
+ ldy #0
+ adc (sp),y ; lo byte
+ iny
+.endif
pha ; Save low byte
- iny
txa
eor #$FF
adc (sp),y ; byte 1
;
-; Ullrich von Bassewitz, 21.08.1998
+; Ullrich von Bassewitz, 1998-08-21, 2009-02-22
;
; CC65 runtime: Pop TOS into sreg
;
.import incsp2
.importzp sp, sreg
+ .macpack cpu
+
popsreg:
pha ; save A
- ldy #0
+ ldy #1
+ lda (sp),y ; get hi byte
+ sta sreg+1 ; store it
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+ lda (sp) ; get lo byte
+.else
+ dey
lda (sp),y ; get lo byte
+.endif
sta sreg ; store it
- iny
- lda (sp),y ; get hi byte
- sta sreg+1 ; store it
pla ; get A back
jmp incsp2 ; bump stack and return
-
; Use macros for better readability
.macpack generic
+ .macpack cpu
; ----------------------------------------------------------------------------
lda sp+1
sta initialsp+1
sbc #>__STACKSIZE__
- add #1 ; Add 256 bytes safety area
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+ ina ; Add 256 bytes safety area
+.else
+ add #1 ; Add 256 bytes safety area
+.endif
sta lowwater+1
rts