• 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.

Deep IIci rejuvenation, possible ROM select problem

trag

Well-known member
Datasheet for the M5M27C101JK is here:

http://www.io.com/~trag/DataSheet

I thought I had it on my archive drive. I have a last modified date of 2003 on it. I think we're covering some of the same ground which Gamba and I covered back in 2003 when we worked on the IIci ROM together. New ground too, since your ideas for modifying the ROM are very cool.

The SIMMs are .050 or perhaps .047" thick, while today's boards are typically .063". I have a design for a ROM module already drawn, I think. It might still need some work. I was planning to use Toner Transfer Paper to resist and etch the boards myself, but events intervened.

Oh, I remember, I drew a nice design with four PLCC parts on the same side of the board and realized that they'd be too close together for convenient hand soldering. Two need to go on each side of the board to leave space in between for manuevering a soldering tip. Or, alternatively, one can plan to solder them in an oven.

 

Dennis Nedry

Well-known member
Oh, I remember, I drew a nice design with four PLCC parts on the same side of the board and realized that they'd be too close together for convenient hand soldering. Two need to go on each side of the board to leave space in between for manuevering a soldering tip. Or, alternatively, one can plan to solder them in an oven.
Thanks for the datasheet.

Did you consider soldering PLCC sockets instead of soldering the ROMs directly? You can get them so that you solder from inside the socket area. Then afterwards you just push a ROM into each one.

 

Trash80toHP_Mini

NIGHT STALKER
Datasheet for the M5M27C101JK is here:http://www.io.com/~trag/DataSheet

I thought I had it on my archive drive. I have a last modified date of 2003 on it. I think we're covering some of the same ground which Gamba and I covered back in 2003 when we worked on the IIci ROM together. New ground too, since your ideas for modifying the ROM are very cool.
I saw in an older thread that you worked with Gamba on the IIfx also. Back around that same time period, I was trying to figure out a way to address more RAM per slot on the IIfx MoBo. After Dr. Bob went bonkers about how horrific a certain pizzabox memory hack was in terms of noise and timing, I figured out another possible, hopefully far less objectionable, approach.

IIRC the IIfx RAM is multiplexed and there are, for the vast majority of these machines, unused parity checking lines. My notion was that these lines could be rework jumpered/hijacked at the memory controller or CPU, becoming additional lines for addressing much more memory on an entirely new RAM card design. I know Gamba had a IIfx RAM SIMM layout for the maximum "normally" addressable memory ceiling. However, I was thinking it might be possible to add a few more bits of addressing through a parity line rework/hijack hack. I don't recall much offhand about the IIfx memory mapping, but the additional memory should, at the very least, be addressable as a RAMdisk, configured as Virtual Memory, and accessed at the same speed as normal system memory.

It's been a long time since I've toyed with the idea, so I thought I'd bounce it off you before hittin' the books again. }:)

 

trag

Well-known member
I saw in an older thread that you worked with Gamba on the IIfx also.
All I recall is discussing the IIfx ROM with him. It's possible I've forgotten, but as I recall most of Gamba's and my interaction was either regarding the Micron Exceed video card for the SE/30 or the ROM modules for the Mac II family.

IIRC the IIfx RAM is multiplexed and there are, for the vast majority of these machines, unused parity checking lines.
There are unused parity lines but other than meaning there are pins in the socket which aren't used, I don't think they provide anything. I guess there are probably traces to them from somewhere, since parity was an option on the IIfx. That might make some kind of hacking easier. But compared to the rest of the task, it wouldn't be much of an easing.

I'm not sure what you mean by multiplexed. The writes to the IIfx RAM are buffered. In practice this means that the data bus has a set of latches between the data bus and IIfx RAM Write pins. And yes, the Data-Read and Data-Write pins are separate on the IIfx RAM. That's what makes the stuff a pain, but it also improves performance.

In practice, on other computers, the CPU would put the write data out on the data bus, along with an address on the address bus and Write Enable active, and the memory controller would translate the address lines into something that the RAM understand and eventually the RAM copies the data from teh data bus. Meanwhile, no other activity takes place on the data bus.

On a IIfx, the CPU puts the write data on the data bus, along with an address on the address bus and Write Enable active and the memory controller signals the Write Latches to latch the data bus. The address is copied into registers in the memory controller and the memory controller tells the CPU that the operation is finished and the CPU goes on its way and the data bus is available for use for other things. Meanwhile the memory controller translates the address and write request into commands for the RAM (Row address followed by column address, etc) and the RAM copies the write data from the latches, which form their own little data cul 'de sac, invisible to the rest of the machine.

This scheme means that IIfx memory absolutely must have separate pins for data read and data write or data out and data in. If you just tie them together, the data being held in the write latches will trample on the entire data bus while the rest of the machine may be trying to use it. And data on the data bus will trample on the RAM data-in while it's still completing the buffered write operation.

So there's no converting conventional 30 pin or 72 pin SIMMs into IIfx memory. Not saying that was your plan, but pointing out it won't work.

My notion was that these lines could be rework jumpered/hijacked at the memory controller or CPU, becoming additional lines for addressing much more memory on an entirely new RAM card design.
The memory controller only understands how to translate addresses intended for RAM into, at most, 12 row address and 12 column addresses. The memory controller chip just doesn't have any way to translate more addresses than that.

Now, I guess you could build some SIMMs with additional upper address bits. Then the memory controlller would do the normal row and column translation of the lower bits and your extra logic would supply the upper address bit as a bank select, chip select, or just an additional address bit. But to do that you'd need access to the higher address bus lines (probably available around the memory controller) and you'd need to modify the ROM code so that the machine knows how to detect and report larger RAM capacities. I think that there's 1 GB of address space allocated to RAM in the IIfx memory map, but the ROM code (probably) doesn't know to look for more than 128 MB when it does its start up memory test.

