• Hello MLAers! We've re-enabled auto-approval for accounts. If you are still waiting on account approval, please check this thread for more information.

Another IIci ROM hack

Thanks ojfd -- that looks interesting, especially the part where it extracts ROM resources. It could come in very handy for locating things.

Unfortunately, it only automatically extracts the normal system ROM. I had to throw together a custom utility to tell it to extract an additional ROM that I don't believe would be detected by ROMmie.

 
That sounds like a great utility, might it work for the DeclROMs on cards or inside DuoDocks?

. . . if you guys keep going on about page numbers eventually you will have enough that they artificially inflate the count.
:lol: Look again! If you'll notice, most of the pagecount comments are addenda tacked onto real posts as edits, and therefore, do not add any padding to the pagecount, nor the replycount! :p ;) :o)

I'm going to try to fire up my IIsi and run the test listing tonight, BTW! :approve:

 
Great! Now that I've found some interesting stuff in where the Daystar ROM maps itself, I'm very interested in how the IIsi's memory is laid out...

Meanwhile, I'm in the middle of laying out the SIMM programmer board. I actually have everything laid out and routed (thanks to the EAGLE autorouter!) but some of the autorouted traces are ridiculous so I'm making them better.

 
Wooo, working ROM disk.

It's getting late (for me), but I thought I'd share my progress so far.

I'm using a IIx with a IIsi ROM image in the ROM SIMM. The IIsi ROM image is 512KB, but the IIx maps a full 1MB of ROM SIMM into the address space starting at 0x40800000. This leaves 512KB available to play with (the original IIx ROM is 256KB, so even more space if you want IIx ROMs). I've placed a disk image from the 512KB to 1MB section of my ROM SIMM. The disk image was created on OSX with dd(1), and initialized with a filesystem and populated with stuff using minivmac.

I then modified my memdrv driver to point to 0x40880000 where the disk image resides in ROM. So, I now have a mountable ROM disk.

My modified driver & loading app, along with source, are at: http://synack.net/~bbraun/romdrv0.1.sit.hqx

At the top of romdrv.c are two constants controlling the location of the disk image, and the size, so if you've got a different setup, hack away!

Once again, don't quit the loaddrv app with the ROM image mounted, if you do, it unloads the driver from memory and you now have a disk without a driver. I plan to convert this to an INIT soon to avoid that problem.

 
» 21 Nov 2011, 02:30Wooo, working ROM disk.
8-o Wooo? :lol: Nicely done understatement! I think it's time for another Chapter to be added to the index.

This thread is turning into a nice outline for a MacHackinBook!

I'm using a IIx with a IIsi ROM image in the ROM SIMM. The IIsi ROM image is 512KB, but the IIx maps a full 1MB of ROM SIMM into the address space starting at 0x40800000. This leaves 512KB available to play with (the original IIx ROM is 256KB, so even more space if you want IIx ROMs). I've placed a disk image from the 512KB to 1MB section of my ROM SIMM.
Now I'm confused, imagine that . . . ::)

Have you got the IIx ROM disabled or is it still active on the MoBo? Are you using the ROM SIMM in expansion mode or boot mode?

I was under the impression that if you have the MoBo ROM disabled that the Memory Mapping would come from the Code on the ROM SIMM.

I'll have to delve back into GttMFH2E to noodle out the differences between the Macs using a ROM SIMM for Boot ROM Replacement Only and those that are also listed as using the ROM SIMM (?) as Firmware Memory Expansion/Storage.

:?:

 
AFAIK, the IIx does not have mobo rom, and works exclusively off the SIMM. I removed a stock SIMM to use dougg3's SIMM. It appears 1mb is mapped in by default, although only 256k is used by the stock IIx rom and 512k is used by the IIsi rom. I literally just concatenated the disk image to the end of the IIsi rom, burned it, and stuck the SIMM in the mobo.

 
That's really odd, check to see if more than the IIsi's three addresses for PseudoSlots are available.

How many NuBus Cards are in your IIx now, in which slots, and are they all functional? :?:

You may have just downgraded your IIx to a 32 bit clean IIcx which of the IIx's NuBus slots are enabled and which are disabled ought to be a match to the three addresses available to the stock IIsi.

My guess is that there is something on the II, IIx, IIcx and SE/30 MoBos that causes them to require MODE 32 which they bought/ransomed from Connectix for an undisclosed quantity of MEGABUCK$ and added it to all later Mac ROMs. In this scenario, giving away MODE 32 at no charge for running on all those machines as a software patch of the existing firmware, which of course, saved Apple some of those MEGABUCK$ in the form of new ROM SIMMs they didn't need to supply for all those, pruportedly 32 bit computers in the field, that were 24 bit limited by the ROM BooBoo fiasco.

