diff --git a/BasiliskII/TODO b/BasiliskII/TODO index 30aa108f..4c50c3d0 100644 --- a/BasiliskII/TODO +++ b/BasiliskII/TODO @@ -3,8 +3,11 @@ Bugs: - Something still seems to be wrong with the UAE FPU (Calculator and scroll bars in MacOS 8 don't work properly), Lauri has fixed this and it has to be integrated into the main sources -- Unix: real addressing mode: something is still deadly wrong there though it - works for example under Linux/i386. +- Real memory addressing: something is still wrong in the Unix part, though + it works under Linux/i386 +- Direct or real memory addressing: need to disable initialization of VIA, + SCCRd and SCCWr to invalid memory regions instead of patching them in + EMUL_OP_INSTALL_DRIVERS General: - Sony: rdVerify, Tag Buffer, DskErr diff --git a/BasiliskII/src/emul_op.cpp b/BasiliskII/src/emul_op.cpp index d6f43f3a..aa09f663 100644 --- a/BasiliskII/src/emul_op.cpp +++ b/BasiliskII/src/emul_op.cpp @@ -248,6 +248,22 @@ void EmulOp(uint16 opcode, M68kRegisters *r) WriteMacInt8(asc_regs + 0x800, 0x0f); // Set ASC version number WriteMacInt32(0xcc0, asc_regs); // Set ASCBase } + +#if (REAL_ADDRESSING || DIRECT_ADDRESSING) && defined(USE_SCRATCHMEM_SUBTERFUGE) + extern uint8 *ScratchMem; + + // Set VIA base address to scratch memory area + D(bug("Patch VIA base address [0x%x] to ScratchMem\n", ReadMacInt32(0x1d4))); + WriteMacInt32(0x1d4, Host2MacAddr(ScratchMem)); + + // Set SCCRd base address to scratch memory area + D(bug("Patch SCCRd base address [0x%x] to ScratchMem\n", ReadMacInt32(0x1d8))); + WriteMacInt32(0x1d8, Host2MacAddr(ScratchMem)); + + // Set SCCWr base address to scratch memory area + D(bug("Patch SCCWr base address [0x%x] to ScratchMem\n", ReadMacInt32(0x1dc))); + WriteMacInt32(0x1dc, Host2MacAddr(ScratchMem)); +#endif break; }