• Please review our updated Terms and Rules here

Original-IBM-5150 or IBM-Clone Memory Experimentation Thread

T-Squared

Veteran Member
Joined
May 29, 2011
Messages
657
Location
San Antonio, TX
Since the original thread about my copy of IRCjr complaining about text formatting and memory count got off-track, I decided to start a new thread about those who wanted to upgrade their IBM 5150 or IBM Clone system.

For me, you've probably heard a lot about my Sanyo MBC-775, and my efforts to get it working, on this forum. Unfortunately, the system, despite its uniqueness, is not very well-equipped to handle programs made for the original system or other IBM clones. The MBC-775 only has 256k of memory and two ISA slots. Combinations of cards allow me to do certain things with the system, of course, but the fact that it only has two slots means I often have to sacrifice an ability in order to do something else. Even moreso when I have dedicated one of those slots for a XT-IDE card.

For example, if I want to go onto the internet, to websites formatted especially for vintage low-end systems, I have an ethernet card to do so. However, if I want to listen to music or Adlib/Sound-Blaster-based sounds on the system, I have to swap the card out for a Sound Blaster. If I want to play with 16-color-based programs, I could either use a game's specially-made artifact-color mode, or (hopefully) swap in an EGA card (if it plays nice and does what I hope it will do, that is, output full 16 colors to the internal monitor).

In this case, a dedicated 640kb memory expansion card is out of the question, as it gets rid of a chance for more color, sound, and communication capabilities for the computer. Thus, my idea was to desolder the existing RAM and replace them with sockets. If it works, this is a triple benefit, as not only have I been having intermittent problems with the RAM (only once so far), but I can expand the RAM to 1 MB (adding expanded memory for DOS in the process) for 640kb-requirement games and programs, as well as replace failed memory in the future easily.

What I'm hoping is that 64kb memory is pin- and interface-compatible, so I simply have to plug the chips in without modification (even then, I wouldn't know what to modify).
 
Last edited:
What I'm hoping is that 64kb memory is pin- and interface-compatible, so I simply have to plug the chips in without modification (even then, I wouldn't know what to modify).

As discussed in the other thread, just changing the 64k chips for 256k ones isn't going to magically result in the machine seeing more memory. The short version is this. Here's the pinouts of the three most common 16 pin DRAM chips you'll find in an a PC/XT. We're concerned with the two rightmost ones:

attachment.php


See how pin one is "NC" on the 4164 and "A8" on the 41256? It's the two possible states of that pin multiplied by the two multiplexed states of the address bus that make the 256k chip capable of addressing four times as much memory as the 64k one. And for that to work your computer's motherboard circuitry needs to manipulate that pin, there's no chip out there that can magically give you more memory using just the A0-A7 that's on the 4164's package.

If Sanyo sold a version of that machine that came with 640k soldered to the motherboard instead of 256k it's possible the motherboard already has the circuitry on it to drive that extra address line and you just need to figure out how to enable it, but if they didn't then you're looking at reverse engineering the parts of the motherboard circuitry that selects whether memory is present at a given location and the multiplexing circuitry that needs to take the 18 bit memory address that's generated by the processor to access a location within 256k and translate it into two 9-bit Row/Column strobes. (That circuitry presumably only supports 16 bit addresses now.)

The Sanyo's circuitry probably isn't particularly unique as computers of that era goes, but I'm not sure how someone could walk you through how to hack it unless they had the same thing in front of them, or at least a good tech manual.


dram_16_64_256.gif
 
Last edited:
Well, looking at the motherboard, it at least suggests that Pin #1 of the 4164s are connected to something, because each one has a trace coming off of them, which is NC on the pinout, so I'm guessing there's more to this.
 
Well, looking at the motherboard, it at least suggests that Pin #1 of the 4164s are connected to something, because each one has a trace coming off of them, which is NC on the pinout, so I'm guessing there's more to this.

Trace it. NC pins are often connected to ground. If it goes to something that's not ground then maybe you have a hope.
 
I'm getting 4.75 KOhms for resistance measurement from pin #1 (probably because the continuity is passing through a component), and no continuity beeps when I probe that pin and ground together.

This is looking more hopeful at each step!
 
I'm getting 4.75 KOhms for resistance measurement from pin #1 (probably because the continuity is passing through a component), and no continuity beeps when I probe that pin and ground together.

This is looking more hopeful at each step!

You need to physically eyeball where those traces are going. They could just be connected to a pull up. (Although being connected to a pull-up would at least imply that Sanyo anticipated they *might* want to allow 256kb chips to work in the board someday.) Here is the technical reference manual for an IBM 5150. There's a somewhat oversimplified diagram of how the RAM interface works on page 1-7; follow the arrow from the RAM chips backward and you'll find one goes to a pair of 74LS158 multiplexers. For the Sanyo to be able to do something with a 256kb RAM that trace from A9 (pin1) on the DRAM chips will need to terminate on something like that.