The alternate scenario would be . . . :?:

Way to go, Connectix! Stick it to the man! (Apple) :lol:

Interesting questions! ;)

< trots off to make coffee . . . xx( >

 
Huh, I thought the IIsi ROM in the IIx was a common thing.

I've got all slots filled, ethernet and video on opposite outer extremes and I use those constantly. 2 Rockets and a 2 slot Mac286 card fill out the rest. I've noted the oddities with the Rockets in the Peripherals forum, but RocketShare is up and working fine at this point. The Mac286 requires 24bit addressing though, so :/

 
I've placed a disk image from the 512KB to 1MB section of my ROM SIMM. The disk image was created on OSX with dd(1), and initialized with a filesystem and populated with stuff using minivmac.
I then modified my memdrv driver to point to 0x40880000 where the disk image resides in ROM. So, I now have a mountable ROM disk.
Wow! 8-o That is really cool! I haven't looked at your code yet, but I'm wondering if it could be adapted to mount larger/more floppy images using the floppy emulator I've been building.

Great job!

 
< . . . slurp . . . >

I don't know, that's why I'm curious!

The backwards compatibility built into the 32 bit clean Mac ROM SIMMs would be explained by the scenario I mentioned. If MODE 32 had been ineffective for any given Dirty ROM Mac due to some oddball configuration of Memory, Expansion Cards or any of a multitude of variables, all Apple would need do to fix the issue for those owners would be to ship them a ROM SIMM that was already in production or excess stock after the Mac it was intended for went out of production.

Curiouser & curiouser . . . :?:

< . . . slurp . . . >

 
I'm wondering if it could be adapted to mount larger/more floppy images using the floppy emulator I've been building.
It's practically a stubbed out driver, since the only real work it has to do is copy memory when a read operation is performed. Everything else is just glue. It took a while initially to figure out all the glue of how to create a driver, how to load a driver, and how to get a disk mounted, but hopefully it's something that can be built on.

For the floppy emulator, I suspect you'll need to do actual work in the driver, talking directly to the hardware. Which also means coexisting with or replacing the existing floppy driver. Replacing a driver in RAM is pretty easy to do, you just hijack its entry in the unit table, which can be done from the driver loading code, the trick is making sure it's not already in use when you steal its entry. Once stolen, you can keep a reference to the old driver, and try to pass through calls to it if needed.

 
So you're only getting access to the first 1 MB of the SIMM from the IIx, too? That's interesting...

What version of the system are you running it on? When I boot from my "ultra-long startup chime" ROM that fills up most of the 2 MB address space, and try to dump $40900000 with MicroBug in System 7.0.1 on my IIci, it crashes. And I get weird results in other locations where the ROM is supposed to be mapped other than at $40800000 (like $40000000). But when I do it in System 7.6, it shows the correct data. Could the installed OS version be playing a part in this?

I think it's time for another Chapter to be added to the index.
Me too!

 
I seem to recall that there's a key combo on one of the older Macs that'll actually boot a System from ROM.

Is that something we could do here? If we put a big enough chip on the ROM, could we put a full System 7 install on ROM and add (if possible) a key combo to boot from that address space?

 
You're thinking of the Classic, and it has been discussed in this thread. Ultimately, it would be fun to have something similar. But, one step at a time. I've been banging my head on this INIT thing.

What version of the system are you running it on?
On the IIx I've got 7.1.1Pro. On the Q700, I've got 7.1 (it's what A/UX 3 uses, so hey). The OS could definitely be changing things here, since it sets up the MMU for these machines.

 
I tried Command & Power Button, no DeGubber appeared on my IIsi. Id there a reset button somewhere inside the box . . . forgot to look on the front, nothing shows on the sides on a cursory inspection. I'll hit the DevNote, etc.

 
Looks like the IIsi does not even have MicroBug, so you need MacsBug for command-power to work. Sorry, I didn't realize it was so different. It's not a big deal if you don't want to bother--I thought it was going to be a quick and easy test but the IIsi has foiled me once again! :)

http://support.apple.com/kb/TA44702

 
Here is what my programmer PCB layout looks like right now. I've fixed many ridiculous traces and there may be other ones I can make better too:

SIMM-2011-11-20.png

SIMM-2011-11-20-top.png

SIMM-2011-11-20-bottom.png

Suggestions/criticisms are welcome!

 
Back
Top