diff --git a/libsrc/runtime/ladd.s b/libsrc/runtime/ladd.s index fabedc9a1..a68583e76 100644 --- a/libsrc/runtime/ladd.s +++ b/libsrc/runtime/ladd.s @@ -8,14 +8,21 @@ .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 diff --git a/libsrc/runtime/lsub.s b/libsrc/runtime/lsub.s index 0ba716a9d..2ade75e2e 100644 --- a/libsrc/runtime/lsub.s +++ b/libsrc/runtime/lsub.s @@ -11,13 +11,20 @@ .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 diff --git a/libsrc/runtime/popsreg.s b/libsrc/runtime/popsreg.s index a79f9dc41..80e484339 100644 --- a/libsrc/runtime/popsreg.s +++ b/libsrc/runtime/popsreg.s @@ -1,5 +1,5 @@ ; -; Ullrich von Bassewitz, 21.08.1998 +; Ullrich von Bassewitz, 1998-08-21, 2009-02-22 ; ; CC65 runtime: Pop TOS into sreg ; @@ -8,15 +8,20 @@ .import incsp2 .importzp sp, sreg + .macpack cpu + popsreg: pha ; save A - ldy #0 - lda (sp),y ; get lo byte - sta sreg ; store it - iny - lda (sp),y ; get hi byte + 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 pla ; get A back jmp incsp2 ; bump stack and return - diff --git a/libsrc/runtime/stkchk.s b/libsrc/runtime/stkchk.s index 40ccde3dc..ee0b7144c 100644 --- a/libsrc/runtime/stkchk.s +++ b/libsrc/runtime/stkchk.s @@ -21,6 +21,7 @@ ; Use macros for better readability .macpack generic + .macpack cpu ; ---------------------------------------------------------------------------- @@ -38,7 +39,11 @@ 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