What new opcodes were added to Motorola MC6801/MC6803?
Background for the question, and what I've figured out so far (correct me if I'm wrong):
The Motorola MC6801 (and MC6803) had an "enhanced instruction set"; it added 10 new instructions to the MC6800's base instruction set, expanding it from 72 to 82. Reading the 6803 instruction set summary, I've found 9 new instructions: ABX
, ADDD
, ASLD
, LDD
, MUL
, PULX
, PUSHX
, STD
and SUBD
.
For the tenth new instruction, it seems that ASLD
can use the equivalent mnemonic LSLD
(both with opcode $05
). It operates on the new D register, after all, so it must be new, but it seems a little strange to count an alternative mnemonic as a "new instruction", so I might be missing something here? Especially because the summary also lists new mnemonics for the other ASL
instructions (like ASLA
now has the synonymous LSLA
).
Curiously, the ASL
instruction with the addressing mode "indexed" is listed as opcode $68
, while the indexed LSL
has opcode $65
. I don't really understand why all the ASL
/LSL
mnemonics would be synonymous and have the same opcodes except the indexed one. I'll assume this is a typo, unless I'm missing something obvious here.
Of course, new instructions weren't all that was changed. New addressing modes for existing instructions were also added. At least one of them replaced an undocumented opcode on the MC6800: The infamous "HCF" instruction with opcode $9D
was replaced by a JSR
with direct addressing mode (as I briefly mentioned in this question).
I can look through the entire instruction set summary, checking off each opcode to find any new addressing modes, but perhaps someone here knows, or knows if there's a simple overview anywhere. And even if I have to resort to that, I can't really reconcile indexed ASL
/LSL
having two different opcodes, so a secondary source on that would be great either way to see if it's a typo or not.
So: Is there an overview of what new opcodes were added to this CPU, both new instructions and addressing modes?