• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Another IIci ROM hack

Trash80toHP_Mini

NIGHT STALKER
. . . use leaded and lead-free solder. They have about a 20 - 30C difference in melting point. But one would need a good controller on the oven . . .
For a 20 - 30 C differential, or for doing either in a toaster oven for that matter . . .

. . . an $18 Digital Oven Thermometer with a $2.00 Patio Paver acting as a Thermal Flywheel, you ought to do just fine. Crazy Glue a long lever to the control knob on a Goodwill Toaster Oven, mark your rough presets on the front of the oven in magic marker and you're good to go . . .

. . . for under $40 with a Digital Process Timer too! :approve:

...even if it looks like the DIY should be cheaper. Experience says it won't be...
Truer words were never typed . . . of course the JackLeg Approach RULZ! }:)

 

trag

Well-known member
Sorry if this is a dumb idea, I don't know much about what's going on. I know that on the IIci there's a jumper you take off to use the ROM SIMM slot (at least, I think that's how it works.) While the jumper is in place and the computer is on, is it possible to access the ROM SIMM slot using some sort of utility? If so, would it be possible to make a ROM SIMM that you can flash from the OS? Have a utility where you select a sound and maybe a couple icons for the startup process, it flashes the ROM, you then shut down, pull the jumper, then boot with modified ROM.
What jt said, although I also liked what one of my teachers used to say. "The only dumb question is the one to which you already know the answer."

If you leave the jumper on, and you insert a ROM SIMM, the computer will not boot up. So, in practice, no, you could not access the ROM SIMM with a utility while the jumper is in place, because you would never be able to boot the computer.

However, if you have a bootable ROM SIMM, it should be possible to build a ROM SIMM which is programmable in place. There are pins in the socket for WE_ and maybe for Vpp as well, but I have no idea how one would control the Vpp pin from the Mac OS. Apple built some programmable ROM SIMMs for other, later machines. At least, they have all the traces in place needed for programmability and those traces serve no other discernible purpose.

Of course, if something interrupted the process, you'd then have a useless SIMM until you could reprogram it some other way.

I'm blanking on the user's name now, but one of the fellows here traced all this stuff out. He put his results in the Wiki. Basically, that jumper controls whether the Chip Enable pins get a Low signal. Chip Enable is Active-Low. Which means that if it is high, the chip is disabled.

So, if you pull that jumper, the Chip Enable pins on the soldered-down ROM chips all go high and the soldered down ROM is disabled. The jumper doesn't affect the socket at all.

With the jumper installed, install a ROM in the socket and now you have two different ROMs living at the same address. Even if they have the same contents, it's likely to cause signal problems.

Now, pull the jumper and the logic board ROM is disabled, and the socketed ROM is solely in charge and things are good again. This is why you can't have both at the same time.

 

dougg3

Well-known member
Wow!

There has been a ton of discussion going on about this and I haven't been able to be in the middle of it since I've been at work :) I guess I don't know much about surface mount soldering. I was assuming we could just put some sockets on and call it good! I never considered that it might be difficult to solder, and it sounds like it is!

Another thing is the sockets take up a bit more space than just the chips by themselves, so we have to make sure there's physical room. I have some PLCC32 sockets here and those capacitors on my ROM SIMM are awfully close to where the sockets go out to! It looks like it'd probably fit, though.

My ROM SIMM design is nearly finished but I wouldn't trust it, I'm sure one of your guys' designs would be much more reliable. I started laying mine out before I realized that I could fit traces between each PLCC pad like the picture that tt posted does (and like the Gamba/trag layout appears to do too), so I have a bunch of unnecessary vias. I guess that wouldn't take much to clean up, though!

The GLSEE010 is the chip I was using in DIP form factor for my original hack. I also have some of them in PLCC form. For ROM expansion I was looking at the GLS29SF020 and GLS29SF040. Those are 2 megabit or 4 megabit each, so with four of them we could get 1 MB or 2 MB of ROM space. I can't find those particular models in my chip programmer's software, but they use the same pinout as many other similar chips so I would imagine that I could get them to work.

Luckily, the write enable pin is directly next to the VDD pin in the JEDEC x8 PLCC32 standard pinout, so we can easily connect the two together. Unless we want to program the SIMM directly from inside the Mac as olePigeon suggested. :)

 

bigmessowires

