1st "Erfolgserlebnis" (sense of achievement):
1) The first 512 bytes in the m2.com
are a jump table, unusually coded
as first 256 low bytes then 256 high bytes.
2) while most instructions have no arguments, some instructions do 'ave 'em.
3) DE is the m-code program-counter.
is mainly running m-code.
Having found the jump-table, I can now see what each instruction does.
NB I've used a combination of passive and active analysis:
A) a (mostly) dis-assembled m2.com
(using a self-written disassembler
which follows jumps and calls and knows a dead-end when it sees one ;-)
and also allows me to specify entry-points for those cases where the
address is calculated.
B) Using Perl/Expect and a small helper to send/receive through the
serial line, I used a debugger to step through m2.com
on my SB180FX.
This showed a "JP (HL)" at more or less regular intervals, the value of
the accumulator was the currently decoded instruction.