rename "sp" to "spc", avoid conflict with 4510 opcodes

This commit is contained in:
Gorilla Sapiens
2025-06-04 02:06:40 +00:00
parent 58171691d0
commit 3d118dc6e5
204 changed files with 908 additions and 908 deletions

View File

@@ -9,7 +9,7 @@
; called a lot!
.export tosadda0, tosaddax
.importzp sp, tmp1
.importzp spc, tmp1
.macpack cpu
@@ -20,34 +20,34 @@ tosaddax:
.if (.cpu .bitand ::CPU_ISET_65SC02)
adc (sp) ; (7)
adc (spc) ; (7)
tay ; (9)
inc sp ; (14)
inc spc ; (14)
bne hiadd ; (17)
inc sp+1 ; (-1+5)
inc spc+1 ; (-1+5)
hiadd: txa ; (19)
adc (sp) ; (24)
adc (spc) ; (24)
tax ; (26)
inc sp ; (31)
inc spc ; (31)
bne done ; (34)
inc sp+1 ; (-1+5)
inc spc+1 ; (-1+5)
done: tya ; (36)
.else
ldy #0 ; (4)
adc (sp),y ; (9) lo byte
adc (spc),y ; (9) lo byte
iny ; (11)
sta tmp1 ; (14) save it
txa ; (16)
adc (sp),y ; (21) hi byte
adc (spc),y ; (21) hi byte
tax ; (23)
clc ; (25)
lda sp ; (28)
lda spc ; (28)
adc #2 ; (30)
sta sp ; (33)
sta spc ; (33)
bcc L1 ; (36)
inc sp+1 ; (-1+5)
inc spc+1 ; (-1+5)
L1: lda tmp1 ; (39) restore low byte
.endif

View File

@@ -5,19 +5,19 @@
;
.export addeq0sp, addeqysp
.importzp sp
.importzp spc
addeq0sp:
ldy #0
addeqysp:
clc
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
pha
iny
txa
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
tax
pla
rts

View File

@@ -5,17 +5,17 @@
;
.export addysp1, addysp
.importzp sp
.importzp spc
addysp1:
iny
addysp: pha ; Save A
clc
tya ; Get the value
adc sp ; Add low byte
sta sp ; Put it back
adc spc ; Add low byte
sta spc ; Put it back
bcc @L1 ; If no carry, we're done
inc sp+1 ; Inc high byte
inc spc+1 ; Inc high byte
@L1: pla ; Restore A
rts

View File

@@ -6,7 +6,7 @@
.export tosanda0, tosandax
.import addysp1
.importzp sp, ptr4
.importzp spc, ptr4
.macpack cpu
@@ -14,16 +14,16 @@ tosanda0:
ldx #$00
tosandax:
.if (.cpu .bitand CPU_ISET_65SC02)
and (sp) ; 65SC02 version, saves 2 cycles and 1 byte
and (spc) ; 65SC02 version, saves 2 cycles and 1 byte
ldy #1
.else
ldy #0
and (sp),y
and (spc),y
iny
.endif
pha
txa
and (sp),y
and (spc),y
tax
pla
jmp addysp1 ; drop TOS, set condition codes

View File

@@ -6,12 +6,12 @@
.export bpushbsp, bpushbysp
.import pusha
.importzp sp
.importzp spc
bpushbsp:
ldy #0
bpushbysp:
lda (sp),y
lda (spc),y
jmp pusha

View File

@@ -5,14 +5,14 @@
;
.export decsp1
.importzp sp
.importzp spc
.proc decsp1
ldy sp
ldy spc
bne @L1
dec sp+1
@L1: dec sp
dec spc+1
@L1: dec spc
rts
.endproc

View File

@@ -5,18 +5,18 @@
;
.export decsp2
.importzp sp
.importzp spc
.proc decsp2
lda sp
lda spc
sec
sbc #2
sta sp
sta spc
bcc @L1
rts
@L1: dec sp+1
@L1: dec spc+1
rts
.endproc

View File

@@ -5,18 +5,18 @@
;
.export decsp3
.importzp sp
.importzp spc
.proc decsp3
lda sp
lda spc
sec
sbc #3
sta sp
sta spc
bcc @L1
rts
@L1: dec sp+1
@L1: dec spc+1
rts
.endproc

View File

@@ -5,18 +5,18 @@
;
.export decsp4
.importzp sp
.importzp spc
.proc decsp4
lda sp
lda spc
sec
sbc #4
sta sp
sta spc
bcc @L1
rts
@L1: dec sp+1
@L1: dec spc+1
rts
.endproc

View File

