diff --git a/src/main/fragment/cache/fragment-cache-csg65ce02.asm b/src/main/fragment/cache/fragment-cache-csg65ce02.asm index 34a8ffc90..f436ebe41 100644 --- a/src/main/fragment/cache/fragment-cache-csg65ce02.asm +++ b/src/main/fragment/cache/fragment-cache-csg65ce02.asm @@ -241,3 +241,2209 @@ sta {c1} //FRAGMENT _deref_pbsc1=vbszz tza sta {c1} +//FRAGMENT vbuz1=vbuc1 +lda #{c1} +sta {z1} +//FRAGMENT pbuz1=pbuc1 +lda #<{c1} +sta {z1} +lda #>{c1} +sta {z1}+1 +//FRAGMENT vduz1=vduz2 +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +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 pbuz1=pbuz1_plus_vbuc1 +lda #{c1} +clc +adc {z1} +sta {z1} +bcc !+ +inc {z1}+1 +!: +//FRAGMENT vbuz1=_inc_vbuz1 +inc {z1} +//FRAGMENT pbuz1_derefidx_vbuz2=vbuc1 +lda #{c1} +ldy {z2} +sta ({z1}),y +//FRAGMENT vbuz1=_deref_pbuz2 +ldy #0 +lda ({z2}),y +sta {z1} +//FRAGMENT pbuz1=_inc_pbuz1 +inw {z1} +//FRAGMENT vbuc1_neq_vbuz1_then_la1 +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} +lda #>{c1} +sta {z1}+1 +lda #<{c1}>>$10 +sta {z1}+2 +lda #>{c1}>>$10 +sta {z1}+3 +//FRAGMENT pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 +ldx {z1} +inc {c1},x +//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuc2_then_la1 +ldy {z1} +lda {c1},y +cmp #{c2} +beq {la1} +//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +sta {z1} +//FRAGMENT vbuc1_eq_vbuz1_then_la1 +lda #{c1} +cmp {z1} +beq {la1} +//FRAGMENT vbuz1_eq_vbuc1_then_la1 +lda #{c1} +cmp {z1} +beq {la1} +//FRAGMENT vduz1=_inc_vduz1 +inc {z1} +bne !+ +inc {z1}+1 +bne !+ +inc {z1}+2 +bne !+ +inc {z1}+3 +!: +//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2 +lda #{c2} +ldy {z1} +sta {c1},y +//FRAGMENT vbuz1=_dec_vbuz1 +dec {z1} +//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3 +lda {z3} +ldy {z2} +sta ({z1}),y +//FRAGMENT vbuz1_neq_vbuc1_then_la1 +lda #{c1} +cmp {z1} +bne {la1} +//FRAGMENT vwuz1=vwuc1 +lda #<{c1} +sta {z1} +lda #>{c1} +sta {z1}+1 +//FRAGMENT vbuz1=_byte_vwuz2 +lda {z2} +sta {z1} +//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +ldy #0 +sta ({z1}),y +//FRAGMENT pbuz1=_inc_pbuz2 +lda {z2} +clc +adc #1 +sta {z1} +lda {z2}+1 +adc #0 +sta {z1}+1 +//FRAGMENT _deref_pbuz1=vbuc1 +lda #{c1} +ldy #0 +sta ({z1}),y +//FRAGMENT vbuz1=vbuz2_rol_1 +lda {z2} +asl +sta {z1} +//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +//FRAGMENT vwuz1_ge_vwuz2_then_la1 +lda {z2}+1 +cmp {z1}+1 +bne !+ +lda {z2} +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} +lda {z2}+1 +sta {z1}+1 +//FRAGMENT vbsz1=_sbyte_vwuz2 +lda {z2} +sta {z1} +//FRAGMENT vbsz1=_inc_vbsz1 +inc {z1} +//FRAGMENT vbsz1=vbsz2_minus_vbsz3 +lda {z2} +sec +sbc {z3} +sta {z1} +//FRAGMENT vbsz1_ge_0_then_la1 +lda {z1} +cmp #0 +bpl {la1} +//FRAGMENT vbsz1=vbsc1 +lda #{c1} +sta {z1} +//FRAGMENT vbsc1_neq_vbsz1_then_la1 +lda #{c1} +cmp {z1} +bne {la1} +//FRAGMENT vbuz1=vbuz2_minus_1 +ldx {z2} +dex +stx {z1} +//FRAGMENT vbuz1_le_vbuz2_then_la1 +lda {z2} +cmp {z1} +bcs {la1} +//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 +ldy {z1} +lda {c1},y +cmp {z2} +beq {la1} +//FRAGMENT vbuz1_lt_vbuz2_then_la1 +lda {z1} +cmp {z2} +bcc {la1} +//FRAGMENT vbuz1=vbuz2_minus_vbuz3 +lda {z2} +sec +sbc {z3} +sta {z1} +//FRAGMENT vbuz1_neq_vbuz2_then_la1 +lda {z1} +cmp {z2} +bne {la1} +//FRAGMENT vbuz1=_byte_vduz2 +lda {z2} +sta {z1} +//FRAGMENT vbuz1=vbuz2_rol_2 +lda {z2} +asl +asl +sta {z1} +//FRAGMENT vduz1=pduc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +lda {c1}+2,y +sta {z1}+2 +lda {c1}+3,y +sta {z1}+3 +//FRAGMENT vduz1_ge_vduz2_then_la1 +lda {z1}+3 +cmp {z2}+3 +bcc !+ +bne {la1} +lda {z1}+2 +cmp {z2}+2 +bcc !+ +bne {la1} +lda {z1}+1 +cmp {z2}+1 +bcc !+ +bne {la1} +lda {z1} +cmp {z2} +bcs {la1} +!: +//FRAGMENT vwuz1=vwuz1_minus_vwuz2 +lda {z1} +sec +sbc {z2} +sta {z1} +lda {z1}+1 +sbc {z2}+1 +sta {z1}+1 +//FRAGMENT vbuc1_neq__deref_pbuz1_then_la1 +ldy #0 +lda ({z1}),y +cmp #{c1} +bne {la1} +//FRAGMENT vwuz1=_inc_vwuz1 +inw {z1} +//FRAGMENT _deref_pbuz1=vbuz2 +lda {z2} +ldy #0 +sta ({z1}),y +//FRAGMENT vduz1=vduz1_minus_vduz2 +lda {z1} +sec +sbc {z2} +sta {z1} +lda {z1}+1 +sbc {z2}+1 +sta {z1}+1 +lda {z1}+2 +sbc {z2}+2 +sta {z1}+2 +lda {z1}+3 +sbc {z2}+3 +sta {z1}+3 +//FRAGMENT pvoz1=pvoc1 +lda #<{c1} +sta {z1} +lda #>{c1} +sta {z1}+1 +//FRAGMENT pbuz1=pbuz1_minus_vbuc1 +sec +lda {z1} +sbc #{c1} +sta {z1} +lda {z1}+1 +sbc #0 +sta {z1}+1 +//FRAGMENT vbuz1_le_vbuc1_then_la1 +lda #{c1} +cmp {z1} +bcs {la1} +//FRAGMENT vbuz1=vbuz1_plus_vbuc1 +lda #{c1} +clc +adc {z1} +sta {z1} +//FRAGMENT vbuz1_ge_vbuz2_then_la1 +lda {z1} +cmp {z2} +bcs {la1} +//FRAGMENT pbuz1=pbuz2_plus_vwuc1 +lda {z2} +clc +adc #<{c1} +sta {z1} +lda {z2}+1 +adc #>{c1} +sta {z1}+1 +//FRAGMENT pbuz1_neq_pbuz2_then_la1 +lda {z1}+1 +cmp {z2}+1 +bne {la1} +lda {z1} +cmp {z2} +bne {la1} +//FRAGMENT _deref_pbuz1=_deref_pbuz2 +ldy #0 +lda ({z2}),y +ldy #0 +sta ({z1}),y +//FRAGMENT pbuz1=pbuz2_plus_vbuc1 +lda #{c1} +clc +adc {z2} +sta {z1} +lda #0 +adc {z2}+1 +sta {z1}+1 +//FRAGMENT vbuz1=vbuz1_minus_vbuz2 +lda {z1} +sec +sbc {z2} +sta {z1} +//FRAGMENT vbuaa_lt_vbuc1_then_la1 +cmp #{c1} +bcc {la1} +//FRAGMENT pbuz1_derefidx_vbuaa=vbuc1 +tay +lda #{c1} +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_vbuxx=vbuc1 +txa +tay +lda #{c1} +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_vbuyy=vbuc1 +lda #{c1} +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_vbuzz=vbuc1 +tza +tay +lda #{c1} +sta ({z1}),y +//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 vbuzz=_deref_pbuz1 +ldy #0 +lda ({z1}),y +taz +//FRAGMENT vbuc1_neq_vbuaa_then_la1 +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 +lda {c1},x +cmp #{c2} +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuc2_then_la1 +tza +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 +//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1 +ldy {z1} +ldx {c1},y +//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1 +ldx {z1} +ldy {c1},x +//FRAGMENT vbuzz=pbuc1_derefidx_vbuz1 +ldx {z1} +ldz {c1},x +//FRAGMENT vbuc1_eq_vbuaa_then_la1 +cmp #{c1} +beq {la1} +//FRAGMENT vbuxx_eq_vbuc1_then_la1 +cpx #{c1} +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuxx=vbuc2 +lda #{c2} +sta {c1},x +//FRAGMENT pbuc1_derefidx_vbuzz=vbuc2 +tza +tay +lda #{c2} +sta {c1},y +//FRAGMENT vbuaa_eq_vbuc1_then_la1 +cmp #{c1} +beq {la1} +//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa +ldy {z2} +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_vbuz2=vbuxx +ldy {z2} +txa +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_vbuz2=vbuyy +tya +ldy {z2} +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_vbuz2=vbuzz +ldy {z2} +tza +sta ({z1}),y +//FRAGMENT vbuaa=_byte_vwuz1 +lda {z1} +//FRAGMENT vbuxx=_byte_vwuz1 +lda {z1} +tax +//FRAGMENT vbuyy=_byte_vwuz1 +lda {z1} +tay +//FRAGMENT vbuzz=_byte_vwuz1 +lda {z1} +taz +//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa +tay +lda {c1},y +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx +lda {c1},x +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy +lda {c1},y +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuzz +tza +tay +lda {c1},y +ldy #0 +sta ({z1}),y +//FRAGMENT vbuaa=vbuz1_rol_1 +lda {z1} +asl +//FRAGMENT vbuxx=vbuz1_rol_1 +lda {z1} +asl +tax +//FRAGMENT vbuyy=vbuz1_rol_1 +lda {z1} +asl +tay +//FRAGMENT vbuzz=vbuz1_rol_1 +lda {z1} +asl +taz +//FRAGMENT vbuz1=vbuaa_rol_1 +asl +sta {z1} +//FRAGMENT vbuaa=vbuaa_rol_1 +asl +//FRAGMENT vbuxx=vbuaa_rol_1 +asl +tax +//FRAGMENT vbuyy=vbuaa_rol_1 +asl +tay +//FRAGMENT vbuzz=vbuaa_rol_1 +asl +taz +//FRAGMENT vbuz1=vbuxx_rol_1 +txa +asl +sta {z1} +//FRAGMENT vbuaa=vbuxx_rol_1 +txa +asl +//FRAGMENT vbuxx=vbuxx_rol_1 +txa +asl +tax +//FRAGMENT vbuyy=vbuxx_rol_1 +txa +asl +tay +//FRAGMENT vbuzz=vbuxx_rol_1 +txa +asl +taz +//FRAGMENT vbuz1=vbuyy_rol_1 +tya +asl +sta {z1} +//FRAGMENT vbuaa=vbuyy_rol_1 +tya +asl +//FRAGMENT vbuxx=vbuyy_rol_1 +tya +asl +tax +//FRAGMENT vbuyy=vbuyy_rol_1 +tya +asl +tay +//FRAGMENT vbuzz=vbuyy_rol_1 +tya +asl +taz +//FRAGMENT vbuz1=vbuzz_rol_1 +tza +asl +sta {z1} +//FRAGMENT vbuaa=vbuzz_rol_1 +tza +asl +//FRAGMENT vbuxx=vbuzz_rol_1 +tza +asl +tax +//FRAGMENT vbuyy=vbuzz_rol_1 +tza +asl +tay +//FRAGMENT vbuzz=vbuzz_rol_1 +tza +asl +taz +//FRAGMENT vwuz1=pwuc1_derefidx_vbuaa +tay +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx +lda {c1},x +sta {z1} +lda {c1}+1,x +sta {z1}+1 +//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +//FRAGMENT vwuz1=pwuc1_derefidx_vbuzz +tza +tay +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +//FRAGMENT vbuc1_neq_vbuxx_then_la1 +cpx #{c1} +bne {la1} +//FRAGMENT vbsaa=_sbyte_vwuz1 +lda {z1} +//FRAGMENT vbsxx=_sbyte_vwuz1 +ldx {z1} +//FRAGMENT vbuc1_eq_vbuxx_then_la1 +cpx #{c1} +beq {la1} +//FRAGMENT vbsz1=vbsz2_minus_vbsaa +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbsz1=vbsz2_minus_vbsxx +txa +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbsz1=vbsz2_minus_vbsyy +tya +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbsz1=vbsz2_minus_vbszz +tza +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbsxx=vbsz1_minus_vbsz2 +lda {z1} +sec +sbc {z2} +tax +//FRAGMENT vbsxx=vbsz1_minus_vbsaa +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbsxx=vbsz1_minus_vbsxx +txa +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbsxx=vbsz1_minus_vbsyy +tya +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbsxx=vbsz1_minus_vbszz +tza +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbszz=vbsz1_minus_vbsz2 +lda {z1} +sec +sbc {z2} +taz +//FRAGMENT vbszz=vbsz1_minus_vbsaa +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbszz=vbsz1_minus_vbsxx +txa +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbszz=vbsz1_minus_vbsyy +tya +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbszz=vbsz1_minus_vbszz +tza +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbsz1=vbsxx_minus_vbsz2 +txa +sec +sbc {z2} +sta {z1} +//FRAGMENT vbsz1=vbsxx_minus_vbsaa +sta $ff +txa +sec +sbc $ff +sta {z1} +//FRAGMENT vbsz1=vbsxx_minus_vbsxx +lda #0 +sta {z1} +//FRAGMENT vbsz1=vbsxx_minus_vbsyy +txa +sty $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbsz1=vbsxx_minus_vbszz +txa +stz $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbsxx=vbsxx_minus_vbsz1 +txa +sec +sbc {z1} +tax +//FRAGMENT vbsxx=vbsxx_minus_vbsaa +sta $ff +txa +sec +sbc $ff +tax +//FRAGMENT vbsxx=vbsxx_minus_vbsxx +lda #0 +tax +//FRAGMENT vbsxx=vbsxx_minus_vbsyy +txa +sty $ff +sec +sbc $ff +tax +//FRAGMENT vbsxx=vbsxx_minus_vbszz +txa +stz $ff +sec +sbc $ff +tax +//FRAGMENT vbszz=vbsxx_minus_vbsz1 +txa +sec +sbc {z1} +taz +//FRAGMENT vbszz=vbsxx_minus_vbsaa +sta $ff +txa +sec +sbc $ff +taz +//FRAGMENT vbszz=vbsxx_minus_vbsxx +lda #0 +taz +//FRAGMENT vbszz=vbsxx_minus_vbsyy +txa +sty $ff +sec +sbc $ff +taz +//FRAGMENT vbszz=vbsxx_minus_vbszz +txa +stz $ff +sec +sbc $ff +taz +//FRAGMENT vbsz1=vbsyy_minus_vbsz2 +tya +sec +sbc {z2} +sta {z1} +//FRAGMENT vbsz1=vbsyy_minus_vbsaa +sta $ff +tya +sec +sbc $ff +sta {z1} +//FRAGMENT vbsz1=vbsyy_minus_vbsxx +tya +stx $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbsz1=vbsyy_minus_vbsyy +lda #0 +sta {z1} +//FRAGMENT vbsz1=vbsyy_minus_vbszz +tya +stz $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbsxx=vbsyy_minus_vbsz1 +tya +sec +sbc {z1} +tax +//FRAGMENT vbsxx=vbsyy_minus_vbsaa +sta $ff +tya +sec +sbc $ff +tax +//FRAGMENT vbsxx=vbsyy_minus_vbsxx +tya +stx $ff +sec +sbc $ff +tax +//FRAGMENT vbsxx=vbsyy_minus_vbsyy +lda #0 +tax +//FRAGMENT vbsxx=vbsyy_minus_vbszz +tya +stz $ff +sec +sbc $ff +tax +//FRAGMENT vbszz=vbsyy_minus_vbsz1 +tya +sec +sbc {z1} +taz +//FRAGMENT vbszz=vbsyy_minus_vbsaa +sta $ff +tya +sec +sbc $ff +taz +//FRAGMENT vbszz=vbsyy_minus_vbsxx +tya +stx $ff +sec +sbc $ff +taz +//FRAGMENT vbszz=vbsyy_minus_vbsyy +lda #0 +taz +//FRAGMENT vbszz=vbsyy_minus_vbszz +tya +stz $ff +sec +sbc $ff +taz +//FRAGMENT vbsz1=vbszz_minus_vbsz2 +tza +sec +sbc {z2} +sta {z1} +//FRAGMENT vbsz1=vbszz_minus_vbsaa +tay +tza +sty $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbsz1=vbszz_minus_vbsxx +tza +stx $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbsz1=vbszz_minus_vbsyy +tza +sty $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbsz1=vbszz_minus_vbszz +tza +lda #0 +sta {z1} +//FRAGMENT vbsxx=vbszz_minus_vbsz1 +tza +sec +sbc {z1} +tax +//FRAGMENT vbsxx=vbszz_minus_vbsaa +tax +tza +stx $ff +sec +sbc $ff +tax +//FRAGMENT vbsxx=vbszz_minus_vbsxx +tza +stx $ff +sec +sbc $ff +tax +//FRAGMENT vbsxx=vbszz_minus_vbsyy +tza +sty $ff +sec +sbc $ff +tax +//FRAGMENT vbsxx=vbszz_minus_vbszz +tza +lda #0 +tax +//FRAGMENT vbszz=vbszz_minus_vbsz1 +tza +sec +sbc {z1} +taz +//FRAGMENT vbszz=vbszz_minus_vbsaa +tay +tza +sty $ff +sec +sbc $ff +taz +//FRAGMENT vbszz=vbszz_minus_vbsxx +tza +stx $ff +sec +sbc $ff +taz +//FRAGMENT vbszz=vbszz_minus_vbsyy +tza +sty $ff +sec +sbc $ff +taz +//FRAGMENT vbszz=vbszz_minus_vbszz +tza +lda #0 +taz +//FRAGMENT vbsxx_ge_0_then_la1 +cpx #0 +bpl {la1} +//FRAGMENT vbsc1_neq_vbsxx_then_la1 +cpx #{c1} +bne {la1} +//FRAGMENT vbuz1=vbuaa_minus_1 +sec +sbc #1 +sta {z1} +//FRAGMENT vbuaa_le_vbuz1_then_la1 +ldy {z1} +sta $ff +cpy $ff +bcs {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuz1_then_la1 +tay +lda {c1},y +cmp {z1} +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1 +lda {c1},x +cmp {z1} +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuz1_then_la1 +lda {c1},y +cmp {z1} +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuz1_then_la1 +tza +tay +lda {c1},y +cmp {z1} +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuaa_then_la1 +ldx {z1} +tay +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuaa_then_la1 +tax +lda {c1},x +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuaa_then_la1 +tay +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuaa_then_la1 +tax +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuaa_then_la1 +tax +tza +tay +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuxx_then_la1 +ldy {z1} +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuxx_then_la1 +tay +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuxx_then_la1 +lda {c1},x +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuxx_then_la1 +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuxx_then_la1 +tza +tay +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuyy_then_la1 +ldx {z1} +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuyy_then_la1 +tax +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuyy_then_la1 +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuyy_then_la1 +lda {c1},y +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuyy_then_la1 +tza +tax +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuzz_then_la1 +ldy {z1} +lda {c1},y +tay +sty $ff +cpz $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuzz_then_la1 +tay +lda {c1},y +tay +sty $ff +cpz $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuzz_then_la1 +lda {c1},x +tay +sty $ff +cpz $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuzz_then_la1 +lda {c1},y +tay +sty $ff +cpz $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuzz_then_la1 +tza +tay +lda {c1},y +tay +sty $ff +cpz $ff +beq {la1} +//FRAGMENT vbuaa_lt_vbuz1_then_la1 +cmp {z1} +bcc {la1} +//FRAGMENT vbuz1=vbuaa_minus_vbuz2 +sec +sbc {z2} +sta {z1} +//FRAGMENT vbuz1=vbuxx_minus_vbuz2 +txa +sec +sbc {z2} +sta {z1} +//FRAGMENT vbuz1=vbuyy_minus_vbuz2 +tya +sec +sbc {z2} +sta {z1} +//FRAGMENT vbuz1=vbuzz_minus_vbuz2 +tza +sec +sbc {z2} +sta {z1} +//FRAGMENT vbuaa=vbuz1_minus_vbuz2 +lda {z1} +sec +sbc {z2} +//FRAGMENT vbuaa=vbuaa_minus_vbuz1 +sec +sbc {z1} +//FRAGMENT vbuaa=vbuxx_minus_vbuz1 +txa +sec +sbc {z1} +//FRAGMENT vbuaa=vbuyy_minus_vbuz1 +tya +sec +sbc {z1} +//FRAGMENT vbuaa=vbuzz_minus_vbuz1 +tza +sec +sbc {z1} +//FRAGMENT vbuxx=vbuz1_minus_vbuz2 +lda {z1} +sec +sbc {z2} +tax +//FRAGMENT vbuxx=vbuaa_minus_vbuz1 +sec +sbc {z1} +tax +//FRAGMENT vbuxx=vbuxx_minus_vbuz1 +txa +sec +sbc {z1} +tax +//FRAGMENT vbuxx=vbuyy_minus_vbuz1 +tya +sec +sbc {z1} +tax +//FRAGMENT vbuxx=vbuzz_minus_vbuz1 +tza +sec +sbc {z1} +tax +//FRAGMENT vbuyy=vbuz1_minus_vbuz2 +lda {z1} +sec +sbc {z2} +tay +//FRAGMENT vbuyy=vbuaa_minus_vbuz1 +sec +sbc {z1} +tay +//FRAGMENT vbuyy=vbuxx_minus_vbuz1 +txa +sec +sbc {z1} +tay +//FRAGMENT vbuyy=vbuyy_minus_vbuz1 +tya +sec +sbc {z1} +tay +//FRAGMENT vbuyy=vbuzz_minus_vbuz1 +tza +sec +sbc {z1} +tay +//FRAGMENT vbuzz=vbuz1_minus_vbuz2 +lda {z1} +sec +sbc {z2} +taz +//FRAGMENT vbuzz=vbuaa_minus_vbuz1 +sec +sbc {z1} +taz +//FRAGMENT vbuzz=vbuxx_minus_vbuz1 +txa +sec +sbc {z1} +taz +//FRAGMENT vbuzz=vbuyy_minus_vbuz1 +tya +sec +sbc {z1} +taz +//FRAGMENT vbuzz=vbuzz_minus_vbuz1 +tza +sec +sbc {z1} +taz +//FRAGMENT vbuz1=vbuz2_minus_vbuxx +txa +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbuz1=vbuaa_minus_vbuxx +stx $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuz1=vbuxx_minus_vbuxx +lda #0 +sta {z1} +//FRAGMENT vbuz1=vbuyy_minus_vbuxx +tya +stx $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuz1=vbuzz_minus_vbuxx +tza +stx $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuaa=vbuz1_minus_vbuxx +txa +eor #$ff +sec +adc {z1} +//FRAGMENT vbuaa=vbuaa_minus_vbuxx +stx $ff +sec +sbc $ff +//FRAGMENT vbuaa=vbuxx_minus_vbuxx +lda #0 +//FRAGMENT vbuaa=vbuyy_minus_vbuxx +tya +stx $ff +sec +sbc $ff +//FRAGMENT vbuaa=vbuzz_minus_vbuxx +tza +stx $ff +sec +sbc $ff +//FRAGMENT vbuxx=vbuz1_minus_vbuxx +txa +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbuxx=vbuaa_minus_vbuxx +stx $ff +sec +sbc $ff +tax +//FRAGMENT vbuxx=vbuxx_minus_vbuxx +lda #0 +tax +//FRAGMENT vbuxx=vbuyy_minus_vbuxx +tya +stx $ff +sec +sbc $ff +tax +//FRAGMENT vbuxx=vbuzz_minus_vbuxx +tza +stx $ff +sec +sbc $ff +tax +//FRAGMENT vbuyy=vbuz1_minus_vbuxx +txa +eor #$ff +sec +adc {z1} +tay +//FRAGMENT vbuyy=vbuaa_minus_vbuxx +stx $ff +sec +sbc $ff +tay +//FRAGMENT vbuyy=vbuxx_minus_vbuxx +lda #0 +tay +//FRAGMENT vbuyy=vbuyy_minus_vbuxx +tya +stx $ff +sec +sbc $ff +tay +//FRAGMENT vbuyy=vbuzz_minus_vbuxx +tza +stx $ff +sec +sbc $ff +tay +//FRAGMENT vbuzz=vbuz1_minus_vbuxx +txa +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbuzz=vbuaa_minus_vbuxx +stx $ff +sec +sbc $ff +taz +//FRAGMENT vbuzz=vbuxx_minus_vbuxx +lda #0 +taz +//FRAGMENT vbuzz=vbuyy_minus_vbuxx +tya +stx $ff +sec +sbc $ff +taz +//FRAGMENT vbuzz=vbuzz_minus_vbuxx +tza +stx $ff +sec +sbc $ff +taz +//FRAGMENT vbuz1=vbuz2_minus_vbuyy +tya +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbuz1=vbuaa_minus_vbuyy +sty $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuz1=vbuxx_minus_vbuyy +txa +sty $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuz1=vbuyy_minus_vbuyy +lda #0 +sta {z1} +//FRAGMENT vbuz1=vbuzz_minus_vbuyy +tza +sty $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuaa=vbuz1_minus_vbuyy +tya +eor #$ff +sec +adc {z1} +//FRAGMENT vbuaa=vbuaa_minus_vbuyy +sty $ff +sec +sbc $ff +//FRAGMENT vbuaa=vbuxx_minus_vbuyy +txa +sty $ff +sec +sbc $ff +//FRAGMENT vbuaa=vbuyy_minus_vbuyy +lda #0 +//FRAGMENT vbuaa=vbuzz_minus_vbuyy +tza +sty $ff +sec +sbc $ff +//FRAGMENT vbuxx=vbuz1_minus_vbuyy +tya +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbuxx=vbuaa_minus_vbuyy +sty $ff +sec +sbc $ff +tax +//FRAGMENT vbuxx=vbuxx_minus_vbuyy +txa +sty $ff +sec +sbc $ff +tax +//FRAGMENT vbuxx=vbuyy_minus_vbuyy +lda #0 +tax +//FRAGMENT vbuxx=vbuzz_minus_vbuyy +tza +sty $ff +sec +sbc $ff +tax +//FRAGMENT vbuyy=vbuz1_minus_vbuyy +tya +eor #$ff +sec +adc {z1} +tay +//FRAGMENT vbuyy=vbuaa_minus_vbuyy +sty $ff +sec +sbc $ff +tay +//FRAGMENT vbuyy=vbuxx_minus_vbuyy +txa +sty $ff +sec +sbc $ff +tay +//FRAGMENT vbuyy=vbuyy_minus_vbuyy +lda #0 +tay +//FRAGMENT vbuyy=vbuzz_minus_vbuyy +tza +sty $ff +sec +sbc $ff +tay +//FRAGMENT vbuzz=vbuz1_minus_vbuyy +tya +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbuzz=vbuaa_minus_vbuyy +sty $ff +sec +sbc $ff +taz +//FRAGMENT vbuzz=vbuxx_minus_vbuyy +txa +sty $ff +sec +sbc $ff +taz +//FRAGMENT vbuzz=vbuyy_minus_vbuyy +lda #0 +taz +//FRAGMENT vbuzz=vbuzz_minus_vbuyy +tza +sty $ff +sec +sbc $ff +taz +//FRAGMENT vbuz1=vbuz2_minus_vbuzz +tza +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbuz1=vbuaa_minus_vbuzz +stz $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuz1=vbuxx_minus_vbuzz +txa +stz $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuz1=vbuyy_minus_vbuzz +tya +stz $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuz1=vbuzz_minus_vbuzz +tza +lda #0 +sta {z1} +//FRAGMENT vbuaa=vbuz1_minus_vbuzz +tza +eor #$ff +sec +adc {z1} +//FRAGMENT vbuaa=vbuaa_minus_vbuzz +stz $ff +sec +sbc $ff +//FRAGMENT vbuaa=vbuxx_minus_vbuzz +txa +stz $ff +sec +sbc $ff +//FRAGMENT vbuaa=vbuyy_minus_vbuzz +tya +stz $ff +sec +sbc $ff +//FRAGMENT vbuaa=vbuzz_minus_vbuzz +tza +lda #0 +//FRAGMENT vbuxx=vbuz1_minus_vbuzz +tza +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbuxx=vbuaa_minus_vbuzz +stz $ff +sec +sbc $ff +tax +//FRAGMENT vbuxx=vbuxx_minus_vbuzz +txa +stz $ff +sec +sbc $ff +tax +//FRAGMENT vbuxx=vbuyy_minus_vbuzz +tya +stz $ff +sec +sbc $ff +tax +//FRAGMENT vbuxx=vbuzz_minus_vbuzz +tza +lda #0 +tax +//FRAGMENT vbuyy=vbuz1_minus_vbuzz +tza +eor #$ff +sec +adc {z1} +tay +//FRAGMENT vbuyy=vbuaa_minus_vbuzz +stz $ff +sec +sbc $ff +tay +//FRAGMENT vbuyy=vbuxx_minus_vbuzz +txa +stz $ff +sec +sbc $ff +tay +//FRAGMENT vbuyy=vbuyy_minus_vbuzz +tya +stz $ff +sec +sbc $ff +tay +//FRAGMENT vbuyy=vbuzz_minus_vbuzz +tza +lda #0 +tay +//FRAGMENT vbuzz=vbuz1_minus_vbuzz +tza +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbuzz=vbuaa_minus_vbuzz +stz $ff +sec +sbc $ff +taz +//FRAGMENT vbuzz=vbuxx_minus_vbuzz +txa +stz $ff +sec +sbc $ff +taz +//FRAGMENT vbuzz=vbuyy_minus_vbuzz +tya +stz $ff +sec +sbc $ff +taz +//FRAGMENT vbuzz=vbuzz_minus_vbuzz +tza +lda #0 +taz +//FRAGMENT vbuxx_lt_vbuz1_then_la1 +cpx {z1} +bcc {la1} +//FRAGMENT vbuz1_neq_vbuaa_then_la1 +cmp {z1} +bne {la1} +//FRAGMENT vbuz1=vbuz2_minus_vbuaa +eor #$ff +sec +adc {z2} +sta {z1} +//FRAGMENT vbuxx=vbuz1_minus_vbuaa +eor #$ff +sec +adc {z1} +tax +//FRAGMENT vbuyy=vbuz1_minus_vbuaa +eor #$ff +sec +adc {z1} +tay +//FRAGMENT vbuzz=vbuz1_minus_vbuaa +eor #$ff +sec +adc {z1} +taz +//FRAGMENT vbuz1=vbuxx_minus_vbuaa +sta $ff +txa +sec +sbc $ff +sta {z1} +//FRAGMENT vbuxx=vbuxx_minus_vbuaa +sta $ff +txa +sec +sbc $ff +tax +//FRAGMENT vbuyy=vbuxx_minus_vbuaa +sta $ff +txa +sec +sbc $ff +tay +//FRAGMENT vbuzz=vbuxx_minus_vbuaa +sta $ff +txa +sec +sbc $ff +taz +//FRAGMENT vbuz1=vbuyy_minus_vbuaa +sta $ff +tya +sec +sbc $ff +sta {z1} +//FRAGMENT vbuxx=vbuyy_minus_vbuaa +sta $ff +tya +sec +sbc $ff +tax +//FRAGMENT vbuyy=vbuyy_minus_vbuaa +sta $ff +tya +sec +sbc $ff +tay +//FRAGMENT vbuzz=vbuyy_minus_vbuaa +sta $ff +tya +sec +sbc $ff +taz +//FRAGMENT vbuz1=vbuzz_minus_vbuaa +tay +tza +sty $ff +sec +sbc $ff +sta {z1} +//FRAGMENT vbuxx=vbuzz_minus_vbuaa +tax +tza +stx $ff +sec +sbc $ff +tax +//FRAGMENT vbuyy=vbuzz_minus_vbuaa +tay +tza +sty $ff +sec +sbc $ff +tay +//FRAGMENT vbuzz=vbuzz_minus_vbuaa +tay +tza +sty $ff +sec +sbc $ff +taz +//FRAGMENT vbuxx_lt_vbuc1_then_la1 +cpx #{c1} +bcc {la1} +//FRAGMENT vbuaa=_byte_vduz1 +lda {z1} +//FRAGMENT vbuxx=_byte_vduz1 +lda {z1} +tax +//FRAGMENT vbuyy=_byte_vduz1 +lda {z1} +tay +//FRAGMENT vbuzz=_byte_vduz1 +lda {z1} +taz +//FRAGMENT vbuz1=vbuaa_rol_2 +asl +asl +sta {z1} +//FRAGMENT vbuz1=vbuxx_rol_2 +txa +asl +asl +sta {z1} +//FRAGMENT vbuz1=vbuyy_rol_2 +tya +asl +asl +sta {z1} +//FRAGMENT vbuz1=vbuzz_rol_2 +tza +asl +asl +sta {z1} +//FRAGMENT vbuaa=vbuz1_rol_2 +lda {z1} +asl +asl +//FRAGMENT vbuaa=vbuaa_rol_2 +asl +asl +//FRAGMENT vbuaa=vbuxx_rol_2 +txa +asl +asl +//FRAGMENT vbuaa=vbuyy_rol_2 +tya +asl +asl +//FRAGMENT vbuaa=vbuzz_rol_2 +tza +asl +asl +//FRAGMENT vbuxx=vbuz1_rol_2 +lda {z1} +asl +asl +tax +//FRAGMENT vbuxx=vbuaa_rol_2 +asl +asl +tax +//FRAGMENT vbuxx=vbuxx_rol_2 +txa +asl +asl +tax +//FRAGMENT vbuxx=vbuyy_rol_2 +tya +asl +asl +tax +//FRAGMENT vbuxx=vbuzz_rol_2 +tza +asl +asl +tax +//FRAGMENT vbuyy=vbuz1_rol_2 +lda {z1} +asl +asl +tay +//FRAGMENT vbuyy=vbuaa_rol_2 +asl +asl +tay +//FRAGMENT vbuyy=vbuxx_rol_2 +txa +asl +asl +tay +//FRAGMENT vbuyy=vbuyy_rol_2 +tya +asl +asl +tay +//FRAGMENT vbuyy=vbuzz_rol_2 +tza +asl +asl +tay +//FRAGMENT vbuzz=vbuz1_rol_2 +lda {z1} +asl +asl +taz +//FRAGMENT vbuzz=vbuaa_rol_2 +asl +asl +taz +//FRAGMENT vbuzz=vbuxx_rol_2 +txa +asl +asl +taz +//FRAGMENT vbuzz=vbuyy_rol_2 +tya +asl +asl +taz +//FRAGMENT vbuzz=vbuzz_rol_2 +tza +asl +asl +taz +//FRAGMENT vduz1=pduc1_derefidx_vbuaa +tay +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +lda {c1}+2,y +sta {z1}+2 +lda {c1}+3,y +sta {z1}+3 +//FRAGMENT vduz1=pduc1_derefidx_vbuxx +lda {c1},x +sta {z1} +lda {c1}+1,x +sta {z1}+1 +lda {c1}+2,x +sta {z1}+2 +lda {c1}+3,x +sta {z1}+3 +//FRAGMENT vduz1=pduc1_derefidx_vbuyy +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +lda {c1}+2,y +sta {z1}+2 +lda {c1}+3,y +sta {z1}+3 +//FRAGMENT vduz1=pduc1_derefidx_vbuzz +tza +tay +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 +lda {c1}+2,y +sta {z1}+2 +lda {c1}+3,y +sta {z1}+3 +//FRAGMENT _deref_pbuz1=vbuaa +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=vbuxx +txa +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=vbuyy +tya +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=vbuzz +tza +ldy #0 +sta ({z1}),y +//FRAGMENT vbuz1=vbuxx +stx {z1} +//FRAGMENT vbuaa_le_vbuc1_then_la1 +cmp #{c1} +bcc {la1} +beq {la1} +//FRAGMENT vbuaa=vbuaa_plus_vbuc1 +clc +adc #{c1} +//FRAGMENT vbuxx=vbuxx_plus_vbuc1 +txa +clc +adc #{c1} +tax +//FRAGMENT vbuyy=vbuyy_plus_vbuc1 +tya +clc +adc #{c1} +tay +//FRAGMENT vbuzz=vbuzz_plus_vbuc1 +tza +clc +adc #{c1} +taz +//FRAGMENT vbuaa_ge_vbuz1_then_la1 +cmp {z1} +bcs {la1} +//FRAGMENT vbuz1=vbuz1_minus_vbuaa +eor #$ff +sec +adc {z1} +sta {z1} +//FRAGMENT vbuz1=vbuz1_minus_vbuxx +txa +eor #$ff +sec +adc {z1} +sta {z1} +//FRAGMENT vbuz1=vbuz1_minus_vbuyy +tya +eor #$ff +sec +adc {z1} +sta {z1} +//FRAGMENT vbuz1=vbuz1_minus_vbuzz +tza +eor #$ff +sec +adc {z1} +sta {z1} +//FRAGMENT vbuz1=vbuxx_minus_1 +dex +stx {z1} +//FRAGMENT vbuz1=vbuyy_minus_1 +tya +sec +sbc #1 +sta {z1} +//FRAGMENT vbuxx_le_vbuz1_then_la1 +lda {z1} +stx $ff +cmp $ff +bcs {la1} +//FRAGMENT vbuyy_le_vbuz1_then_la1 +lda {z1} +sty $ff +cmp $ff +bcs {la1} +//FRAGMENT vbuzz_le_vbuz1_then_la1 +ldy {z1} +tza +sta $ff +cpy $ff +bcs {la1} +//FRAGMENT vbuz1_le_vbuaa_then_la1 +cmp {z1} +bcs {la1} +//FRAGMENT vbuxx_ge_vbuz1_then_la1 +cpx {z1} +bcs {la1} +//FRAGMENT vbuxx=vbuc1 +ldx #{c1} +//FRAGMENT vbuzz=vbuz1 +ldz {z1} +//FRAGMENT vbuz1=vbuzz +tza +sta {z1} +//FRAGMENT vbuzz_ge_vbuz1_then_la1 +cpz {z1} +bcs {la1} +//FRAGMENT vbuxx=_inc_vbuxx +inx +//FRAGMENT vbuyy=vbuc1 +ldy #{c1} +//FRAGMENT vbuyy=_inc_vbuyy +iny +//FRAGMENT vbuz1_ge_vbuxx_then_la1 +lda {z1} +stx $ff +cmp $ff +bcs {la1} +//FRAGMENT vbuzz_ge_vbuxx_then_la1 +stx $ff +cpz $ff +bcs {la1} +//FRAGMENT vbuyy=vbuz1 +ldy {z1} +//FRAGMENT vbuz1_ge_vbuyy_then_la1 +lda {z1} +sty $ff +cmp $ff +bcs {la1} +//FRAGMENT vbuxx_ge_vbuyy_then_la1 +sty $ff +cpx $ff +bcs {la1} +//FRAGMENT vbuzz_ge_vbuyy_then_la1 +sty $ff +cpz $ff +bcs {la1} +//FRAGMENT vbuz1_ge_vbuzz_then_la1 +ldy {z1} +tza +sta $ff +cpy $ff +bcs {la1} +//FRAGMENT vbuxx_ge_vbuzz_then_la1 +tza +tay +sty $ff +cpx $ff +bcs {la1} +//FRAGMENT vbuaa=vbuxx +txa +//FRAGMENT vbuaa=vbuzz +tza +//FRAGMENT vbuxx=vbuzz +tza +tax +//FRAGMENT vbuxx_le_vbuc1_then_la1 +cpx #{c1} +bcc {la1} +beq {la1} +//FRAGMENT vbuz1=vbuyy +sty {z1} +//FRAGMENT vbuyy_lt_vbuc1_then_la1 +cpy #{c1} +bcc {la1} +//FRAGMENT vbuyy_le_vbuc1_then_la1 +cpy #{c1} +bcc {la1} +beq {la1} +//FRAGMENT vbuzz_le_vbuc1_then_la1 +cpz #{c1} +bcc {la1} +beq {la1} +//FRAGMENT vbuaa=vbuyy +tya +//FRAGMENT vbuxx=vbuaa +tax +//FRAGMENT vbuxx=vbuyy +tya +tax +//FRAGMENT vbuyy=vbuaa +tay +//FRAGMENT vbuyy=vbuxx +txa +tay +//FRAGMENT vbuyy=vbuzz +tza +tay +//FRAGMENT vbuzz=vbuaa +taz +//FRAGMENT vbuzz=vbuxx +txa +taz +//FRAGMENT vbuzz=vbuyy +tya +taz +//FRAGMENT vbuyy_eq_vbuc1_then_la1 +cpy #{c1} +beq {la1} +//FRAGMENT vbuzz_eq_vbuc1_then_la1 +cpz #{c1} +beq {la1} +//FRAGMENT vbuz1_lt_vbuxx_then_la1 +txa +cmp {z1} +beq !+ +bcs {la1} +!: +//FRAGMENT vbuyy_ge_vbuz1_then_la1 +cpy {z1} +bcs {la1} +//FRAGMENT vbuaa=vbuc1 +lda #{c1} +//FRAGMENT vbuc1_neq_vbuyy_then_la1 +cpy #{c1} +bne {la1} +//FRAGMENT vbuc1_neq_vbuzz_then_la1 +cpz #{c1} +bne {la1} +//FRAGMENT vbuyy_ge_vbuxx_then_la1 +stx $ff +cpy $ff +bcs {la1} +//FRAGMENT vbsaa=_inc_vbsaa +inc +//FRAGMENT vbsxx=_inc_vbsxx +inx +//FRAGMENT vbsyy=_sbyte_vwuz1 +ldy {z1} +//FRAGMENT vbsyy=_inc_vbsyy +iny +//FRAGMENT vbszz=_sbyte_vwuz1 +ldz {z1} +//FRAGMENT vbszz=_inc_vbszz +inz +//FRAGMENT vbuc1_eq_vbuzz_then_la1 +cpz #{c1} +beq {la1} +//FRAGMENT vbuz1_neq_vbuxx_then_la1 +cpx {z1} +bne {la1} +//FRAGMENT vbuz1_neq_vbuyy_then_la1 +cpy {z1} +bne {la1} +//FRAGMENT vbuz1_neq_vbuzz_then_la1 +cpz {z1} +bne {la1} +//FRAGMENT vbuxx_neq_vbuz1_then_la1 +cpx {z1} +bne {la1} +//FRAGMENT vbuxx_neq_vbuaa_then_la1 +tay +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuxx_neq_vbuyy_then_la1 +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuxx_neq_vbuzz_then_la1 +tza +tay +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuyy_neq_vbuz1_then_la1 +cpy {z1} +bne {la1} +//FRAGMENT vbuyy_neq_vbuaa_then_la1 +tax +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuyy_neq_vbuxx_then_la1 +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuyy_neq_vbuzz_then_la1 +tza +tax +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuzz_neq_vbuz1_then_la1 +cpz {z1} +bne {la1} +//FRAGMENT vbuzz_neq_vbuaa_then_la1 +tax +tza +tay +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuzz_neq_vbuxx_then_la1 +tza +tay +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuzz_neq_vbuyy_then_la1 +tza +tax +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx +lda {c1},x +sta {z1} +//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy +lda {c1},y +sta {z1} +//FRAGMENT vbuyy_lt_vbuz1_then_la1 +cpy {z1} +bcc {la1} +//FRAGMENT vbuz1=pbuc1_derefidx_vbuzz +tza +tay +lda {c1},y +sta {z1} +//FRAGMENT vbuzz_lt_vbuz1_then_la1 +cpz {z1} +bcc {la1} +//FRAGMENT vbuaa=vbuz1_minus_1 +lda {z1} +sec +sbc #1 +//FRAGMENT vbuc1_eq_vbuyy_then_la1 +cpy #{c1} +beq {la1} +//FRAGMENT vbuyy_le_vbuaa_then_la1 +sty $ff +cmp $ff +bcs {la1} +//FRAGMENT vbuxx=vbuz1_minus_1 +ldx {z1} +dex +//FRAGMENT vbuyy_le_vbuxx_then_la1 +sty $ff +cpx $ff +bcs {la1} +//FRAGMENT vbuzz=vbuz1_minus_1 +lda {z1} +taz +dez +//FRAGMENT vbuyy_le_vbuzz_then_la1 +sty $ff +cpz $ff +bcs {la1} +//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy +lda {c1},y +//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy +ldx {c1},y +//FRAGMENT vbuzz=pbuc1_derefidx_vbuyy +lda {c1},y +taz +//FRAGMENT vbuaa_lt_vbuzz_then_la1 +tay +tza +sta $ff +cpy $ff +bcc {la1} +//FRAGMENT vbuxx=vbuzz_minus_1 +tza +tax +dex +//FRAGMENT vbuyy_lt_vbuzz_then_la1 +tza +sta $ff +cpy $ff +bcc {la1} diff --git a/src/main/fragment/cache/fragment-cache-mos6502x.asm b/src/main/fragment/cache/fragment-cache-mos6502x.asm index e9d340e65..be3781f69 100644 --- a/src/main/fragment/cache/fragment-cache-mos6502x.asm +++ b/src/main/fragment/cache/fragment-cache-mos6502x.asm @@ -17616,3 +17616,299 @@ sta {c1},x lda #{c2} ora {c1},y sta {c1},y +//FRAGMENT vbsz1=_sbyte_vwuz2 +lda {z2} +sta {z1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuz1_then_la1 +tay +lda {c1},y +cmp {z1} +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuaa_then_la1 +ldx {z1} +tay +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuaa_then_la1 +tax +lda {c1},x +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuaa_then_la1 +tay +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuaa_then_la1 +tax +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuxx_then_la1 +tay +lda {c1},y +tay +sty $ff +cpx $ff +beq {la1} +//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuyy_then_la1 +tax +lda {c1},x +tax +sty $ff +cpx $ff +beq {la1} +//FRAGMENT vbsaa=_sbyte_vwuz1 +lda {z1} +//FRAGMENT vbsxx=_sbyte_vwuz1 +ldx {z1} +//FRAGMENT vbsz1=vbsyy_minus_vbsaa +sta $ff +tya +sec +sbc $ff +sta {z1} +//FRAGMENT vbsxx=vbsyy_minus_vbsaa +sta $ff +tya +sec +sbc $ff +tax +//FRAGMENT vbuz1=vbuyy_minus_1 +tya +sec +sbc #1 +sta {z1} +//FRAGMENT vbsyy=_sbyte_vwuz1 +ldy {z1} +//FRAGMENT vbuaa_lt_vbuyy_then_la1 +tax +sty $ff +cpx $ff +bcc {la1} +//FRAGMENT vbuyy_lt_vbuaa_then_la1 +sta $ff +cpy $ff +bcc {la1} +//FRAGMENT vbuz1=vbuz2_minus_vbuz1 +lda {z2} +sec +sbc {z1} +sta {z1} +//FRAGMENT vbuz1=vbuc1_plus_vbuz1 +lax {z1} +axs #-[{c1}] +stx {z1} +//FRAGMENT vbuz1=vbuz1_band_vbuc1 +lda #{c1} +and {z1} +sta {z1} +//FRAGMENT vbsz1=vbsc1_minus_vbsz2 +lda #{c1} +sec +sbc {z2} +sta {z1} +//FRAGMENT vbsz1=vbsc1_minus_vbsaa +eor #$ff +sec +adc #{c1} +sta {z1} +//FRAGMENT vbsz1=vbsc1_minus_vbsxx +txa +eor #$ff +sec +adc #{c1} +sta {z1} +//FRAGMENT vbsz1=vbsc1_minus_vbsyy +tya +eor #$ff +sec +adc #{c1} +sta {z1} +//FRAGMENT vbsaa=vbsc1_minus_vbsz1 +lda #{c1} +sec +sbc {z1} +//FRAGMENT vbsaa=vbsc1_minus_vbsaa +eor #$ff +sec +adc #{c1} +//FRAGMENT vbsaa=vbsc1_minus_vbsxx +txa +eor #$ff +sec +adc #{c1} +//FRAGMENT vbsaa=vbsc1_minus_vbsyy +tya +eor #$ff +sec +adc #{c1} +//FRAGMENT vbsxx=vbsc1_minus_vbsz1 +lda #{c1} +sec +sbc {z1} +tax +//FRAGMENT vbsxx=vbsc1_minus_vbsaa +eor #$ff +tax +axs #-{c1}-1 +//FRAGMENT vbsxx=vbsc1_minus_vbsxx +txa +eor #$ff +tax +axs #-{c1}-1 +//FRAGMENT vbsxx=vbsc1_minus_vbsyy +tya +eor #$ff +tax +axs #-{c1}-1 +//FRAGMENT vbsyy=vbsc1_minus_vbsz1 +lda #{c1} +sec +sbc {z1} +tay +//FRAGMENT vbsyy=vbsc1_minus_vbsaa +eor #$ff +sec +adc #{c1} +tay +//FRAGMENT vbsyy=vbsc1_minus_vbsxx +txa +eor #$ff +sec +adc #{c1} +tay +//FRAGMENT vbsyy=vbsc1_minus_vbsyy +tya +eor #$ff +sec +adc #{c1} +tay +//FRAGMENT vbsaa_ge_0_then_la1 +cmp #0 +bpl {la1} +//FRAGMENT vbsyy=vbsyy_minus_vbsaa +sta $ff +tya +sec +sbc $ff +tay +//FRAGMENT vbuyy_neq_vbuaa_then_la1 +tax +stx $ff +cpy $ff +bne {la1} +//FRAGMENT vbsz1_eq_vbsc1_then_la1 +lda #{c1} +cmp {z1} +beq {la1} +//FRAGMENT vbsc1_eq_vbsz1_then_la1 +lda #{c1} +cmp {z1} +beq {la1} +//FRAGMENT pbuz1=pbuz2_plus_vbsz3 +lda {z3} +pha +clc +adc {z2} +sta {z1} +pla +ora #$7f +bmi !+ +lda #0 +!: +adc {z2}+1 +sta {z1}+1 +//FRAGMENT vwuz1=vwuz2_minus_vbuc1 +sec +lda {z2} +sbc #{c1} +sta {z1} +lda {z2}+1 +sbc #0 +sta {z1}+1 +//FRAGMENT vbsaa_eq_vbsc1_then_la1 +cmp #{c1} +beq {la1} +//FRAGMENT vbsaa=vbsyy_minus_vbsaa +sta $ff +tya +sec +sbc $ff +//FRAGMENT vbsc1_eq_vbsaa_then_la1 +cmp #{c1} +beq {la1} +//FRAGMENT pbuz1=pbuz2_plus_vbsaa +pha +clc +adc {z2} +sta {z1} +pla +ora #$7f +bmi !+ +lda #0 +!: +adc {z2}+1 +sta {z1}+1 +//FRAGMENT pbuz1=pbuz2_plus_vbsxx +txa +pha +clc +adc {z2} +sta {z1} +pla +ora #$7f +bmi !+ +lda #0 +!: +adc {z2}+1 +sta {z1}+1 +//FRAGMENT pbuz1=pbuz2_plus_vbsyy +tya +pha +clc +adc {z2} +sta {z1} +pla +ora #$7f +bmi !+ +lda #0 +!: +adc {z2}+1 +sta {z1}+1 +//FRAGMENT vbsc1_eq_vbsxx_then_la1 +cpx #{c1} +beq {la1} +//FRAGMENT vbsxx_eq_vbsc1_then_la1 +cpx #{c1} +beq {la1} +//FRAGMENT vbsc1_eq_vbsyy_then_la1 +cpy #{c1} +beq {la1} +//FRAGMENT pbuz1=pbuz1_plus_vbsxx +txa +pha +clc +adc {z1} +sta {z1} +pla +ora #$7f +bmi !+ +lda #0 +!: +adc {z1}+1 +sta {z1}+1 +//FRAGMENT vwuz1=vwuz1_rol_2 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1