few 6502 and some 65SC02 optimizations
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 05.08.1998
|
||||
; Christian Krueger, 11-Mar-2017, spend two bytes for one cycle, improved 65SC02 optimization
|
||||
;
|
||||
; CC65 runtime: add ints
|
||||
;
|
||||
@@ -8,32 +9,46 @@
|
||||
; called a lot!
|
||||
|
||||
.export tosadda0, tosaddax
|
||||
.importzp sp
|
||||
.importzp sp, tmp1
|
||||
|
||||
.macpack cpu
|
||||
|
||||
tosadda0:
|
||||
ldx #0
|
||||
tosaddax:
|
||||
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
|
||||
pha ; save it
|
||||
txa
|
||||
adc (sp),y ; hi byte
|
||||
tax
|
||||
clc
|
||||
lda sp
|
||||
adc #2
|
||||
sta sp
|
||||
bcc L1
|
||||
inc sp+1
|
||||
L1: pla ; Restore low byte
|
||||
rts
|
||||
clc ; (2)
|
||||
|
||||
.if (.cpu .bitand ::CPU_ISET_65SC02)
|
||||
|
||||
adc (sp) ; (7)
|
||||
tay ; (9)
|
||||
inc sp ; (14)
|
||||
bne hiadd ; (17)
|
||||
inc sp+1 ; (-1+5)
|
||||
hiadd: txa ; (19)
|
||||
adc (sp) ; (24)
|
||||
tax ; (26)
|
||||
inc sp ; (31)
|
||||
bne done ; (34)
|
||||
inc sp+1 ; (-1+5)
|
||||
done: tya ; (36)
|
||||
|
||||
.else
|
||||
|
||||
ldy #0 ; (4)
|
||||
adc (sp),y ; (9) lo byte
|
||||
iny ; (11)
|
||||
sta tmp1 ; (14) save it
|
||||
txa ; (16)
|
||||
adc (sp),y ; (21) hi byte
|
||||
tax ; (23)
|
||||
clc ; (25)
|
||||
lda sp ; (28)
|
||||
adc #2 ; (30)
|
||||
sta sp ; (33)
|
||||
bcc L1 ; (36)
|
||||
inc sp+1 ; (-1+5)
|
||||
L1: lda tmp1 ; (39) restore low byte
|
||||
|
||||
.endif
|
||||
rts ; (6502: 45 cycles, 26 bytes <-> 65SC02: 42 cycles, 22 bytes )
|
||||
|
||||
Reference in New Issue
Block a user