Well-known member
I'm way late to this party, and I don't even know what you guys are trying to accomplish, but it sounds interesting! A couple of thoughts:

- Most Flash ROM supports both high-voltage programming the (the VPP pin) as well as in-system programming at normal voltages. In-system programming typically requires sending some sequence of "secret codes" to the Flash to unlock it and prepare it for writing, which would all be documented in the datasheet. So theoretically it might be possible to reprogram the custom ROM SIMM from within the Mac, as was discussed. However this would require the read/write line to be physically connected to the ROM SIMM socket, which it may not be, given that writing to ROM is ordinarily non-sensical.

- You could put jumpers or a little DIP switch on the ROM SIMM, and use it to switch between multiple different ROM images without reprogramming. This would be cool even if in-Mac reprogramming is not possible.

- If the read/write line isn't physically connected to the ROM socket, you could still synthesize your own RW line with some additional logic. Say you've got a little CPLD or MCU on that ROM SIMM, and when it sees an "unlikely" memory access pattern of 4 specific nonconsecutive addresses in the ROM space, it could assert one of its outputs, which is connected to the Flash ROM's WE pins. Of course you'd need to write Mac-hosted programming software to flip through that address sequence to enable ROM writes.

- Even more crazy: could you run a little wire from the custom ROM SIMM to ROM select jumper, allowing you to switch between the built-in ROM and the ROM SIMM on the fly? Then you wouldn't even need an external ROM programmer.

 

Trash80toHP_Mini

NIGHT STALKER
WOOHOO! Five pages of Burnin' Yearnin' ROM hackin' madness! :cool:

That's just gotta be a record for a new recruit's first ever post/topic!

Hello everyone,
This is my first post, happy to have discovered this place! I've been lurking for the past weeks while working on my project. A year or so ago a coworker and I who are both classic Mac geeks were talking about how cool it would be to take a 68k Mac's ROM and modify it. We were mostly talking about changing the startup chime (but before anyone starts getting excited, I'm nowhere close to that yet).
Again, welcome to the 68kMLA, new chum! We haven't seen this kind of action around here in a long, long time.

Maybe never before in the hacks forum! 8-o

This kind of hackin' frenzy was more common over on 'fritter back in the day, but you sure have stirred up some kinda' nest, dougg3!

. . . not to mention the successes you've achieved in such a short time! ;)

Kudos to you, comrade!

 

dougg3

Well-known member
Most Flash ROM supports both high-voltage programming the (the VPP pin) as well as in-system programming at normal voltages. In-system programming typically requires sending some sequence of "secret codes" to the Flash to unlock it and prepare it for writing, which would all be documented in the datasheet.
I must be using some oddball ones that don't do both ;-) The GLS27SF010 that I initially used was programmable with the VPP pin, but as far as I know it didn't have any in-system programming method. I think the "erase" functionality was special though because I had to change a jumper on my programmer board to erase it. But the GLS29EE010 that I'm using now does not have a VPP pin and instead uses the "secret code" sequence combined with the write enable pin.

So theoretically it might be possible to reprogram the custom ROM SIMM from within the Mac, as was discussed. However this would require the read/write line to be physically connected to the ROM SIMM socket, which it may not be, given that writing to ROM is ordinarily non-sensical.
I'm pretty sure that signal doesn't come into the ROM SIMM (like you're saying, that's not surprising at all), so we'd have to find a place to patch it in there somewhere. I like your CPLD/MCU idea, that's probably a lot more doable given that it controls the WE pins itself and we just have to read from a special address. I wonder if it would need to have a working ROM during the reprogramming though? I know the app code would be running from RAM and I could disable interrupts while it's programming, but I'm wondering if a non-maskable interrupt of any kind is going to try to access ROM anyway. Or is a non-maskable interrupt typically used for something like the programmer's switch?

WOOHOO! Five pages of Burnin' Yearnin' ROM hackin' madness! :cool:
That's just gotta be a record for a new recruit's first ever post/topic!

Again, welcome to the 68kMLA, new chum! We haven't seen this kind of action around here in a long, long time.

Maybe never before in the hacks forum! 8-o

This kind of hackin' frenzy was more common over on 'fritter back in the day, but you sure have stirred up some kinda' nest, dougg3!

. . . not to mention the successes you've achieved in such a short time! ;)

Kudos to you, comrade!
Thanks jt! :) These are exciting times! If you had told me a month ago that I would have figured out how to do custom sampled startup chimes in a few weeks, there's no way I would have believed you! LOL. It's great to be in contact with all you awesome hacker types! I couldn't have done it without everyone's awesome help and information, that's for sure! I'm really excited to see where this hack goes next with the ROM SIMM stuff!

 

