• Please review our updated Terms and Rules here

Adding SRAM to a 8088 PC

nestor

Veteran Member
Joined
Jul 23, 2010
Messages
509
Location
Spain
Some weeks ago I had some random thoughts about how difficult would be interfacing some SRAM chips to the ISA bus of a 8088 motherboard. The main idea was to give use to two 62256 ICs I had lying around. This week I had some time to wrote a small schematic in a sheet of paper and begin to build it.

As I had a spare ISA card to canibalize (the one from this post) and it included some 74LS chips that I needed, and also other two 62256-compatible ICs, it would be an "almost cost 0" project.

Using four 62256 would give me 128 kilobytes to start messing around. The logic is very simple, a 74LS139 to enable the /CS line of each SRAM IC, a 74LS688 wired to a block of dip switches to set the memory range, a 74LS68 to do a XOR of /MEMR and /MEMW lines and a 70LS04 to negate it and feed the /G of the 74LS688 with that.

I wanted to address manually the contiguous 128 kb in any consecutive bank pair. That would let me:

- Set the SRAM from 00000h to 1FFFFh, removing all the 4164s and 41256s onboard so the only RAM is the SRAM.
- Mix SRAM and DRAM, removing only the 4164s from banks 3 & 4 onboard and setting the SRAM to 80000h to 9FFFFh. That would be 640 kb (512 kb DRAM and 128 kb SRAM).
- Set the SRAM in the Upper Memory range (D0000 to EFFFF) and use it with some external drivers. I think there are some drivers available to get a UMB to load TSRs or a ramdisk, and disk-cache programs that can use upper memory. I still have to investigate it, but it seems to be the most interesting option. Another cool thing would be to load DOS into this memory freeing up conventional memory, but I don't think a XT can perform it.

Here it is the result. The card is very ugly, don't be afraid :lol:


Click to enlarge



Any suggestions or comments to share?
 
I think there are some drivers available to get a UMB to load TSRs or a ramdisk, and disk-cache programs that can use upper memory. I still have to investigate it, but it seems to be the most interesting option. Another cool thing would be to load DOS into this memory freeing up conventional memory, but I don't think a XT can perform it.
Worth a read is the earlier thread of: http://www.vintage-computer.com/vcforum/showthread.php?12251

It is a 'sticky' in the forum/sub-forum of 'Technical Support/Vintage Computer Software'.
Althought titled, 'Use of ems on a 8088 xt', the thread deviates from EMS.
 
I'd love to see a PC where the segment usage was (optionally) decoded to allow for at least 2 separate memory address spaces (say, CS, DS, SS and then ES, or maybe CS, DS, ES and SS separately). It'd be kind of handy to have an extra 1MB of memory available to a program without the bother of EMS.

Certainly, the 8088 allows this and provides the appropriate status.
 
Worth a read is the earlier thread of: http://www.vintage-computer.com/vcforum/showthread.php?12251

It is a 'sticky' in the forum/sub-forum of 'Technical Support/Vintage Computer Software'.
Althought titled, 'Use of ems on a 8088 xt', the thread deviates from EMS.

Thank you for the link, it is a good start point. I also found this thread that provide good info.

About using the UMB as ramdisk, I read that Philips P3105 / NMS9100 XT clones came with a driver to do it. Anyone has it available?
 
I found a strange hardware conflict.

When setting the SRAM in range D0000-EFFFF, the system can't boot with a Realtek RTG3106 SVGA card with 1 MB of video memory. But if I remove half of video ram chips (resulting 512k video ram) it boots and works like a charm.

I'm a bit confused, SVGA ram is not mapped into Upper Memory Area and I confirmed with 'Check It' software that D0000-EFFFF region is not in use by any adapter ROM.

What is wrong here?
 
I found a strange hardware conflict.

When setting the SRAM in range D0000-EFFFF, the system can't boot with a Realtek RTG3106 SVGA card with 1 MB of video memory. But if I remove half of video ram chips (resulting 512k video ram) it boots and works like a charm.

"Can't boot" means:
  • the system does POST ok, then the OS does not load at all?
  • the system does POST ok, then OS loads partially but hangs half way in?
  • the system reports error or beeps at POST time?
  • the system does not even do the POST?
 
Does this help?

