1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-10-14 18:24:10 +00:00

Added new MEGA65 DMA methods and tests. Added a missing fragment.

This commit is contained in:
jespergravgaard 2020-12-03 01:52:49 +01:00
parent 63bc6e0a8e
commit 28729cbd45
5 changed files with 259 additions and 181 deletions

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 106673312a 1066734e54
//KICKC FRAGMENT CACHE f8d7c2682 f8d7c43d0
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}
@ -7,6 +7,16 @@ lda #<{c1}
sta {z1}
lda #>{c1}
sta {z1}+1
//FRAGMENT vbuz1=_deref_pbuc1
lda {c1}
sta {z1}
//FRAGMENT vbuz1_lt_vbuc1_then_la1
lda {z1}
cmp #{c1}
bcc {la1}
//FRAGMENT vbuz1=vbuz2
lda {z2}
sta {z1}
//FRAGMENT vduz1=vduz2
lda {z2}
sta {z1}
@ -16,10 +26,52 @@ lda {z2}+2
sta {z1}+2
lda {z2}+3
sta {z1}+3
//FRAGMENT vbuz1_lt_vbuc1_then_la1
lda {z1}
cmp #{c1}
bcc {la1}
//FRAGMENT vwuz1=_word_vbuz2
lda {z2}
sta {z1}
lda #0
sta {z1}+1
//FRAGMENT vwuz1=vwuz2_rol_2
lda {z2}
asl
sta {z1}
lda {z2}+1
rol
sta {z1}+1
asl {z1}
rol {z1}+1
//FRAGMENT vwuz1=vwuz2_plus_vwuz3
lda {z2}
clc
adc {z3}
sta {z1}
lda {z2}+1
adc {z3}+1
sta {z1}+1
//FRAGMENT vwuz1=vwuz2_rol_3
lda {z2}
asl
sta {z1}
lda {z2}+1
rol
sta {z1}+1
asl {z1}
rol {z1}+1
asl {z1}
rol {z1}+1
//FRAGMENT pbuz1=pbuc1_plus_vwuz2
clc
lda {z2}
adc #<{c1}
sta {z1}
lda {z2}+1
adc #>{c1}
sta {z1}+1
//FRAGMENT pbuz1=pbuz2
lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
lda #{c1}
clc
@ -44,15 +96,9 @@ inw {z1}
lda #{c1}
cmp {z1}
bne {la1}
//FRAGMENT vbuz1=vbuz2
lda {z2}
sta {z1}
//FRAGMENT _deref_pbuc1=vbuc2
lda #{c2}
sta {c1}
//FRAGMENT vbuz1=_deref_pbuc1
lda {c1}
sta {z1}
//FRAGMENT vduz1=vduc1
lda #<{c1}
sta {z1}
@ -149,11 +195,6 @@ cmp {z1}
beq {la1}
!:
bcc {la1}
//FRAGMENT pbuz1=pbuz2
lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1
//FRAGMENT vwuz1=vwuz2
lda {z2}
sta {z1}
@ -333,9 +374,34 @@ lda {z1}
sec
sbc {z2}
sta {z1}
//FRAGMENT vbuaa=_deref_pbuc1
lda {c1}
//FRAGMENT vbuxx=_deref_pbuc1
ldx {c1}
//FRAGMENT vbuaa_lt_vbuc1_then_la1
cmp #{c1}
bcc {la1}
//FRAGMENT vbuaa=vbuz1
lda {z1}
//FRAGMENT vbuxx=vbuz1
ldx {z1}
//FRAGMENT vbuz1=vbuxx
stx {z1}
//FRAGMENT vwuz1=_word_vbuxx
txa
sta {z1}
lda #0
sta {z1}+1
//FRAGMENT vwuz1=_word_vbuyy
tya
sta {z1}
lda #0
sta {z1}+1
//FRAGMENT vwuz1=_word_vbuzz
tza
sta {z1}
lda #0
sta {z1}+1
//FRAGMENT pbuz1_derefidx_vbuaa=vbuc1
taz
lda #{c1}
@ -371,10 +437,6 @@ cmp #{c1}
bne {la1}
//FRAGMENT vbuz1=vbuaa
sta {z1}
//FRAGMENT vbuaa=_deref_pbuc1
lda {c1}
//FRAGMENT vbuxx=_deref_pbuc1
ldx {c1}
//FRAGMENT pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx
inc {c1},x
//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
@ -387,10 +449,6 @@ tay
lda {c1},y
cmp #{c2}
beq {la1}
//FRAGMENT vbuaa=vbuz1
lda {z1}
//FRAGMENT vbuxx=vbuz1
ldx {z1}
//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
ldy {z1}
lda {c1},y
@ -1842,8 +1900,6 @@ sta ({z1}),y
tza
ldy #0
sta ({z1}),y
//FRAGMENT vbuz1=vbuxx
stx {z1}
//FRAGMENT vbuaa_le_vbuc1_then_la1
cmp #{c1}
bcc {la1}
@ -2168,6 +2224,10 @@ sbc #1
//FRAGMENT vbuc1_eq_vbuyy_then_la1
cpy #{c1}
beq {la1}
//FRAGMENT vbuyy=_deref_pbuc1
ldy {c1}
//FRAGMENT vbuzz=_deref_pbuc1
ldz {c1}
//FRAGMENT vbuyy_le_vbuaa_then_la1
sty $ff
cmp $ff
@ -2206,6 +2266,26 @@ dex
stz $ff
cpy $ff
bcc {la1}
//FRAGMENT vwuz1=vwuz2_plus_vwuz1
lda {z1}
clc
adc {z2}
sta {z1}
lda {z1}+1
adc {z2}+1
sta {z1}+1
//FRAGMENT pbuz1=pbuc1_plus_vwuz1
clc
lda {z1}
adc #<{c1}
sta {z1}
lda {z1}+1
adc #>{c1}
sta {z1}+1
//FRAGMENT vwuz1=vwuz1_rol_3
asw {z1}
asw {z1}
asw {z1}
//FRAGMENT pbuc1_derefidx_vbuzz=vbuzz
tza
tax

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 106673312a 1066734e54
//KICKC FRAGMENT CACHE f8d7c2682 f8d7c43d0
//FRAGMENT _deref_pbuc1=vbuc2
lda #{c2}
sta {c1}
@ -1614,11 +1614,138 @@ tza
sta {c1}
lda #0
sta {c1}+1
//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
inc {c1}
//FRAGMENT vwuz1=vbuc1
lda #<{c1}
sta {z1}
lda #>{c1}
sta {z1}+1
//FRAGMENT _deref_pbuc1_eq_vbuz1_then_la1
lda {c1}
cmp {z1}
beq {la1}
//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
dec {c1}
//FRAGMENT pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
ldx {z1}
inc {c1},x
//FRAGMENT vbuz1=_lo_vwuz2
lda {z2}
sta {z1}
//FRAGMENT vbuz1=_hi_vwuz2
lda {z2}+1
sta {z1}
//FRAGMENT vbuz1=vbuz2_bor_vbuz3
lda {z2}
ora {z3}
sta {z1}
//FRAGMENT _deref_pbuc1_eq_vbuaa_then_la1
cmp {c1}
beq {la1}
//FRAGMENT pbuc1_derefidx_vbuaa=_inc_pbuc1_derefidx_vbuaa
tax
inc {c1},x
//FRAGMENT pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx
inc {c1},x
//FRAGMENT vbuaa=_lo_vwuz1
lda {z1}
//FRAGMENT vbuxx=_lo_vwuz1
ldx {z1}
//FRAGMENT vbuaa=_hi_vwuz1
lda {z1}+1
//FRAGMENT vbuxx=_hi_vwuz1
ldx {z1}+1
//FRAGMENT vbuz1=vbuxx_bor_vbuz2
txa
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuyy_bor_vbuz2
tya
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuzz_bor_vbuz2
tza
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuz2_bor_vbuaa
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuxx_bor_vbuaa
stx $ff
ora $ff
sta {z1}
//FRAGMENT vbuz1=vbuyy_bor_vbuaa
sty $ff
ora $ff
sta {z1}
//FRAGMENT vbuz1=vbuzz_bor_vbuaa
tay
tza
sty $ff
ora $ff
sta {z1}
//FRAGMENT vbuz1=vbuz2_bor_vbuxx
txa
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuxx_bor_vbuxx
stx {z1}
//FRAGMENT vbuyy=_lo_vwuz1
ldy {z1}
//FRAGMENT vbuzz=_lo_vwuz1
ldz {z1}
//FRAGMENT vbuyy=_hi_vwuz1
ldy {z1}+1
//FRAGMENT vbuzz=_hi_vwuz1
ldz {z1}+1
//FRAGMENT vbuz1=vbuz2_bor_vbuyy
tya
ora {z2}
sta {z1}
//FRAGMENT pbuc1_derefidx_vbuyy=_inc_pbuc1_derefidx_vbuyy
lda {c1},y
inc
sta {c1},y
//FRAGMENT pbuc1_derefidx_vbuzz=_inc_pbuc1_derefidx_vbuzz
tza
tax
inc {c1},x
//FRAGMENT _deref_pbuc1_eq_vbuxx_then_la1
cpx {c1}
beq {la1}
//FRAGMENT _deref_pbuc1_eq_vbuyy_then_la1
cpy {c1}
beq {la1}
//FRAGMENT _deref_pbuc1_eq_vbuzz_then_la1
cpz {c1}
beq {la1}
//FRAGMENT vbuaa=vbuz1_bor_vbuaa
ora {z1}
//FRAGMENT vbuxx=vbuz1_bor_vbuaa
ora {z1}
tax
//FRAGMENT vbuyy=vbuz1_bor_vbuaa
ora {z1}
tay
//FRAGMENT vbuzz=vbuz1_bor_vbuaa
ora {z1}
taz
//FRAGMENT vbuz1=vbuz2_bor_vbuzz
tza
ora {z2}
sta {z1}
//FRAGMENT vbuaa=vbuxx_bor_vbuaa
stx $ff
ora $ff
//FRAGMENT vbuaa=vbuyy_bor_vbuaa
sty $ff
ora $ff
//FRAGMENT vbuaa=vbuzz_bor_vbuaa
tay
tza
sty $ff
ora $ff
//FRAGMENT vduz1=vduc1
lda #<{c1}
sta {z1}
@ -1672,16 +1799,6 @@ lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1
//FRAGMENT vbuz1=_lo_vwuz2
lda {z2}
sta {z1}
//FRAGMENT vbuz1=_hi_vwuz2
lda {z2}+1
sta {z1}
//FRAGMENT vbuz1=vbuz2_bor_vbuz3
lda {z2}
ora {z3}
sta {z1}
//FRAGMENT vduz1=vduz2_ror_4
lda {z2}+3
lsr
@ -2268,49 +2385,6 @@ dey
bne !-
!e:
taz
//FRAGMENT vbuaa=_lo_vwuz1
lda {z1}
//FRAGMENT vbuxx=_lo_vwuz1
ldx {z1}
//FRAGMENT vbuaa=_hi_vwuz1
lda {z1}+1
//FRAGMENT vbuxx=_hi_vwuz1
ldx {z1}+1
//FRAGMENT vbuz1=vbuxx_bor_vbuz2
txa
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuyy_bor_vbuz2
tya
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuzz_bor_vbuz2
tza
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuz2_bor_vbuaa
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuxx_bor_vbuaa
stx $ff
ora $ff
sta {z1}
//FRAGMENT vbuz1=vbuyy_bor_vbuaa
sty $ff
ora $ff
sta {z1}
//FRAGMENT vbuz1=vbuzz_bor_vbuaa
tay
tza
sty $ff
ora $ff
sta {z1}
//FRAGMENT vbuz1=vbuz2_bor_vbuxx
txa
ora {z2}
sta {z1}
//FRAGMENT vbuz1=vbuxx_bor_vbuxx
stx {z1}
//FRAGMENT vbuaa=_hi__word_vduz1
lda {z1}+1
//FRAGMENT vbuxx=_hi__word_vduz1
@ -2375,20 +2449,6 @@ tay
tza
ora {z1}
taz
//FRAGMENT vbuaa=vbuz1_bor_vbuaa
ora {z1}
//FRAGMENT vbuxx=vbuz1_bor_vbuaa
ora {z1}
tax
//FRAGMENT vbuyy=vbuz1_bor_vbuaa
ora {z1}
tay
//FRAGMENT vbuzz=vbuz1_bor_vbuaa
ora {z1}
taz
//FRAGMENT vbuaa=vbuxx_bor_vbuaa
stx $ff
ora $ff
//FRAGMENT vbuxx=vbuxx_bor_vbuaa
stx $ff
ora $ff
@ -2401,9 +2461,6 @@ tay
stx $ff
ora $ff
taz
//FRAGMENT vbuaa=vbuyy_bor_vbuaa
sty $ff
ora $ff
//FRAGMENT vbuxx=vbuyy_bor_vbuaa
sty $ff
ora $ff
@ -2416,11 +2473,6 @@ tay
sty $ff
ora $ff
taz
//FRAGMENT vbuaa=vbuzz_bor_vbuaa
tay
tza
sty $ff
ora $ff
//FRAGMENT vbuxx=vbuzz_bor_vbuaa
tax
tza
@ -2454,18 +2506,6 @@ tay
txa
ora {z1}
taz
//FRAGMENT vbuyy=_lo_vwuz1
ldy {z1}
//FRAGMENT vbuzz=_lo_vwuz1
ldz {z1}
//FRAGMENT vbuyy=_hi_vwuz1
ldy {z1}+1
//FRAGMENT vbuzz=_hi_vwuz1
ldz {z1}+1
//FRAGMENT vbuz1=vbuz2_bor_vbuyy
tya
ora {z2}
sta {z1}
//FRAGMENT vbuyy=_hi__word_vduz1
ldy {z1}+1
//FRAGMENT vbuzz=_hi__word_vduz1
@ -2492,10 +2532,6 @@ tza
tax
tya
sta {c1},x
//FRAGMENT vbuz1=vbuz2_bor_vbuzz
tza
ora {z2}
sta {z1}
//FRAGMENT vbuyy=vbuaa
tay
//FRAGMENT vbuzz=vbuaa

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 106673312a 1066734e54
//KICKC FRAGMENT CACHE f8d7c2682 f8d7c43d0
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 106673312a 1066734e54
//KICKC FRAGMENT CACHE f8d7c2682 f8d7c43d0
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}
@ -4880,7 +4880,6 @@ lda ({z1}),y
sta {c1},x
//FRAGMENT pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuxx
sty $ff
txa
tay
lda ({z1}),y
@ -6208,11 +6207,9 @@ tay
//FRAGMENT vwuz1_gt_vbuc1_then_la1
lda {z1}+1
bne {la1}
lda {z1}
cmp #{c1}
beq !+
bcs {la1}
!:
lda #{c1}
cmp {z1}
bcc {la1}
//FRAGMENT vbuz1=vbuz2_bxor_vbuc1
lda #{c1}
eor {z2}
@ -9400,10 +9397,14 @@ lda {z2}
clc
adc #2
sta {z1}
//FRAGMENT vbuaa=vbuz1_plus_2
lda {z1}
//FRAGMENT vbuz1=vbuaa_plus_2
clc
adc #2
sta {z1}
//FRAGMENT vbuz1=vbuxx_plus_2
inx
inx
stx {z1}
//FRAGMENT vbuxx=vbuz1_plus_2
ldx {z1}
inx
@ -11961,11 +11962,10 @@ lda #>{c1}
eor {z2}+1
sta {z1}+1
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz1_derefidx_vbuz2_bor_pbuc1_derefidx_vbuz3
ldx {z3}
ldy {z2}
lda ({z1}),y
ldy {z3}
ora {c1},y
ldy {z2}
ora {c1},x
sta ({z1}),y
//FRAGMENT vbuz1=vbuz1_bxor_pbuz2_derefidx_vbuz3
lda {z1}
@ -11983,13 +11983,11 @@ ldy {z2}
tax
lda ({z1}),y
ora {c1},x
ldy {z2}
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz1_derefidx_vbuz2_bor_pbuc1_derefidx_vbuxx
ldy {z2}
lda ({z1}),y
ora {c1},x
ldy {z2}
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz1_derefidx_vbuz2_bor_pbuc1_derefidx_vbuyy
tya
@ -11997,16 +11995,13 @@ ldy {z2}
tax
lda ({z1}),y
ora {c1},x
ldy {z2}
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuxx=pbuz1_derefidx_vbuxx_bor_pbuc1_derefidx_vbuz2
txa
ldx {z2}
tay
lda ({z1}),y
ldy {z2}
stx $ff
ora {c1},y
ldy $ff
ora {c1},x
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuxx=pbuz1_derefidx_vbuxx_bor_pbuc1_derefidx_vbuaa
tay
@ -12014,11 +12009,8 @@ txa
ldx {c1},y
tay
lda ({z1}),y
sty $ff
stx $ff
ora $ff
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuxx=pbuz1_derefidx_vbuxx_bor_pbuc1_derefidx_vbuxx
txa
@ -12033,41 +12025,26 @@ txa
ldx {c1},y
tay
lda ({z1}),y
sty $ff
stx $ff
ora $ff
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz1_derefidx_vbuyy_bor_pbuc1_derefidx_vbuz2
lda ({z1}),y
sty $ff
ldy {z2}
ora {c1},y
ldy $ff
ldx {z2}
ora {c1},x
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz1_derefidx_vbuyy_bor_pbuc1_derefidx_vbuaa
tax
lda ({z1}),y
sty $ff
ora {c1},x
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz1_derefidx_vbuyy_bor_pbuc1_derefidx_vbuxx
lda ({z1}),y
sty $ff
ora {c1},x
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz1_derefidx_vbuyy_bor_pbuc1_derefidx_vbuyy
lda ({z1}),y
sty $ff
ora {c1},y
ldy $ff
sta ({z1}),y
//FRAGMENT vbuz1=vbuz1_bxor_pbuz2_derefidx_vbuaa
tay
@ -12667,12 +12644,9 @@ lda ({z1}),y
ldy #{c1}
tax
lda ({z1}),y
sty $ff
stx $ff
clc
adc $ff
ldy $ff
sta ({z1}),y
//FRAGMENT pbsz1_derefidx_vbuc1_lt_vbsc2_then_la1
ldy #{c1}
@ -12685,9 +12659,8 @@ eor #$80
!:
bmi {la1}
//FRAGMENT pbsz1_derefidx_vbuc1=vbsc2
lda #{c1}
tay
lda #{c2}
ldy #{c1}
sta ({z1}),y
//FRAGMENT pwsz1_derefidx_vbuc1_gt_vwsc2_then_la1
ldy #{c1}
@ -12773,9 +12746,8 @@ iny
lda #>{c2}
sta ({z1}),y
//FRAGMENT pbsz1_derefidx_vbuc1=vbsz2
lda #{c1}
tay
lda {z2}
ldy #{c1}
sta ({z1}),y
//FRAGMENT pbuc1_derefidx_vbuz1_lt_vbuc2_then_la1
ldy {z1}
@ -12788,8 +12760,7 @@ lda {c2},y
cmp #{c1}
beq {la1}
//FRAGMENT pbsz1_derefidx_vbuc1=vbsxx
lda #{c1}
tay
ldy #{c1}
txa
sta ({z1}),y
//FRAGMENT pbuc1_derefidx_vbuaa_lt_vbuc2_then_la1
@ -12862,12 +12833,6 @@ ldx {z2}
ldy {c2},x
ldx {c1},y
stx {z1}
//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2)
ldx {z2}
ldy {c3},x
lda {c2},y
ldx {z1}
sta {c1},x
//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuz2
ldy {z2}
lda {c1},y
@ -15316,7 +15281,6 @@ ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuz3
sty $ff
ldy {z3}
lda ({z2}),y
ldy $ff
@ -15334,7 +15298,6 @@ ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuaa
sty $ff
tay
lda ({z2}),y
ldy $ff
@ -15354,7 +15317,6 @@ ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuxx
sty $ff
txa
tay
lda ({z2}),y
@ -18076,6 +18038,10 @@ sta {z1}
lda {c1}+1,x
adc {c1}+1,y
sta {z1}+1
//FRAGMENT vbuaa=vbuz1_plus_2
lda {z1}
clc
adc #2
//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc1_derefidx_vbuz2
ldy {z2}
clc
@ -18176,10 +18142,6 @@ sta {z1}
lda {c1}+1,x
adc {c1}+1,y
sta {z1}+1
//FRAGMENT vbuz1=vbuxx_plus_2
inx
inx
stx {z1}
//FRAGMENT vbuz1=vbuyy_plus_2
iny
iny

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 106673312a 1066734e54
//KICKC FRAGMENT CACHE f8d7c2682 f8d7c43d0
//FRAGMENT vbuz1=_deref_pbuc1
lda {c1}
sta {z1}