mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-26 12:49:21 +00:00
improved error message when passing unknown platform to t
. Closes #732
This commit is contained in:
parent
134b9367af
commit
da7e4a6e45
@ -1,4 +1,4 @@
|
|||||||
//KICKC FRAGMENT CACHE cfec4918a cfec4b699
|
//KICKC FRAGMENT CACHE ce6972ebb ce69753d3
|
||||||
//FRAGMENT vbuzz=vbuc1
|
//FRAGMENT vbuzz=vbuc1
|
||||||
ldz #{c1}
|
ldz #{c1}
|
||||||
//FRAGMENT vbuzz_lt_vbuc1_then_la1
|
//FRAGMENT vbuzz_lt_vbuc1_then_la1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
//KICKC FRAGMENT CACHE cfec4918a cfec4b699
|
//KICKC FRAGMENT CACHE ce6972ebb ce69753d3
|
||||||
//FRAGMENT vbuz1=vbuc1
|
//FRAGMENT vbuz1=vbuc1
|
||||||
ldz #{c1}
|
ldz #{c1}
|
||||||
stz {z1}
|
stz {z1}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
//KICKC FRAGMENT CACHE cfec4918a cfec4b699
|
//KICKC FRAGMENT CACHE ce6972ebb ce69753d3
|
||||||
//FRAGMENT vbuz1=vbuc1
|
//FRAGMENT vbuz1=vbuc1
|
||||||
lda #{c1}
|
lda #{c1}
|
||||||
sta {z1}
|
sta {z1}
|
||||||
|
19831
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
19831
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
File diff suppressed because it is too large
Load Diff
835
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
835
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
@ -1,27 +1,12 @@
|
|||||||
//KICKC FRAGMENT CACHE cfec4918a cfec4b699
|
//KICKC FRAGMENT CACHE ce6972ebb ce69753d3
|
||||||
|
//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
|
||||||
|
inc {c1}
|
||||||
//FRAGMENT isr_hardware_all_entry
|
//FRAGMENT isr_hardware_all_entry
|
||||||
pha @clob_none
|
pha @clob_none
|
||||||
txa @clob_x
|
txa @clob_x
|
||||||
pha @clob_x
|
pha @clob_x
|
||||||
tya @clob_y
|
tya @clob_y
|
||||||
pha @clob_y
|
pha @clob_y
|
||||||
//FRAGMENT vbuz1=vbuz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuz2_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT 0_eq_vbuz1_then_la1
|
|
||||||
lda {z1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
|
|
||||||
inc {c1}
|
|
||||||
//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
|
|
||||||
dec {c1}
|
|
||||||
//FRAGMENT _deref_pbuc1=vbuc2
|
|
||||||
lda #{c2}
|
|
||||||
sta {c1}
|
|
||||||
//FRAGMENT isr_hardware_all_exit
|
//FRAGMENT isr_hardware_all_exit
|
||||||
pla @clob_y
|
pla @clob_y
|
||||||
tay @clob_y
|
tay @clob_y
|
||||||
@ -29,19 +14,114 @@ pla @clob_x
|
|||||||
tax @clob_x
|
tax @clob_x
|
||||||
pla @clob_none
|
pla @clob_none
|
||||||
rti
|
rti
|
||||||
|
//FRAGMENT vbuz1=vbuc1
|
||||||
|
lda #{c1}
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
|
||||||
|
ldy {z1}
|
||||||
|
lda {c2},y
|
||||||
|
sta {c1},y
|
||||||
|
//FRAGMENT vbuz1=_inc_vbuz1
|
||||||
|
inc {z1}
|
||||||
|
//FRAGMENT vbuz1_neq_vbuc1_then_la1
|
||||||
|
lda #{c1}
|
||||||
|
cmp {z1}
|
||||||
|
bne {la1}
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuaa
|
||||||
|
tay
|
||||||
|
lda {c2},y
|
||||||
|
sta {c1},y
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
|
||||||
|
lda {c2},x
|
||||||
|
sta {c1},x
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy
|
||||||
|
lda {c2},y
|
||||||
|
sta {c1},y
|
||||||
|
//FRAGMENT vbuxx_neq_vbuc1_then_la1
|
||||||
|
cpx #{c1}
|
||||||
|
bne {la1}
|
||||||
|
//FRAGMENT vbuxx=vbuc1
|
||||||
|
ldx #{c1}
|
||||||
|
//FRAGMENT vbuxx=_inc_vbuxx
|
||||||
|
inx
|
||||||
|
//FRAGMENT vbuyy=vbuc1
|
||||||
|
ldy #{c1}
|
||||||
|
//FRAGMENT vbuyy=_inc_vbuyy
|
||||||
|
iny
|
||||||
|
//FRAGMENT vbuyy_neq_vbuc1_then_la1
|
||||||
|
cpy #{c1}
|
||||||
|
bne {la1}
|
||||||
|
//FRAGMENT _deref_pbuc1=vbuc2
|
||||||
|
lda #{c2}
|
||||||
|
sta {c1}
|
||||||
|
//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||||
|
lda #{c2}
|
||||||
|
ora {c1}
|
||||||
|
sta {c1}
|
||||||
|
//FRAGMENT _deref_qprc1=pprc2
|
||||||
|
lda #<{c2}
|
||||||
|
sta {c1}
|
||||||
|
lda #>{c2}
|
||||||
|
sta {c1}+1
|
||||||
|
//FRAGMENT vbuz1=vbuz2
|
||||||
|
lda {z2}
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT 0_eq_vbuz1_then_la1
|
||||||
|
lda {z1}
|
||||||
|
beq {la1}
|
||||||
|
//FRAGMENT vbuz1_eq_vbuc1_then_la1
|
||||||
|
lda #{c1}
|
||||||
|
cmp {z1}
|
||||||
|
beq {la1}
|
||||||
|
//FRAGMENT vbuz1=vbuz2_plus_1
|
||||||
|
ldy {z2}
|
||||||
|
iny
|
||||||
|
sty {z1}
|
||||||
|
//FRAGMENT vbuz1_lt_vbuc1_then_la1
|
||||||
|
lda {z1}
|
||||||
|
cmp #{c1}
|
||||||
|
bcc {la1}
|
||||||
|
//FRAGMENT vbuz1=vbuz2_rol_2
|
||||||
|
lda {z2}
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
||||||
|
ldy {z2}
|
||||||
|
lda {c2},y
|
||||||
|
ldy {z1}
|
||||||
|
sta {c1},y
|
||||||
|
//FRAGMENT vbuz1=vbuz1_minus_vbuc1
|
||||||
|
lax {z1}
|
||||||
|
axs #{c1}
|
||||||
|
stx {z1}
|
||||||
|
//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz3
|
||||||
|
ldy {z2}
|
||||||
|
lda {c1},y
|
||||||
|
ldy {z3}
|
||||||
|
clc
|
||||||
|
adc {c2},y
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuz1=vbuz2
|
||||||
|
lda {z2}
|
||||||
|
ldy {z1}
|
||||||
|
sta {c1},y
|
||||||
|
//FRAGMENT vbuz1_ge_vbuc1_then_la1
|
||||||
|
lda {z1}
|
||||||
|
cmp #{c1}
|
||||||
|
bcs {la1}
|
||||||
|
//FRAGMENT vbuz1=vbuz1_plus_vbuc1
|
||||||
|
lax {z1}
|
||||||
|
axs #-[{c1}]
|
||||||
|
stx {z1}
|
||||||
//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2
|
//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2
|
||||||
lda #{c2}
|
lda #{c2}
|
||||||
and {c1}
|
and {c1}
|
||||||
sta {z1}
|
sta {z1}
|
||||||
//FRAGMENT vbuz1=vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2
|
//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2
|
||||||
lda #{c2}
|
lda #{c2}
|
||||||
ldy {z1}
|
ldy {z1}
|
||||||
sta {c1},y
|
sta {c1},y
|
||||||
//FRAGMENT vbuz1=_inc_vbuz1
|
|
||||||
inc {z1}
|
|
||||||
//FRAGMENT 0_neq_vbuz1_then_la1
|
//FRAGMENT 0_neq_vbuz1_then_la1
|
||||||
lda {z1}
|
lda {z1}
|
||||||
bne {la1}
|
bne {la1}
|
||||||
@ -60,33 +140,6 @@ lda #<{c1}
|
|||||||
sta {z1}
|
sta {z1}
|
||||||
lda #>{c1}
|
lda #>{c1}
|
||||||
sta {z1}+1
|
sta {z1}+1
|
||||||
//FRAGMENT vbuz1_lt_vbuc1_then_la1
|
|
||||||
lda {z1}
|
|
||||||
cmp #{c1}
|
|
||||||
bcc {la1}
|
|
||||||
//FRAGMENT pbuz1=pbuc1
|
|
||||||
lda #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuz2
|
|
||||||
lda {z2}
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pvoz1=pvoz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuz1=vbuz1_plus_2
|
|
||||||
lda {z1}
|
|
||||||
clc
|
|
||||||
adc #2
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuz2_rol_1
|
//FRAGMENT vbuz1=vbuz2_rol_1
|
||||||
lda {z2}
|
lda {z2}
|
||||||
asl
|
asl
|
||||||
@ -95,6 +148,11 @@ sta {z1}
|
|||||||
lda {z2}
|
lda {z2}
|
||||||
ora {z3}
|
ora {z3}
|
||||||
sta {z1}
|
sta {z1}
|
||||||
|
//FRAGMENT pbuz1=pbuc1
|
||||||
|
lda #<{c1}
|
||||||
|
sta {z1}
|
||||||
|
lda #>{c1}
|
||||||
|
sta {z1}+1
|
||||||
//FRAGMENT vwuz1_lt_vwuc1_then_la1
|
//FRAGMENT vwuz1_lt_vwuc1_then_la1
|
||||||
lda {z1}+1
|
lda {z1}+1
|
||||||
cmp #>{c1}
|
cmp #>{c1}
|
||||||
@ -136,449 +194,22 @@ lda {z1}
|
|||||||
cmp {z2}
|
cmp {z2}
|
||||||
bcc {la1}
|
bcc {la1}
|
||||||
!:
|
!:
|
||||||
//FRAGMENT vbuz1=pbuz2_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z2}),y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT pbuz1=pbuz2_plus_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
clc
|
|
||||||
adc {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
adc {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1_neq_pbuc1_then_la1
|
|
||||||
lda {z1}+1
|
|
||||||
cmp #>{c1}
|
|
||||||
bne {la1}
|
|
||||||
lda {z1}
|
|
||||||
cmp #<{c1}
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT _deref_pbuz1=_deref_pbuz2
|
|
||||||
ldy #0
|
|
||||||
lda ({z2}),y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuz1=vbuaa
|
//FRAGMENT vbuz1=vbuaa
|
||||||
sta {z1}
|
sta {z1}
|
||||||
//FRAGMENT vbuaa=vbuz1
|
//FRAGMENT vbuaa=vbuz1
|
||||||
lda {z1}
|
lda {z1}
|
||||||
//FRAGMENT vbuxx=vbuz1
|
//FRAGMENT vbuxx=vbuz1
|
||||||
ldx {z1}
|
ldx {z1}
|
||||||
//FRAGMENT vbuz1=vbuaa_band_vbuc1
|
|
||||||
and #{c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuxx_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
sax {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuaa_band_vbuc1
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuaa=vbuxx_band_vbuc1
|
|
||||||
txa
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuaa=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuxx=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuaa_band_vbuc1
|
|
||||||
ldx #{c1}
|
|
||||||
axs #0
|
|
||||||
//FRAGMENT 0_eq_vbuaa_then_la1
|
//FRAGMENT 0_eq_vbuaa_then_la1
|
||||||
cmp #0
|
cmp #0
|
||||||
beq {la1}
|
beq {la1}
|
||||||
//FRAGMENT vbuyy=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuaa=_deref_pbuc1_band_vbuc2
|
|
||||||
lda #{c2}
|
|
||||||
and {c1}
|
|
||||||
//FRAGMENT vbuxx=_deref_pbuc1_band_vbuc2
|
|
||||||
lda #{c2}
|
|
||||||
and {c1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=_deref_pbuc1_band_vbuc2
|
|
||||||
lda #{c2}
|
|
||||||
and {c1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuaa=vbuc2
|
|
||||||
tay
|
|
||||||
lda #{c2}
|
|
||||||
sta {c1},y
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuxx=vbuc2
|
|
||||||
lda #{c2}
|
|
||||||
sta {c1},x
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuyy=vbuc2
|
|
||||||
lda #{c2}
|
|
||||||
sta {c1},y
|
|
||||||
//FRAGMENT 0_neq_vbuxx_then_la1
|
|
||||||
cpx #0
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT vbuaa_lt_vbuc1_then_la1
|
|
||||||
cmp #{c1}
|
|
||||||
bcc {la1}
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuaa
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuxx
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuyy
|
|
||||||
tya
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuxx=vbuxx_plus_2
|
|
||||||
inx
|
|
||||||
inx
|
|
||||||
//FRAGMENT vbuz1=vbuaa_rol_1
|
|
||||||
asl
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuxx_rol_1
|
|
||||||
txa
|
|
||||||
asl
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuyy_rol_1
|
|
||||||
tya
|
|
||||||
asl
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_rol_1
|
|
||||||
lda {z1}
|
|
||||||
asl
|
|
||||||
//FRAGMENT vbuaa=vbuaa_rol_1
|
|
||||||
asl
|
|
||||||
//FRAGMENT vbuaa=vbuxx_rol_1
|
|
||||||
txa
|
|
||||||
asl
|
|
||||||
//FRAGMENT vbuaa=vbuyy_rol_1
|
|
||||||
tya
|
|
||||||
asl
|
|
||||||
//FRAGMENT vbuxx=vbuz1_rol_1
|
|
||||||
lda {z1}
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuaa_rol_1
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuxx_rol_1
|
|
||||||
txa
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuyy_rol_1
|
|
||||||
tya
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=vbuz1_rol_1
|
|
||||||
lda {z1}
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuaa_rol_1
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuxx_rol_1
|
|
||||||
txa
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuyy_rol_1
|
|
||||||
tya
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuz1=vbuxx_bor_vbuz2
|
|
||||||
txa
|
|
||||||
ora {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuyy_bor_vbuz2
|
|
||||||
tya
|
|
||||||
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=vbuz2_bor_vbuxx
|
|
||||||
txa
|
|
||||||
ora {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuxx_bor_vbuxx
|
|
||||||
stx {z1}
|
|
||||||
//FRAGMENT vbuaa=_deref_pbuz1
|
|
||||||
ldy #0
|
|
||||||
lda ({z1}),y
|
|
||||||
//FRAGMENT vbuxx=_deref_pbuz1
|
|
||||||
ldy #0
|
|
||||||
lda ({z1}),y
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=_deref_pbuz1
|
|
||||||
ldy #0
|
|
||||||
lda ({z1}),y
|
|
||||||
tay
|
|
||||||
//FRAGMENT _deref_pbuc1=vbuaa
|
|
||||||
sta {c1}
|
|
||||||
//FRAGMENT vbuaa=_byte1_pvoz1
|
|
||||||
lda {z1}+1
|
|
||||||
//FRAGMENT vbuxx=_byte1_pvoz1
|
|
||||||
ldx {z1}+1
|
|
||||||
//FRAGMENT vbuaa=_byte0_pvoz1
|
|
||||||
lda {z1}
|
|
||||||
//FRAGMENT vbuxx=_byte0_pvoz1
|
|
||||||
ldx {z1}
|
|
||||||
//FRAGMENT _deref_pbuc1=vbuxx
|
|
||||||
stx {c1}
|
|
||||||
//FRAGMENT vbuaa=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
//FRAGMENT vbuxx=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuxx_lt_vbuc1_then_la1
|
|
||||||
cpx #{c1}
|
|
||||||
bcc {la1}
|
|
||||||
//FRAGMENT vbuyy=_byte1_pvoz1
|
|
||||||
ldy {z1}+1
|
|
||||||
//FRAGMENT _deref_pbuc1=vbuyy
|
|
||||||
sty {c1}
|
|
||||||
//FRAGMENT vbuyy=_byte0_pvoz1
|
|
||||||
ldy {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuc1
|
|
||||||
ldx #{c1}
|
|
||||||
//FRAGMENT vbuxx=_inc_vbuxx
|
|
||||||
inx
|
|
||||||
//FRAGMENT vbuyy=vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
//FRAGMENT vbuyy_lt_vbuc1_then_la1
|
|
||||||
cpy #{c1}
|
|
||||||
bcc {la1}
|
|
||||||
//FRAGMENT vbuyy=_inc_vbuyy
|
|
||||||
iny
|
|
||||||
//FRAGMENT vbuz1=vbuz2_bor_vbuyy
|
|
||||||
tya
|
|
||||||
ora {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_bor_vbuz2
|
|
||||||
lda {z1}
|
|
||||||
ora {z2}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_bor_vbuaa
|
|
||||||
ora {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_bor_vbuxx
|
|
||||||
txa
|
|
||||||
ora {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_bor_vbuyy
|
|
||||||
tya
|
|
||||||
ora {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuxx
|
|
||||||
stx {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuz1_bor_vbuz2
|
|
||||||
lda {z1}
|
|
||||||
ora {z2}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuz1_bor_vbuaa
|
|
||||||
ora {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuz1_bor_vbuxx
|
|
||||||
txa
|
|
||||||
ora {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuz1_bor_vbuyy
|
|
||||||
tya
|
|
||||||
ora {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuz1=vbuyy
|
|
||||||
sty {z1}
|
|
||||||
//FRAGMENT vbuyy=vbuz1_bor_vbuz2
|
|
||||||
lda {z1}
|
|
||||||
ora {z2}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuz1_bor_vbuaa
|
|
||||||
ora {z1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuz1_bor_vbuxx
|
|
||||||
txa
|
|
||||||
ora {z1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuz1_bor_vbuyy
|
|
||||||
tya
|
|
||||||
ora {z1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuz1=vbuxx_bor_vbuyy
|
|
||||||
txa
|
|
||||||
sty $ff
|
|
||||||
ora $ff
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuxx_bor_vbuz1
|
|
||||||
txa
|
|
||||||
ora {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuxx_bor_vbuaa
|
|
||||||
stx $ff
|
|
||||||
ora $ff
|
|
||||||
//FRAGMENT vbuaa=vbuxx_bor_vbuyy
|
|
||||||
txa
|
|
||||||
sty $ff
|
|
||||||
ora $ff
|
|
||||||
//FRAGMENT vbuxx=vbuxx_bor_vbuz1
|
|
||||||
txa
|
|
||||||
ora {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuxx_bor_vbuaa
|
|
||||||
stx $ff
|
|
||||||
ora $ff
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuxx_bor_vbuyy
|
|
||||||
txa
|
|
||||||
sty $ff
|
|
||||||
ora $ff
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=vbuxx_bor_vbuz1
|
|
||||||
txa
|
|
||||||
ora {z1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuxx_bor_vbuaa
|
|
||||||
stx $ff
|
|
||||||
ora $ff
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy=vbuxx_bor_vbuyy
|
|
||||||
txa
|
|
||||||
sty $ff
|
|
||||||
ora $ff
|
|
||||||
tay
|
|
||||||
//FRAGMENT 0_neq_vbuyy_then_la1
|
|
||||||
cpy #0
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT 0_eq_vbuxx_then_la1
|
|
||||||
cpx #0
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT 0_eq_vbuyy_then_la1
|
|
||||||
cpy #0
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuaa=vbuyy_bor_vbuaa
|
|
||||||
sty $ff
|
|
||||||
ora $ff
|
|
||||||
//FRAGMENT vbuxx=vbuaa
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=vbuaa
|
|
||||||
tay
|
|
||||||
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
clc
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
bcc !+
|
|
||||||
inc {z1}+1
|
|
||||||
!:
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
|
|
||||||
ldy {z1}
|
|
||||||
lda {c2},y
|
|
||||||
sta {c1},y
|
|
||||||
//FRAGMENT vbuz1_neq_vbuc1_then_la1
|
|
||||||
lda #{c1}
|
|
||||||
cmp {z1}
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
lda {c2},y
|
|
||||||
sta {c1},y
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
|
|
||||||
lda {c2},x
|
|
||||||
sta {c1},x
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy
|
|
||||||
lda {c2},y
|
|
||||||
sta {c1},y
|
|
||||||
//FRAGMENT vbuxx_neq_vbuc1_then_la1
|
|
||||||
cpx #{c1}
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT vbuyy_neq_vbuc1_then_la1
|
|
||||||
cpy #{c1}
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
|
||||||
lda #{c2}
|
|
||||||
ora {c1}
|
|
||||||
sta {c1}
|
|
||||||
//FRAGMENT _deref_qprc1=pprc2
|
|
||||||
lda #<{c2}
|
|
||||||
sta {c1}
|
|
||||||
lda #>{c2}
|
|
||||||
sta {c1}+1
|
|
||||||
//FRAGMENT vbuz1_eq_vbuc1_then_la1
|
|
||||||
lda #{c1}
|
|
||||||
cmp {z1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuz1=vbuz2_plus_1
|
|
||||||
ldy {z2}
|
|
||||||
iny
|
|
||||||
sty {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuz2_rol_2
|
|
||||||
lda {z2}
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
|
||||||
ldy {z2}
|
|
||||||
lda {c2},y
|
|
||||||
ldy {z1}
|
|
||||||
sta {c1},y
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuc1
|
|
||||||
lax {z1}
|
|
||||||
axs #{c1}
|
|
||||||
stx {z1}
|
|
||||||
//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz3
|
|
||||||
ldy {z2}
|
|
||||||
lda {c1},y
|
|
||||||
ldy {z3}
|
|
||||||
clc
|
|
||||||
adc {c2},y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT pbuc1_derefidx_vbuz1=vbuz2
|
|
||||||
lda {z2}
|
|
||||||
ldy {z1}
|
|
||||||
sta {c1},y
|
|
||||||
//FRAGMENT vbuz1_ge_vbuc1_then_la1
|
|
||||||
lda {z1}
|
|
||||||
cmp #{c1}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuz1=vbuz1_plus_vbuc1
|
|
||||||
lax {z1}
|
|
||||||
axs #-[{c1}]
|
|
||||||
stx {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_plus_1
|
//FRAGMENT vbuaa=vbuz1_plus_1
|
||||||
lda {z1}
|
lda {z1}
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
|
//FRAGMENT vbuaa_lt_vbuc1_then_la1
|
||||||
|
cmp #{c1}
|
||||||
|
bcc {la1}
|
||||||
//FRAGMENT vbuaa=vbuz1_rol_2
|
//FRAGMENT vbuaa=vbuz1_rol_2
|
||||||
lda {z1}
|
lda {z1}
|
||||||
asl
|
asl
|
||||||
@ -891,6 +522,9 @@ sta {c1},y
|
|||||||
//FRAGMENT pbuc1_derefidx_vbuxx=vbuz1
|
//FRAGMENT pbuc1_derefidx_vbuxx=vbuz1
|
||||||
lda {z1}
|
lda {z1}
|
||||||
sta {c1},x
|
sta {c1},x
|
||||||
|
//FRAGMENT vbuxx_lt_vbuc1_then_la1
|
||||||
|
cpx #{c1}
|
||||||
|
bcc {la1}
|
||||||
//FRAGMENT vbuxx_ge_vbuc1_then_la1
|
//FRAGMENT vbuxx_ge_vbuc1_then_la1
|
||||||
cpx #{c1}
|
cpx #{c1}
|
||||||
bcs {la1}
|
bcs {la1}
|
||||||
@ -902,11 +536,248 @@ tya
|
|||||||
clc
|
clc
|
||||||
adc #{c1}
|
adc #{c1}
|
||||||
tay
|
tay
|
||||||
|
//FRAGMENT vbuaa=_deref_pbuc1_band_vbuc2
|
||||||
|
lda #{c2}
|
||||||
|
and {c1}
|
||||||
|
//FRAGMENT vbuxx=_deref_pbuc1_band_vbuc2
|
||||||
|
lda #{c2}
|
||||||
|
and {c1}
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuyy=_deref_pbuc1_band_vbuc2
|
||||||
|
lda #{c2}
|
||||||
|
and {c1}
|
||||||
|
tay
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuaa=vbuc2
|
||||||
|
tay
|
||||||
|
lda #{c2}
|
||||||
|
sta {c1},y
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuxx=vbuc2
|
||||||
|
lda #{c2}
|
||||||
|
sta {c1},x
|
||||||
|
//FRAGMENT pbuc1_derefidx_vbuyy=vbuc2
|
||||||
|
lda #{c2}
|
||||||
|
sta {c1},y
|
||||||
|
//FRAGMENT 0_neq_vbuxx_then_la1
|
||||||
|
cpx #0
|
||||||
|
bne {la1}
|
||||||
|
//FRAGMENT vbuz1=vbuaa_rol_1
|
||||||
|
asl
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vbuz1=vbuxx_rol_1
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vbuz1=vbuyy_rol_1
|
||||||
|
tya
|
||||||
|
asl
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vbuaa=vbuz1_rol_1
|
||||||
|
lda {z1}
|
||||||
|
asl
|
||||||
|
//FRAGMENT vbuaa=vbuaa_rol_1
|
||||||
|
asl
|
||||||
|
//FRAGMENT vbuaa=vbuxx_rol_1
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
//FRAGMENT vbuaa=vbuyy_rol_1
|
||||||
|
tya
|
||||||
|
asl
|
||||||
|
//FRAGMENT vbuxx=vbuz1_rol_1
|
||||||
|
lda {z1}
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuaa_rol_1
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuxx_rol_1
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuyy_rol_1
|
||||||
|
tya
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuyy=vbuz1_rol_1
|
||||||
|
lda {z1}
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuaa_rol_1
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuxx_rol_1
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuyy_rol_1
|
||||||
|
tya
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuz1=vbuxx_bor_vbuz2
|
||||||
|
txa
|
||||||
|
ora {z2}
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vbuz1=vbuyy_bor_vbuz2
|
||||||
|
tya
|
||||||
|
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=vbuz2_bor_vbuxx
|
||||||
|
txa
|
||||||
|
ora {z2}
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vbuz1=vbuxx_bor_vbuxx
|
||||||
|
stx {z1}
|
||||||
|
//FRAGMENT vbuaa=_deref_pbuz1
|
||||||
|
ldy #0
|
||||||
|
lda ({z1}),y
|
||||||
|
//FRAGMENT vbuxx=_deref_pbuz1
|
||||||
|
ldy #0
|
||||||
|
lda ({z1}),y
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuyy=_deref_pbuz1
|
||||||
|
ldy #0
|
||||||
|
lda ({z1}),y
|
||||||
|
tay
|
||||||
|
//FRAGMENT _deref_pbuc1=vbuaa
|
||||||
|
sta {c1}
|
||||||
|
//FRAGMENT vbuaa=_byte1_pvoz1
|
||||||
|
lda {z1}+1
|
||||||
|
//FRAGMENT vbuxx=_byte1_pvoz1
|
||||||
|
ldx {z1}+1
|
||||||
|
//FRAGMENT vbuaa=_byte0_pvoz1
|
||||||
|
lda {z1}
|
||||||
|
//FRAGMENT vbuxx=_byte0_pvoz1
|
||||||
|
ldx {z1}
|
||||||
|
//FRAGMENT _deref_pbuc1=vbuxx
|
||||||
|
stx {c1}
|
||||||
|
//FRAGMENT _deref_pbuc1=vbuyy
|
||||||
|
sty {c1}
|
||||||
|
//FRAGMENT vbuyy=_byte1_pvoz1
|
||||||
|
ldy {z1}+1
|
||||||
|
//FRAGMENT vbuyy=_byte0_pvoz1
|
||||||
|
ldy {z1}
|
||||||
|
//FRAGMENT vbuyy_lt_vbuc1_then_la1
|
||||||
|
cpy #{c1}
|
||||||
|
bcc {la1}
|
||||||
|
//FRAGMENT 0_neq_vbuyy_then_la1
|
||||||
|
cpy #0
|
||||||
|
bne {la1}
|
||||||
|
//FRAGMENT 0_eq_vbuxx_then_la1
|
||||||
|
cpx #0
|
||||||
|
beq {la1}
|
||||||
|
//FRAGMENT 0_eq_vbuyy_then_la1
|
||||||
|
cpy #0
|
||||||
|
beq {la1}
|
||||||
|
//FRAGMENT vbuz1=vbuz2_bor_vbuyy
|
||||||
|
tya
|
||||||
|
ora {z2}
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vbuaa=vbuc1
|
||||||
|
lda #{c1}
|
||||||
|
//FRAGMENT vbuaa=vbuz1_bor_vbuz2
|
||||||
|
lda {z1}
|
||||||
|
ora {z2}
|
||||||
|
//FRAGMENT vbuaa=vbuz1_bor_vbuaa
|
||||||
|
ora {z1}
|
||||||
|
//FRAGMENT vbuaa=vbuz1_bor_vbuxx
|
||||||
|
txa
|
||||||
|
ora {z1}
|
||||||
|
//FRAGMENT vbuaa=vbuz1_bor_vbuyy
|
||||||
|
tya
|
||||||
|
ora {z1}
|
||||||
|
//FRAGMENT vbuz1=vbuxx
|
||||||
|
stx {z1}
|
||||||
|
//FRAGMENT vbuxx=vbuz1_bor_vbuz2
|
||||||
|
lda {z1}
|
||||||
|
ora {z2}
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuz1_bor_vbuaa
|
||||||
|
ora {z1}
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuz1_bor_vbuxx
|
||||||
|
txa
|
||||||
|
ora {z1}
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuz1_bor_vbuyy
|
||||||
|
tya
|
||||||
|
ora {z1}
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuz1=vbuyy
|
||||||
|
sty {z1}
|
||||||
|
//FRAGMENT vbuyy=vbuz1_bor_vbuz2
|
||||||
|
lda {z1}
|
||||||
|
ora {z2}
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuz1_bor_vbuaa
|
||||||
|
ora {z1}
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuz1_bor_vbuxx
|
||||||
|
txa
|
||||||
|
ora {z1}
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuz1_bor_vbuyy
|
||||||
|
tya
|
||||||
|
ora {z1}
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuz1=vbuxx_bor_vbuyy
|
||||||
|
txa
|
||||||
|
sty $ff
|
||||||
|
ora $ff
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vbuaa=vbuxx_bor_vbuz1
|
||||||
|
txa
|
||||||
|
ora {z1}
|
||||||
|
//FRAGMENT vbuaa=vbuxx_bor_vbuaa
|
||||||
|
stx $ff
|
||||||
|
ora $ff
|
||||||
|
//FRAGMENT vbuaa=vbuxx_bor_vbuyy
|
||||||
|
txa
|
||||||
|
sty $ff
|
||||||
|
ora $ff
|
||||||
|
//FRAGMENT vbuxx=vbuxx_bor_vbuz1
|
||||||
|
txa
|
||||||
|
ora {z1}
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuxx_bor_vbuaa
|
||||||
|
stx $ff
|
||||||
|
ora $ff
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuxx=vbuxx_bor_vbuyy
|
||||||
|
txa
|
||||||
|
sty $ff
|
||||||
|
ora $ff
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuyy=vbuxx_bor_vbuz1
|
||||||
|
txa
|
||||||
|
ora {z1}
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuxx_bor_vbuaa
|
||||||
|
stx $ff
|
||||||
|
ora $ff
|
||||||
|
tay
|
||||||
|
//FRAGMENT vbuyy=vbuxx_bor_vbuyy
|
||||||
|
txa
|
||||||
|
sty $ff
|
||||||
|
ora $ff
|
||||||
|
tay
|
||||||
//FRAGMENT vbuyy=vbuz1
|
//FRAGMENT vbuyy=vbuz1
|
||||||
ldy {z1}
|
ldy {z1}
|
||||||
//FRAGMENT vbuyy_ge_vbuc1_then_la1
|
//FRAGMENT vbuyy_ge_vbuc1_then_la1
|
||||||
cpy #{c1}
|
cpy #{c1}
|
||||||
bcs {la1}
|
bcs {la1}
|
||||||
|
//FRAGMENT vbuaa=vbuyy_bor_vbuaa
|
||||||
|
sty $ff
|
||||||
|
ora $ff
|
||||||
//FRAGMENT pbuc1_derefidx_vbuxx=vbuaa
|
//FRAGMENT pbuc1_derefidx_vbuxx=vbuaa
|
||||||
sta {c1},x
|
sta {c1},x
|
||||||
//FRAGMENT pbuc1_derefidx_vbuyy=vbuaa
|
//FRAGMENT pbuc1_derefidx_vbuyy=vbuaa
|
||||||
@ -917,3 +788,7 @@ inx
|
|||||||
//FRAGMENT vbuyy=vbuz1_plus_1
|
//FRAGMENT vbuyy=vbuz1_plus_1
|
||||||
ldy {z1}
|
ldy {z1}
|
||||||
iny
|
iny
|
||||||
|
//FRAGMENT vbuxx=vbuaa
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuyy=vbuaa
|
||||||
|
tay
|
||||||
|
2680
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
2680
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@ import dk.camelot64.kickc.fragment.AsmFragmentTemplateUsages;
|
|||||||
import dk.camelot64.kickc.model.*;
|
import dk.camelot64.kickc.model.*;
|
||||||
import dk.camelot64.kickc.model.statements.StatementSource;
|
import dk.camelot64.kickc.model.statements.StatementSource;
|
||||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||||
import dk.camelot64.kickc.parser.CTargetPlatformParser;
|
import dk.camelot64.kickc.parser.CParser;
|
||||||
import kickass.KickAssembler65CE02;
|
import kickass.KickAssembler65CE02;
|
||||||
import kickass.nonasm.c64.CharToPetsciiConverter;
|
import kickass.nonasm.c64.CharToPetsciiConverter;
|
||||||
import picocli.CommandLine;
|
import picocli.CommandLine;
|
||||||
@ -241,10 +241,9 @@ public class KickC implements Callable<Integer> {
|
|||||||
|
|
||||||
// Set up Target Platform
|
// Set up Target Platform
|
||||||
try {
|
try {
|
||||||
final File platformFile = SourceLoader.loadFile(targetPlatform + "." + CTargetPlatformParser.FILE_EXTENSION, currentPath, program.getTargetPlatformPaths());
|
final TargetPlatform platform = CParser.loadPlatformFile(targetPlatform, currentPath, program.getTargetPlatformPaths());
|
||||||
final TargetPlatform targetPlatform = CTargetPlatformParser.parseTargetPlatformFile(this.targetPlatform, platformFile, currentPath, program.getTargetPlatformPaths());
|
program.setTargetPlatform(platform);
|
||||||
program.setTargetPlatform(targetPlatform);
|
program.getOutputFileManager().setBinaryExtension(platform.getOutFileExtension());
|
||||||
program.getOutputFileManager().setBinaryExtension(targetPlatform.getOutFileExtension());
|
|
||||||
} catch(CompileError e) {
|
} catch(CompileError e) {
|
||||||
// Print the error and exit with compile error
|
// Print the error and exit with compile error
|
||||||
System.err.println(e.getMessage());
|
System.err.println(e.getMessage());
|
||||||
|
@ -249,10 +249,16 @@ public class CParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadTargetPlatform(String platformName, Path currentPath) {
|
/**
|
||||||
final File platformFile = SourceLoader.loadFile(platformName + "." + CTargetPlatformParser.FILE_EXTENSION, currentPath, program.getTargetPlatformPaths());
|
* Update the target platform
|
||||||
if(platformFile != null) {
|
*
|
||||||
final TargetPlatform targetPlatform = CTargetPlatformParser.parseTargetPlatformFile(platformName, platformFile, currentPath, program.getTargetPlatformPaths());
|
* @param platformName The name of the platform
|
||||||
|
* @param currentPath The current path
|
||||||
|
*/
|
||||||
|
public void updateTargetPlatform(String platformName, Path currentPath) {
|
||||||
|
|
||||||
|
final TargetPlatform targetPlatform = loadPlatformFile(platformName, currentPath, program.getTargetPlatformPaths());
|
||||||
|
|
||||||
// Remove macros from existing platform!
|
// Remove macros from existing platform!
|
||||||
if(program.getTargetPlatform() != null && program.getTargetPlatform().getDefines() != null)
|
if(program.getTargetPlatform() != null && program.getTargetPlatform().getDefines() != null)
|
||||||
for(String macroName : program.getTargetPlatform().getDefines().keySet())
|
for(String macroName : program.getTargetPlatform().getDefines().keySet())
|
||||||
@ -271,16 +277,28 @@ public class CParser {
|
|||||||
// Set the output file extension
|
// Set the output file extension
|
||||||
program.getOutputFileManager().setBinaryExtension(targetPlatform.getOutFileExtension());
|
program.getOutputFileManager().setBinaryExtension(targetPlatform.getOutFileExtension());
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load a platform file and produce an error if it cannot be found.
|
||||||
|
* @param platformName The platform name
|
||||||
|
* @param currentPath The current path
|
||||||
|
* @param targetPlatformPaths The search list of paths to look through
|
||||||
|
* @return The loaded platform file
|
||||||
|
*/
|
||||||
|
public static TargetPlatform loadPlatformFile(String platformName, Path currentPath, List<String> targetPlatformPaths) {
|
||||||
|
final File platformFile = SourceLoader.loadFile(platformName + "." + CTargetPlatformParser.FILE_EXTENSION, currentPath, targetPlatformPaths);
|
||||||
|
if(platformFile == null) {
|
||||||
StringBuilder supported = new StringBuilder();
|
StringBuilder supported = new StringBuilder();
|
||||||
final List<File> platformFiles = SourceLoader.listFiles(currentPath, program.getTargetPlatformPaths(), CTargetPlatformParser.FILE_EXTENSION);
|
final List<File> platformFiles = SourceLoader.listFiles(currentPath, targetPlatformPaths, CTargetPlatformParser.FILE_EXTENSION);
|
||||||
for(File file : platformFiles) {
|
for(File file : platformFiles) {
|
||||||
String name = file.getName();
|
String name = file.getName();
|
||||||
name = name.substring(0, name.length() - CTargetPlatformParser.FILE_EXTENSION.length() - 1);
|
name = name.substring(0, name.length() - CTargetPlatformParser.FILE_EXTENSION.length() - 1);
|
||||||
supported.append(name).append(" ");
|
supported.append(name).append(" ");
|
||||||
}
|
}
|
||||||
throw new CompileError("Unknown target platform '" + platformName + "'. Supported: " + supported.toString());
|
throw new CompileError("Unknown target platform '" + platformName + "'. Supported: " + supported);
|
||||||
}
|
}
|
||||||
|
return CTargetPlatformParser.parseTargetPlatformFile(platformName, platformFile, currentPath, targetPlatformPaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -300,7 +318,7 @@ public class CParser {
|
|||||||
int charPositionInLine,
|
int charPositionInLine,
|
||||||
String msg,
|
String msg,
|
||||||
RecognitionException e) {
|
RecognitionException e) {
|
||||||
StatementSource source = new StatementSource(charStream.getSourceName(), line, charPositionInLine, null, -1,-1);
|
StatementSource source = new StatementSource(charStream.getSourceName(), line, charPositionInLine, null, -1, -1);
|
||||||
throw new CompileError("Error parsing file: " + msg, source);
|
throw new CompileError("Error parsing file: " + msg, source);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -212,7 +212,7 @@ public class CPreprocessor implements TokenSource {
|
|||||||
Token nl = nextToken(cTokenSource, KickCLexer.WS);
|
Token nl = nextToken(cTokenSource, KickCLexer.WS);
|
||||||
if(nl.getChannel() != CParser.CHANNEL_WHITESPACE || !nl.getText().contains("\n"))
|
if(nl.getChannel() != CParser.CHANNEL_WHITESPACE || !nl.getText().contains("\n"))
|
||||||
throw new CompileError("Unexpected token. Was expecting newline after #pragma");
|
throw new CompileError("Unexpected token. Was expecting newline after #pragma");
|
||||||
cParser.loadTargetPlatform(targetName, cParser.getCurrentSourceFolderPath());
|
cParser.updateTargetPlatform(targetName, cParser.getCurrentSourceFolderPath());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,10 +9,14 @@ import java.io.IOException;
|
|||||||
*/
|
*/
|
||||||
public class TestProgramsFast extends TestPrograms {
|
public class TestProgramsFast extends TestPrograms {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLoByte1() throws IOException {
|
||||||
|
compileAndCompare("lobyte-1.c");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPceaPointer1() throws IOException {
|
public void testPceaPointer1() throws IOException {
|
||||||
compileAndCompare("pcea-pointer-1.c", log());
|
compileAndCompare("pcea-pointer-1.c");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fix problem where removing empty method can cause NPE (because a local variable in the method is still used)
|
/* Fix problem where removing empty method can cause NPE (because a local variable in the method is still used)
|
||||||
@ -1895,6 +1899,11 @@ public class TestProgramsFast extends TestPrograms {
|
|||||||
compileAndCompare("platform-asm6502.c");
|
compileAndCompare("platform-asm6502.c");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPlatformUnknown() throws IOException {
|
||||||
|
assertError("platform-unknown.c", "Unknown target platform 'unknown'. Supported: ", false);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testEuclid3() throws IOException {
|
public void testEuclid3() throws IOException {
|
||||||
compileAndCompare("euclid-3.c");
|
compileAndCompare("euclid-3.c");
|
||||||
|
9
src/test/kc/lobyte-1.c
Normal file
9
src/test/kc/lobyte-1.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#define LOBYTE(c) BYTE0(c)
|
||||||
|
#define TMS_WRITE_CTRL_PORT(a) (*VDP_REG=(byte)(a))
|
||||||
|
|
||||||
|
const byte *VDP_REG = (byte*)0xA001;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
byte addr = 3;
|
||||||
|
TMS_WRITE_CTRL_PORT(LOBYTE(addr));
|
||||||
|
}
|
6
src/test/kc/platform-unknown.c
Normal file
6
src/test/kc/platform-unknown.c
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// An unknown platform
|
||||||
|
|
||||||
|
#pragma target(unknown)
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
}
|
18
src/test/ref/lobyte-1.asm
Normal file
18
src/test/ref/lobyte-1.asm
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Commodore 64 PRG executable file
|
||||||
|
.file [name="lobyte-1.prg", type="prg", segments="Program"]
|
||||||
|
.segmentdef Program [segments="Basic, Code, Data"]
|
||||||
|
.segmentdef Basic [start=$0801]
|
||||||
|
.segmentdef Code [start=$80d]
|
||||||
|
.segmentdef Data [startAfter="Code"]
|
||||||
|
.segment Basic
|
||||||
|
:BasicUpstart(main)
|
||||||
|
.label VDP_REG = $a001
|
||||||
|
.segment Code
|
||||||
|
main: {
|
||||||
|
.const addr = 3
|
||||||
|
// TMS_WRITE_CTRL_PORT
|
||||||
|
lda #<addr
|
||||||
|
sta VDP_REG
|
||||||
|
// }
|
||||||
|
rts
|
||||||
|
}
|
8
src/test/ref/lobyte-1.cfg
Normal file
8
src/test/ref/lobyte-1.cfg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
void main()
|
||||||
|
main: scope:[main] from
|
||||||
|
[0] *VDP_REG = byte0 main::addr
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main
|
||||||
|
[1] return
|
||||||
|
to:@return
|
152
src/test/ref/lobyte-1.log
Normal file
152
src/test/ref/lobyte-1.log
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
Inlined call call __init
|
||||||
|
|
||||||
|
CONTROL FLOW GRAPH SSA
|
||||||
|
|
||||||
|
void main()
|
||||||
|
main: scope:[main] from __start::@1
|
||||||
|
main::$0 = byte0 main::addr
|
||||||
|
*VDP_REG = (char)main::$0
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
void __start()
|
||||||
|
__start: scope:[__start] from
|
||||||
|
to:__start::__init1
|
||||||
|
__start::__init1: scope:[__start] from __start
|
||||||
|
to:__start::@1
|
||||||
|
__start::@1: scope:[__start] from __start::__init1
|
||||||
|
call main
|
||||||
|
to:__start::@2
|
||||||
|
__start::@2: scope:[__start] from __start::@1
|
||||||
|
to:__start::@return
|
||||||
|
__start::@return: scope:[__start] from __start::@2
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
SYMBOL TABLE SSA
|
||||||
|
__constant const char *VDP_REG = (char *)$a001
|
||||||
|
void __start()
|
||||||
|
void main()
|
||||||
|
char main::$0
|
||||||
|
__constant char main::addr = 3
|
||||||
|
|
||||||
|
Simplifying constant pointer cast (char *) 40961
|
||||||
|
Simplifying constant integer cast main::$0
|
||||||
|
Successful SSA optimization PassNCastSimplification
|
||||||
|
Constant right-side identified [0] main::$0 = byte0 main::addr
|
||||||
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
|
Constant main::$0 = byte0 main::addr
|
||||||
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
|
Removing unused procedure __start
|
||||||
|
Removing unused procedure block __start
|
||||||
|
Removing unused procedure block __start::__init1
|
||||||
|
Removing unused procedure block __start::@1
|
||||||
|
Removing unused procedure block __start::@2
|
||||||
|
Removing unused procedure block __start::@return
|
||||||
|
Successful SSA optimization PassNEliminateEmptyStart
|
||||||
|
Constant inlined main::$0 = byte0 main::addr
|
||||||
|
Successful SSA optimization Pass2ConstantInlining
|
||||||
|
CALL GRAPH
|
||||||
|
|
||||||
|
Created 0 initial phi equivalence classes
|
||||||
|
Coalesced down to 0 phi equivalence classes
|
||||||
|
|
||||||
|
FINAL CONTROL FLOW GRAPH
|
||||||
|
|
||||||
|
void main()
|
||||||
|
main: scope:[main] from
|
||||||
|
[0] *VDP_REG = byte0 main::addr
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main
|
||||||
|
[1] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
|
||||||
|
VARIABLE REGISTER WEIGHTS
|
||||||
|
void main()
|
||||||
|
|
||||||
|
Initial phi equivalence classes
|
||||||
|
Complete equivalence classes
|
||||||
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||||
|
Statement [0] *VDP_REG = byte0 main::addr [ ] ( [ ] { } ) always clobbers reg byte a
|
||||||
|
|
||||||
|
REGISTER UPLIFT SCOPES
|
||||||
|
Uplift Scope [main]
|
||||||
|
Uplift Scope []
|
||||||
|
|
||||||
|
Uplifting [main] best 15 combination
|
||||||
|
Uplifting [] best 15 combination
|
||||||
|
|
||||||
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
|
// File Comments
|
||||||
|
// Upstart
|
||||||
|
// Commodore 64 PRG executable file
|
||||||
|
.file [name="lobyte-1.prg", type="prg", segments="Program"]
|
||||||
|
.segmentdef Program [segments="Basic, Code, Data"]
|
||||||
|
.segmentdef Basic [start=$0801]
|
||||||
|
.segmentdef Code [start=$80d]
|
||||||
|
.segmentdef Data [startAfter="Code"]
|
||||||
|
.segment Basic
|
||||||
|
:BasicUpstart(main)
|
||||||
|
// Global Constants & labels
|
||||||
|
.label VDP_REG = $a001
|
||||||
|
.segment Code
|
||||||
|
// main
|
||||||
|
main: {
|
||||||
|
.const addr = 3
|
||||||
|
// [0] *VDP_REG = byte0 main::addr -- _deref_pbuc1=vbuc2
|
||||||
|
lda #<addr
|
||||||
|
sta VDP_REG
|
||||||
|
jmp __breturn
|
||||||
|
// main::@return
|
||||||
|
__breturn:
|
||||||
|
// [1] return
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// File Data
|
||||||
|
|
||||||
|
ASSEMBLER OPTIMIZATIONS
|
||||||
|
Removing instruction jmp __breturn
|
||||||
|
Succesful ASM optimization Pass5NextJumpElimination
|
||||||
|
Removing instruction __breturn:
|
||||||
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||||
|
|
||||||
|
FINAL SYMBOL TABLE
|
||||||
|
__constant const char *VDP_REG = (char *) 40961
|
||||||
|
void main()
|
||||||
|
__constant char main::addr = 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FINAL ASSEMBLER
|
||||||
|
Score: 12
|
||||||
|
|
||||||
|
// File Comments
|
||||||
|
// Upstart
|
||||||
|
// Commodore 64 PRG executable file
|
||||||
|
.file [name="lobyte-1.prg", type="prg", segments="Program"]
|
||||||
|
.segmentdef Program [segments="Basic, Code, Data"]
|
||||||
|
.segmentdef Basic [start=$0801]
|
||||||
|
.segmentdef Code [start=$80d]
|
||||||
|
.segmentdef Data [startAfter="Code"]
|
||||||
|
.segment Basic
|
||||||
|
:BasicUpstart(main)
|
||||||
|
// Global Constants & labels
|
||||||
|
.label VDP_REG = $a001
|
||||||
|
.segment Code
|
||||||
|
// main
|
||||||
|
main: {
|
||||||
|
.const addr = 3
|
||||||
|
// TMS_WRITE_CTRL_PORT
|
||||||
|
// [0] *VDP_REG = byte0 main::addr -- _deref_pbuc1=vbuc2
|
||||||
|
lda #<addr
|
||||||
|
sta VDP_REG
|
||||||
|
// main::@return
|
||||||
|
// }
|
||||||
|
// [1] return
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// File Data
|
||||||
|
|
4
src/test/ref/lobyte-1.sym
Normal file
4
src/test/ref/lobyte-1.sym
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
__constant const char *VDP_REG = (char *) 40961
|
||||||
|
void main()
|
||||||
|
__constant char main::addr = 3
|
||||||
|
|
Loading…
Reference in New Issue
Block a user