1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-29 09:29:31 +00:00
kickc/src/test/ref/fragment-synth.asm

55 lines
1.2 KiB
NASM

// Tests a sub-optimal fragment synthesis
// vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc1_band_vbuxx < vbuaa=pbuz1_derefidx_vbuaa_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:11.5
// Commodore 64 PRG executable file
.file [name="fragment-synth.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)
.segment Code
main: {
.label screen = $400
// z[2] = $f0
lda #$f0
sta $450+2
// z[3] = $0f
lda #$f
sta $450+3
// fct(x, z)
lda #<$450
sta.z fct.z
lda #>$450
sta.z fct.z+1
ldx #$aa
jsr fct
// fct(x, z)
// byte a1 = fct(x, z)
// screen[0] = a1
sta screen
// fct(x, z)
lda #<$450+1
sta.z fct.z
lda #>$450+1
sta.z fct.z+1
ldx #$55
jsr fct
// fct(x, z)
// byte a2 = fct(x, z)
// screen[1] = a2
sta screen+1
// }
rts
}
// fct(byte register(X) x, byte* zp(2) z)
fct: {
.label z = 2
// x & z[2]
ldy #2
txa
and (z),y
// }
rts
}