From 3c168b432322671291d018c72a1048db5f817923 Mon Sep 17 00:00:00 2001 From: uz Date: Sun, 22 Feb 2009 15:39:19 +0000 Subject: [PATCH] A few minor 65C02 optimizations. git-svn-id: svn://svn.cc65.org/cc65/trunk@3944 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/runtime/ladd.s | 15 +++++++++++---- libsrc/runtime/lsub.s | 15 +++++++++++---- libsrc/runtime/popsreg.s | 17 +++++++++++------ libsrc/runtime/stkchk.s | 7 ++++++- 4 files changed, 39 insertions(+), 15 deletions(-) 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 + 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 - 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 -- 2.39.5