bigmessowires

Well-known member
Sounds like the GLS29EE010 might be a candidate for an in-system reprogrammable ROM SIMM then!

I'm pretty sure that signal doesn't come into the ROM SIMM (like you're saying, that's not surprising at all), so we'd have to find a place to patch it in there somewhere. I like your CPLD/MCU idea, that's probably a lot more doable given that it controls the WE pins itself and we just have to read from a special address. I wonder if it would need to have a working ROM during the reprogramming though? I know the app code would be running from RAM and I could disable interrupts while it's programming, but I'm wondering if a non-maskable interrupt of any kind is going to try to access ROM anyway. Or is a non-maskable interrupt typically used for something like the programmer's switch?
Good question. In theory I don't think you would need a working ROM during reprogramming, since it's my understanding that CPU code running at the highest interrupt level can't be interrupted by anything except the programmer switch. But there still might be other traffic on the address bus, maybe from DMA actvity or something?

Or maybe it's easier to forget about in-system reprogramming, and just use socketed ROMs and an external programmer like you were originally planning? I don't want to side-track the discussion.

 

dougg3

Well-known member
Ah yeah, I didn't think of DMA type stuff. I guess one way to find out would be to try it! :)

I think baby steps are best...once the SIMM is working in its basic form, then the cool stuff like in-system programming can be added. In system programming sounds like a neat idea, especially from the perspective of allowing anybody to change the ROM without needing any flash programmers.

 

trag

Well-known member
theoretically it might be possible to reprogram the custom ROM SIMM from within the Mac, as was discussed. However this would require the read/write line to be physically connected to the ROM SIMM socket, which it may not be, given that writing to ROM is ordinarily non-sensical.
I'm pretty sure that signal doesn't come into the ROM SIMM (like you're saying, that's not surprising at all),
I went and checked the pinout listed in the Wiki here. WE_ is indeed absent from the Mac II family ROM. I thought it was there, but I was confusing it with the 160 pin PowerMac ROM DIMM, which has WE_ and Vpp pins on the DIMM. And I've seen some reprogrammable modules in that form factor. But Apple didn't do that in the Mac II family.

So the most practical way to reprogram it in system is going to be to hack in a WE_ line and use the special codes method which Flash supports. Many (most?) flash chips don't even have a Vpp pin any more.

 

bigmessowires

Well-known member
After looking at that ROM SIMM pinout, I think it would be more difficult to make an in-system reprogrammable ROM than I first thought. The only control signals available to the ROM SIMM are CS (chip select) and OE (output enable). Even if you had a little CPLD or MCU on the ROM SIMM, that's not enough information for it to know when valid data is on the data bus, and should be latched into the ROM.

You maybe could take advantage of knowledge of the 68030 bus cycle timing to put something together. Assuming it's the same as the 68000 timing I've been studying, then I think this should work:

1. Latch the address at the falling edge of /CS

2. Latch the data at the rising edge of /CS

This should work, because the data is still valid at the end of bus cycle state S7, but the CPU's address strobe is de-asserted at the end of state S6, meaning the ROM's /CS will be de-asserted too. Unfortunately you can't latch both address and data at the same time without having access to more timing signals.

Now I kind of want to go pick up a IIci so I can experiment with this. I don't even own any Macs... what am I doing on this site?? ;)

 

olePigeon

Well-known member
The reason I asked was for idiots like me who wouldn't know how to program a EEPROM if their life depended on it. I wouldn't mind buying a flashable ROM SIMM and use an already made utility. :)

 

olePigeon

Well-known member
Now I kind of want to go pick up a IIci so I can experiment with this. I don't even own any Macs... what am I doing on this site?? ;)
Contributing to one of the awesomest Mac hacks ever devised and fulfilling some longstanding dreams of the technologically inept? :)

 

dougg3

Well-known member
Another option would be to make a SIMM that is flashable from a newer computer over USB or something like that. The FTDI USB chips are pretty cool--many JTAG adapters use them. They provide drivers for Windows, Linux, and Mac, so making a flashing app would probably be pretty easy. I'm a lot more experienced with that stuff than the Mac toolbox, too, which I quite honestly know nothing about. :) Dunno if those FTDI chips have enough pins to handle it though. I think I mentioned them briefly on one of the previous pages.

