That USP does look odd, but then again I'm not sure if EmuTOS is supposed to have initialised it before that stage or not. It won't be running any usermode code until a bit later on.
Since it hasn't printed the result of the delay calibration I'm thinking it probably dies in there.
That code is sets up and counts TimerD interrupts over a number of loops.
You're getting an exception 100 which doesn't make any sense. There wouldn't be a service routine for that on a non-TT machine so that's probably why it crashes.
However, 100 is only a single bit different from a timerD interrupt (68) and given where we are in the code it seems like that could be a decent lead:
Code: Select all
01100100 : 100 : bogus interrupt
01000100 : 68 : timerD interrupt
^
The MFP is responsible for placing the interrupt number on the data bus D0-D7 so possibly
PD21 (mfp<->68150)
BD5 (68150<->buffer)
D5 (buffer<->cpu)
My gut reaction would be to double check for shorts on U103/U106 but the suspected bit doesn't seem to be adjacent to something that would force it high.
PD21 is routed to a bunch of stuff though and maybe the issue is there. I would get rid of things if you have them and see if anything makes a difference (cf card, isa cards)
A slower oscillator could be a good test too, in case your 68150 isn't entirely happy overclocked to 48mhz.
(not all frequencies will work but I used to go to a 25mhz one for debugging and PhilC has been using a 40 successfully)