Seeking Dove Marathon 030 Racer with cache for Plus/SE Accelerator Info (JED files, pics, or existing work!)

Builder68

Well-known member
You're making me feel properly guilty for not properly graphing how my projects work and instead just thinking about it real hard and hoping it matches reality 😂 or tinkering until it does.
Oh, please don't! I don't deserve as much credit as you may think! You have the gift of graphing all these in your head, plus all the patience and perseverance of tinkering during long hours and days! That's one of the true cores of this hobby, I guess.

Me? I could not even graph mentally the power connections :)

Much of the graphing can be done using DeepSeek and Mermaid in tandem. As always with AI, the real challenge is to deeply understand the problem you are facing, then parcel it into tiny, isolated compartments, write really well-thought-out prompts, make corrections, and re-feed them. Once you have a solid, 100% error-free block, add it cumulatively to the beginning of a new concept before writing it in the new prompt. AI helps you a lot with boring, repetitive tasks, helps avoid much reworking, and lets you visualize your understanding much better, making conceptual mistake detection far faster. In 5 years or so, I could not imagine what a single engineer could be able to do and how fast everything will be. Everybody talk a lot about AI creating software, but AI applied to EE engineering will be mind blowing in the years to come.

I recommend you try DeepSeek; it gives me the best results analyzing logic equations in Verilog and CUPL. It is very useful to anyone who works with or is into this hobby, learning how to (or advanced) program FPGAs, and for reverse engineering the logic of old-fashioned add-on boards for retro computers.

If I deserve any credit at all, it's for being 57 years old and still being so curious, and able to learn new things from almost zero.. :cool:



 

Builder68

Well-known member
Okay, now that we know the 'Micromac Performer' is a stripped-down version of the 'TSI Mercury 030' (many thanks to Bolle for highlighting it), all the pieces of the puzzle are starting to fall into place.

The TSI Mercury can be installed on any compatible Macintosh that came before the SE/30. The RAM expansion module is obviously meant for the 128/512K models.

Having the pin-out of the expansion port and its routing to the accelerator logic on the Mercury would be a great help. It would help me validate that my approach to adapting the logic for SRAM as primary memory is on the right path.

A simple example of this would be EXT.DTK. On the Micromac design, it's disabled (tri-stated), but I'm sure that signal is used as an acknowledge for the expansion RAM.

... or not! It's even better, this is an edit 20 minutes later:

The RAM expansion module seems to be 'FAST RAM,' with zero wait states. It connects exclusively to the 68030 in synchronous mode. So this expansion module is a performance enhancement for any Mac Model where the Mercury is installed. This is totally analogous to the 'Fast RAM' in Commodore Amigas. How cool is that?
 
Last edited:

Builder68

Well-known member
More progress...

The way the logic implemented on the TSI Mercury 030 accelerator seems to integrate 4MB of zero-wait-state SRAM is by repurposing (or should I say, giving back its original function to?) these tri-stated signals on the Micromac Performer's logic:

P2.A17 (U4): Would be called EXPRAM_CS for 0x000000–0x3FFFFF.
EXT.DTK (U3): Asserts combinatorially during SRAM access.
RAMCARD (U5): Disables logic board RAM when SRAM is active.
 

zigzagjoe

Well-known member
I was wondering how you came up with those graphs! I'd suggest, if possible, you might just use /STERM directly as it's likely unused, unless EXT.DTK kicks off something in the state machine that !AS being deasserted wouldn't do. That way you could manage two cycle read/writes to RAM. Unless DTK results in STERM rather than DSACK, in which case, nevermind :)
 

shirsch

Well-known member
It wouldn't do much good..... DuPAL and the like are useful for understanding pure combinatorial (A+B= C ) logic but stateful logic it is of much less use. Stateful logic is done with either registered (clocked flip flops A+B + CK = C) or feedbacks used to similar effect (A+B+C=C). Sometimes, both in one equation....

Since there's state inside the PLD poking bits at inputs and looking at outputs as fuzzers do will produce inconsistent results (so you know, at least, that there's a register) but recreating it requires a lot of work by hand.
Thanks for the clarification. But, on the bright side, I've run into a fair number of PALs with intact security fuses. One can always hope.
 

Builder68

Well-known member
Good point about /STERM.

My initial approach, using DSACK_FAST combinatorially, was primarily chosen for its straightforward implementation, especially when integrating with an asynchronous external bus like the Mac Plus's. The 15ns propagation delay of the ATF16V8B seemed perfectly adequate for achieving zero-wait states at 16MHz in that scenario.

