- Apple Macintosh Classic II ROM Issue: In the Macintosh Classic II's ROM, a mistake occurred that likely prevented booting. The Motorola MC68030 CPU accidentally prevented a crash by executing an undefined instruction.
- MAME and Mac Emulation: The author has been using MAME for arcade game support and Mac emulation. They were testing the command + power key combination in MAME's emulated Classic II and discovered booting issues in 32-bit addressing mode.
- ROM Analysis: Through debugging with MAME's debugger and using symbol maps from Macintosh Programmer's Workshop, they traced the cause of the boot failure. A bus error occurred when writing to an invalid address (0xFFFFABBA) due to an out-of-bounds table access.
- Classic II Architecture: The Classic II is based more on the Macintosh LC architecture. It uses an MC68030 processor and a custom VLSI chip (EAGLE). The ROM code contains references to the V8 chip used in the Macintosh LC.
- CAS Instruction Mystery: An out-of-bounds jump led to an unexpected CAS instruction (0x0CEC 0x08A9 0x0004) that changed the value of register A1. Different disassemblers had issues with this instruction, and it seemed to be modifying A1 on hardware.
- Hardware Testing: The author bought a Classic II, repaired it, and modified the ROM to test on hardware. Custom ROMs were created to verify the behavior of the code and the role of the CAS instruction. The results showed that the CAS instruction was fixing A1 and allowing the Classic II to boot.
- Emulator Implications: MAME is patching the bug out of the ROM to allow the Classic II to boot. There may not be a perfect Motorola MC68030 emulator, and further research is needed to accurately emulate this instruction.
- Lesson Learned: Emulators can reveal hardware bugs. This bug in the Classic II's ROM went unnoticed for a long time but was discovered through MAME emulation. It shows that bugs can exist in unexpected places and that some bugs may not have a significant impact.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。