clean up documentation, clean up dead code, add some instrs
This commit is contained in:
798
8608.asm
Normal file
798
8608.asm
Normal file
@@ -0,0 +1,798 @@
|
||||
; 8608.asm
|
||||
; Include this file into a customasm assembly file to use the 8608 architecture, like so:
|
||||
; #include "8608.asm"
|
||||
|
||||
; Generated by generate-architecture.lua using the definitions in 8608-definition.lua
|
||||
; Definitions for all instructions in the 8608 architecture.
|
||||
#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
|
||||
sub {value:i8} => {
|
||||
mvalue = -value
|
||||
$24 @ mvalue`8
|
||||
}
|
||||
|
||||
adb {value: i8} => $72 @ value
|
||||
sbb {value:i8} => {
|
||||
mvalue = -value
|
||||
$72 @ mvalue`8
|
||||
}
|
||||
|
||||
adc {value: i8} => $73 @ value
|
||||
sbc {value:i8} => {
|
||||
mvalue = -value
|
||||
$73 @ mvalue`8
|
||||
}
|
||||
|
||||
acc {value: i8} => $78 @ value
|
||||
scc {value:i8} => {
|
||||
mvalue = -value
|
||||
$78 @ mvalue`8
|
||||
}
|
||||
|
||||
cmp {value: i8} => $71 @ value
|
||||
and {value: i8} => $74 @ value
|
||||
ior {value: i8} => $75 @ value
|
||||
xor {value: i8} => $76 @ 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
|
||||
}
|
||||
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
|
||||
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
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user