changed "spc" to "c_sp"

This commit is contained in:
Gorilla Sapiens
2025-06-04 06:37:59 +00:00
parent 3d118dc6e5
commit b6f42f9ab2
204 changed files with 913 additions and 909 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,7 +6,7 @@
.export tosadd0ax, tosaddeax
.import addysp1
.importzp spc, sreg, tmp1
.importzp c_sp, sreg, tmp1
.macpack cpu
@@ -20,24 +20,24 @@ tosadd0ax:
tosaddeax:
clc
.if (.cpu .bitand CPU_ISET_65SC02)
adc (spc) ; 65SC02 version - saves 2 cycles
adc (c_sp) ; 65SC02 version - saves 2 cycles
ldy #1
.else
ldy #0
adc (spc),y ; lo byte
adc (c_sp),y ; lo byte
iny
.endif
sta tmp1 ; use as temp storage
txa
adc (spc),y ; byte 1
adc (c_sp),y ; byte 1
tax
iny
lda sreg
adc (spc),y ; byte 2
adc (c_sp),y ; byte 2
sta sreg
iny
lda sreg+1
adc (spc),y ; byte 3
adc (c_sp),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 spc, sreg
.importzp c_sp, sreg
laddeq0sp:
ldy #0
laddeqysp:
clc
adc (spc),y
sta (spc),y
adc (c_sp),y
sta (c_sp),y
pha
iny
txa
adc (spc),y
sta (spc),y
adc (c_sp),y
sta (c_sp),y
tax
iny
lda sreg
adc (spc),y
sta (spc),y
adc (c_sp),y
sta (c_sp),y
sta sreg
iny
lda sreg+1
adc (spc),y
sta (spc),y
adc (c_sp),y
sta (c_sp),y
sta sreg+1
pla
rts

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,7 +7,7 @@
.export tosumul0ax, tosumuleax, tosmul0ax, tosmuleax
.import addysp1
.importzp spc, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4
.importzp c_sp, 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 (spc)
lda (c_sp)
ldy #1
.else
ldy #0
lda (spc),y
lda (c_sp),y
iny
.endif
sta ptr3
lda (spc),y
lda (c_sp),y
sta ptr3+1
iny
lda (spc),y
lda (c_sp),y
sta ptr4
iny
lda (spc),y
lda (c_sp),y
sta ptr4+1 ; op1 in pre3/ptr4
jsr addysp1 ; Drop TOS

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,7 +7,7 @@
.export tosudiv0ax, tosudiveax, getlop, udiv32
.import addysp1
.importzp spc, sreg, tmp3, tmp4, ptr1, ptr2, ptr3, ptr4
.importzp c_sp, 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 (spc)
lda (c_sp)
ldy #1
.else
ldy #0 ; Put left operand in place
lda (spc),y
lda (c_sp),y
iny
.endif
sta ptr1
lda (spc),y
lda (c_sp),y
sta ptr1+1
iny
lda (spc),y
lda (c_sp),y
sta sreg
iny
lda (spc),y
lda (c_sp),y
sta sreg+1
jmp addysp1 ; Drop parameters

View File

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

View File

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

View File

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

View File

@@ -6,19 +6,19 @@
.export popptr1
.import incsp2
.importzp spc, ptr1
.importzp c_sp, ptr1
.macpack cpu
.proc popptr1 ; 14 bytes (four usages = at least 2 bytes saved)
ldy #1
lda (spc),y ; get hi byte
lda (c_sp),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 (spc) ; get lo byte
lda (c_sp) ; get lo byte
.else
lda (spc),y ; get lo byte
lda (c_sp),y ; get lo byte
.endif
sta ptr1 ; to ptr lo
jmp incsp2

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,17 +6,17 @@
.export staspidx
.import incsp2
.importzp spc, tmp1, ptr1
.importzp c_sp, tmp1, ptr1
.proc staspidx
pha
sty tmp1 ; Save Index
ldy #1
lda (spc),y
lda (c_sp),y
sta ptr1+1
dey
lda (spc),y
lda (c_sp),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 (spc),y
; CC65 runtime: Store ax at (c_sp),y
;
.export staxysp, stax0sp
.importzp spc
.importzp c_sp
stax0sp:
ldy #0
staxysp:
sta (spc),y
sta (c_sp),y
iny
pha
txa
sta (spc),y
sta (c_sp),y
pla
rts

View File

@@ -7,7 +7,7 @@
.export staxspidx
.import incsp2
.importzp spc, tmp1, ptr1
.importzp c_sp, tmp1, ptr1
.macpack cpu
@@ -16,13 +16,13 @@
sty tmp1 ; Save Y
pha ; Save A
ldy #1
lda (spc),y
lda (c_sp),y
sta ptr1+1
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (spc)
lda (c_sp)
.else
dey
lda (spc),y
lda (c_sp),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 (spc),y
; CC65 runtime: Store eax at (c_sp),y
;
.export steaxysp, steax0sp
.importzp spc, sreg
.importzp c_sp, sreg
steax0sp:
ldy #0
steaxysp:
sta (spc),y
sta (c_sp),y
iny
pha
txa
sta (spc),y
sta (c_sp),y
iny
lda sreg
sta (spc),y
sta (c_sp),y
iny
lda sreg+1
sta (spc),y
sta (c_sp),y
pla
rts

View File

@@ -17,7 +17,7 @@
.constructor initstkchk, 25
.import __STACKSIZE__ ; Linker defined
.import pusha0, _exit
.importzp spc
.importzp c_sp
; Use macros for better readability
.macpack generic
@@ -32,11 +32,11 @@
.proc initstkchk
lda spc
lda c_sp
sta initialsp
sub #<__STACKSIZE__
sta lowwater
lda spc+1
lda c_sp+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 spc+1
cmp c_sp+1
bcs @L1
rts
@@ -78,7 +78,7 @@ cstkchk:
@L1: bne CStackOverflow
lda lowwater
cmp spc
cmp c_sp
bcs CStackOverflow
Done: rts
@@ -87,9 +87,9 @@ Done: rts
CStackOverflow:
lda initialsp
sta spc
sta c_sp
lda initialsp+1
sta spc+1
sta c_sp+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 spc
.importzp c_sp
.macpack cpu
@@ -18,17 +18,17 @@ tossubax:
sec
eor #$FF
.if (.cpu .bitand CPU_ISET_65SC02)
adc (spc)
adc (c_sp)
ldy #1
.else
ldy #0
adc (spc),y ; Subtract low byte
adc (c_sp),y ; Subtract low byte
iny
.endif
pha ; Save high byte
txa
eor #$FF
adc (spc),y ; Subtract high byte
adc (c_sp),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 spc
.importzp c_sp
subeq0sp:
ldy #0
subeqysp:
sec
eor #$FF
adc (spc),y
sta (spc),y
adc (c_sp),y
sta (c_sp),y
pha ; Save low byte
iny
txa
eor #$FF
adc (spc),y
sta (spc),y
adc (c_sp),y
sta (c_sp),y
tax
pla ; Restore low byte
rts

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -10,7 +10,7 @@
.zeropage
spc: .res 2 ; Stack pointer
c_sp: .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