Does that mean your prototype board is only receiving 256 cycle refresh? I would be surprised if that worked at all!Remember that the prototype is currently using system RA0 and RA8. Therefore, the 74253 is not needed at this stage.
Does that mean your prototype board is only receiving 256 cycle refresh? I would be surprised if that worked at all!Remember that the prototype is currently using system RA0 and RA8. Therefore, the 74253 is not needed at this stage.
What you did is awesome! You figured out the missing part to reproduce the entire address multiplexing as in the Mac Plus! I think what you did with that additional 74253 is what is programmed in BMU2.I finally figured out and fixed the sound issue with the 512 cycle refresh mod! As suspected, VA8 and HIGH being swapped between RA0 and RA8 results in some sound data being stored (initiated by the CPU) into a new location in memory, while the sound hardware for accessing memory is still expecting data at the old location. To visualize exactly how the sound hardware accesses memory, I added to the tables I previously made.
View attachment 76179
View attachment 76180
The differences are highlighted. Yellow highlight represents a known difference, and green represents an unknown. The Mac Plus table has gray text for RA9 to indicate that it isn't something the Mac 512K can be compared against.
The tables were expanded to include an additional logic input: DMA. The OE pins on the '253s are wired so they are only active when DMA is not occurring, which is anytime sound or floppy drive speed control is not accessing memory. One caveat is the '253 U13G which has its OE pin tied low, so it is always active. More on that later! The '257s OE pins are connected to active when DMA is occurring. They are the other source which creates the RA# lines, except they don't create anything for RA8 which is fully controlled by U13G.
On the Mac Plus, RA8 is created by a '253 and also as an output from BMU2. I don't know exactly what the logic in BMU2 does for RA8, but I took a guess which happened to work out.
For RA0, lifting pin 2 on U2F and tying it high, which follows the thought that swapping VA8 for HIGH when DMA is inactive means that we must also swap VA13 for HIGH when DMA is active, is correct. I suspected the missing part was that we must reintroduce VA13 for RA8 when DMA is active, specifically when C2M is high.
I achieved this by implementing another multiplexor. I used a '253 because it's what I have, but it could have been a '257 like the rest of the sound hardware memory access circuit. I only used half of the IC, so one OE pin was tied high to disable it. The half that I used I connected similar to the Mac's '257s for the sound hardware as follows:
Pin 1 (OEa): ~DMA - only active when sound hardware is accessing memory
Pin 2 (S1): tied LOW - never select A3 or A2
Pin 3 (A3): tied LOW - not used
Pin 4 (A2): tied LOW - not used
Pin 5 (A1): VA13 - selected when C2M is high
Pin 6 (A0): tied HIGH - selected when C2M is low
Pin 6 (ZA): RA8
Other input pins except power: tied low
Other output pin: floating
The remaining issue is that U13G is always in control of RA8, and we must make room for the new multiplexor to take control when sound hardware needs to access memory. I did that the same way the rest of the system's '253s do: by taking the OE pin for the implemented half o the IC (pin 1) and connecting it to the DMA signal.
Here's the resulting table for this logic, highlights indicate a change from the stock Mac 512K:
View attachment 76183
View attachment 76184
View attachment 76185
View attachment 76186
I cleaned up some excess solder paste and eliminated false contacts between several pins, particularly on the connections to the four 74244s. The soldered sockets on the LB are showing signs of wear from repeated removal and reinstallation of the prototype board.I’m excited to read about the results of this mod on your 512 refresh cycle memory!
By the way, I tried this 512 refresh cycle mod out on my 1024 refresh cycle memory with RA9 pulled high (also tried again with it pulled low, no change), and it didn’t worked. The audio sounds okay, but the screen is mostly black with a few pixels lit up during the memory test portion. Then finally goes completely black and hangs. I’m betting a poor connection exists somewhere, but in the spirit of baby steps, I’m more interested in finding out the result on your prototype than I am with messing around with 1024 refresh cycle memory at this time.



