• Please review our updated Terms and Rules here

16 bit ISA XMS Board Design?

ajacocks

VCForum Administrator
Staff member
Joined
Jan 21, 2011
Messages
1,427
Location
Middletown, Maryland USA
I have a bunch of 286 and 386 based machines with between 512kB and 1MB on the motherboard, but no other capability for RAM expansion. There are a number of excellent 8 bit ISA 1MB cards out there, but I can’t find a 16 bit design. Additionally, the ISA XMS cards that come up on eBay are either extremely expensive or very small (the 128k IBM AT expansion, for example).

So, has anyone considered making a simple ISA XMS board? I was thinking that a board that provided 4MB of XMS, using static RAM, should be a rather simple design. I’ve actually spent some time looking for XMS board schematics to work from, as I’ve never designed an ISA card before, with little result.

Any ideas are welcome!
- Alex
 
There are two AST advantage on eBay right now, one for $75 and one for $100, in the box, but they don’t actually show what’s in the box.
 
Yeah, there are a number of existing boards out there, but none of them is easy to bring up to the 4MB that I really think is needed to run almost any 286-compatible software. Believe me, I have bought a bunch over the years, and been disappointed with every one.

I would certainly take a RAMpAT (https://wiki.preterhuman.net/Acculogic_RAMpAT!) or similar, were they available for a reasonable price, but they never are. I've bid on a bunch of SIMM-based ISA RAM expansion boards, and always been outbid as they go for well over $100, not including shipping.

Given that, I think that the best course would be to design a minimal 16 bit ISA card, with support for 4 4MB SRAM modules, and a ROM socket for an XT-IDE ROM. That would work well for a lot of folks with 286 or early 386 machines.

I'm willing to do that work, but I've never designed an ISA card before. So, to get started, I'd like to find the schematics for any existing 16 bit RAM expansion. I already started looking for the IBM card reference manuals, as they usually have schematics, but come up empty so far.

I just noticed that @prime was working on something similar. @prime , do you have any thoughts?

- Alex
 
Designing any 16-bit ISA memory board is a bit tricky if you want it to be fully performant. In order to ensure 16-bit transfers on all AT-compatible machines you must early decode the LA lines and assert SBHE before the system board asserts ALE
 
Given that, I think that the best course would be to design a minimal 16 bit ISA card, with support for 4 4MB SRAM modules, and a ROM socket for an XT-IDE ROM. That would work well for a lot of folks with 286 or early 386 machines.

FWIW, it looks like the biggest readily available 5v SRAM chips are 2MB (so you'll need a pair for 4MB), and the ballpark price for a pair is around $30. Larger chips (at least ones currently manufactured) seem to all be 3.3v (or less), which isn't necessarily a deal-killer, but it does make it a little awkward. (They're also almost all BGA, which mostly rules out home assembly. Looks like you'll still need to be able to handle fairly fine surface-mount packages for anything over 512K.) If you're really wanting a full 16MB the parts cost might get pretty close to a used SIMM board even at eBay scalper prices.

(Not trying to discourage anyone here, just noting that from a strictly economic standpoint an XMS card might not quite have the same price advantage that devices like, say, an XTIDE storage device, have over comparable "vintage" options.)

Designing any 16-bit ISA memory board is a bit tricky if you want it to be fully performant. In order to ensure 16-bit transfers on all AT-compatible machines you must early decode the LA lines and assert SBHE before the system board asserts ALE

I kind of wish I had a 286, it sounds like a fun challenge. I'd probably try implementing it with fast GALs; the ATF16v8 and 22v10 are still widely available in speed grades up to 7ns, hopefully it wouldn't be too hard.
 
I was thinking that a good option might be 512kB SRAMs, as those are available as SOIC-32:


8 of them would give the desired 4MB. Obviously, 16MB would be silly with those modules, though.

@Eudimorphodon , if you'd like to help, I could probably help on the 286 front. I have quite a number, as I seem to have a love for that particular era.

- Alex
 
How much is shipping to Outer Mongolia? I’ll send you a 286 if it’s not too expensive. :)
 
I was thinking that a good option might be 512kB SRAMs, as those are available as SOIC-32:


8 of them would give the desired 4MB. Obviously, 16MB would be silly with those modules, though.

My usual go to is the through-hole AS6C4008 because they're a fine crutch to lean on as I keep trying to avoid the inevitability of having to learn how to do surface mount soldering. ;)

(Eight of them would be a pretty big chunk of real estate, though. Most I've used on a single card is three...)

Something I've wondered about is how hard/expensive it would be to use PCBway or JLCpcb's assembly service to make cards with this part on them, IE, a 5v 16Mbit part that comes as a 48-TSOP and can be used in either a 2Mx8 or 1Mx16 configuration. Maybe a year ago I poked through JLCpcb's "we can directly provide these parts" catalog and it looked like they only had 3.3v SRAMs, so there'd be the extra hassle of getting a custom BOM, etc, but they sure would save a lot of real estate. One thought was doing it in the form of a piggyback board with just a pair of these (with decoupling caps, etc) and a 2mm pitch pin header (compact, but still easy to hand solder) so they could be used on multiple projects that were otherwise implemented as through-hole.

How much is shipping to Outer Mongolia? I’ll send you a 286 if it’s not too expensive. :)

Hah! Okay, maybe "Outer Mongolia" is a little bit of an exaggeration. ;)

