[sebhc] Rather serious H8/PAM-8 design flaw.
Dave Dunfield
dave04a at dunfield.com
Thu May 27 05:34:20 CDT 2004
>>--- how does it get back to PAM-8?
>On the next clock interrupt. PAM8's service routine checks to see if it's
>in user mode (mon led is out), and if so, it checks to see if the
>interrupted opcode is a halt, or if the RTM key combination is being
>pressed. In either case, it beeps and returns to monitor mode. Remember,
>PAM8 itself is designed to be a debugger!
This is a rather serious design flaw!
After interrupting ANY instruction (including HLT), the PC is advanced to the
byte afterward .. this means that to "examine" the instruction, PAM-8 has to
backup the stacked PC by one byte, and look for a $76 (HLT opcode).
Problem is - there's lots of mylti-byte instructions which end with $76.
Eg:
LDA $76xx <= Or STA
LHLD $76xx <= Or SHLD
MVI A,$76 <= Or any register
CPI $76
ANI $76 <= Or ORI, XRI
LXI H,$76xx <= Any register
JMP $76xx <= Any Jxx inst
CALL $76xx <= Any Cxx inst
PAM-8 has no way of knowing that the instruction just interrupted was HLT
or a multi-byte instruction ending with $76
Try this program on your real H8 (or the emulator - but It does happen
on the real H8 also - I have verified this):
ORG $2040
loop: MVI A,$75
JMP LOOP
As expected, it runs "forever".
Now, change the second line to: MVI A,$76
Volia - the program will immediately exit to PAM-8 - in fact, you CANNOT
keep it running with interrupts enabled.
Any code which occupies the $76xx block of memory is almost certain to have
Jxx and/or Cxx instructions ending with $76 - If there's any data stored in
that page, there is very likely to be LDA/STA/LHLD/SHLD/LXI instructions
which end in $76. Plus - even in non-$76xx blocks, there are plenty of
immediate instructions which might end in $76 for any program of significant
complexity.
This is basically a time-bomb waiting to go off - if an interrupt happens at
just the right time in a program containing ANY instruction ending with $76,
PAM-8 will halt the program and re-enter the monitor.
Wow!
Regards,
Dave
--
dave04a (at) Dave Dunfield
dunfield (dot) Firmware development services & tools: www.dunfield.com
com Vintage computing equipment collector.
http://www.parse.com/~ddunfield/museum/index.html
--
Delivered by the SEBHC Mailing List
More information about the Sebhc
mailing list