From 0ad88508f794a1b25f605234f2d6eef015617cf4 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 8 May 2019 15:07:03 -0400 Subject: [PATCH] Removes ROM mirroring above $600000. --- Machines/Apple/Macintosh/Macintosh.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Machines/Apple/Macintosh/Macintosh.cpp b/Machines/Apple/Macintosh/Macintosh.cpp index c42bd8457..5b05f049e 100644 --- a/Machines/Apple/Macintosh/Macintosh.cpp +++ b/Machines/Apple/Macintosh/Macintosh.cpp @@ -165,8 +165,8 @@ class ConcreteMachine: memory_base = rom_.data(); word_address %= rom_.size(); - // Disallow writes to ROM. - if(!(operation & Microcycle::Read)) operation = 0; + // Disallow writes to ROM; also it doesn't mirror above 0x60000, ever. + if(!(operation & Microcycle::Read) || word_address >= 0x300000) operation = 0; } switch(operation & (Microcycle::SelectWord | Microcycle::SelectByte | Microcycle::Read | Microcycle::InterruptAcknowledge)) { @@ -286,14 +286,13 @@ class ConcreteMachine: void set_control_line_output(Port port, Line line, bool value) { /* Keyboard wiring (I believe): - CB2 = data (output) + CB2 = data (input/output) CB1 = clock (input) CA2 is used for receiving RTC interrupts. CA1 is used for receiving vsync maybe? */ if(port == Port::B && line == Line::Two) keyboard_.set_input(value); -// printf("6522 line %c%d: %c\n", port ? 'B' : 'A', int(line), value ? 't' : 'f'); } private: