diff --git a/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuxx_ge_0_then_la1.asm b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuxx_ge_0_then_la1.asm new file mode 100644 index 000000000..0d454bc88 --- /dev/null +++ b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuxx_ge_0_then_la1.asm @@ -0,0 +1,2 @@ +lda {c1}+1,x +bpl {la1} \ No newline at end of file diff --git a/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuxx_lt_vwsc2_then_la1.asm b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuxx_lt_vwsc2_then_la1.asm index 4d54c8d35..afbf3efd7 100644 --- a/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuxx_lt_vwsc2_then_la1.asm +++ b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuxx_lt_vwsc2_then_la1.asm @@ -1,7 +1,7 @@ lda {c1},x -cmp {c2} +cmp #<{c2} lda {c1}+1,x -sbc {c2}+1 +sbc #>{c2} bvc !+ eor #$80 !: diff --git a/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuyy_ge_0_then_la1.asm b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuyy_ge_0_then_la1.asm new file mode 100644 index 000000000..01fd2b62a --- /dev/null +++ b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuyy_ge_0_then_la1.asm @@ -0,0 +1,2 @@ +lda {c1}+1,y +bpl {la1} \ No newline at end of file diff --git a/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuyy_lt_vwsc2_then_la1.asm b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuyy_lt_vwsc2_then_la1.asm index 51c846553..49a0e42cf 100644 --- a/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuyy_lt_vwsc2_then_la1.asm +++ b/src/main/fragment/mos6502-common/pwsc1_derefidx_vbuyy_lt_vwsc2_then_la1.asm @@ -1,7 +1,7 @@ lda {c1},y -cmp {c2} +cmp #<{c2} lda {c1}+1,y -sbc {c2}+1 +sbc #>{c2} bvc !+ eor #$80 !: diff --git a/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuxx_plus_pwsc2_derefidx_vbuyy.asm b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuxx_plus_pwsc2_derefidx_vbuyy.asm new file mode 100644 index 000000000..bfb0c0b4b --- /dev/null +++ b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuxx_plus_pwsc2_derefidx_vbuyy.asm @@ -0,0 +1,7 @@ +clc +lda {c1},x +adc {c2},y +sta {m1} +lda {c1}+1,x +adc {c2}+1,y +sta {m1}+1 diff --git a/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuxx_plus_vwsm2.asm b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuxx_plus_vwsm2.asm new file mode 100644 index 000000000..3b80fbd5b --- /dev/null +++ b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuxx_plus_vwsm2.asm @@ -0,0 +1,7 @@ +lda {m2} +clc +adc {c1},x +sta {m1} +lda {m2}+1 +adc {c1}+1,x +sta {m1}+1 \ No newline at end of file diff --git a/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuyy_plus_pwsc2_derefidx_vbuxx.asm b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuyy_plus_pwsc2_derefidx_vbuxx.asm new file mode 100644 index 000000000..b7070b660 --- /dev/null +++ b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuyy_plus_pwsc2_derefidx_vbuxx.asm @@ -0,0 +1,7 @@ +clc +lda {c1},y +adc {c2},x +sta {m1} +lda {c1}+1,y +adc {c2}+1,x +sta {m1}+1 diff --git a/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuyy_plus_vwsm2.asm b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuyy_plus_vwsm2.asm new file mode 100644 index 000000000..3d055e593 --- /dev/null +++ b/src/main/fragment/mos6502-common/vwsm1=pwsc1_derefidx_vbuyy_plus_vwsm2.asm @@ -0,0 +1,7 @@ +lda {m2} +clc +adc {c1},y +sta {m1} +lda {m2}+1 +adc {c1}+1,y +sta {m1}+1 \ No newline at end of file diff --git a/src/main/fragment/mos6502-common/vwsm1=vwsm2_minus_pwsc1_derefidx_vbuxx.asm b/src/main/fragment/mos6502-common/vwsm1=vwsm2_minus_pwsc1_derefidx_vbuxx.asm new file mode 100644 index 000000000..b1c48bc28 --- /dev/null +++ b/src/main/fragment/mos6502-common/vwsm1=vwsm2_minus_pwsc1_derefidx_vbuxx.asm @@ -0,0 +1,7 @@ +lda {m2} +sec +sbc {c1},x +sta {m1} +lda {m2}+1 +sbc {c1}+1,x +sta {m1}+1 \ No newline at end of file diff --git a/src/main/fragment/mos6502-common/vwsm1=vwsm2_minus_pwsc1_derefidx_vbuyy.asm b/src/main/fragment/mos6502-common/vwsm1=vwsm2_minus_pwsc1_derefidx_vbuyy.asm new file mode 100644 index 000000000..e295fbd82 --- /dev/null +++ b/src/main/fragment/mos6502-common/vwsm1=vwsm2_minus_pwsc1_derefidx_vbuyy.asm @@ -0,0 +1,7 @@ +lda {m2} +sec +sbc {c1},y +sta {m1} +lda {m2}+1 +sbc {c1}+1,y +sta {m1}+1 \ No newline at end of file