I'd be really tempted to take up the offer, but I already feel bad about not finding time to work on a stack of other projects over the last year. Work has been... unkind, to my hobby time. Definitely couldn't make any guarantees about turnaround time. :/
 
Well, I'd be happy to do the PCB layout, and research on part availability. But, I have absolutely no experience with GAL programming, or in memory card creation.

- Alex
 
Designing any 16-bit ISA memory board is a bit tricky if you want it to be fully performant. In order to ensure 16-bit transfers on all AT-compatible machines you must early decode the LA lines and assert SBHE before the system board asserts ALE

... just double-checking, isn't it /MEMCS16 that needs to be asserted before BALE to signal 16 bit width? (And then /0WS needs to be driven low if you want zero wait states.) SBHE is provided to 16 bit boards to signal if a transaction involves the high-order byte, it doesn't look like you'd ever drive it from the board except in the case of a bus/DMA master.

Edit: I did a quick eyeball of the schematics of several IBM-produced memory cards here and none of them support zero wait state operation. The logic for the MEMCS16 assertion looks easy enough, the only "tricky" bit is it needs to be an open collector. (They did that on the IBM cards by using the chip select of a 74LS125 to switch it between "low" and "HiZ" instead of low and high. I think that could be done internally on a GAL22v10?) If you want zero wait states... I'm a little confused by the timing diagrams for that, it looks like it's not supposed to be asserted when MEMCES16 is (before BALE goes high), instead it needs to be asserted immediately after BALE goes low again?
 
Last edited:
I just noticed that @prime was working on something similar. @prime , do you have any thoughts?

... Likewise wondering if they ever solved the issue they ran into with their design? I'm guessing they didn't implement 0WS, but I guess it was never explicitly said.

(Also wonder how their crack at a UMB card for a 286 worked out, there was never an update beyond "try the drivers from the XT" on that thread? I was thinking about that but it's at least my vague impression that it's complicated by /MEMCS16 having something like a 128K page size granularity, so if you have an EGA or other card with an 8-bit BIOS things can get fraught? Maybe I'm misremembering that. I also was under the impression most 286s don't let you have the E-page for slotted memory, which limits the usefulness of UMBs a little.)
 
Well, if you're interested in working on it, 286 hardware can be sent your way.

I'll think it over, I guess. I just checked up on the GALASM syntax for doing tri-state output control, if I get time to play with the breadboards I might throw together some guesstimate equations for a simple decode/MEMCS16 circuit if someone has a 16 bit ISA prototyping card lying around.
 

Project + eagle files, 8 bit though. If you need 16 bit im sure someone here can edit it.


resource to find best price on your pcb. I tend to use JLC alot


Should be under 10 bux for 5 pcbs shipped.

Now if you are handy with projects, I do have a sixpack that had some ic's and sockets removed for a project 15+ years ago, but traces are in good shape. Board is 90% or so complete minus ram. I was thinking about bringing it back to life not a week ago! Also have a Bocaram AT Plus w/ 8mb on it, but one the sockets broke, so i soldered a stick of ram to the backside of the pcb with dip headers. Should be easy to clean up and replace the slot, but its fully functional.
 
Last edited:
BTW, was going to order some prototyping cards anyways. If you can wait a few weeks till they arrive be happy to sell you a couple. My next project is going to be a romdos card with an extra socket for xtide, and perhaps a serial + ps/2 mouse port, so I can save a slot in my older machines. I know autocad pretty well, but Eagle isnt as straight forward as I hoped it would be.

Anyone know a simple drag an drop pcb design software with a grid where I can just wire them up manually? Kinda like google sketchup? Guess I could draw it by hand... Dont see alot of hand drawn pcbs anymore. Its just drawing by schematic isnt the easiest for me.
 
... just double-checking, isn't it /MEMCS16 that needs to be asserted before BALE to signal 16 bit width? (And then /0WS needs to be driven low if you want zero wait states.) SBHE is provided to 16 bit boards to signal if a transaction involves the high-order byte, it doesn't look like you'd ever drive it from the board except in the case of a bus/DMA master.
Yes that's all correct, I was going from memory and mixed up the two signal names sorry
 
The tricky part is the lack of granularity available on the LA lines. You must qualify your assertion of MEMCS16# on 128kB boundaries. This is a real problem if you care to implement any UMB or EMS due to 8-bit ROMs that may be sharing those 128kB segments.

Zero wait is compariatively much easier to implement, as you can qualify the assertion down to the byte and you don't need to assert until after ALE. It should also be driven by an open collector IMO
 
Back
Top