About a month ago, I was away from my machines, and as a form of entertainment, I made a PCB for adapting the 27C512-equivalent of the mac plus roms to 29F040's, which, if the 3 extra address lines were wired to the processor, would allow the full 1MB of address space from 0x400000 to 0x4FFFFF to be available.
After a series of problems with getting the board manufactured, they finally arrived today. Unfortunately, the board doesn't work as-is.
If I had bothered to trace out ROM sockets on the Plus before I started this project, I would have found that the /OE line of the ROMs goes to processor address line A17. This is how the ROM mirroring occurs in the stock configuration.
I think what I'll have to do is add an AND gate of A17-19 that goes to /OE. I might experiment with that later this weekend.
The address lines of the ROM socket are shifted up by one because the ROMs together form 16bits on the 16bit bus. So A0 of the ROM is connected to A1 of the 68000, through A15 of the ROM connected to A16 of the CPU.
The 28pin DIP ROM socket actually has the CPU's A17 connected to pin 22 of the socket. I think that's NC on the stock PROM, but it's Vpp on the 27C512 (commonly used for a replacement ROM), and on the 29F040 it's /OE.
I reworked my adapter board to connect chip select and output enable of the 29F040 to the stock PROM's single enable line, and connect socket pin 22 to A16 of the 29F040.
Then there's only 2 address lines left that need to be connected to the CPU directly, A17 & A18 on the 29F040 to A18 & A19 on the CPU.
After doing that, I could put 128k in the bottom of the 29F040's and fill the remainder with random garbage, and be able to match up the random values using the builtin debugger. So it looks like the project should work fine without any additional logic with those couple changes.
I updated the PCB and sent off for another one, but in the mean time I can play with my modified one. Time for some software hacking I guess.
Using my modified PCB adapter, I've got my Plus selectively booting from the 1MB of ROM.
The ROM is currently arranged:
$400000 - $41FFFF - The modified Plus ROM.
$420000 - $427FFF - ROM Disk driver and whatever else.
$428000 - $4FFFFF - ROM Disk image (884736 bytes).
The initial difficulty I had was the ROM Disk driver for dougg3's ROM SIMM would use the keyboard to decide whether to boot (hold down 'r', and it boots the ROM disk, hold down 'r' and 'a' and it copies the ROM disk image to RAM and boots that). However, I was finding the Plus wasn't registering keystrokes that early in the boot process. The current driver will put up the pirate icon and display the message "Please hold r now", and wait for 3 seconds. If you press the key combos in that 3 second window, it'll boot off the ROM disk image.
Attached is a video of a Plus booting a system 6 image.
So I'm confused from reading the previous messages, just wanted to clarify my understanding of the Plus's ROM socket. Is this correct? There actually is an existing enable line in the stock socket that is correct for the whole 1 MB of ROM space, and then there are CPU lines A1 through A17 available in the socket, so the only hack needed is to bring out the CPU's A18 and A19 lines?
How tough is it to grab those lines? Just solder directly onto the CPU?
Yup, your understanding is correct. I just have 2 wires from the board to A18 and A19. Right now, I'm using probe clips and a jumper wire from a header I installed on the board, although soldering to the CPU would probably be a little more reliable.
Gotta love socketed DIP chips for mods. One day I'll get around to taking another look at my notion to socket the Plus' SCSI controller and add an internal SCSI header to just such an adapter. That .2" (?) socket shift just reminded me of that back-burnered project.
Thanks! I do have a spare board I can send. I'll also post the gerber files and rom somewhere. I was refraining from posting it, and only making the adapters available bundled with a Plus, just to see if I could get rid of some of these Plus'. It hasn't been working out so well, so I'll just post it anyway.
Instead I turned the Plus' (and 512ke's) into the wall o macs: https://www.youtube.com/watch?v=jzHOvxWGfts
Got the ROM adapter board today - thanks! I need to order some Flash ROMs to go in it.
I was just thinking - if we connected the /WE on the Flash ROMs to the CPU's R/W pin, then we could write a program to re-flash the ROMs from within a running system! For playing with different ROM mods, that would be so much nicer than opening up the Mac, discharging the CRT, and pulling the ROM chips out each time. I actually just did something very similar on a different project, which by coincidence used the exact same Flash ROM chip. Maybe I'll see if I can do some cut and jumper work on this adapter board to connect the /WE pins, and see if I can get it to work.
Yeah, in system programming seems like it should be workable, especially if it's just programming the flash blocks that contain the disk image. Reprogramming the ROM its self will probably have to be done with interrupts disabled, since I think some of the VBL tasks run from ROM. But it would be super cool to get that working!