You'd also need some scheme to provide refresh support to those upper tiers of memory and that would probably require a PLD all its own.

I know Gamba had a IIfx RAM SIMM layout for the maximum "normally" addressable memory ceiling. However, I was thinking it might be possible to add a few more bits of addressing through a parity line rework/hijack hack. I don't recall much offhand about the IIfx memory mapping, but the additional memory should, at the very least, be addressable as a RAMdisk, configured as Virtual Memory, and accessed at the same speed as normal system memory.
I don't remember Gamba having such a design, but that doesn't mean much given my leaky memory and it's irrelevant. Yes, if you could add some higher memory address bits to the SIMMs and memory to go with them, and change the ROM code so it will be detected, and solve the refresh problem, then it could probably either be added to addressable RAM or used as a RAM disk.

Any of those options is going to require non-trivial hacking of the code that controls the low level hardware. I'm sure it's doable. I just think you should realize that there's a substantial learning/mystery/probably-undocumented-code-modifying to be done to make it work.

 

Dennis Nedry

Well-known member
UPDATE

I have acquired some PLCC-32 to DIP-32 adapters and installed them in place of the onboard ROMs of this Mac IIci.

iicirom.jpg


Unfortunately there was a SHORT in one of the adapters that I didn't notice until after installation. I discovered this with a continuity tester after the Mac failed to chime from the ROM SIMM slot. A6 was shorted to A15. My solution was ingenious. I did not have to remove the adapters, which would have been almost impossible.

I have a current-controlled voltage source. I set it to 1 volt, turned the current down a ways and applied the voltage across A6 to A15 of each adapter. I also attached a voltmeter across these two at the same time. Since the traces have resistance, I knew the one with the LOWEST voltage reading would be the one with the short circuit.

Once I knew that, I had a look at the 5th adapter I ordered and determined the exact spot the short had to be. I crafted a tool out of a piece of 14-gauge steel wire and filed a rasp into the end. With this tool, I was able to reach under the adapter and scrape back and forth to remove the solder that was bridging the two address lines.

MORALS OF THE STORY:

Test parts before installing

REALLY test parts that you ordered on eBay from China

So now it works again off of the IIfx ROM SIMM after I removed that short. I tested continuity of each address and data pin from the SIMM slot to the onboard ROM and Found one open circuit. I must have cracked or lifted a trace, so I found another point nearby and added a short 1" jumper. In theory this should be fully-functional now.

I also connected two additional address bits from the ROM SIMM slot to the appropriate pins on the adapters. This is on the bottom of the board (not seen in picture). The AT29C020 chips I have will use one additional address bit, for a total of 1 MByte ROM, with easy expansion to 2 MByte ROM by substituting 040 ROM chips.

All I have to do next is get access to a ROM burner!! First I want to try the normal IIci ROM just to verify that it's working and that I split the ROM up correctly amongst the 4 chips, etc. Then I'll be moving on to Mac LC II ROM. We'll see what happens! I've never heard of anyone trying a 1 MByte ROM in a Mac IIci.

 

Dennis Nedry

Well-known member
For those 68k diehards that see this and think that I've sacrificed the authenticity of this logic board by removing the original PROMs and installing newfangled socketed PLCC Flash ROMs, I have a few reasons that I don't feel too bad about it.

  • This logic board was damaged by scrapes and battery leakage, so there is already extensive trace repair. Notice the missing battery holder in the picture.
  • This is 1 of 3 IIci's that I have.
  • Doing something new and interesting with an old Mac is worth it.
  • I want to hear a 68040-style startup sound out of this IIci.
  • I want to hear a CUSTOM sampled startup sound out of this IIci!
  • I want a Mac with ROM that can easily be modified for any number of projects.
  • I didn't make that checksum program for just verifying ROM dumps.

 

trag

Well-known member
Dennis, I think it looks great! That's a nice mod. Useful too, if you start modifying the ROM code.

Are you thinking about doing any disassembly? I ran across mention of a disassembler in the MacTech archives and checked and it is still sold. Later, independently, Henry mentioned that it is pretty much the best disassembler for the Mac. Now, I can't remember it's name of course, but I'm sure the info is retrievalbe when needed.

 

Dennis Nedry

Well-known member
Yes, I would like to do some disassembly but I don't have the proper tools right now. I would appreciate if you could point me toward this software you mentioned if you can remember more about it.

Currently I'm using FDisasm, but that only works well with very old 68000 and 68020 ROMs. I can't work too well with IIci or IIfx code. There are several that they have taken the time to comment up and these work VERY well, but disassembling different ones is very painful.

 

trag

Well-known member
http://www.jasik.com/index.html

MacNosy is actually still sold. I thought it was not so expensive, but it is $225.

However, given that it has been around since either 1984 or 1986, I can't remember which date was on the MacTech article, it might be useful to email the author and tell him what you want it for and see if he has a cheaper, earlier version available. We're not disassembling G3s and G4s here.

 

Dennis Nedry

Well-known member
Thanks for the info. My Mac projects will have to be on hold for a bit as I approach graduation in mid May. I am very busy with that and preparing to find a job, plus the 6 classes I'm in. But I will definitely use this stuff, especially when my Mac collection is where I can get to it properly.

There are lots of fun projects in the future with this cool stuff.

 

Dennis Nedry

Well-known member
I haven't played with it much, my projects are on hold until I find a place to live. This Mac is successful in the sense that you can burn ROM chips and it will run off of them.

I did try modifying the happy Mac icon and updating the checksum, and burning that. That did NOT work for some reason. I'm not sure why. But I didn't play with it much so it's sort of inconclusive.

 
Top