BIOS Support for PCMCIA devices

Anyone who has used PCMCIA cards, particularly in the days before Windows 95, will be aware of the 'delights' of configuring either Card and Socket Services, or point enablers, to support their device. The PC110 is clever enough to support several types of PCMCIA device straight from the BIOS, cutting out the driver configuration and reducing memory usage. Hurrah!

Supported devices

The PC110 BIOS supports these devices directly. This means that without the installation of PCMCIA drivers, devices are seen as normal hardware. Of these devices, I have personally tried Type III hard drives and Type II modems in the lower slot. Note that Easy-Setup is the BIOS configuration utility, accessed by holding down <Fn>+<F1> as you power on.

For the technically aware, what would appear to happen is that the BIOS contains sniffers and point enablers for the supported PCMCIA devices, which are loaded, I presume, at the end of POST. These configure the PCMCIA controller for whatever devices the sniffers find in each socket, then disappear.


Seen as


Type III ATA hard disk (mechanical) IDE device; drive letter varies Must be included in startup sequence in Easy-Setup. Drive letter assigned depending on order of PCMCIA, HDD-1 and HDD-2. Device must be initialised correctly before use - see below. May be installed in either slot (using a type convertor)
ATA flash card IDE device; drive letter varies Install in either slot. Configure as for Type III hard disk.
Modem COM port; can be COM1: or COM2: Must be configured in Serial section of Config option in Easy-Setup. Note that numbering refers to COM port rather than PCMCIA slot. Enable PCMCIA 1 for it to act as COM1:, and PCMCIA 2 for COM2:
Token ring adapter I/O A20h, 24KB of upper memory area?  Unknown, as I've never tried it. Not sure how it'll interact with the AudioDrive - might have to reconfigure that to use an I/O port other than 220h. Must be installed in the lower slot, though. There is an option in the startup sequence in Easy-Setup called 'Network' - this, combined with a RIPL-enabled token ring adapter (such as the IBM ones), allows you to boot the PC110 off a suitable RIPL server. 


Initialising ATA storage devices

One problem I've had with PCMCIA hard disks is that strange things happen if you don't initialise them correctly. If you have a drive that can be read and written to perfectly happily, but cannot be made bootable despite the apparent success of a SYS or FORMAT /S, you have to initialise the disk using the initialisation utility. See Initialising ATA storage devices for more information on this.

Booting from ATA devices and loading PCMCIA support - the problem

So it's neat to have the BIOS map your ATA card as an IDE device, but you still need PCMCIA drivers loaded to support an Ethernet card, or such like. How can this be done? Most people try a straightforward installation of PCMCIA support, reboot the machine, and find that it hangs. Why?

The answer is simple - if you look at the sequence of what's happening:

  1. Power on
  2. PCMCIA controller initialised
  3. BIOS maps one of the PCMCIA slots as a normal IDE device
  4. Operating system boots from the IDE device and starts to load up device drivers, etc.
  5. Operating system loads PCMCIA drivers, which initialise the PCMCIA controller
  6. Operating system continues the bootup sequence, but can no longer find the IDE device which it was loaded from - hang!

This sequence is relevant to all operating systems I know of, including DOS, OS/2, and Windows 95. I expect it would affect Linux also.

Booting from ATA devices and loading PCMCIA support - the solution

Two solutions are possible:

  1. Set up the Socket Services driver, to ignore the slot you're using for the ATA card, then load the rest of your PCMCIA support.
  2. Obtain newer or more sophisticated Socket Services drivers which understand that the socket has already been initialised by a point enabler.

For the first approach, there are two things you need to know: the socket numbering, and the driver switch syntax. The lower slot is number 1; the upper slot is number 2. Syntax will vary between drivers, but the DOS Socket Services driver SSDPCIC.SYS accepts the /ig0=x parameter, where x is the slot to ignore (and 0 is a zero). For example, to boot DOS from an ATA card in the upper slot, modify your CONFIG.SYS to make the socket services line look something like:

devicehigh=c:\ezplay\ssdpcic1.sys /ig0=2

I have listed here part of the README files from a ThinkPad Utility diskette which describes the purpose and driver syntax for the IBM Card & Socket Services drivers.

The standard Windows 95 PCMCIA drivers do not support individual slot disabling. In this instance we have to use the second approach, and fortunately IBM have drivers for Win95 that behave as we want. Click here for more details.

Windows NT 4.0 (original version) is unstable unless the PCMCIA device is disabled. Again, there is no obvious way of disabling a specific socket. I have had better luck with a later copy of the NT 4.0 Workstation CD - it includes Service Pack 1 in the installation image, and seems stable with PCMCIA.SYS running...time will tell...

Back to index

Written by Daniel Basterfield. Images found on the internet. Enjoy!