@@ -5,18 +5,18 @@
;
.export decsp5
.importzp sp
.importzp spc
.proc decsp5
lda sp
lda spc
sec
sbc #5
sta sp
sta spc
bcc @L1
rts
@L1: dec sp+1
@L1: dec spc+1
rts
.endproc

View File

@@ -5,18 +5,18 @@
;
.export decsp6
.importzp sp
.importzp spc
.proc decsp6
lda sp
lda spc
sec
sbc #6
sta sp
sta spc
bcc @L1
rts
@L1: dec sp+1
@L1: dec spc+1
rts
.endproc

View File

@@ -5,18 +5,18 @@
;
.export decsp7
.importzp sp
.importzp spc
.proc decsp7
lda sp
lda spc
sec
sbc #7
sta sp
sta spc
bcc @L1
rts
@L1: dec sp+1
@L1: dec spc+1
rts
.endproc

View File

@@ -5,18 +5,18 @@
;
.export decsp8
.importzp sp
.importzp spc
.proc decsp8
lda sp
lda spc
sec
sbc #8
sta sp
sta spc
bcc @L1
rts
@L1: dec sp+1
@L1: dec spc+1
rts
.endproc

View File

@@ -5,14 +5,14 @@
;
.export enter
.importzp sp
.importzp spc
enter: tya ; get arg size
ldy sp
ldy spc
bne L1
dec sp+1
L1: dec sp
dec spc+1
L1: dec spc
ldy #0
sta (sp),y ; Store the arg count
sta (spc),y ; Store the arg count
rts

View File

@@ -6,7 +6,7 @@
.export toseq00, toseqa0, toseqax
.import tosicmp, booleq
.importzp sp, tmp1
.importzp spc, tmp1
toseq00:
lda #$00

View File

@@ -6,7 +6,7 @@
;
.export tosicmp, tosicmp0
.importzp sp, sreg
.importzp spc, sreg
tosicmp0:
@@ -17,16 +17,16 @@ tosicmp:
stx sreg+1 ; Save ax
ldy #$00
lda (sp),y ; Get low byte
lda (spc),y ; Get low byte
tax
inc sp ; 5
inc spc ; 5
bne @L1 ; 3
inc sp+1 ; (5)
inc spc+1 ; (5)
@L1:
lda (sp),y ; Get high byte
inc sp ; 5
lda (spc),y ; Get high byte
inc spc ; 5
bne @L2 ; 3
inc sp+1 ; (5)
inc spc+1 ; (5)
; Do the compare.

View File

@@ -5,13 +5,13 @@
;
.export incsp1
.importzp sp
.importzp spc
.proc incsp1
inc sp
inc spc
bne @L1
inc sp+1
inc spc+1
@L1: rts
.endproc

View File

@@ -5,7 +5,7 @@
; this module also contains the popax function.
.export popax, incsp2
.importzp sp
.importzp spc
.macpack cpu
@@ -14,13 +14,13 @@
.proc popax
ldy #1
lda (sp),y ; get hi byte
lda (spc),y ; get hi byte
tax ; into x
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp) ; get lo byte
lda (spc) ; get lo byte
.else
dey
lda (sp),y ; get lo byte
lda (spc),y ; get lo byte
.endif
.endproc
@@ -29,14 +29,14 @@
.proc incsp2
inc sp ; 5
inc spc ; 5
beq @L1 ; 2
inc sp ; 5
inc spc ; 5
beq @L2 ; 2
rts
@L1: inc sp ; 5
@L2: inc sp+1 ; 5
@L1: inc spc ; 5
@L2: inc spc+1 ; 5
rts
.endproc

View File

@@ -6,7 +6,7 @@
.export tosadd0ax, tosaddeax
.import addysp1
.importzp sp, sreg, tmp1
.importzp spc, sreg, tmp1
.macpack cpu
@@ -20,24 +20,24 @@ tosadd0ax:
tosaddeax:
clc
.if (.cpu .bitand CPU_ISET_65SC02)
adc (sp) ; 65SC02 version - saves 2 cycles
adc (spc) ; 65SC02 version - saves 2 cycles
ldy #1
.else
ldy #0
adc (sp),y ; lo byte
adc (spc),y ; lo byte
iny
.endif
sta tmp1 ; use as temp storage
txa
adc (sp),y ; byte 1
adc (spc),y ; byte 1
tax
iny
lda sreg
adc (sp),y ; byte 2
adc (spc),y ; byte 2
sta sreg
iny
lda sreg+1
adc (sp),y ; byte 3
adc (spc),y ; byte 3
sta sreg+1
lda tmp1 ; load byte 0
jmp addysp1 ; drop TOS

View File

