// Demonstrates problem with __ma coalescing
// c1a is erroneously zp-coalesced with c1A
  // Commodore 64 PRG executable file
.file [name="ma_coalesce_problem.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 SCREEN = $400
.segment Code
main: {
  __b1:
    // char c1a = c1A
    lda c1A
    sta c1a
    // char i = 0
    lda #0
    sta i
  __b2:
    // for (char i = 0; i < 40; ++i)
    lda i
    cmp #$28
    bcc __b3
    // c1A += 3
    lax c1A
    axs #-[3]
    stx c1A
    jmp __b1
  __b3:
    // SCREEN[i] = SINTABLE[c1a]
    ldy c1a
    lda SINTABLE,y
    ldy i
    sta SCREEN,y
    // c1a += 4
    lax c1a
    axs #-[4]
    stx c1a
    // for (char i = 0; i < 40; ++i)
    inc i
    jmp __b2
  .segment Data
    c1a: .byte 0
    i: .byte 0
}
  .align $100
SINTABLE:
.for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))

  // Plasma state variables
  c1A: .byte 0
