203 lines
4.7 KiB
NASM
203 lines
4.7 KiB
NASM
; 8608.asm
|
|
; Include this file into a CustomAsm assembly file to use the 8608 architecture, like so:
|
|
; #include "8608.asm"
|
|
; See CustomAsm for more info: https://github.com/hlorenzi/customasm
|
|
|
|
; Generated by generate-architecture.lua using the definitions in 8608-definition.lua
|
|
; Definitions for all instructions in the 8608 architecture.
|
|
#subruledef rel8 {
|
|
{addr} => {
|
|
reladdr = addr - $ - 2
|
|
assert(reladdr <= 127, "Relative jump target is too far away")
|
|
assert(reladdr >= -128, "Relative jump target is too far away")
|
|
reladdr`8
|
|
}
|
|
}
|
|
#subruledef neg8 {
|
|
{value} => {
|
|
mvalue = -value
|
|
mvalue`8
|
|
}
|
|
}
|
|
#ruledef {
|
|
RST => $41
|
|
BRK => $00
|
|
RTI => $40
|
|
NOP => $EA
|
|
CLI => $58
|
|
SEI => $78
|
|
HLT => $18
|
|
RUN => $38
|
|
INC A => $F6
|
|
DEC A => $D6
|
|
ICC A => $57
|
|
INC B => $FE
|
|
DEC B => $DE
|
|
ICC B => $5F
|
|
INC C => $FA
|
|
DEC C => $DA
|
|
ICC C => $5B
|
|
INC {value: u8} => $E6 @ value
|
|
DEC {value: u8} => $C6 @ value
|
|
ICC {value: u8} => $47 @ value
|
|
ADD #{value: i8} => $6B @ value
|
|
ADC #{value: i8} => $69 @ value
|
|
CMP #{value: i8} => $C9 @ value
|
|
AND #{value: i8} => $29 @ value
|
|
ORA #{value: i8} => $09 @ value
|
|
EOR #{value: i8} => $49 @ value
|
|
ASL #{value: i8} => $15 @ value
|
|
LSR #{value: i8} => $55 @ value
|
|
ROL #{value: i8} => $35 @ value
|
|
ROR #{value: i8} => $75 @ value
|
|
ADD {value: u8} => $67 @ value
|
|
SUB {value: u8} => $E7 @ value
|
|
ADC {value: u8} => $65 @ value
|
|
SBC {value: u8} => $E5 @ value
|
|
CMP {value: u8} => $C5 @ value
|
|
AND {value: u8} => $25 @ value
|
|
ORA {value: u8} => $05 @ value
|
|
EOR {value: u8} => $45 @ value
|
|
ADD B => $7F
|
|
SUB B => $FF
|
|
ADC B => $7D
|
|
SBC B => $FD
|
|
CMP B => $DD
|
|
AND B => $3D
|
|
ORA B => $1D
|
|
EOR B => $5D
|
|
ADD C => $7B
|
|
SUB C => $FB
|
|
ADC C => $79
|
|
SBC C => $F9
|
|
CMP C => $D9
|
|
AND C => $39
|
|
ORA C => $19
|
|
EOR C => $59
|
|
BNE {value: rel8} => $D0 @ value
|
|
BEQ {value: rel8} => $F0 @ value
|
|
BLT {value: rel8} => $90 @ value
|
|
BGE {value: rel8} => $B0 @ value
|
|
BGT {value: rel8} => $30 @ value
|
|
BLE {value: rel8} => $10 @ value
|
|
BRA {value: rel8} => $98 @ value
|
|
ADX #{value: i8} => $E8 @ value
|
|
ADY #{value: i8} => $C8 @ value
|
|
ADX #{value: i16} => $8A @ value
|
|
ADY #{value: i16} => $88 @ value
|
|
ADX A => $FC
|
|
ADY A => $DC
|
|
JMP {value: i16} => $CC @ value
|
|
JSR {value: i16} => $20 @ value
|
|
JMP [{value: i16}] => $6C @ value
|
|
JSR [{value: i16}] => $2C @ value
|
|
JMP [{value: i16},A] => $4C @ value
|
|
JSR [{value: i16},A] => $0C @ value
|
|
JMP X => $64
|
|
JMP Y => $44
|
|
JSR X => $24
|
|
JSR Y => $04
|
|
RTS => $60
|
|
PHA => $48
|
|
PHB => $5C
|
|
PHC => $1C
|
|
PHP => $08
|
|
PHX => $54
|
|
PHY => $14
|
|
PLA => $68
|
|
PLB => $7C
|
|
PLC => $3C
|
|
PLP => $28
|
|
PLX => $74
|
|
PLY => $34
|
|
LDA #{value: i8} => $A9 @ value
|
|
LDB #{value: i8} => $AB @ value
|
|
LDC #{value: i8} => $2B @ value
|
|
LDA {value: u8} => $A5 @ value
|
|
LDB {value: u8} => $A7 @ value
|
|
LDC {value: u8} => $27 @ value
|
|
STA {value: u8} => $85 @ value
|
|
STB {value: u8} => $87 @ value
|
|
STC {value: u8} => $07 @ value
|
|
LDA {value: i16} => $ED @ value
|
|
LDB {value: i16} => $EF @ value
|
|
LDC {value: i16} => $6F @ value
|
|
STA {value: i16} => $CD @ value
|
|
STB {value: i16} => $CF @ value
|
|
STC {value: i16} => $4F @ value
|
|
LDA X => $A1
|
|
LDB X => $A3
|
|
LDC X => $23
|
|
LDA Y => $B1
|
|
LDB Y => $B3
|
|
LDC Y => $33
|
|
STA X => $81
|
|
STB X => $83
|
|
STC X => $03
|
|
STA Y => $91
|
|
STB Y => $93
|
|
STC Y => $13
|
|
LDA X+ => $E1
|
|
LDB X+ => $E3
|
|
LDC X+ => $63
|
|
LDA Y+ => $F1
|
|
LDB Y+ => $F3
|
|
LDC Y+ => $73
|
|
STA X+ => $C1
|
|
STB X+ => $C3
|
|
STC X+ => $43
|
|
STA Y+ => $D1
|
|
STB Y+ => $D3
|
|
STC Y+ => $53
|
|
LDA X,{value: u8} => $BD @ value
|
|
LDB X,{value: u8} => $BF @ value
|
|
LDC X,{value: u8} => $3F @ value
|
|
LDA Y,{value: u8} => $B9 @ value
|
|
LDB Y,{value: u8} => $BB @ value
|
|
LDC Y,{value: u8} => $3B @ value
|
|
STA X,{value: u8} => $9D @ value
|
|
STB X,{value: u8} => $9F @ value
|
|
STC X,{value: u8} => $1F @ value
|
|
STA Y,{value: u8} => $99 @ value
|
|
STB Y,{value: u8} => $9B @ value
|
|
STC Y,{value: u8} => $1B @ value
|
|
LDX #{value: i16} => $AA @ value
|
|
LDY #{value: i16} => $A8 @ value
|
|
LDX {value: u8} => $A6 @ value
|
|
LDY {value: u8} => $A4 @ value
|
|
STX {value: u8} => $86 @ value
|
|
STY {value: u8} => $84 @ value
|
|
LDX {value: i16} => $AE @ value
|
|
LDY {value: i16} => $AC @ value
|
|
STX {value: i16} => $8E @ value
|
|
STY {value: i16} => $8C @ value
|
|
LDX X,{value: u8} => $BE @ value
|
|
LDX Y,{value: u8} => $BA @ value
|
|
LDY X,{value: u8} => $BC @ value
|
|
LDY Y,{value: u8} => $B8 @ value
|
|
STX Y,{value: u8} => $9A @ value
|
|
STY X,{value: u8} => $9C @ value
|
|
LDX X => $A2
|
|
LDY X => $A0
|
|
LDX Y => $B2
|
|
LDY Y => $E2
|
|
STX Y => $92
|
|
STY X => $80
|
|
LDX Y+ => $F2
|
|
LDY X+ => $E0
|
|
STX Y+ => $D2
|
|
STY X+ => $C0
|
|
TBA => $97
|
|
TCA => $17
|
|
TAB => $B7
|
|
TCB => $D7
|
|
TAC => $37
|
|
TBC => $F7
|
|
TYX => $B4
|
|
TXY => $94
|
|
TVX => $B6
|
|
TXV => $96
|
|
TAS => $95
|
|
TSA => $B5
|
|
}
|