@@ -5,29 +5,29 @@
;
.export laddeq0sp, laddeqysp
.importzp sp, sreg
.importzp spc, sreg
laddeq0sp:
ldy #0
laddeqysp:
clc
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
pha
iny
txa
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
tax
iny
lda sreg
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
sta sreg
iny
lda sreg+1
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
sta sreg+1
pla
rts

View File

@@ -7,7 +7,7 @@
.export tosand0ax, tosandeax
.import addysp1
.importzp sp, sreg, tmp1
.importzp spc, sreg, tmp1
.macpack cpu
@@ -23,24 +23,24 @@ tosand0ax:
tosandeax:
.if (.cpu .bitand ::CPU_ISET_65SC02)
and (sp) ; byte 0
and (spc) ; byte 0
ldy #1
.else
ldy #0
and (sp),y ; byte 0
and (spc),y ; byte 0
iny
.endif
sta tmp1
txa
and (sp),y ; byte 1
and (spc),y ; byte 1
tax
iny
lda sreg
and (sp),y ; byte 2
and (spc),y ; byte 2
sta sreg
iny
lda sreg+1
and (sp),y ; byte 3
and (spc),y ; byte 3
sta sreg+1
lda tmp1

View File

@@ -7,7 +7,7 @@
.export toslcmp
.import incsp4
.importzp sp, sreg, ptr1
.importzp spc, sreg, ptr1
toslcmp:
@@ -15,23 +15,23 @@ toslcmp:
stx ptr1+1 ; EAX now in sreg:ptr1
ldy #$03
lda (sp),y
lda (spc),y
sec
sbc sreg+1
bne L4
dey
lda (sp),y
lda (spc),y
cmp sreg
bne L1
dey
lda (sp),y
lda (spc),y
cmp ptr1+1
bne L1
dey
lda (sp),y
lda (spc),y
cmp ptr1
L1: php ; Save flags

View File

@@ -5,17 +5,17 @@
;
.export ldau00sp, ldau0ysp
.importzp sp, ptr1
.importzp spc, ptr1
.macpack cpu
ldau00sp:
ldy #1
ldau0ysp:
lda (sp),y
lda (spc),y
sta ptr1+1
dey
lda (sp),y
lda (spc),y
sta ptr1
ldx #0
.if (.cpu .bitand CPU_ISET_65SC02)

View File

@@ -5,15 +5,15 @@
;
.export ldaui0sp, ldauiysp
.importzp sp, ptr1
.importzp spc, ptr1
ldaui0sp:
ldy #1
ldauiysp:
lda (sp),y
lda (spc),y
sta ptr1+1
dey
lda (sp),y
lda (spc),y
sta ptr1
txa
tay

View File

@@ -5,16 +5,16 @@
;
.export ldax0sp, ldaxysp
.importzp sp
.importzp spc
; Beware: The optimizer knows about the value in Y after return!
ldax0sp:
ldy #1
ldaxysp:
lda (sp),y ; get high byte
lda (spc),y ; get high byte
tax ; and save it
dey ; point to lo byte
lda (sp),y ; load low byte
lda (spc),y ; load low byte
rts

View File

@@ -9,20 +9,20 @@
.export ldeax0sp, ldeaxysp
.importzp sreg, sp
.importzp sreg, spc
ldeax0sp:
ldy #3
ldeaxysp:
lda (sp),y
lda (spc),y
sta sreg+1
dey
lda (sp),y
lda (spc),y
sta sreg
dey
lda (sp),y
lda (spc),y
tax
dey
lda (sp),y
lda (spc),y
rts

View File

@@ -5,16 +5,16 @@
;
.export leaaxsp, leaa0sp
.importzp sp
.importzp spc
leaa0sp:
ldx #$00
leaaxsp:
clc
adc sp
adc spc
pha
txa
adc sp+1
adc spc+1
tax
pla
rts

View File

@@ -12,7 +12,7 @@
.export leave00, leave0, leavey00, leavey0, leavey
.export leave
.import addysp
.importzp sp
.importzp spc
.macpack cpu
@@ -31,24 +31,24 @@ leavey:
.if (.cpu .bitand ::CPU_ISET_65SC02)
leave: tay ; save A a sec
lda (sp) ; that's the pushed arg size
lda (spc) ; that's the pushed arg size
sec ; Count the byte, the count's stored in
adc sp
sta sp
adc spc
sta spc
bcc L1
inc sp+1
inc spc+1
L1: tya ; Get return value back
.else
leave: pha ; save A a sec
ldy #0
lda (sp),y ; that's the pushed arg size
lda (spc),y ; that's the pushed arg size
sec ; Count the byte, the count's stored in
adc sp
sta sp
adc spc
sta spc
bcc L1
inc sp+1
inc spc+1
L1: pla ; Get return value back
.endif