I just took a look at my surface-mount PLCC sockets (picture below) and I see what everyone is talking about. The plastic gets in the way of the pins so a soldering iron is pretty much impossible. I think I saw a tutorial somewhere where someone cut out the bottom plastic stuff and was able to hand-solder them with an iron, so that might be an option for hand assembly...there isn't much space to work with in there, though!

PLCCSocket.jpg

 

Trash80toHP_Mini

NIGHT STALKER
How about putting a serial port/CPU chiplet on the SIMM . . .

. . . and hot-wiring it to the IIci's Modem Port? :eek:)

p.s. I don't have a IIci either . . . not yet anyway! [:D] ]'>

p.p.s. If that's the same size socket as the one for the DeclROM in the Duo MiniDock . . .

. . . there was a wire wrap version available! Thru-holes ROCK!!! :approve:

 

bigmessowires

Well-known member
I agree you can likely find a through-hole or wire-wrap version of that PLCC socket. That one you've pictured doesn't look so great for soldering!

I really like the idea of making the SIMM flashable over USB! Is there physical space for a mini-USB connector on the end of the SIMM?

You could use one of those FTDI chips, or any common AVR using the free V-USB software. If you program each of the four ROMs on the SIMM one at a time, then you'd need 8 bits of data, 16-ish bits of address (depending on your ROM size), 4 individual write enables, 4 individual output enables, and one combined chip select, so 33 total I/Os by my accounting. Probably too many for an AVR or the FTDI, but you could use one of those in combination with a few shift registers. Shift in the address+data, then manipulate the control lines to read/write a byte.

 

Trash80toHP_Mini

NIGHT STALKER
:lol: I can just see it now! A 68030 based IIci with a freakin' USB Port installed on the backplane! :eek:)

I don't see why you couldn't design the SIMM to be higher a/o build an addition onto the inboard side . . .

. . . just make sure it stops off where the RAM SIMMs begin! }:)

 

dougg3

Well-known member
LOL...we could have some crazy board that hooks into a NuBus slot and the ROM SIMM slot at the same time! ;)

Thanks for the tip on V-USB. I had never heard of it, and it looks VERY impressive! I like the idea of an AVR in charge of the whole thing.

I don't think any more chips/connectors period will fit on the SIMM unless they went on the opposite side. Would probably need 4 layers for that.

The only thing with through hole PLCC is I'm not sure that traces can fit between the pins if those are used. It might make the board more complicated to route. :(

I think I have a SIMM layout but it probably needs refinement. Anybody interested in taking a look at what I've got and critiquing it? I made it in FreePCB, so I could post the file or a screenshot or something...

 

tt

Well-known member
I just took a look at my surface-mount PLCC sockets (picture below) and I see what everyone is talking about. The plastic gets in the way of the pins so a soldering iron is pretty much impossible.
I was laying out the different styles (SMT, through-hole) last night, and I am kind of mixed about which way to go. SMT would be easier to lay out but harder to assemble. I am thinking about doing a layout in Eagle CAD and having it open sourced like many Arduino projects. It would be cool if someone could check my work or join-in too. I can probably get an x-ray of a SIMM sometime soon to also use as a reference.

Almost done... :p

6101568151_81e1ee91e9_b.jpg.e174d8a4ee89a2bc463651f7447f3988.jpg


 

dougg3

Well-known member
Haha, sounds like we're on the same page here! Are you talking about looking at an existing SIMM's layout? I think that would be helpful to see, even if just the top and bottom without having to x-ray it.

 

dougg3

Well-known member
Here's what I have so far. I only have contacts on one side of the board but that should be easy to fix. I am thinking that the copper area for ground on the bottom layer is going to get sliced up pretty bad in the places where there are some traces bunched together on the bottom layer, so I should probably remove it from those spots? Also, I don't know if I put the capacitors close enough to the chips -- apparently they're supposed to be as close as possible? Maybe they could be on the other side of the board underneath the chips?

Any suggestions/critiques/whatever are totally welcome! I'm a newbie to board layout so I'm expecting to hear a lot of stuff that needs to be fixed. Or if trag or tt or whoever else has a better design I'm cool with that too :)

simm1.png

simm2.png

 
Top