You're right about DTACK not directly producing STERM; the 68030 does differentiate between DSACKx (which DTACK essentially translates to for asynchronous cycles) and STERM.

Implementing STERM for the fast RAM would indeed offer a more direct way to leverage the 68030's synchronous bus capabilities. That would involve adding a STERM output from U8 (New PLD addition) to the 68030's STERM pin. Of course, it would need to be active only for fast RAM accesses, staying deasserted during host accesses where the 030 would then rely on the existing DTACK_SYS+EX.

My plan to freeze the U4 state machine with !FAST_CYCLE would still be essential in a STERM setup, effectively taking the asynchronous bus logic out of the equation during synchronous cycles.

It's certainly an avenue to consider for a future iteration, perhaps a V2, once we've got the initial DSACK_FAST approach fully validated and stable. For now, continuing with DSACK_FAST for zero-wait states feels like the most direct route to get the core functionality established with the minimum necessary modifications to the current bus arbitration.

Appreciate the suggestions. This kind of input is exactly what I was hoping for. Thanks!"
 

demik

Well-known member
Following this closely as I've tried the SRAM + memory hole punch before and failed
Already learned a lot as usual.

I hope you will be successful in your build
 

JC8080

Well-known member
The GAL code on the Total Systems Mercury is basically identical to what ended up being the Micromac Performer. That also explains the decoding logic for 4MB of accelerator RAM being there because there was an optional DRAM board that would plug into the Mercury allowing up to 4MB of RAM. I‘ve also got the GAL dumps for that one as well as (unconfirmed) schematics in case you’re interested.
I have a working board with the RAM expansion. If you decide to base something on this design and run into a roadblock where having access to a working board would help, and you are in the US, let me know and I would be willing to loan it out for nondestructive reverse engineering.
 

Builder68

Well-known member
I have a working board with the RAM expansion. If you decide to base something on this design and run into a roadblock where having access to a working board would help, and you are in the US, let me know and I would be willing to loan it out for nondestructive reverse engineering.
This 32-bit RAM expansion module provides up to 4MB of 80ns RAM with zero wait states. Interestingly, the Total Systems Accelerator family brochure claims that the Mercury 030, when paired with this RAM expansion board, can match the performance of a stock SE/30. Adding the RAM expansion module could roughly double the Performer board performance!!.

I've spent some time analyzing the logic of the MicroMac Performer and would like to share some key takeaways from my findings. Assuming the MicroMac Performer uses the same logic as the Mercury 030, the RAM expansion module replace the onboard RAM with a faster one with zero wait states and dedicated 32-bit data path for the 68030.

All my analysis is based on the Macintosh Plus architecture and ROMs. I presume that this should also be valid for the SE and the Classic.

The CIIN Signal

On the MC68030 CPU, CIIN is used to selectively inhibit the on-chip cache on a per-bus-cycle basis. This provides dynamic, cycle-by-cycle control over caching.

The PLD logic for the CIIN signal is key. The equation for CIIN becomes active when the address on the bus is $400000 or higher.

o16 = (A22 AND A20) OR (A22 AND A21) OR (A23)

This logic ensures that for all addresses from $000000 to $3FFFFF, the CIIN signal remains inactive. This range represents a contiguous block of 4MB. This entire 4MB region is designated as the high-speed, cacheable memory space.

The address $400000 is the exact starting address of the Macintosh Plus's built-in ROM. Everything from this address onward in the memory map is dedicated to the ROM and the memory-mapped I/O devices of the original hardware.

The Mercury's designers chose this 4MB boundary for a very simple and elegant reason: below 4MB all memory is RAM. It is safe and beneficial to have this region be high-speed and cacheable.

At or Above 4MB: All memory is either the ROM or a hardware device. These regions are inherently slow and should never be cached to prevent data coherency issues.

By setting the CIIN boundary at the 4MB mark, the accelerator's hardware automatically and flawlessly switches between the two memory types, providing maximum performance for the fast RAM while maintaining perfect compatibility with the slower, original Macintosh Plus hardware.

The CDIS Signal

CDIS is a dedicated input pin on the MC68030 CPU that provides a hardware mechanism for permanently disabling the on-chip caches.

The CDIS signal on the Performer accelerator is a dynamically controlled signal that is actively managed by the PLD state machine.

rf14.D = i6 & !rf14 # i5 & !rf14 # !i8;
where rf14 is CDIS, i6 is FPUCS (FPU Chip Select), i5 is AS_30 (68030 Address Strobe), and i8 is RESET_30.