View File

@@ -7,7 +7,7 @@
.export tosumul0ax, tosumuleax, tosmul0ax, tosmuleax
.import addysp1
.importzp sp, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4
.importzp spc, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4
.macpack cpu
@@ -27,21 +27,21 @@ tosumuleax:
mul32: sta ptr1
stx ptr1+1 ; op2 now in ptr1/sreg
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
lda (spc)
ldy #1
.else
ldy #0
lda (sp),y
lda (spc),y
iny
.endif
sta ptr3
lda (sp),y
lda (spc),y
sta ptr3+1
iny
lda (sp),y
lda (spc),y
sta ptr4
iny
lda (sp),y
lda (spc),y
sta ptr4+1 ; op1 in pre3/ptr4
jsr addysp1 ; Drop TOS

View File

@@ -7,7 +7,7 @@
.export tosor0ax, tosoreax
.import addysp1
.importzp sp, sreg, tmp1
.importzp spc, sreg, tmp1
.macpack cpu
@@ -23,24 +23,24 @@ tosor0ax:
tosoreax:
.if (.cpu .bitand ::CPU_ISET_65SC02)
ora (sp)
ora (spc)
ldy #1
.else
ldy #0
ora (sp),y ; byte 0
ora (spc),y ; byte 0
iny
.endif
sta tmp1
txa
ora (sp),y ; byte 1
ora (spc),y ; byte 1
tax
iny
lda sreg
ora (sp),y ; byte 2
ora (spc),y ; byte 2
sta sreg
iny
lda sreg+1
ora (sp),y ; byte 3
ora (spc),y ; byte 3
sta sreg+1
lda tmp1

View File

@@ -7,24 +7,24 @@
.export popeax
.import incsp4
.importzp sp, sreg
.importzp spc, sreg
.macpack cpu
popeax: ldy #3
lda (sp),y
lda (spc),y
sta sreg+1
dey
lda (sp),y
lda (spc),y
sta sreg
dey
lda (sp),y
lda (spc),y
tax
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
lda (spc)
.else
dey
lda (sp),y
lda (spc),y
.endif
jmp incsp4

View File

@@ -10,7 +10,7 @@
;
.export pushl0, push0ax, pusheax
.import decsp4
.importzp sp, sreg
.importzp spc, sreg
.macpack cpu
@@ -31,19 +31,19 @@ pusheax:
jsr decsp4
ldy #3
lda sreg+1
sta (sp),y
sta (spc),y
dey
lda sreg
sta (sp),y
sta (spc),y
dey
txa
sta (sp),y
sta (spc),y
pla
.if (.cpu .bitand ::CPU_ISET_65SC02)
sta (sp)
sta (spc)
.else
dey
sta (sp),y
sta (spc),y
.endif
rts

View File

@@ -10,7 +10,7 @@
;
.export tosrsub0ax, tosrsubeax
.import addysp1
.importzp sp, sreg, tmp1
.importzp spc, sreg, tmp1
.macpack cpu
@@ -27,24 +27,24 @@ tosrsub0ax:
tosrsubeax:
sec
.if (.cpu .bitand ::CPU_ISET_65SC02)
sbc (sp)
sbc (spc)
ldy #1
.else
ldy #0
sbc (sp),y ; byte 0
sbc (spc),y ; byte 0
iny
.endif
sta tmp1 ; use as temp storage
txa
sbc (sp),y ; byte 1
sbc (spc),y ; byte 1
tax
iny
lda sreg
sbc (sp),y ; byte 2
sbc (spc),y ; byte 2
sta sreg
iny
lda sreg+1
sbc (sp),y ; byte 3
sbc (spc),y ; byte 3
sta sreg+1
lda tmp1
jmp addysp1 ; drop TOS

View File

@@ -9,7 +9,7 @@
;
.export tossub0ax, tossubeax
.import addysp1
.importzp sp, sreg
.importzp spc, sreg
.macpack cpu
@@ -27,24 +27,24 @@ tossubeax:
sec
eor #$FF
.if (.cpu .bitand ::CPU_ISET_65SC02)
adc (sp) ; 65SC02 version - saves 2 cycles
adc (spc) ; 65SC02 version - saves 2 cycles
ldy #1
.else
ldy #0
adc (sp),y ; lo byte
adc (spc),y ; lo byte
iny
.endif
pha ; Save low byte
txa
eor #$FF
adc (sp),y ; byte 1
adc (spc),y ; byte 1
tax
iny
lda (sp),y
lda (spc),y
sbc sreg ; byte 2
sta sreg
iny
lda (sp),y
lda (spc),y
sbc sreg+1 ; byte 3
sta sreg+1
pla ; Restore byte 0

