8608/8608.asm
2024-08-11 02:39:37 -06:00

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
}