On Tue, Oct 4, 2016 at 4:02 PM, Ken Seefried <seefr...@gmail.com> wrote: > Dumb question...did the '451 have a mechanism to work around the > instruction restart issue in the 68000? Or was there some other way > that was handled?
The MC68451 was just an MMU. The bus fault problem of the MC68000 can't really be solved by an MMU; solving it in the general case requires a LOT of external logic, and/or a second MC68000. The Apple Lisa solved it in a specialized way by writing the software to never perform accesses from which bus fault recovery might be needed, except using a specific instruction which yielded predictable bus fault results. The MC68010/012, MC68020, and MC68030 didn't support instruction restart, but they supported instruction continuation, by having a bus fault or address error dump a lot of internal processor state onto the stack (known lovingly as the "stack puke"), and having the RTE instruction reload it. IIRC, the MC68040 and MC68060 supported instruction restart. I once wrote an address error handler for the MC68020 so that I could execute misaligned code. Very very slowly.