View File

@@ -5,31 +5,31 @@
;
.export lsubeq0sp, lsubeqysp
.importzp sp, sreg
.importzp spc, sreg
lsubeq0sp:
ldy #0
lsubeqysp:
sec
eor #$FF
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
pha ; Save low byte
iny
txa
eor #$FF
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
tax
iny
lda (sp),y
lda (spc),y
sbc sreg
sta (sp),y
sta (spc),y
sta sreg
iny
lda (sp),y
lda (spc),y
sbc sreg+1
sta (sp),y
sta (spc),y
sta sreg+1
pla
rts

View File

@@ -7,7 +7,7 @@
.export tosudiv0ax, tosudiveax, getlop, udiv32
.import addysp1
.importzp sp, sreg, tmp3, tmp4, ptr1, ptr2, ptr3, ptr4
.importzp spc, sreg, tmp3, tmp4, ptr1, ptr2, ptr3, ptr4
.macpack cpu
@@ -39,21 +39,21 @@ getlop: sta ptr3 ; Put right operand in place
sta ptr4+1
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
lda (spc)
ldy #1
.else
ldy #0 ; Put left operand in place
lda (sp),y
lda (spc),y
iny
.endif
sta ptr1
lda (sp),y
lda (spc),y
sta ptr1+1
iny
lda (sp),y
lda (spc),y
sta sreg
iny
lda (sp),y
lda (spc),y
sta sreg+1
jmp addysp1 ; Drop parameters

View File

@@ -7,7 +7,7 @@
.export tosxor0ax, tosxoreax
.import addysp1
.importzp sp, sreg, tmp1
.importzp spc, sreg, tmp1
.macpack cpu
@@ -23,24 +23,24 @@ tosxor0ax:
tosxoreax:
.if (.cpu .bitand ::CPU_ISET_65SC02)
eor (sp) ; byte 0
eor (spc) ; byte 0
ldy #1
.else
ldy #0
eor (sp),y ; byte 0
eor (spc),y ; byte 0
iny
.endif
sta tmp1
txa
eor (sp),y ; byte 1
eor (spc),y ; byte 1
tax
iny
lda sreg
eor (sp),y ; byte 2
eor (spc),y ; byte 2
sta sreg
iny
lda sreg+1
eor (sp),y ; byte 3
eor (spc),y ; byte 3
sta sreg+1
lda tmp1

View File

@@ -7,7 +7,7 @@
.export tosora0, tosorax
.import addysp1
.importzp sp, tmp1
.importzp spc, tmp1
.macpack cpu
@@ -15,16 +15,16 @@ tosora0:
ldx #$00
tosorax:
.if (.cpu .bitand ::CPU_ISET_65SC02)
ora (sp)
ora (spc)
ldy #1
.else
ldy #0
ora (sp),y
ora (spc),y
iny
.endif
sta tmp1
txa
ora (sp),y
ora (spc),y
tax
lda tmp1
jmp addysp1 ; drop TOS, set condition codes

View File

@@ -5,23 +5,23 @@
;
.export popa
.importzp sp
.importzp spc
.macpack cpu
.proc popa
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
lda (spc)
.else
ldy #0 ; (2)
lda (sp),y ; (7) Read byte
lda (spc),y ; (7) Read byte
.endif
inc sp ; (12)
inc spc ; (12)
beq @L1 ; (14)
rts ; (20)
@L1: inc sp+1
@L1: inc spc+1
rts
.endproc

View File

@@ -6,19 +6,19 @@
.export popptr1
.import incsp2
.importzp sp, ptr1
.importzp spc, ptr1
.macpack cpu
.proc popptr1 ; 14 bytes (four usages = at least 2 bytes saved)
ldy #1
lda (sp),y ; get hi byte
lda (spc),y ; get hi byte
sta ptr1+1 ; into ptr hi
dey ; dey even for for 65C02 here to have Y=0 at exit!
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp) ; get lo byte
lda (spc) ; get lo byte
.else
lda (sp),y ; get lo byte
lda (spc),y ; get lo byte
.endif
sta ptr1 ; to ptr lo
jmp incsp2

View File

@@ -6,20 +6,20 @@
.export popsreg
.import incsp2
.importzp sp, sreg
.importzp spc, sreg
.macpack cpu
popsreg:
pha ; save A
ldy #1
lda (sp),y ; get hi byte
lda (spc),y ; get hi byte
sta sreg+1 ; store it
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp) ; get lo byte
lda (spc) ; get lo byte
.else
dey
lda (sp),y ; get lo byte
lda (spc),y ; get lo byte
.endif
sta sreg ; store it
pla ; get A back

