CREEPINGNET'S WORLD
DETANGLING THE MESS THAT IS LEGACY PCMCIA
PCMCIA - standing for Personal Computer Memory Card Industry Association....and usually jokingly referred to as "People Can't (re)Member' Computer Industry Acornyms", is a memory card, later laptop expansion bus standard developed for portable computer products. They come in three types: Type I (memory cards only), Type II (the most common), and Type III (usually large cards that take up up to two slots and have a giant case for additional circuitry). PCMCIA was replaced by 32-bit Cardbus cards in the Pentium era, and later Expresscard - befoore everything got replaced by USB.

As the sands of time continue to shift and sweep away whatever computing history people don't actively still use, one of the key goals of this part of my website is to DOCUMENT these legacy technologies before they fade away and cease to be a potential leveraging point to using these old technologies to our advantage in a modern context. One of the most irritating, cryptic, and difficult to deal with it seems - is PCMCIA cards.

99% of the time when dealing with a legacy 386SX, 486SL, or early Pentium laptop, you are going to be dealing with PCMCIA expansion cards, and 99% of that time, you're going to be dealing with PCMCIA Type-II 16-bit cards. And considering most PEntium laptops are cardbus, that leaves my faovirte, and a special little period of 1992-1995, where we are dealing with 386SX and 486SL based laptop computers that ran DOS, Windows 3.1x, and utilized these cards in what, on the surface, would look like the most janky, unprofessionally developed enviroment ever.

