mirror of
https://github.com/irmen/prog8.git
synced 2024-10-19 07:23:56 +00:00
fixed stack bug in print_ub, applied Soci's optimizations to prog8lib.asm
This commit is contained in:
parent
53045b9e36
commit
32a9ab30fb
@ -763,13 +763,12 @@ _print_byte_digits
|
|||||||
bne _print_hundreds
|
bne _print_hundreds
|
||||||
cpx #'0'
|
cpx #'0'
|
||||||
bne _print_tens
|
bne _print_tens
|
||||||
pla
|
jmp _end
|
||||||
jmp c64.CHROUT
|
|
||||||
_print_hundreds tya
|
_print_hundreds tya
|
||||||
jsr c64.CHROUT
|
jsr c64.CHROUT
|
||||||
_print_tens txa
|
_print_tens txa
|
||||||
jsr c64.CHROUT
|
jsr c64.CHROUT
|
||||||
pla
|
_end pla
|
||||||
jsr c64.CHROUT
|
jsr c64.CHROUT
|
||||||
ldx c64.SCRATCH_ZPREGX
|
ldx c64.SCRATCH_ZPREGX
|
||||||
rts
|
rts
|
||||||
|
@ -49,19 +49,17 @@ add_a_to_zpword .proc
|
|||||||
pop_index_times_5 .proc
|
pop_index_times_5 .proc
|
||||||
inx
|
inx
|
||||||
lda c64.ESTACK_LO,x
|
lda c64.ESTACK_LO,x
|
||||||
sta c64.SCRATCH_ZPB1
|
|
||||||
asl a
|
asl a
|
||||||
asl a
|
asl a
|
||||||
clc
|
clc
|
||||||
adc c64.SCRATCH_ZPB1 ; A*=5
|
adc c64.ESTACK_LO,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
neg_b .proc
|
neg_b .proc
|
||||||
lda c64.ESTACK_LO+1,x
|
lda #0
|
||||||
eor #255
|
sec
|
||||||
clc
|
sbc c64.ESTACK_LO+1,x
|
||||||
adc #1
|
|
||||||
sta c64.ESTACK_LO+1,x
|
sta c64.ESTACK_LO+1,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
@ -90,10 +88,9 @@ inv_word .proc
|
|||||||
not_byte .proc
|
not_byte .proc
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
beq +
|
beq +
|
||||||
lda #0
|
lda #1
|
||||||
beq ++
|
+ eor #1
|
||||||
+ lda #1
|
sta c64.ESTACK_LO+1,x
|
||||||
+ sta c64.ESTACK_LO+1,x
|
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
@ -101,10 +98,10 @@ not_word .proc
|
|||||||
lda c64.ESTACK_LO + 1,x
|
lda c64.ESTACK_LO + 1,x
|
||||||
ora c64.ESTACK_HI + 1,x
|
ora c64.ESTACK_HI + 1,x
|
||||||
beq +
|
beq +
|
||||||
lda #0
|
lda #1
|
||||||
beq ++
|
+ eor #1
|
||||||
+ lda #1
|
sta c64.ESTACK_LO + 1,x
|
||||||
+ sta c64.ESTACK_LO + 1,x
|
lsr a
|
||||||
sta c64.ESTACK_HI + 1,x
|
sta c64.ESTACK_HI + 1,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
@ -300,25 +297,18 @@ equal_w .proc
|
|||||||
|
|
||||||
notequal_b .proc
|
notequal_b .proc
|
||||||
; -- are the two bytes on the stack different?
|
; -- are the two bytes on the stack different?
|
||||||
inx
|
lda c64.ESTACK_LO+1,x
|
||||||
lda c64.ESTACK_LO,x
|
cmp c64.ESTACK_LO+2,x
|
||||||
eor c64.ESTACK_LO+1,x
|
beq equal_b._equal_b_false
|
||||||
sta c64.ESTACK_LO+1,x
|
bne equal_b._equal_b_true
|
||||||
rts
|
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
notequal_w .proc
|
notequal_w .proc
|
||||||
; -- are the two words on the stack different?
|
; -- are the two words on the stack different?
|
||||||
inx
|
lda c64.ESTACK_HI+1,x
|
||||||
lda c64.ESTACK_LO,x
|
cmp c64.ESTACK_HI+2,x
|
||||||
eor c64.ESTACK_LO+1,x
|
beq notequal_b
|
||||||
beq +
|
bne equal_b._equal_b_true
|
||||||
sta c64.ESTACK_LO+1,x
|
|
||||||
rts
|
|
||||||
+ lda c64.ESTACK_HI,x
|
|
||||||
eor c64.ESTACK_HI+1,x
|
|
||||||
sta c64.ESTACK_LO+1,x
|
|
||||||
rts
|
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
less_ub .proc
|
less_ub .proc
|
||||||
@ -375,11 +365,10 @@ _equal_b_false lda #0
|
|||||||
.pend
|
.pend
|
||||||
|
|
||||||
lesseq_ub .proc
|
lesseq_ub .proc
|
||||||
lda c64.ESTACK_LO+2,x
|
lda c64.ESTACK_LO+1,x
|
||||||
cmp c64.ESTACK_LO+1,x
|
cmp c64.ESTACK_LO+2,x
|
||||||
bcc equal_b._equal_b_true
|
bcs equal_b._equal_b_true
|
||||||
beq equal_b._equal_b_true
|
bcc equal_b._equal_b_false
|
||||||
bcs equal_b._equal_b_false
|
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
lesseq_b .proc
|
lesseq_b .proc
|
||||||
@ -790,17 +779,15 @@ _loop lda (c64.SCRATCH_ZPWORD1),y
|
|||||||
func_sum_ub .proc
|
func_sum_ub .proc
|
||||||
jsr pop_array_and_lengthmin1Y
|
jsr pop_array_and_lengthmin1Y
|
||||||
lda #0
|
lda #0
|
||||||
sta c64.ESTACK_LO,x
|
|
||||||
sta c64.ESTACK_HI,x
|
sta c64.ESTACK_HI,x
|
||||||
- lda (c64.SCRATCH_ZPWORD1),y
|
- clc
|
||||||
clc
|
adc (c64.SCRATCH_ZPWORD1),y
|
||||||
adc c64.ESTACK_LO,x
|
|
||||||
sta c64.ESTACK_LO,x
|
|
||||||
bcc +
|
bcc +
|
||||||
inc c64.ESTACK_HI,x
|
inc c64.ESTACK_HI,x
|
||||||
+ dey
|
+ dey
|
||||||
cpy #255
|
cpy #255
|
||||||
bne -
|
bne -
|
||||||
|
sta c64.ESTACK_LO,x
|
||||||
dex
|
dex
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
Loading…
Reference in New Issue
Block a user