View File

@@ -5,7 +5,7 @@
;
.export pusha0sp, pushaysp, pusha
.importzp sp
.importzp spc
.macpack cpu
@@ -14,16 +14,16 @@
pusha0sp:
ldy #$00
pushaysp:
lda (sp),y
pusha: ldy sp ; (3)
lda (spc),y
pusha: ldy spc ; (3)
beq @L1 ; (6)
dec sp ; (11)
dec spc ; (11)
ldy #0 ; (13)
sta (sp),y ; (19)
sta (spc),y ; (19)
rts ; (25)
@L1: dec sp+1 ; (11)
dec sp ; (16)
sta (sp),y ; (22)
@L1: dec spc+1 ; (11)
dec spc ; (16)
sta (spc),y ; (22)
rts ; (28)

View File

@@ -5,7 +5,7 @@
;
.export push0, pusha0, pushax
.importzp sp
.importzp spc
.macpack cpu
@@ -20,21 +20,21 @@ pusha0: ldx #0
.proc pushax
pha ; (3)
lda sp ; (6)
lda spc ; (6)
sec ; (8)
sbc #2 ; (10)
sta sp ; (13)
sta spc ; (13)
bcs @L1 ; (17)
dec sp+1 ; (+5)
dec spc+1 ; (+5)
@L1: ldy #1 ; (19)
txa ; (21)
sta (sp),y ; (27)
sta (spc),y ; (27)
pla ; (31)
dey ; (33)
.if (.cpu .bitand ::CPU_ISET_65SC02)
sta (sp) ; (37)
sta (spc) ; (37)
.else
sta (sp),y ; (38)
sta (spc),y ; (38)
.endif
rts ; (44/43)

View File

@@ -6,12 +6,12 @@
.export pushbsp, pushbysp
.import pusha0
.importzp sp
.importzp spc
pushbsp:
ldy #0
pushbysp:
lda (sp),y ; get lo byte
lda (spc),y ; get lo byte
jmp pusha0 ; promote to unsigned and push

View File

@@ -7,23 +7,23 @@
.export pushlysp
.import pusheax
.importzp sreg, sp
.importzp sreg, spc
.proc pushlysp
iny
iny
lda (sp),y
lda (spc),y
iny
sta sreg
lda (sp),y
lda (spc),y
sta sreg+1
dey
dey
lda (sp),y
lda (spc),y
dey
tax
lda (sp),y
lda (spc),y
jmp pusheax
.endproc

View File

@@ -5,27 +5,27 @@
;
.export pushwysp, pushw0sp
.importzp sp
.importzp spc
.macpack generic
pushw0sp:
ldy #3
pushwysp:
lda sp ; 3
lda spc ; 3
sub #2 ; 4
sta sp ; 3
sta spc ; 3
bcs @L1 ; 3(+1)
dec sp+1 ; (5)
@L1: lda (sp),y ; 5 =16
dec spc+1 ; (5)
@L1: lda (spc),y ; 5 =16
tax ; 2
dey ; 2
lda (sp),y ; 5
lda (spc),y ; 5
ldy #$00 ; 2
sta (sp),y ; 5
sta (spc),y ; 5
iny ; 2
txa ; 2
sta (sp),y ; 5
sta (spc),y ; 5
rts

View File

@@ -5,17 +5,17 @@
;
.export regswap
.importzp sp, regbank, tmp1
.importzp spc, regbank, tmp1
.proc regswap
sta tmp1 ; Store count
@L1: lda regbank,x ; Get old value
pha ; Save it
lda (sp),y ; Get stack loc
lda (spc),y ; Get stack loc
sta regbank,x ; Store new value
pla
sta (sp),y ; Store old value
sta (spc),y ; Store old value
inx
iny
dec tmp1

View File

@@ -5,16 +5,16 @@
;
.export regswap1
.importzp sp, regbank
.importzp spc, regbank
.proc regswap1
lda regbank,x ; Get old value
pha ; Save it
lda (sp),y ; Get stack loc
lda (spc),y ; Get stack loc
sta regbank,x ; Store new value
pla
sta (sp),y ; Store old value
sta (spc),y ; Store old value
rts
.endproc

View File

