; Instruction list (Auto-generated from rom-8608-defs.lua by rom-8608-build.lua) #ruledef { rst => $00 hlt => $F0 run => $F1 int => $F2 brk => $F3 irt => $F4 nop => $FF ien => $F5 idi => $F6 inc p => $12 dec p => $15 inc q => $13 dec q => $16 inc a => $10 dec a => $11 icc a => $1B inc b => $19 dec b => $1A icc b => $1C inc c => $17 dec c => $18 icc c => $1D tst a => $14 tst b => $1E tst c => $1F inc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $2B @ value`8 } inc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $2B @ mvalue`8 } dec *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $2C @ value`8 } dec *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $2C @ mvalue`8 } icc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $2D @ value`8 } icc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $2D @ mvalue`8 } tst *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $2E @ value`8 } tst *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $2E @ mvalue`8 } adp {value: i8} => $4A @ value adq {value: i8} => $4B @ value ads {value: i8} => $4C @ value adp b => $E6 adq b => $E7 ads b => $E8 add {value: i8} => $24 @ value adb {value: i8} => $72 @ value adc {value: i8} => $73 @ value sub {value: i8} => $70 @ value sbb {value: i8} => $99 @ value sbc {value: i8} => $9A @ value acc {value: i8} => $78 @ value scc {value: i8} => $79 @ value cmp {value: i8} => $71 @ value and {value: i8} => $74 @ value ior {value: i8} => $75 @ value xor {value: i8} => $76 @ value ann {value: i8} => $77 @ value shl {value: i8} => $D0 @ value shr {value: i8} => $D1 @ value rol {value: i8} => $D2 @ value ror {value: i8} => $D3 @ value sra {value: i8} => $D4 @ value add *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $AE @ value`8 } add *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $AE @ mvalue`8 } adb *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $9B @ value`8 } adb *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $9B @ mvalue`8 } adc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $9C @ value`8 } adc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $9C @ mvalue`8 } sub *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $AF @ value`8 } sub *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $AF @ mvalue`8 } sbb *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $9D @ value`8 } sbb *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $9D @ mvalue`8 } sbc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $9E @ value`8 } sbc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $9E @ mvalue`8 } acc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $B5 @ value`8 } acc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $B5 @ mvalue`8 } scc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $B7 @ value`8 } scc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $B7 @ mvalue`8 } cmp *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $B0 @ value`8 } cmp *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $B0 @ mvalue`8 } and *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $B1 @ value`8 } and *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $B1 @ mvalue`8 } ior *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $B2 @ value`8 } ior *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $B2 @ mvalue`8 } xor *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $B3 @ value`8 } xor *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $B3 @ mvalue`8 } ann *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $B4 @ value`8 } ann *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $B4 @ mvalue`8 } shl *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $D5 @ value`8 } shl *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $D5 @ mvalue`8 } shr *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $D6 @ value`8 } shr *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $D6 @ mvalue`8 } rol *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $D7 @ value`8 } rol *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $D7 @ mvalue`8 } ror *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $D8 @ value`8 } ror *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $D8 @ mvalue`8 } sra *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $D9 @ value`8 } sra *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $D9 @ mvalue`8 } add b => $A0 adc b => $9F sub b => $A1 sbc b => $B6 acc b => $B8 scc b => $B9 cmp b => $A2 and b => $A3 ior b => $A4 xor b => $A5 ann b => $A6 shl b => $DA shr b => $DB rol b => $DC ror b => $DD sra b => $DE add c => $A7 adb c => $BD sub c => $A8 sbb c => $BC acc c => $BA scc c => $BB cmp c => $A9 and c => $AA ior c => $AB xor c => $AC ann c => $AD shl c => $DF shr c => $4D rol c => $3E ror c => $3F sra c => $2F adb a => $BE sbb a => $BF adc a => $4E sbc a => $4F jmp {value: i16} => $60 @ value jsr {value: i16} => $63 @ value jss {value: i16} => $E2 @ value jmp p => $64 jmp q => $66 ret => $66 jsr p => $65 jsr q => $67 jss p => $E4 jss q => $E5 rts => $E1 jpr {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jpr: Relative jump target is too far away") assert(reladdr >= -128, "jpr: Relative jump target is too far away") $31 @ reladdr`8 } jnz {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jnz: Relative jump target is too far away") assert(reladdr >= -128, "jnz: Relative jump target is too far away") $30 @ reladdr`8 } jne {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jne: Relative jump target is too far away") assert(reladdr >= -128, "jne: Relative jump target is too far away") $30 @ reladdr`8 } jpz {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jpz: Relative jump target is too far away") assert(reladdr >= -128, "jpz: Relative jump target is too far away") $32 @ reladdr`8 } jeq {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jeq: Relative jump target is too far away") assert(reladdr >= -128, "jeq: Relative jump target is too far away") $32 @ reladdr`8 } jlt {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jlt: Relative jump target is too far away") assert(reladdr >= -128, "jlt: Relative jump target is too far away") $33 @ reladdr`8 } jge {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jge: Relative jump target is too far away") assert(reladdr >= -128, "jge: Relative jump target is too far away") $34 @ reladdr`8 } jgt {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jgt: Relative jump target is too far away") assert(reladdr >= -128, "jgt: Relative jump target is too far away") $35 @ reladdr`8 } jle {addr} => { reladdr = addr - $ - 2 assert(reladdr <= 127, "jle: Relative jump target is too far away") assert(reladdr >= -128, "jle: Relative jump target is too far away") $36 @ reladdr`8 } psh a => $40 psh b => $44 psh c => $45 psh f => $E9 psh p => $41 psh q => $46 pop a => $42 pop b => $47 pop c => $48 pop f => $EA pop p => $43 pop q => $49 psh {value: i8} => $3B @ value phw {value: i16} => $3C @ value lda {value: i8} => $20 @ value ldb {value: i8} => $26 @ value ldc {value: i8} => $27 @ value lda *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $28 @ value`8 } lda *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $28 @ mvalue`8 } ldb *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $29 @ value`8 } ldb *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $29 @ mvalue`8 } ldc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $2A @ value`8 } ldc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $2A @ mvalue`8 } sta *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $96 @ value`8 } sta *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $96 @ mvalue`8 } stb *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $97 @ value`8 } stb *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $97 @ mvalue`8 } stc *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $98 @ value`8 } stc *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $98 @ mvalue`8 } lda *{value: i16} => $51 @ value ldb *{value: i16} => $56 @ value ldc *{value: i16} => $57 @ value sta *{value: i16} => $50 @ value stb *{value: i16} => $58 @ value stc *{value: i16} => $59 @ value lda *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $01 @ value`16 } lda *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $01 @ mvalue`16 } ldb *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $F7 @ value`16 } ldb *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $F7 @ mvalue`16 } ldc *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $FE @ value`16 } ldc *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $FE @ mvalue`16 } lda *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $EB @ value`16 } lda *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $EB @ mvalue`16 } ldb *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $08 @ value`16 } ldb *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $08 @ mvalue`16 } ldc *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $09 @ value`16 } ldc *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $09 @ mvalue`16 } sta *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $0A @ value`16 } sta *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $0A @ mvalue`16 } stb *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $0B @ value`16 } stb *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $0B @ mvalue`16 } stc *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $0C @ value`16 } stc *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $0C @ mvalue`16 } sta *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $0D @ value`16 } sta *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $0D @ mvalue`16 } stb *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $0E @ value`16 } stb *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $0E @ mvalue`16 } stc *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $0F @ value`16 } stc *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $0F @ mvalue`16 } lda *p => $53 ldb *p => $5E ldc *p => $5F lda *q => $55 ldb *q => $61 ldc *q => $62 sta *p => $52 stb *p => $5A stc *p => $5B sta *q => $54 stb *q => $5C stc *q => $5D lda *p++ => $C6 ldb *p++ => $C7 ldc *p++ => $C8 lda *q++ => $C9 ldb *q++ => $CA ldc *q++ => $CB sta *p++ => $C0 stb *p++ => $C1 stc *p++ => $C2 sta *q++ => $C3 stb *q++ => $C4 stc *q++ => $C5 ldp {value: i16} => $21 @ value ldq {value: i16} => $23 @ value lds {value: i16} => $25 @ value ldv {value: i16} => $22 @ value ldp *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $7A @ value`8 } ldp *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $7A @ mvalue`8 } ldq *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $7B @ value`8 } ldq *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $7B @ mvalue`8 } stp *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $7E @ value`8 } stp *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $7E @ mvalue`8 } stq *s+{value: i8} => { assert(value <= 127, "Relative address is too far away") assert(value >= -128, "Relative address is too far away") $7F @ value`8 } stq *s-{value: i8} => { mvalue = -value assert(mvalue <= 127, "Relative address is too far away") assert(mvalue >= -128, "Relative address is too far away") $7F @ mvalue`8 } ldp *{value: i16} => $68 @ value ldq *{value: i16} => $6A @ value stp *{value: i16} => $6C @ value stq *{value: i16} => $6E @ value ldp *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $EC @ value`16 } ldp *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $EC @ mvalue`16 } ldq *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $EE @ value`16 } ldq *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $EE @ mvalue`16 } ldp *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $F8 @ value`16 } ldp *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $F8 @ mvalue`16 } ldq *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $FA @ value`16 } ldq *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $FA @ mvalue`16 } stq *p+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $06 @ value`16 } stq *p-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $06 @ mvalue`16 } stp *q+{value: i16} => { assert(value <= 32767, "Relative address is too far away") assert(value >= -32768, "Relative address is too far away") $FC @ value`16 } stp *q-{value: i16} => { mvalue = -value assert(mvalue <= 32767, "Relative address is too far away") assert(mvalue >= -32768, "Relative address is too far away") $FC @ mvalue`16 } ldp *p => $92 ldq *p => $93 ldp *q => $94 ldq *q => $95 stp *q => $7C stq *p => $7D ldq *p++ => $CC ldp *q++ => $CD stp *q++ => $CE stq *p++ => $CF lda b => $80 lda c => $81 ldb a => $82 ldb c => $83 ldc a => $84 ldc b => $85 lda pl => $86 lda ph => $87 lda ql => $88 lda qh => $89 ldb pl => $37 ldc ph => $38 ldb ql => $39 ldc qh => $3A ldp q => $8A ldp s => $8B ldp v => $8C ldp i => $8D ldp cb => $91 ldq cb => $E0 ldq p => $8E lds p => $8F ldv p => $90 }