VGA Adapters. When in graphics mode, VGA adapters use the A0000 memory segment; some use the A0000 segment even when not in graphics mode.

Some VGA adapters, when operating in 16 bit mode, erroneously use the D0000 memory segment. If such an adapter has a jumper to select 8 bit or 16 bit mode, choose the 8 bit mode. Alternately, the adapter may be installed in an 8 bit ISA PC slot to force 8 bit mode.
 
"Can't boot" means:

Sorry, I didn't explained correctly. "Can't boot" means no video, no ram count, no error beeps... nothing :(
It seems like the VGA card can't initiate and it hangs the system. I'm using a 8088 AMI bios that doesn't send POST messages to 80h port, so I can't be sure.


- This SVGA card doesn't have a jumper to select 8 bit / 16 bit, it does automatically.
- The card is plugged into a 8 bit slot (it is a 8088 xt clone board, there aren't 16 bit slots available)
- When the SVGA card has the full 1 MB installed and my SRAM card is not plugged, the system boots. And 'check it' application doesn't report any usage in D0000-EFFFF region.

It's just curiosity, I know that 1024kb of video ram for a 8088 is totally unnecessary (and 512kb is also a nonsense, I will never use more than 256 kb but 512kb is the minimum amount required). I'm just using this SVGA card in this machine because it is the only I have that works in a 8088 and has CGA / Hercules compatibility switchable modes. The rest refuses to work, but they do work in a 286.
 
The problem is that you don't know what address mappings are in force when the card initially resets and, more importantly, when the card is being probed by its own BIOS. It might be that the BIOS, seeing the D0000 RAM thinks it's in a 16-bit slot, after which everything goes to the stupid state.

Check-it only shows what's so after the system has booted.
 
I suppose you are right, it must be some kind of conflict during card initialization.
Thanks Chuck!
 
I think this is exactly the type of project that Mike Brutman and I want to do for the PCjr version of the XTIDE controller:

Take an existing memory sidecar, which is typically 128k of memory, gut it, replace the existing memory with your design here and then stitch in the existing XTIDE controller design onto the same PCB. We have to gut/replace an existing sidecar because there are some really weird connectors inside to make it a sidecar, plus then we can re-use the chassis so it looks right.

There should be enough room inside the sidecar chassis to make it all happen. I'm not a hardware guy, but I think your design and the XTIDE design can easily co-exist. Could this be bumped up to 512k of SRAM?
 
I'm not a hardware guy, but I think your design and the XTIDE design can easily co-exist. Could this be bumped up to 512k of SRAM?

Of course, I used four 62256 ICs providing 128 kb because I had them around, but more chips can be used (or less with more capacity).

For example, a simple KM684000 or 628512 provides 512 kb SRAM, but I don't know how easy is finding them actually.
 
Well, it seems to work pretty well in the UMB area! I tested it with Check-it app and it gave no errors:


Click to enlarge


I tried USE!UMBS.SYS driver and I can load drivers there using LH and DEVICEHIGH commands in CONFIG.SYS and AUTOEXEC.BAT

But I can't get it to work in the 00000-9FFFF area, I think the ausence of parity makes the bios to fail its tests...
 
In case you are using an IBM 8088 mainboard: The DRAM data lines are driven by a LS245, so pulling the DRAM chips does not free up their memory space. The 245 will pick up undefined nonsense and lay that over your cards output.
 
Futurlec has the 4Mb SRAMs, a little less than $10 the each. You might be able to do better with some looking.

Not sure if it still relevant. I've built a card to add memory to my 8088 project.

IMG_4952.jpgIMG_4950.jpg

It uses one 512KiB (4 Megabit) SRAM chip, a couple of 74AHCT139 decoders and a 74LS11 AND gate.

The memory is mapped to:
80000h-9FFFFh (512 KiB to 640 KiB)
and to
0C0000h-0EFFFFh (768 KiB to 960 KiB) - this range is switch configurable. There are 6 switches, each control a 32 KiB memory region.

I have a hand drawn schematics somewhere, and I can post it if there is an interest.
I purchased all the components at Jameco, and all components cost something around $24 ($6 SRAM, $15 ISA prototype board, $2 74* chips, $1 DIP switch and a resistor array).
 
Back
Top