@@ -5,7 +5,7 @@
;
.export regswap2
.importzp sp, regbank
.importzp spc, regbank
.proc regswap2
@@ -13,20 +13,20 @@
lda regbank,x ; Get old value
pha ; Save it
lda (sp),y ; Get stack loc
lda (spc),y ; Get stack loc
sta regbank,x ; Store new value
pla
sta (sp),y ; Store old value
sta (spc),y ; Store old value
; Second byte
iny
lda regbank+1,x ; Get old value
pha ; Save it
lda (sp),y ; Get stack loc
lda (spc),y ; Get stack loc
sta regbank+1,x ; Store new value
pla
sta (sp),y ; Store old value
sta (spc),y ; Store old value
rts

View File

@@ -7,7 +7,7 @@
.export tosrsuba0, tosrsubax
.import addysp1
.importzp sp, tmp1
.importzp spc, tmp1
.macpack cpu
@@ -20,16 +20,16 @@ tosrsuba0:
tosrsubax:
sec
.if (.cpu .bitand CPU_ISET_65SC02)
sbc (sp)
sbc (spc)
ldy #1
.else
ldy #0
sbc (sp),y ; lo byte
sbc (spc),y ; lo byte
iny
.endif
sta tmp1 ; save lo byte
txa
sbc (sp),y ; hi byte
sbc (spc),y ; hi byte
tax
lda tmp1
jmp addysp1 ; drop TOS, set condition codes

View File

@@ -6,17 +6,17 @@
.export staspidx
.import incsp2
.importzp sp, tmp1, ptr1
.importzp spc, tmp1, ptr1
.proc staspidx
pha
sty tmp1 ; Save Index
ldy #1
lda (sp),y
lda (spc),y
sta ptr1+1
dey
lda (sp),y
lda (spc),y
sta ptr1 ; Pointer now in ptr1
ldy tmp1 ; Restore offset
pla ; Restore value

View File

@@ -1,20 +1,20 @@
;
; Ullrich von Bassewitz, 31.08.1998
;
; CC65 runtime: Store ax at (sp),y
; CC65 runtime: Store ax at (spc),y
;
.export staxysp, stax0sp
.importzp sp
.importzp spc
stax0sp:
ldy #0
staxysp:
sta (sp),y
sta (spc),y
iny
pha
txa
sta (sp),y
sta (spc),y
pla
rts

View File

@@ -7,7 +7,7 @@
.export staxspidx
.import incsp2
.importzp sp, tmp1, ptr1
.importzp spc, tmp1, ptr1
.macpack cpu
@@ -16,13 +16,13 @@
sty tmp1 ; Save Y
pha ; Save A
ldy #1
lda (sp),y
lda (spc),y
sta ptr1+1
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
lda (spc)
.else
dey
lda (sp),y
lda (spc),y
.endif
sta ptr1 ; Address now in ptr1
ldy tmp1 ; Restore Y

View File

@@ -1,26 +1,26 @@
;
; Ullrich von Bassewitz, 31.08.1998
;
; CC65 runtime: Store eax at (sp),y
; CC65 runtime: Store eax at (spc),y
;
.export steaxysp, steax0sp
.importzp sp, sreg
.importzp spc, sreg
steax0sp:
ldy #0
steaxysp:
sta (sp),y
sta (spc),y
iny
pha
txa
sta (sp),y
sta (spc),y
iny
lda sreg
sta (sp),y
sta (spc),y
iny
lda sreg+1
sta (sp),y
sta (spc),y
pla
rts

View File

@@ -17,7 +17,7 @@
.constructor initstkchk, 25
.import __STACKSIZE__ ; Linker defined
.import pusha0, _exit
.importzp sp
.importzp spc
; Use macros for better readability
.macpack generic
@@ -32,11 +32,11 @@
.proc initstkchk
lda sp
lda spc
sta initialsp
sub #<__STACKSIZE__
sta lowwater
lda sp+1
lda spc+1
sta initialsp+1
sbc #>__STACKSIZE__
.if (.cpu .bitand ::CPU_ISET_65SC02)
@@ -70,7 +70,7 @@ cstkchk:
; Check the high byte of the software stack
@L0: lda lowwater+1
cmp sp+1
cmp spc+1
bcs @L1
rts
@@ -78,7 +78,7 @@ cstkchk:
@L1: bne CStackOverflow
lda lowwater
cmp sp
cmp spc
bcs CStackOverflow
Done: rts
@@ -87,9 +87,9 @@ Done: rts
CStackOverflow:
lda initialsp
sta sp
sta spc
lda initialsp+1
sta sp+1
sta spc+1
; Generic abort entry. We should output a diagnostic here, but this is
; difficult, since we're operating at a lower level here.

View File