This is a D-type flip-flop equation for a state machine, which means the state of CDIS (rf14) is determined by the previous state and the current inputs.

The active control of CDIS seems to be part of a fine-grained, dynamic cache management strategy for the 68030 CPU.

The logic shows CDIS is asserted by FPUCS and AS_30.

The PLD's control over CDIS likely exists to handle very specific, real-time events that could cause cache coherency issues. For example:

FPU Access (FPUCS): The FPU is a separate processor that could be reading or writing to the same memory locations as the 68030 CPU's cache. To prevent a stale cache, the accelerator could momentarily disable the cache with CDIS during an FPU access to force a cache flush or a fresh read from main memory.

Bus Cycle Control (AS_30): The logic also ties CDIS to AS_30 (Address Strobe). This could be part of a complex sequence to ensure cache integrity during certain bus cycles, especially when transitioning between fast and slow memory regions.

The responsibility for hiding the RAM expansion during boot and for managing cache coherency falls on a combination of signals:

CDIS: The CDIS signal is a dynamic, on-the-fly control for specific, time-sensitive events (like FPU access) that could affect the cache.

CIIN: The CIIN signal is the primary mechanism for managing the memory map, telling the 68030 not to cache the slow, uncacheable regions (ROM and I/O).

The software driver is responsible for configuring the MMU's cache policy (write-through for the RAM region) and for de-asserting the CDIS signal to bring the RAM online after boot.

The DTACK_SYS+EX Signal (PLD U3)

The DTACK_SYS+EX signal is the combined DTACK signal that the 68030 CPU receives to confirm a data transfer is complete.

The equation for this output is: o15 = !i9 & i11 # i13 & !i9;

o15 is the DTACK_SYS+EX signal.

i9 is the DTACK signal coming from the Macintosh Plus logic board's TSM IC. This is a DTACK signal generated with wait states because the original Mac Plus bus is much slower than the 68030.

i11 is an input labeled P3.B10. On the MicroMac Performer, this is pulled high, but on the Mercury 030, I presume this signal represents the zero-wait-state DTACK from the Mercury 030's RAM expansion board.

i13 is an input labeled EXT_DTK. It's pulled-up and not used by the Performer board. This suggests it's an external DTACK input for an optional expansion not included in the standard design.

The logic works by interpreting the equation as a multiplexer or logic gate that selects the correct DTACK source:
DTACK_SYS+EX = (!DTACK_MAC_BUS AND DTACK_HIGH_SPEED) OR (DTACK_EXTERNAL AND !DTACK_MAC_BUS)

Essentially, the Performer board uses this logic to choose between a fast DTACK and a slow DTACK based on which memory region is being accessed.

High-Speed, Zero-Wait-State Access: When the 68030 accesses the "FAST RAM" (the first 4MB) on the expansion board, the CIIN signal is inactive. The logic on the expansion board recognizes this and responds with a fast DTACK. This signal is then fed into the Performer board as input i11 (P3.B10). The logic on U3 sees this and immediately passes it to the 68030 as DTACK_SYS+EX, completing the bus cycle with zero wait states.

Legacy, Wait-State Access: When the 68030 accesses a memory region on the original Mac Plus logic board (like the ROM or I/O ports), the CIIN signal is active. The DTACK_SYS+EX logic on the Performer board will ignore the high-speed DTACK (i11) and wait for the slower DTACK signal from the Mac Plus bus itself (i9). The slower Mac Plus bus provides a delayed DTACK, which the accelerator passes to the 68030, adding the necessary wait states.

The MMU

The MMU is enabled by hardware. The MMU's configuration, specifically the setup of the write-through cache policy, is handled by the Performer's software driver.

Here's a step-by-step model of how the system most likely works:

Boot-up (Hardware Only): The Macintosh Plus powers on. The Performer accelerator takes control and starts the 68030. Since the MMUDIS pin is tied high, the MMU is enabled, but its configuration is in a default, undefined state. Because CDIS is active during boot, the RAM expansion is not accessed, and this lack of MMU configuration doesn't cause any issues.

The system boots using the native Mac bus (onboard RAM).

Once the OS is running, the Performer's INIT loads into memory.

The driver writes to the 68030's MMU registers. It will define the 4 MB of RAM (which contains the video and sound buffers) as a transparent segment with a "cacheable, write-through" policy by writing specific values to the MMU's Transparent Translation Registers (TTRs).

