changed "spc" to "c_sp"
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
.export toseq00, toseqa0, toseqax
|
||||
.import tosicmp, booleq
|
||||
.importzp spc, tmp1
|
||||
.importzp c_sp, tmp1
|
||||
|
||||
toseq00:
|
||||
lda #$00
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user