Here's the manual for the IBM 5160, the later version of which supported 256k chips. Contrast its memory circuitry on page 1-52 with page 1-42 of the 5150 manual. They're mostly similar, in that both have a pair of 74LS158s handling address pins A0-A15 from the CPU and converting them to A0-A7 on the memory chips. The critical difference on the 5160: pin 1, A8, of the DRAM sockets goes to its own 74LS158 which sits on A16 and A17 from the CPU. If the Sanyo is going to support 256k chips it's going to need that trace to go to the equivalent circuitry. Which might not necessarily be the same, it could even be inside of a PAL chip, but, yeah.
 
Actually, I think both you and I may have been correct. There are indeed two S158-type chips on the motherboard, right next to the memory. (They're on the lower left of the picture below) They're 74S158 (Note: I did NOT say LS, as you said, but I think the L doesn't matter.)

Even better, there is a space for a THIRD S158 Chip, just as you described! Although there is what seems to be a pull-up resistor in the path of the #1 pins, I'll test the soldering points tonight to see if Pin 1 of any of the memory connects to any pins on that S158 footprint, and then see if any of the S158's vias go to the CPU.

20201016_162256.jpg
 
Actually, I think both you and I may have been correct. There are indeed two S158-type chips on the motherboard, right next to the memory. (They're on the lower left of the picture below) They're 74S158 (Note: I did NOT say LS, as you said, but I think the L doesn't matter.)

The "L" just means low power, they're both TTL chips and most flavors of TTL are electrically compatible. (An "S" is faster than an "LS", but not as fast as an "F".)

Even better, there is a space for a THIRD S158 Chip, just as you described! Although there is what seems to be a pull-up resistor in the path of the #1 pins, I'll test the soldering points tonight to see if Pin 1 of any of the memory connects to any pins on that S158 footprint, and then see if any of the S158's vias go to the CPU.

Okay, so that *is* definitely a good sign that Sanyo anticipated the possibility that they'd want to make a version of the board that would support 256kbit chips. I'd recommend using the 5160's schematics as a guide and trace out to see how much the Sanyo resembles it. You may indeed be able to populate that chip and (probably) make a couple other minor component changes to enable upgrading to 640k.

(One thing to be clear on: Even if the motherboard can support the chips you can't just slap in a full 1MB and use all of it. Depending on what circuitry the machine uses to decode its memory you're probably going to only be able to use 640k, IE, replace two banks of RAM and keep 64k chips in the other. There is an expansion hack out there for 5160s that lets you replace all the chips with 256kbit ones and use *some* of the extra RAM as upper memory blocks, but that requires replacing a decoder PROM with an appropriately programmed one. The Sanyo *may* use a similar PROM, or it may use some other method. You're not going to get 384k of "Expanded Memory", "Expanded Memory" is a specific kind of bank-switched RAM that requires mapping hardware that motherboard *definitely* will not have.)
 
Indeed, on the Sanyo motherboard there are solder points on that LS158 footprint connected to the CPU. However, the continuity between the A16 and A17 address pins and the footprint points are in the MegaOhm range.

There is also a bodge wire on the back of both Sanyo processor/memory motherboards connecting the "A/B Select" Pin (Pin 1) to another solder point on the board. (I was able to clear the other solder vias on the LS158 footprint with very little problem, but I've left the solder point with the bodge wire alone until I know what to do with it.)

There are significant differences between the amount of bodge wiring between the two, but the fact that a wire is connected there seems constant.
 
Last edited:
Indeed, on the Sanyo motherboard there are solder points on that LS158 footprint connected to the CPU. However, the continuity between the A16 and A17 address pins and the footprint points are in the MegaOhm range.

It's unlikely that A16 and A17 needed by that missing multiplexer go *directly* to the CPU. In a typical XT the 8088 sits behind a number of buffers and latches to deal with the fact that Intel used multiplexing to keep the chip package down to 40 pins. The address lines are usually terminated on 74373 or 74573 latches, and it's possible at least there's another buffer/driver chip south of those, like a 74244.
 
This may be just as simple as removing the wires and soldering in the components. (I'm not assuming anything yet, and won't remove anything without being sure of it, though.)

I already have a socket to put in the footprint, and I have an S158 from Mouser on its way. (As well as some ceramic capacitors to see if I can fix the waviness caused by electrical interference from the quieter power supply fan I put in; The old one was very noisy, sound-wise.)
 
Last edited:
I would definitely recommend not pulling off random wires without knowing what they do. If you’re serious about making this work you need to start documenting the circuitry as it is *now* and understand how it works.

Remember, there’s actually two nearly separate elements in play here. First is enabling that multiplexing circuitry so the machine is physically capable of driving the denser chips. Secondly you’ll need to figure out the *decode* circuit that controls when a given bank of chips is active. If you don’t then the computer will still “think” all the chips exist within the same bottom 256k of the address space and the changes to the multiplexing won’t matter.
 
Ok, after a good night's rest, I looked the pair of processor/memory boards over again and found that they are actually different in terms of bodge wiring. (They have two wires, but they are connected to different components)

The trace from Pin 1 of the S158 footprint, and the other two S158s, is attached to a buffer delay line chip on the far side of the board.

All of the pin 1's are also connected to the VCC of a S138 Multiplexer.

(You don't need to reply if you don't want to, I'm just thinking out loud here. I'll take a look at those technical schematics.)

Update: At first glance, I may only have to plunk in a new S158 chip! (Again, this is ONLY at first glance.) The delay line seems to already be connected in its proper spot, according to that 5160 schematic.

Update: There also seems to be a spot for an S280 chip, which is a parity generator. It makes sense, because in each bank, there are actually 9 footprints for memory chips, with one unpopulated.

Update: There's also a footprint for an S139 multiplexer. Going by what I see, in proximity to the memory, this is probably a parity multiplexer.
 
Last edited:
Now it starts... (I've also soldered in the socket for the LS158.)


20201019_163548.jpg
20201019_170327.jpg
20201019_170339.jpg

I had considered using my vacuum desoldering pump, but it didn't give me the results I was looking for, so I decided to clip the memory off, and melt the solder while pulling the pins out. (It's not easy... 512 pins to pull, THEN melt-and-suck clean!) Some may complain that I'm wasting perfectly good memory. I think it's better this way. Memory chips are more common. MBC-775s are not. 😜
 
4164s aren't that common, you should really learn proper technique with the vacuum desoldering tool. Reflowing the joints first with fresh solder is a big thing
 
I did it. 3 days of work.

20201022_191049.jpg

My neck hurts, my hand hurts. :p

There's some negligible damage, but ONLY to the solder mask. I have some mask-repair paint on the way to touch up some of the surface.

I had to use two soldering irons at times, plus a micro drill bit (i.e. 0.4mm) for the more-stubborn holes. (mostly those connected to a ground or A8 [address line 8] plane, that would wick up the heat.)

I made sure not to keep the iron on the holes too long, and I checked that the copper inside and on the surface were flush with the board. (to make sure that the epoxy holding them did not loosen)

I didn't touch the 9th row of memory footprints. I'm not sure what use parity memory has in this case. I know what it's for, I just don't see any real use for it, unless it adds more integrity for memory contention. (I could add something later, since I stated earlier that this sister board has a space for a parity generator chip.)
 
The mask repair paint is still on the way, as well as an ultraviolet flashlight to cure the paint when finished.

I also did a bit of snooping around on minuszerodegrees, and found this: http://www.minuszerodegrees.net/5160/motherboard/5160_motherboard_revisions.htm

If I had to guess, given what I've seen in my Sanyo, and what I've discussed with this forum, my system is closer to an IBM 5160 than a 5150 or 5170. There's only one set of 8 DIP switches, as described on the MZD page about the 5160, and the document in the page above describes the EXACT modification that I'm attempting to do. (Although I have to look closer at the document to see how similar it is to my system, barring component numberings)
 
Last edited:
I'm curious to know one thing, did any XT/AT clones have PLAs installed?

The reason why I ask is because IBM had PLAs in their systems, but most of what I see on my Sanyo's CPU/Memory board is logic ICs.
 
I'm curious to know one thing, did any XT/AT clones have PLAs installed?

Yes, but of course that doesn't mean all of them did. And this is where you're going to have to bite the bullet and suss out exactly how the memory addressing circuitry on your machine works because, as I noted earlier, if you don't tweak that then the 256kb chips will just be enabled for the same address ranges as the 64kb ones were.

The most straightforward methods of decoding memory without PLAs tend to involve 74LS138 and 74LS139 decoder/demultiplexers. For instance, just spitballing here's how you could do the chip selects for 256k of RAM made up of 4164's in an 8088 with a single '139:

  • Connect pins 2 and 3 to A18 and A19 and pin 1, chip enable for the first decoder, to ground
  • Connect the output at pin 4, which will go low when the computer is in the lowest 256k of address space, to pin 15, enable for the second decoder.
  • Connect pins 14 and 15, inputs for the second decoder, to A16 and A17.
  • Use the four outputs on pins 9-12 as the chip select for each bank of 64k. (This will run to the multiplexing circuitry that handles the RAS/CAS generation.)

The fact that Sanyo *seemingly* built the board with the intention of allowing the option to hold 640k implies that they probably at least ran the traces for something more sophisticated, but the pieces might not be populated and there might be either switches that need to be changed or jumpers/traces that have to be cut to reconfigure it. Look for "something" that's connected to the high address lines that has outputs that ultimately lead to the RAS/CAS circuitry and map it out.
 
Back
Top