After the driver has configured the MMU, the 68030 can access the Mac's memory. When it writes to the video or sound buffers, the MMU automatically enforces the write-through policy, ensuring that the data is immediately written to main memory and remains coherent with the video and sound DMA controllers.

If all of the above is on the right track, it is less complex to come up with a custom memory expansion board using SRAM. All additional logic would be just for the SRAM controller, and a PLD like the G22V10 would probably be sufficient.

Another key point is how the Performer switches between the 16-bit data bus and the 32-bit data bus (handling of DSACK0 and DSACK1 for the fast RAM module). This logic is not present in the Performer board and could also fit into the G22V10. I'm working on it now, but it's not ready to throw out into the wild yet
 
Last edited:

zigzagjoe

Well-known member
I'm not going to try to digest all that.... it appears riddled with errors as is fairly typical with AI LLM output. Couple comments, though.

I would be surprised if they are inhibiting cache for the ROM forever. That would give up a lot of performance, especially with quickdraw routines. There likely is a mechanism to allow caching ROM.

The FPU stuff is all wrong... the 6888x doesn't do DMA and doesn’t need cache coherence. Actually, tugging on CDIS randomly will cause the cache to become incoherent. It is likely CDIS is set at reset and cleared later.
 

Builder68

Well-known member
Okay, I think it's time to close this thread, at least for me.

As a closure, I'll provide a recap of what I believe is the most useful and worthwhile information learned from it.

I've created a board that integrates the Performer accelerator with a SCSI interface and can selectively have the ROM-INATOR ROM or the Mac Plus ROM installed on it. The first PCB run had some mistakes, which were easily fixed. The board is fully working as expected, but I want to spend more time doing more extensive testing before publishing everything on my GitHub page.

I started this project without knowing much about the Performer accelerator and how it works. I was trying to figure out the chances of adding a dedicated cache to it and wrongly assumed the board was a rebranded version of the Dove Racer 030.

