As I understand from pictures: EmuTOS without Bus Errors has the same problems. So Bus Error behaviour on the hardware doesn't seem to be the cause.
Let's focus on the last picture.
sr=2700 means that interrupts are disabled, so the problem is very unlikely to come from interrupts.
pc=0000c7c0: This is indeed inside snd_init(). Again!
Disassembly is:
Code: Select all
0000c7ba: 42b9 0004 2464 clr.l $00042464
0000c7c0: 23fc 0000 c880 0000 05ac move.l #$0000c880,0x000005ac
opcode=42b9: Indeed. Exception is reported to the next line (offending or next line, depending on exception type. While previous line, causing the exception, is indeed $42b9.
Note that the offending instruction "clr.l $00042464" is completely harmless, it just puts 0 to an address just above 256 KB of RAM.
And see the error message: addr=77472464. The low word is OK (same low word as $00042464), but the high word is completely different.
Some possibilities:
- Hardware is completely broken and triggers Bus Error when writing at $00042464. I don't think so.
- EmuTOS code in RAM has become clr.l $77472464. Very possible, as that would indeed cause a Bus Error. Question is how could that be possible ?
Again, some ideas:
- Maybe the hardware has some floppy/DMA issue, and some words of EMUTOSUK.PRG are randomly trashed. (????)
- Maybe EmuTOS trashes itself in RAM at startup, due to a bug. But why does not that happen on other machines?
- Maybe some DMA access randomly trashes the RAM after EmuTOS is loaded. Would that even be possible?
Surprisingly, this happens precisely after writing to the YM2149 to initialize the I/O ports. Is this a clue of something?
Or maybe some random parts of EmuTOS are trashed, and this time the random innocent victim is YM2149 I/O initialization?
Code: Select all
0000c7a2: 7087 moveq #$87,%d0
0000c7a4: 11fc 0007 8800 move.b #7,$ffff8800
0000c7aa: 11fc ffc0 8802 move.b #$c0,$ffff8802
0000c7b0: 11fc 000e 8800 move.b #14,$ffff8800
0000c7b6: 11c0 8802 move.b %d0,$ffff8802
Or maybe just bad RAM at $c7bc ??
Or some weird issue on the address bus with high word or some addresses? I can't believe that, as GB6 couldn't run.