I can get a nice clear boot screen now, just by reseating some ICs in the breadboard and trying to make sure each wire is fully inserted. No noise on the screen, great clear audio on startup, but still fails with a sad Mac. Not sure if my DRAM ICs aren’t happy with only 512 cycle refresh even though RA9 is tied high, so it shouldn’t matter if those cells are refreshed. Without 512 cycle refresh DRAMs, I don’t think I’m going to be able to do much more for now. I don’t really want to move onto hacking my stuff up further to archive 1024 refresh until the 512 refresh is proven working.I’m excited to read about the results of this mod on your 512 refresh cycle memory!
By the way, I tried this 512 refresh cycle mod out on my 1024 refresh cycle memory with RA9 pulled high (also tried again with it pulled low, no change), and it didn’t worked. The audio sounds okay, but the screen is mostly black with a few pixels lit up during the memory test portion. Then finally goes completely black and hangs. I’m betting a poor connection exists somewhere, but in the spirit of baby steps, I’m more interested in finding out the result on your prototype than I am with messing around with 1024 refresh cycle memory at this time.
This is true. You’ll notice on the datasheet for my 1024 refresh cycle DRAM that its requirements are 1024 rows in less than 16ms. It’s all the same speed counter just with an extra bit. The “counter” for us is just video accessing memory to draw the screen. The order of the VA# lines and how and when they are connected to the RA# lines is what I believe makes the difference.Each refresh cycle must occur at least every 15 µs, so refreshing 256 rows takes less than 4 ms, and 512 rows takes less than 8 ms.
There’s not necessarily a precise time for this to occur other than before 4ms has passed since the last time it occurred. It doesn’t really matter if it happens out of order with respect to refresh row addresses. They don’t really care about the other rows, so long as each row gets refreshed within 4ms of the last time it was refreshed. In the case for your RAM, it’s 8ms for each row from the previous time it was refreshed. So maybe that’s what I meant instead of 4ms. I’m confusing myself…Meaning, this is only possible because the 9th bit (RA8) flips precisely at the appropriate time (method unknown), synchronized with the counter reset by the refresh circuitry, thereby covering the entire range.
Tying RA9 high or low should do the trick.I can get a nice clear boot screen now, just by reseating some ICs in the breadboard and trying to make sure each wire is fully inserted. No noise on the screen, great clear audio on startup, but still fails with a sad Mac. Not sure if my DRAM ICs aren’t happy with only 512 cycle refresh even though RA9 is tied high, so it shouldn’t matter if those cells are refreshed. Without 512 cycle refresh DRAMs, I don’t think I’m going to be able to do much more for now. I don’t really want to move onto hacking my stuff up further to archive 1024 refresh until the 512 refresh is proven working.
Probably you're right. But what a heck of a coincidence if it held true. That coincidence would need to happen for both possible values of RA8, for every possible unique address combination of RA0-RA7 twice, in order for my DRAM IC to have all of its rows properly refreshed before it passes 8 ms.Video isn’t the only thing that controls RA8 when C2M is high; if the CPU is regularly toggling A18, then it’s possible that the row would be refreshed frequently enough to maintain its data. I would chock it up to sheer coincidence, since Apple took all of these considerations into account when they designed the Mac Plus which we’ve seen the video memory addressing all swapped around to get VA0-VA8 in order with RA0-RA8 for C2M high for 512 refresh cycles.
To test the CPU A18 coincidental RA8 refresh theory, I suppose I could get my system working again by reconnecting the onboard RAM then use my oscilloscope to see if A18 is regularly toggled within 4ms only triggering when VID/~u is low, C2M is high, and ~RAS is low.
During the tune-up stage of the prototype build a few days ago, I encountered the same behavior. I noticed that the Sad Mac error code was always identical. The error code pointed me to bit QD6 (Write fail). It was a connection issue with QD6 of the 74LS244 (input buffer).I can get a nice clear boot screen now, just by reseating some ICs in the breadboard and trying to make sure each wire is fully inserted. No noise on the screen, great clear audio on startup, but still fails with a sad Mac. Not sure if my DRAM ICs aren’t happy with only 512 cycle refresh even though RA9 is tied high, so it shouldn’t matter if those cells are refreshed. Without 512 cycle refresh DRAMs, I don’t think I’m going to be able to do much more for now. I don’t really want to move onto hacking my stuff up further to archive 1024 refresh until the 512 refresh is proven working.
Thanks for the tip and the link! Definitely a loose connection on bit 12 and sometimes also bit 10. For a moment IT WAS BOOTING! But then it crashed. Since then it’s just been 031000 and 035000. I’ve wiggled, cleaned, reinserted, and everything I could think of.During the tune-up stage of the prototype build a few days ago, I encountered the same behavior. I noticed that the Sad Mac error code was always identical. The error code pointed me to bit QD6 (Write fail). It was a connection issue with QD6 of the 74LS244 (input buffer).
By any chance, is your error code constantly repeating?
This link was very helpful.
Generate an inverse signal of RAM-R-{W} with a 7404, and AND it with ~(RAMRD) to introduce some delay to the enabling of the added input buffers (74144s) with respect to the write enable of the expansion RAM.
Any feedback is welcome!

This is incorrect. I've simulated the MacSnap subcircuit and found that the system CAS signals are in sync with MCAS0F and MCAS1F signals. My apologies.Also, please note that the MacSnap board connects MCAS2F/MCAS3F signals to CAS0F/CAS1F (system CAS lines).