Then Zigzagjoe helped me by pointing me in the right direction: Instead of adding a dedicated cache (which isn't implemented on either the TSM 030 or the Performer), developing a "fast RAM" expansion would be a more elegant and powerful solution.

Right after that, Chesestraws suggested I investigate more about virtual capabilities, given my lack of strength on the software side (writing an INIT to configure the 68030's PMMU to enable fast RAM is surely not my thing, nor is it fun for me). If I had listened to his advice sooner, it would have led me to realize much sooner that the Performer drivers are already tailored to configure the accelerator to include 32-bit RAM.

Then I tried to dive into the logic of the Performer, without yet knowing if it could be repurposed with slight changes to incorporate the fast RAM. It was crazy, but it felt so rewarding in the end. I somehow started to grasp the core of this design and appreciate how clever it is. This board is one of the simplest you can find, yet its logic is robust, elegant, and already tuned for exactly what I was looking for.

Then I learned from Bolle that the Performer is a "tripped-down" version of the TS Mercury 030, without an expansion connector but with the same PLD logic implemented. Digging into the TSM 030 board, I learned that TSM actually offered an expansion board for this accelerator model that precisely adds a full 32-bit data path RAM. (By the way, a SCSI interface expansion board was also available, which TSM claimed could reach data transfer rates of 1.2 MB/s).

I believe Bolle also said, if I understood correctly, that he has the GAL dumps for the logic of the RAM expansion board and some unconfirmed schematics.

This information would certainly be a huge leap forward in the development of the fast RAM functionality for the Performer Fusion. It would also, of course, imply that this RAM expansion could be added with a slight modification to the original Performer cloned board (the one for the Mac Plus, SE, and Classic) to implement this RAM expansion.

For fun and as a challenge, I've been trying to advance this RAM expansion development without those GAL dumps and draft schematics, with some success.

I really hope someone out there picks up this work in progress and finishes what I started, and that a cloned version of this RAM expansion board that works with the Performer accelerator can be brought to light soon. Many thanks to all of you for your comments and help. It was fun... until it wasn't anymore.
 

Bolle

Well-known member
I believe Bolle also said, if I understood correctly, that he has the GAL dumps for the logic of the RAM expansion board and some unconfirmed schematics.
Oh crap, I totally forgot about that...
The GALs are available over here on the PLD archive and see the attachment for the schematics if the RAM board.
 

Attachments

  • Mercury.pdf
    25.3 KB · Views: 11

zigzagjoe

Well-known member
I definitely don't want to discourage you from having fun with your projects. Definitely not my intention. You've done some good stuff for the 512K and that takes skill. I'm just cautioning against taking what AI verbatim as it will cause small errors to snowball into big errors. That eats time, money, and ultimately enjoyment.

Personally, I've had good success pulling vintage logic into a CPLD. There you can thrash on it to your heart's desire until you fully understand how it works. Just reprogram in system until things start to look right under the LA. It's less scientific, but a lot easier to iterate on.
 

Builder68

Well-known member
I definitely don't want to discourage you from having fun with your projects. Definitely not my intention.

No worries at all! I appreciate the support..

You've done some good stuff for the 512K and that takes skill. I'm just cautioning against taking what AI verbatim as it will cause small errors to snowball into big errors. That eats time, money, and ultimately enjoyment.
Thanks for the kind words and the heads-up. I totally agree that AI is a tool and no replacement for good judgment. I've been using it for the tedious parts and to learn common tricks for 90s PLD logic. So far, it's been a huge time-saver and the results have been great. Your point is key, though—it's what helps me avoid getting trapped in a rabbit hole.
 

Builder68

Well-known member
The GALs are available over here on the PLD archive and see the attachment for the schematics if the RAM board.
I've redrawn the PLD section of your schematics. Thanks again for sharing these; it's great to have them, even if they're unconfirmed.



PLDs section.png
Could anyone with this TSM RAM expansion board please share high-resolution photos of the front and back? I'm hoping to confirm a few details:

I'm missing connections on JP4 and assume they're identical to JP3 and JP2. Can anyone confirm this?
Is the clock signal at pin 1 of RU9 the same as at pin 1 of RU8?
Pin 12 of RU9 shows no connection on the diagram. Is that correct?

I also find it interesting that the multiplexers are the only things feeding the outputs of the RA lines (RA8 and RA9 are generated by PLD logic, just like a 74257 would). This suggests the RAM refresh is likely handled in the software, assuming the method used is "RAS only refresh"
 
Last edited:

Builder68

Well-known member
There's a good chance that DRAM ICs with 1024 refresh cycles will work. I know this because Max1zzz used them on his ITX Plus board without any issues, and his schematics showed no modifications to the glue logic that multiplexes the addresses to 10 bits. Given this, I believe the DRAM ICs on my RAM expansion board for early Macs should also work.

Although I don't fully understand why they work, I suspect it's because the refresh counter and the address generator—which cycles through all 1024 possible address rows for the DRAM ICs and asserts RAS within 16 ms—is part of a subroutine embedded in the ROM.

I'm not worried about this being 'AI gibberish' because if it's gibberish, it's my gibberish! Jejejeje.

RAM_section.png
 

Builder68

Well-known member
I've redrawn the PLD section of your schematics. Thanks again for sharing these; it's great to have them, even if they're unconfirmed.



View attachment 89510
Could anyone with this TSM RAM expansion board please share high-resolution photos of the front and back? I'm hoping to confirm a few details:

I'm missing connections on JP4 and assume they're identical to JP3 and JP2. Can anyone confirm this?
Is the clock signal at pin 1 of RU9 the same as at pin 1 of RU8?
Pin 12 of RU9 shows no connection on the diagram. Is that correct?

I also find it interesting that the multiplexers are the only things feeding the outputs of the RA lines (RA8 and RA9 are generated by PLD logic, just like a 74257 would). This suggests the RAM refresh is likely handled in the software, assuming the method used is "RAS only refresh"
I have corrected the previous schematics where JP4 was wrongly connected to RAS.
Screenshot 2025-08-04 at 9.07.21 AM.png
 

Builder68

Well-known member
There's a good chance that DRAM ICs with 1024 refresh cycles will work. I know this because Max1zzz used them on his ITX Plus board without any issues, and his schematics showed no modifications to the glue logic that multiplexes the addresses to 10 bits. Given this, I believe the DRAM ICs on my RAM expansion board for early Macs should also work.

Although I don't fully understand why they work, I suspect it's because the refresh counter and the address generator—which cycles through all 1024 possible address rows for the DRAM ICs and asserts RAS within 16 ms—is part of a subroutine embedded in the ROM.

I'm not worried about this being 'AI gibberish' because if it's gibberish, it's my gibberish! Jejejeje.
That was indeed gibberish. It's more likely that the RAM expansion board uses the Macintosh Plus's existing DRAM refresh address generation logic. It would use its own clock (a frequency divider made from a flip-flop arrangement) to trigger the refresh cycle. However, instead of generating the address itself, it would wait for the correct moment in the bus cycle to latch onto the refresh address being output by the memory controller logic on the system board. This means the RAM expansion board could well handle RAM ICs with 1024 refresh cycles
 

Builder68

Well-known member
That was indeed gibberish. It's more likely that the RAM expansion board uses the Macintosh Plus's existing DRAM refresh address generation logic. It would use its own clock (a frequency divider made from a flip-flop arrangement) to trigger the refresh cycle. However, instead of generating the address itself, it would wait for the correct moment in the bus cycle to latch onto the refresh address being output by the memory controller logic on the system board. This means the RAM expansion board could well handle RAM ICs with
I need to clarify a confusing comment I made earlier and provide an update on the current status of this endeavor.

After several weeks of thorough signal analysis with an oscilloscope, I can now confirm with 100% certainty that this RAM expansion board uses the CBR (CAS before RAS) refresh method.

I consider the use of the CBR method to be good news. It implicitly eliminates the need for external address row generation that would otherwise be required to match the specific number of refresh rows (512 or 1024 cycles) needed for the DRAM.

Since the CBR method uses the DRAM IC's internal address row counter and the address bus value is a "don't care" during the refresh cycle, this approach can happily refresh 512 or 1024 rows indiscriminately, as long as the DRAM IC complies with the timing specifications of the original 1 bit x 1Mb DRAM ICs.

I'm aiming to avoid using the obsolete and scarce 30 pin SIMMS 80 ns DRAM ICs that came with the original RAM expansion board.

Furthermore, relying on double 30-pin SIMM sockets is impractical today and would significantly increase the overall cost of the new board.

While the new prototype isn't yet functional, I strongly suspect the issues lie with the DRAM ICs I chose initially.

I thought EDO RAM would be compatible, as it was with my standalone 4MB expansion board by simply ORing the CAS signals and feeding the result to the OE pin. However, DRAM-specific timing violations are seen during booting, provoking a hang right after the slow RAM check routine and just as the ROM attempts to mirror itself to the fast RAM. It looks like EDO RAM is more compatible with FPM RAM waveform timings when RAS-only refresh is used instead of CBR refresh. RAM.WE appears to be one of the signals involved in the conflict.

The control logic appears sound. I had to replace the JEDEC file for PLD U3 on the accelerator with the version specific to the Mercury 030 due to a change in how the NOFC "filter" signal is generated compared to the Micromac Performer logic. Apart from that, everything on the oscilloscope looks correct.

Here is a super-oversimplified and brief explanation of the RAM expansion logic:

The PLD logic on the Fast RAM board instructs the MC68030 to toggle the data bus size between 16-bit and 32-bit at the precise timings and within the specific address region required by the Macintosh Plus / 512K hardware to access the screen buffer in system RAM.

The P2.A17 signal controls this toggling based on its address decoding of the Fast RAM space (located where the slow RAM is normally). When the 4MB RAM board is detected (via the RAMCARD signal) and the 0WAIT jumper is closed, P2.A17 selectively decodes the top 32KB address region of the first 4MB.

Accessing this address region returns bus control to the accelerator logic in 16-bit mode. The accelerator board then takes over, ensuring the 68030 reads the screen buffer from the appropriate slow RAM region, while the DBFR.OE signal from the Fast RAM expansion board logic isolates the upper 32-bit word / 16-bit bus path to the 32-bit DRAM (those 74245 transceivers).

Whatever the real address space of the screen buffer is, I have to admit I don't yet fully understand how the accelerator board handles this. Specifically, I'm unsure whether the buffer is remapped elsewhere in RAM or remains in the location specified by the ROM. Ultimately, it is the accelerator board's task to manage the interleaving between the Mac Plus's video hardware logic and the 68030 CPU, just as the MicroMac Performer does.

I'm expecting a new batch of FPM DRAM type soon, and hopefully, in a few weeks, the "Performer Fusion" will be up and running with 4MB of fast RAM! 🚀. The new board is a single, all-in-one upgrade that brings Macintosh SE/30-level speed and responsiveness to a Macintosh 512K.

The unconfirmed schematics for the Total Systems Mercury RAM expansion board, shared by Bolle, have been instrumental in reaching this stage, and I really hope I can confirm soon that they are essentially valid! Thanks again, Bolle, for your effort in reverse engineering all these upgrade boards for the early Macs!

Note: No LLM support or assumptions were used, other than for help with grammatical corrections. (English is not my native language.)
 
Top