NAME=6502 addr imm
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx a942
aezi
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x00000042
EOF
RUN

NAME=6502 addr deref zero page
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx a530
wx 42 @ 0x30
aezi
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x00000042
EOF
RUN

NAME=6502 addr deref
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx ad3402
wx 42 @ 0x234
aezi
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x00000042
EOF
RUN

NAME=6502 addr zero page x
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx b5f0
wx 42 @ 0xf3
aezi
ar x=0x3
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x00000042
EOF
RUN

NAME=6502 addr zero page x, overflow
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx b5f0
wx 42 @ 0x03
aezi
ar x=0x13
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x00000042
EOF
RUN

NAME=6502 addr (indirect,x)
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx a143
wx abcd @ 0x50
wx 8a @ 0xcdab
aezi
ar x=0xd
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x0000008a
EOF
RUN

NAME=6502 addr (indirect,x), +x overflow
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx a143
wx abcd @ 0x33
wx 8a @ 0xcdab
aezi
ar x=0xf0
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x0000008a
EOF
RUN

NAME=6502 addr (indirect,x), +1 overflow
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
s 1
wx a143
wx ab @ 0xff
wx cd @ 0x00
wx 8a @ 0xcdab
aezi
ar x=0xbc
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x0000008a
EOF
RUN

NAME=6502 addr (indirect),y
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
wx b150
wx abcd @ 0x50
wx 8a @ 0xceaa
aezi
ar y=0xff
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x0000008a
EOF
RUN

NAME=6502 addr (indirect),y, +1 overflow
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
s 1
wx b1ff
wx ab @ 0xff
wx cd @ 0x00
wx 8a @ 0xceaa
aezi
ar y=0xff
aezs
ar a
EOF
EXPECT=<<EOF
a = 0x0000008a
EOF
RUN

NAME=6502 lda flags
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
aezi
wx a934 # lda #0x34
pi 1
aezs
ar 1
ara0
wx a900 # lda #0x00
pi 1
aezs
ar 1
ara0
wx a980 # lda #0x80
pi 1
aezs
ar 1
EOF
EXPECT=<<EOF
lda #0x34
C = 0x00000000
Z = 0x00000000
I = 0x00000000
D = 0x00000000
V = 0x00000000
N = 0x00000000
lda #0x00
C = 0x00000000
Z = 0x00000001
I = 0x00000000
D = 0x00000000
V = 0x00000000
N = 0x00000000
lda #0x80
C = 0x00000000
Z = 0x00000000
I = 0x00000000
D = 0x00000000
V = 0x00000000
N = 0x00000001
EOF
RUN

NAME=6502 jmp
FILE=malloc://0x10000
ARGS=-a 6502
CMDS=<<EOF
s 0x1234
wx 4cfeca @ 0x1234 # jmp 0xcafe
pi 1
aezi
aezs
ar
EOF
EXPECT=<<EOF
jmp 0xcafe
a = 0x00000000
x = 0x00000000
y = 0x00000000
flags = 0x00000000
sp = 0x00000000
pc = 0x0000cafe
EOF
RUN

NAME=6502 crackme.prg decrypt
FILE=bins/prg/crackme.prg
ARGS=-a 6502 -F prg
TIMEOUT=4
CMDS=<<EOF
s 0x84c
e io.cache=1
aezi
aezsu 0x84f
ps @ 0x91b
EOF
EXPECT=<<EOF
HELLO FROM RZIL
EOF
RUN