Once we got to Windows 95, a lot of the "pain" in dealing with PCMCIA (here's a new one "Painful to Configure Micro Computer Integration Adapter") is gone. But prior to that, things are VERY clunky. Right now I own four NEC Versa laptops, and a DFI MediaBook (NanTan actually), and all of those had Windows 3.1 on them at somoe point, and almost all of them have various parts of the PCMCIA subsystem that feel like someone just dropped a bag of materials and tools in front of you and said "make a network connection" and left you to it, as well as a pile of cryptic text-file "whitepapers" on how the drivers, card services, and other parts "theoretically" are supposed to work. Probably the best of the lot would be Cisco, they may be so armored they might as well be the US Military as far as security, finding drivers is like breaking into Fort Knox! But at least their documentation is good and their products actually work as designed and documented to work.

So my mission on this page is to learn - myself - and document up here to demystify the early PCMCIA expansion bus, and how to configure, troubleshoot, use, and work with it.


On the Surface - what is PCMCIA
On the surface - the "Physical Layer" in OSI Model terms - PCMCIA consists of a PCMCIA Slot(s) on the usually Laptop in question, and a Expasion card of the Type-II or Type III variety. These cards are 16-bit data width, just like a regular AT-class ISA card, as they were intended to act as an "AT class expansion card" in a laptop. Except, Laptop computer posed a problem - you can just have a big 8"x8" chunk of silicon, metals, and fiberglass to carry with you at all times, and screwing the darned thing into the laptop means the laptop has to be bigger - turning it into a luggable. There were laptops with ISA but they wree large and expensive, and reserved for things like Network Diagnosis/Packet sniffing, and often crippled to needing an outlet to work (making them technically - modern Luggables at the time). But with PCMCIA, you could have a small laptop or subnotebook, like a ThinkPad or NEC Versa, and you could have your modems, ethernet cards, WiFi adapters, sound cards, CD-ROM controllers, flash memory, and so on - on little credit-card sized cards that could be swapped in and out oof the computer at will (well...kinda sorta'). So instead of big ISA boards with jumpers, dip switches - now you had little credit cards with dongles and possibly some of the most irritating configuration software known to man.

Basically, the card slides into the slot, your laptop beeps to let you know it's reading the card, then - in theory - card services allocates resources to the card, enabling the card, and allowing you to use the card to do whatever you want to do.

PCMCIA Uses a 68 pin header that includes 26 Address Lines (Addresses 0-25), 16 Data Lines (hence 16-bit, Data 0-15), and various other ports for detecting the card presense (Card Detect, Status Check, Speaker I/O for Modems and Sound Cards, Charging of a card-based battery device, wait, reset, and a whole gaggle of other functions). See the pinout below - this is facing the card with the side that has an "L" instead of a "Notch" to the right.

PCMCIA is specifically the name of the standard in older (Pentium 1 and older) laptop computers. And it is often confused with "Cardbus" and "Express" slots. While these sockets are often electronically compatible with original PCMCIA cards from the early 1990's, and those cards may work in a more modern device, but it does not work the other way - you can't run a Cardbus or Express card in a vintage PCMCICA 16-bit PC. See below for card-size standards.

Cards come in three types: Type I, Type II, and Type III.

  • PCMCIA Type I - These cards are the smallest in size of the lot, and generally were used for flash memory storage more often than not.
  • PCMCIA Type II - These are the most common type of card and the type that comes to mind when you start talking about PCMCIA cards from the early 1990's. These came as a myriad of devices including (but not limited to): Ethernet Adapters, Sound Cards, Flash Memory, Modems, MPEG Decoders, Audio Interfaces (yep, we had DAWS in the early 90's that ran on a 486 DX2), Video Capture Cards, 802.11b WiFi Cards (11mbps, 2.4Ghz), and controllers for various storage (IDE, SCSI, Proprietary).
  • PCMCIA Type III - Type III is a double-height card type, most often used for PCMCIA Hard Disk Drives (ie, the kind that spin, IBM made a lot of nano-drives that fit the type)

On the software side - it's a 3-tier system - you have the Card Socket Chipset driver first, which needs to be loaded before the Card Services software and drivers are installed, then third comes the card drivers themselves, unless you're using a "Point Enabler" specific to the PCMCIA card you are loading. With this multilayered approach, you can tell that it uses a LOT of memory. This is why we often have 2 methods of accessing a card - both with and without card services - because in the latter scenario, it's usually trying to save memory, such as the lower 640K DOS base memory so you can actually do something with that card other than have it make your speaker beep and blink LED lights at you for no reason other than that it looks cool.


PCMCIA Chipsets & Laptops that Use Them
As you can imagine, one of the most neglected pieces of the puzzle is the PCMCIA chipset itself. It seems there were only a handful at most, and it seems they were made by Intel, Texas instruments, Cirrus, Ricoh, Vadem, VLSI, and others.....
Make/Model CPU Class Chipset
AT&T Safari 3181 i486 DX SL Cirrus CL-GD67xx
AT&T Safari 3182 i486 DX2 SL Cirrus CL-GD67xx
AT&T Globalyst 250 i486 DX4 Cirrus CL-GD67xx
AT&T Globalyst 250P Pentium 75 Cirrus CL-GD67xx
NanTan FMAK9200 i486 (multiple) Intel 82365
NanTan FMAP9200 i486 (multiple) Intel 82365
NCR Safari 3180 i486 DX SL Cirrus CL-GD67xx
NEC UltraLite Versa i486 DX SL Cirrus CL-GD67xx
NEC Versa 40/50/75E i486 DX2/DX4 SL Cirrus CL-GD67xx
NEC Versa V/50/75 i486 DX2 SL/DX4 Cirrus CL-GD67xx
NEC Versa M/75/100 i486 DX4 Cirrus CL-GD67xx
NEC Versa P/75 Pentium 75 Cirrus CL-GD67xx

Drivers for your Specific Chipset
So of course, the first thing to load - if you are using Card Socket Services that is - is the driver for your chipset. Without it, all of the stuff coming AFTER will fail to load. Most of these drivers are loaded via CONFIG.SYS via a DEVICEHIGH= entry - so as to put it in the memory above 1024K. They also, usually require EMM386.EXE to block off a segment of memory (usually in the D000-DFFF range using the X=D000-DFFF - or whatever the hex value is - for a memory window for the card to talk through).

For example - my NEC Versas all use a Cirrus CL-GDxx series PCMCIA Chipset (roughly the same one basically), and they come with the driver with the CardSoft software - SSCIRRUS.EXE. So it loads in CONFIG.SYS after DEVICE=HIMEM.SYS /TESTMEM:OFF and DEVICE=EMM386.EXE X=DD00-DDFF entries - usually with a switch announcing the number of "sockets" it has - /SKT:2 in this case (IIRC). So the entry is DEVICEHIGH=SSCIRRUS.EXE /SKT:2 - and that entry tells CardSoft what kind of chipset it is, allows it to communicate with CardSoft, and let's CardSoft know there are 2 sockets in the computer. If I were to add the "VersaBay" attachment that adds 2 more PCMCIA sockets - I'd change /SKT:2 to /SKT:4.


Card Services Software - Cardsoft, CardWizard, and Phoenix Card Manager
Part of what makes this mess confusing is that there's a card driver - as mentioned above, and card service SOFTWARE. It's further mucked up by INCLUDING the driver/point-enabler as a PART of the package. But we're focusing on the UNIVERSAL Parts of each software.

CIRRUS CARDSOFT

CARDWIZARD

CardWizard is the software I found on NanTan's old website circa 1996-1997 on the wayback machine. While this software was used on a lot of models, and not specifically listed as for the FMAK9200, I put it on there and got my Ethernet Adapter working using it, so it does work for that model. One nice perk of this particular software is it seems to be capable of troubleshooting and properly fixing faults for the user - which is really cool for something made in 1994. Another neato perk of it is that it's troubleshooting recognizes multiboot configurations - which rocks. So it won't edit the wrong parts of Config.SYS or AUTOEXEC.BAT and screw up your boot options - or corrupt them with random [GLOBAL] options.

It consists of the following modules...

FILE PURPOSE
SS*.EXE This is the socket services chipset driver that we mentioned int he previous section and it's name changes depending on what kind of chipset you have. You could also specific "other" during setup and add the apropriate driver to the line DEVICEHIGH=SS*.EXE /SKT=2 to load the apropriate driver you have for your Laptop computer.
CS.EXE This is the first file to load that enables Card Services. It starts Card Services up and opens it up to the further files that will configure it.
CSALLOC.EXE This I believe is the file that sniffs out and allocates resources to the PCMCIA card(s) in the system. It's loaded in CONFIG.SYS via a Device Statement.
ATADRV.EXE This is the driver for ATA (IDE) PCMCIA hard disk drives, and allows for the hot-swap of them in and out of your portable computer. See, this was in the days BEFORE USB - so the closest thing we had to a USB Hard Drive was a PCMCIA HARD DRIVE.
MTSRAM.EXE This is a Memory Card driver for solid state memory cards, such as those of the PCMCIA Type-I variety.
MTDDRV.EXE This is the driver for storage using flash memory.
CARDID.EXE This is the sniffer that gathers card data from the ID chip on the PCMCIA card - and then passes it along to other parts of the Socket Services.
PCCARD.386 This is the Windows 3.1 driver for the Card Sockets in your computer, it relies on the DOS driver to connect with the card sockets.
SSVRDD.386 This is Socket Services specifically for "NON FOR WORKGROUPS" Windows 3.1x.
SSVCD311.386 This is socket services specifically for "Windows For Workgroups 3.1x".

PHOENIX CARD MANAGER


Point Enablers Explained in more Detail