Mnemonic |
Operation |
Mode |
Status |
6800 Undocmented Instructions
|
HINZVC |
HCF
|
Halt and Catch Fire |
H |
------ |
NBA
|
AND Accumulators [A <= A & B]
|
H |
---**- |
|
Immediate Versions of STAA STAB STS etc
|
|
------ |
6811 Specific Instructructions |
HINZVC |
IDIV
|
Integer Divide 16 x 16
|
H |
---*** |
FDIV |
Factional Divide 16x 16
|
H |
---*0* |
MUL
|
16 multiply A x B
|
H |
------ |
DEY
|
Decrement index reg Y |
H |
---*-- |
INY |
increment index reg Y |
H |
---*-- |
STY |
Store Index reg. Y |
IDXE |
--**0- |
STD |
Store composite reg. D
|
IDXE |
--**0- |
LDY |
Load index reg. Y
|
IDXE |
--**0- |
LDD |
Load composite reg. D |
IDXE |
--**0- |
CPY |
compare index reg. Y |
IDXE |
--**** |
CPD |
compare composite reg. D |
IDXE |
--**** |
ABX |
Add acc.B to index reg.X
|
H |
------ |
ABY |
Add acc.B to index reg.Y |
H |
------ |
PSHX |
push index reg.X onto stack
|
H |
------ |
PSHY |
push index reg.Y onto stack |
H |
------ |
PULX |
pull index reg.X from stack |
H |
------ |
PULY |
pull index reg.Y from stack |
H |
------ |
XGDX |
exchange composite reg.D with X
|
H |
------ |
XGDY |
exchange composite reg.D with Y |
H |
------ |
TSY |
Transfer SP to index reg.Y
|
H |
------ |
TYS |
Transfer index reg.Y to SP
|
H |
------ |
ADDD |
add using composite reg. D
|
IDXE |
--**** |
LSRD |
logical shift right composite reg.D
|
H |
--0*** |
ASLD |
arith. shift left composite reg.D |
H |
--**** |
Miscellaneous |
HINZVC |
NOP |
No Operation |
H |
------ |
RTI |
Return from Interrupt [*not
supported] |
H |
****** |
RTS |
Return from Subroutine |
H |
------ |
SWI |
Software Interrupt [*not
supported] |
H |
-1---- |
WAI |
Wait for Interrupt |
H |
-1---- |
Status Flags |
HINZVC |
CLC |
Clear Carry |
H |
-----0 |
CLV |
Clear Overflow |
H |
----0- |
CLI |
Clear Interrupt Mask |
H |
-0---- |
SEC |
Set Carry |
H |
-----1 |
SEV |
Set Overflow |
H |
----1- |
SEI |
Set Interrupt Mask |
H |
-1---- |
TAP |
Set Status Mask [Flags<-AccA] |
H |
****** |
TPA |
Load Status Flags [AccA<-Flags] |
H |
------ |
Branch and
Jump |
HINZVC |
BRA |
Branch Always |
R |
------ |
BCS |
Branch if Carry Set [C=1] |
R |
------ |
BCC |
Branch if Carry Clear [C=0] |
R |
------ |
BMI |
Branch if Minus [N=1] |
R |
------ |
BPL |
Branch if Plus [N=0] |
R |
------ |
BVS |
Branch if Overflow Set [V=1] |
R |
------ |
BVC |
Branch if Overflow Clear[V=0] |
R |
------ |
BEQ |
Branch if Equal [Z=1] |
R |
------ |
BNE |
Branch if Not Equal [Z=0] |
R |
------ |
BLT |
Branch if < (signed) |
R |
------ |
BLE |
Branch if <= (signed) |
R |
------ |
BGE |
Branch if >= (signed) |
R |
------ |
BGT |
Branch if > (signed) |
R |
------ |
BLS |
Branch if Lower or Same (unsgn) |
R |
------ |
BHI |
Branch if Higher (unsigned) |
R |
------ |
BSR |
Branch to Subroutine |
R |
------ |
JSR |
Jump to Subroutine |
E,X |
------ |
JMP |
Jump Absolute |
E,X |
------ |
Stack and Index |
HINZVC |
CPX |
Compare X |
IDXE |
---*-- |
DES |
Decrement SP [SP <- SP - 1] |
H |
------ |
DEX |
Decrement X [ X <- X - 1] |
H |
---*-- |
INS |
Increment SP [SP <- SP + 1] |
H |
------ |
INX |
Increment X [ X <- X + 1] |
H |
---*-- |
LDS |
Load SP |
IDXE |
--**0- |
LDX |
Load X |
IDXE |
--**0- |
STS |
Store SP |
DXE |
--**0- |
STX |
Store X |
DXE |
--**0- |
TSX |
Transfer SP,X [X <= SP + 1] |
H |
------ |
TXS |
Transfer X,SP [SP <= X - 1] |
H |
------ |
Accumulator Only
==> NEMz can be either NEMA or
NEMB <== |
HINZVC |
ASLz |
Arithmetic Shift Left Acc |
H |
--**** |
ASRz |
Arithmetic Shift Right Acc |
H |
--**** |
LSRz |
Logical Shift Right Acc |
H |
--0*** |
ROLz |
Rotate Left Acc |
H |
--**** |
RORz |
Rotate Right Acc |
H |
--**** |
CLRz |
Clear Accumulator |
H |
--0100 |
COMz |
One's Complement |
H |
--**01 |
DECz |
Decrement Acc [A <- A - 1] |
H |
--***- |
INCz |
Increment Acc [A <- A + 1] |
H |
--***- |
NEGz |
Negate Acc [A <- 0 - A] |
H |
--**** |
PSHz |
Push Accumulator |
H |
------ |
PULz |
Pull/Pop Accumulator |
H |
------ |
TSTz |
Test Acc [A <- A - 0] |
H |
--**00 |
ABA |
Add Accumulators [A <- A + B] |
H |
*-**** |
CBA |
Compare Accumulators [A - B] |
H |
--**** |
DAA |
Decimal Adjust Accumulator [*not
supported] |
H |
--**** |
SBA |
Subtract Accumulators [A<-A-B] |
H |
--**** |
TAB |
Transfer Accumulator [B <- A] |
H |
--**0- |
TBA |
Transfer Accumulator [A <- B] |
H |
--**0- |
Memory Reference
==> NEMz can be either NEMA or
NEMB <== |
HINZVC |
LDAz |
Load Accumulator [A <- M] |
IDXE |
--**0- |
STAz |
Store Accumulator [M <- A] |
DXE |
--**0- |
ADCz |
Add with Carry [A <- A+M+C] |
IDXE |
*-**** |
ADDz |
Add [A <- A+M] |
IDXE |
*-**** |
SBCz |
Subtract w. Carry[A <- A-M-C] |
IDXE |
--**** |
SUBz |
Subtract [A <- A-M] |
IDXE |
--**** |
BITz |
Bit Test [Z and M] |
IDXE |
--**0- |
ANDz |
Logical AND [A <- A and M] |
IDXE |
--**0- |
EORz |
Exclusive OR [A <- A xor M] |
IDXE |
--**0- |
ORAz |
Inclusive OR [A <- A or M] |
IDXE |
--**0- |
CMPz |
Compare Memory [A - M] |
IDXE |
--**** |
ASL |
Arithmetic Shift Left |
XE |
--**** |
ASR |
Arithmetic Shift Right |
XE |
--**** |
LSR |
Logical Shift Right |
XE |
--0*** |
ROL |
Rotate Left Memory |
XE |
--**** |
ROR |
Rotate Right Memory |
XE |
--**** |
CLR |
Clear Memory [M <- 0] |
XE |
--0100 |
COM |
Complement Memory[M <- !M] |
XE |
--**01 |
DEC |
Decrement Memory [M <- M - 1] |
XE |
--***- |
INC |
Increment Memory [M <- M + 1] |
XE |
--***- |
NEG |
Negate Memory [M <- 0 - M] |
XE |
--**** |
TST |
Test Memory [M - 0] |
XE |
--**00 |