@@ -6,7 +6,7 @@
.export tossuba0, tossubax
.import addysp1
.importzp sp
.importzp spc
.macpack cpu
@@ -18,17 +18,17 @@ tossubax:
sec
eor #$FF
.if (.cpu .bitand CPU_ISET_65SC02)
adc (sp)
adc (spc)
ldy #1
.else
ldy #0
adc (sp),y ; Subtract low byte
adc (spc),y ; Subtract low byte
iny
.endif
pha ; Save high byte
txa
eor #$FF
adc (sp),y ; Subtract high byte
adc (spc),y ; Subtract high byte
tax ; High byte into X
pla ; Restore low byte
jmp addysp1 ; drop TOS

View File

@@ -5,21 +5,21 @@
;
.export subeq0sp, subeqysp
.importzp sp
.importzp spc
subeq0sp:
ldy #0
subeqysp:
sec
eor #$FF
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
pha ; Save low byte
iny
txa
eor #$FF
adc (sp),y
sta (sp),y
adc (spc),y
sta (spc),y
tax
pla ; Restore low byte
rts

View File

@@ -6,17 +6,17 @@
;
.export subysp
.importzp sp
.importzp spc
.proc subysp
tya
eor #$ff
sec
adc sp
sta sp
adc spc
sta spc
bcs @L1
dec sp+1
dec spc+1
@L1: rts
.endproc

View File

@@ -6,7 +6,7 @@
;
.export swapstk
.importzp sp, ptr4
.importzp spc, ptr4
.macpack cpu
@@ -14,22 +14,22 @@ swapstk:
sta ptr4
stx ptr4+1
ldy #1 ; index
lda (sp),y
lda (spc),y
tax
lda ptr4+1
sta (sp),y
sta (spc),y
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
lda (spc)
tay
lda ptr4
sta (sp)
sta (spc)
tya
.else
dey
lda (sp),y
lda (spc),y
pha
lda ptr4
sta (sp),y
sta (spc),y
pla
.endif
rts ; whew!

View File

@@ -6,7 +6,7 @@
.export tosint
.import incsp2
.importzp sp
.importzp spc
.macpack cpu
@@ -16,17 +16,17 @@
pha
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
lda (spc)
.else
ldy #0
lda (sp),y ; sp+1
lda (spc),y ; spc+1
.endif
ldy #2
sta (sp),y
sta (spc),y
dey
lda (sp),y
lda (spc),y
ldy #3
sta (sp),y
sta (spc),y
pla
jmp incsp2 ; Drop 16 bit

View File

@@ -6,7 +6,7 @@
.export tosulong, toslong
.import decsp2
.importzp sp
.importzp spc
.macpack cpu
@@ -16,25 +16,25 @@ tosulong:
pha
jsr decsp2 ; Make room
ldy #2
lda (sp),y
lda (spc),y
.if (.cpu .bitand CPU_ISET_65SC02)
sta (sp) ; 65C02 version
sta (spc) ; 65C02 version
iny ; Y = 3
.else
ldy #0
sta (sp),y
sta (spc),y
ldy #3
.endif
lda (sp),y
lda (spc),y
toslong1:
ldy #1
sta (sp),y
sta (spc),y
lda #0 ; Zero extend
toslong2:
iny
sta (sp),y
sta (spc),y
iny
sta (sp),y
sta (spc),y
pla
rts
@@ -42,19 +42,19 @@ toslong:
pha
jsr decsp2 ; Make room
ldy #2
lda (sp),y
lda (spc),y
.if (.cpu .bitand CPU_ISET_65SC02)
sta (sp) ; 65C02 version
sta (spc) ; 65C02 version
iny ; Y = 3
.else
ldy #0
sta (sp),y
sta (spc),y
ldy #3
.endif
lda (sp),y
lda (spc),y
bpl toslong1 ; Jump if positive, high word is zero
ldy #1
sta (sp),y
sta (spc),y
lda #$FF
bne toslong2 ; Branch always

View File

@@ -7,7 +7,7 @@
.export tosxora0, tosxorax
.import addysp1
.importzp sp, tmp1
.importzp spc, tmp1
.macpack cpu
@@ -15,16 +15,16 @@ tosxora0:
ldx #$00
tosxorax:
.if (.cpu .bitand CPU_ISET_65SC02)
eor (sp)
eor (spc)
ldy #1
.else
ldy #0
eor (sp),y
eor (spc),y
iny
.endif
sta tmp1
txa
eor (sp),y
eor (spc),y
tax
lda tmp1
jmp addysp1 ; drop TOS, set condition codes

View File

@@ -10,7 +10,7 @@
.zeropage
sp: .res 2 ; Stack pointer
spc: .res 2 ; Stack pointer
sreg: .res 2 ; Secondary register/high 16 bit for longs
regsave: .res 4 ; Slot to save/restore (E)AX into
ptr1: .res 2