From 9b2ed3594e7916b388f2b9f4db241f11a84c3828 Mon Sep 17 00:00:00 2001 From: gbeauche <> Date: Tue, 30 Jan 2001 07:27:23 +0000 Subject: [PATCH] - Faked VIA, SCCRd, SCCWr base addressed to scratch memory area in EMUL_OP_INSTALL_DRIVERS --- BasiliskII/TODO | 7 +++++-- BasiliskII/src/emul_op.cpp | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) 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; }