github.com/zikolas  ·  public repositories

68 Pins

DOS and Windows software for PC Card (PCMCIA) hardware whose drivers were lost to time, never shipped, or never existed. Enablers, passthrough drivers, and tools that read, write and repair.

C:\> ES1688GO /SB=240 /FM /W=DC00 RATOC REX-5571: socket 0 (auto) DSP v3.01 SB 240 FM 388 MPU 330 IRQ 5 C:\> SET BLASTER=A220 I7 D1 T4 C:\> VSBPCM /CARD:ES1688 /BASE240 /A220 SB emulation: Addr=220, Irq=7, Dma=1, Type=4 C:\>
13Repositories
24Cards & chipsets
3PCMCIA backends
0Vendor binaries read

Enablers

bring the card up

DOS has no idea a PC Card exists until something programs the socket controller, maps the card's I/O windows and writes its configuration register. These do that in one command, then get out of the way.

ES1688GO.COM
Lang
Assembly
Lic
MIT
Size
8086 .COM
Updated
Jul 2026

es1688go

One enabler for every ES1688 PC Card — three host paths, one binary.

Merges three sibling enablers into a single .COM. With no mode switch it auto-detects the host: Card Services first when an arbiter is loaded, then the OmniBook Socket Services signature, then an 82365 probe at 3E0h. Brings up SB direct-DAC audio, ESFM at 220h, AdLib at 388h, MPU-401 and gameport.

  • Ratoc REX-5571/5572
  • Panasonic KXL-C101
  • Eiger Labs EPX-AA2000
  • IBM PCMCIA CD-ROM
VEW21XGO.COM
Lang
C + ASM
Lic
MIT
Size
~13 KB
Updated
Aug 2026

vew21xgo

Enabler and CIS repair kit for the Panasonic CF-VEW211 and its NEC sibling.

A 1994 CS4231A + OPL3 card in a ~13 KB .COM, with the same three auto-detected backends. It still handles its founding case — a card whose CIS is dead — and now covers the PC-98 badged PC-9801N-J04, which shares the ASIC and codec but has no FM synth. The CF-VEW212 is identified and politely declined: its working configurations are not the one its CIS declares.

  • Panasonic CF-VEW211
  • NEC PC-9801N-J04
  • Crystal CS4231A
  • Yamaha YMF262 OPL3
SCP55GO.COM
Lang
Assembly
Lic
MIT
Size
11 KB
Updated
Jul 2026

scp55-enabler

Wakes the Roland SCP-55's onboard Sound Canvas as a General MIDI device.

Three host backends in an 11 KB .COM, auto-detected at run time, with a polite I/O window allocator on the OmniBook path. The original single-backend C enabler the project started from is kept in legacy/ as the readable reference.

  • Roland SCP-55
  • Sound Canvas GM
  • MPU-401
EXPGXGO.COM
Lang
Assembly
Lic
MIT
Size
8086 .COM
Updated
Aug 2026

expgxgo

Finds the MIDI port that the EXP Game Traveler's CIS never mentions.

The card's CIS declares one thing: its gameport. The vendor's Windows INF declares the rest — a second 8-byte block at 250h holding a 16550-class UART, clocked so that divisor 24 lands exactly on 31250 baud. Built from the CIS, those plain-text configuration declarations and live recon; no vendor binary was read or disassembled. Bench-proven on the GAME/MIDI G3.

  • EXP GAME/MIDI G3
  • Argosy Research OEM
  • 16550 UART
PCJOY2GO.EXE
Lang
C
Lic
MIT
Host
82365SL
Updated
Jul 2026

pcjoy2go

Point enabler for the I-O DATA PCJOY2 — gameport and MPU-401 UART.

Written from the card's own CIS, dumped on target, and the public Intel 82365SL register set. The card carries no MANFID tuple, so it is recognized by its VERS_1 string instead; the configuration register base comes out of CISTPL_CONFIG at 200h.

  • I-O DATA PCJOY2
  • MPU-401 UART
  • Gameport 201h
AUD2GO.EXE
Lang
C
Lic
MIT
Rel
v1.1
Updated
Aug 2026

aud2go

CardBus bring-up in DOS, starting from a socket the BIOS left completely dark.

In DOS the BIOS leaves CardBus sockets unconfigured: no socket register window, no resources, and no power to the card. Nothing in a plain DOS install fixes that, so the card may as well not be in the slot. AUD2GO powers the socket, brings the card out of reset and assigns it PCI resources — then deliberately stays out of the audio silicon, because the chip's wake-up sequence belongs with whatever drives it.

  • Audigy 2 ZS Notebook SB0530
  • Ricoh RL5C475/476
  • EMU10K2
ES1688GO.EXE
Lang
C
Lic
MIT
Role
origin
Updated
Jul 2026

rex5571-enablersuperseded

The original C enabler, kept for the REX-5571 project history.

Where the ES1688 work started: a DOS enabler for one specific card, the Ratoc REX-5571, whose driver was lost to time — and which grew into a general ES1688 enabler. Development continues in es1688go; use that one.

  • Ratoc REX-5571/5572
  • ESS ES1688

Drivers & shims

make the software believe

An enabled card is still useless to a game that expects different silicon at a different address. These sit between the two and translate — in real time, without dropping a byte.

VSBPCM.EXE
Lang
C + ASM
Lic
GPL-2.0
Rel
v1.0
Updated
Aug 2026

vsbpcmcia

Sound Blaster emulation for laptops whose card slot has no DMA.

The target machines are 486-class PCMCIA laptops whose card bridges have no ISA DMA to the socket. The guest's Sound Blaster audio is intercepted and pushed to the real card's FIFO by programmed I/O — a passthrough, not a mixer: the chip plays the guest's native rate and format and nothing is resampled. FM rides the card's real OPL at 388h, untrapped.

Validated from a Pentium MMX down to a 386-bus 486SLC/25. One binary carries the ES1688, CS4231 and CS4248 backends; /CARD: picks one at load time. A fork of Baron-von-Riedesel's VSBHDA, itself a fork of crazii's SBEMU.

  • ESS ES1688
  • Crystal CS4231A
  • Crystal CS4248
  • HDPMI 3.21+
MPUSHIM.EXE
Lang
C + ASM
Lic
GPL-2.0
Rel
v0.3
Updated
Aug 2026

mpushim

Makes a bare serial UART answer like an MPU-401 at 330h.

Some MIDI interfaces are a raw 16550 and nothing more. A DOS player can drive one directly, but games speak the MPU-401 handshake — reset, the FEh ACK, and a status port whose bits report data-ready and write-ready. A bare UART answers none of it, so a game's drain-pending-input loop spins forever and it hangs before drawing a frame.

MPUSHIM traps both ports, returns a correct UART-mode status byte so drain loops terminate, answers reset with the ACK and an All-Notes-Off broadcast, and forwards MIDI paced on the Line Status Register — bytes are never dropped. One resident binary covers both trap worlds: real-mode V86 and 32-bit DPMI/DOS4GW.

  • 16550 UART
  • MPU-401 330h
  • DOS4GW / HDPMI
  • Roland CM-32L
CFU1.VXD + INF
Lang
ASM + C
Lic
MIT
Ring
0
Updated
Jul 2026

cfu1-win9x

A Windows 95/98 USB stack for a card that only ever had CE drivers.

RATOC's REX-CFU1 is a CompactFlash-sized USB 1.1 host built around the SL811HS. RATOC shipped Windows CE drivers and nothing else; this makes the card work on PCs. Insert it and Windows PnP-installs an INF plus a CONFIGMG-integrated VxD carrying its own USB stack.

Current state on Windows 98: USB mouse, keyboard, hubs, and a real read/write drive letter for USB sticks. A ring-0 hot-plug supervisor enumerates and classifies devices and feeds Windows through VMOUSE and VKD — keyboard and mouse work simultaneously behind a self-powered hub, devices can be yanked and replugged freely, and a watchdog recovers hubs whose firmware crashes.

  • RATOC REX-CFU1
  • Cypress/ScanLogic SL811HS
  • USB 1.1 HID + MSC

Card tools

read and repair the card itself

Every 16-bit PC Card carries a CIS — a chain of tuples in attribute memory describing what it is and how it may be configured. These read that account, write to the card's memory, and in one case put a destroyed CIS back.

CISDUMP.EXE
Lang
C
Lic
MIT
Size
~17 KB
Updated
Aug 2026

cisdump

Reads a PC Card's CIS without disturbing a card that is already running.

Card-agnostic: decodes MANFID, FUNCID, the COR address, and each configuration's I/O windows and IRQ options through an 82365-class PCIC — no Card Services or Socket Services required. Polite by default. It borrows the controller's first disabled memory window, saves those registers, reads, then restores the window and the enable byte precisely, so it never clobbers a running enabler's I/O windows. Only a card it powered up itself is powered back down.

  • Intel 82365 PCIC
  • Any 16-bit PC Card
  • /FULL parse
  • /BIN raw dump
LINGO.EXE
Lang
C
Lic
MIT
Rel
v1.4
Updated
Jul 2026

lingo

Reads, writes, erases and identifies linear flash and SRAM PC Cards.

The memory-mapped kind of card, not ATA: a flat window of chip memory, where writing flash means real block erases and byte programming. LINGO does that itself — including switching the socket's Vpp to 12 V for the older Intel parts that need it — with no Card Services, no Socket Services and no FTL driver.

In the CISDUMP tradition, READ and INFO never write a byte; chip identification only happens under /PROBE, and anything a probe touches on an SRAM card is saved and restored.

  • Intel 28F008SA family
  • AMD 29F series
  • SRAM cards
  • 12 V Vpp
recon + tools
Lang
C
Lic
MIT
Kind
writeup
Updated
Jul 2026

kxld20go

Repairing a PC Card's destroyed CIS in software — no programmer, no soldering.

Reverse-engineering notes and DOS tools for the Panasonic KXL-C101, the sound+SCSI card bundled with the KXL-D20 and KXL-D745 portable CD-ROM drives: an ESS ES1688, a QLogic FAS408 SCSI controller and a NEC µPD65622 glue ASIC tying them to the PC Card bus.

The headline result: its damaged CIS was restored entirely in software, by finding the ASIC's undocumented factory CIS-write mode and defeating the specific way the storage had failed. Everything here was learned by probing the hardware, from a byte-exact dump of a known-good card, and from the public ES1688 and FAS408 programming models.

  • NEC µPD65622
  • ESS ES1688
  • QLogic FAS408
  • Panasonic KXL-D20/D745

Hardware index

find the card, find the tool

If you arrived here holding a specific card, start on this list.

AMD 29F-series flash cards
lingo
Audigy 2 ZS Notebook (SB0530)
aud2go
Crystal CS4231A
vew21xgo · vsbpcmcia
Crystal CS4248 (755C planar)
vsbpcmcia
Cypress/ScanLogic SL811HS
cfu1-win9x
Eiger Labs EPX-AA2000
es1688go
ESS ES1688 AudioDrive
es1688go · vsbpcmcia
EXP Game Traveler GAME/MIDI G3
expgxgo
Fujitsu 16-bit Stereo
es1688go
IBM PCMCIA CD-ROM (CD-400S)
es1688go
I-O DATA PCJOY2
pcjoy2go
Intel 28F008SA linear flash
lingo
Intel 82365 PCIC socket
cisdump · all enablers
NEC PC-9801N-J04
vew21xgo
NEC µPD65622 ASIC
kxld20go
Panasonic CF-VEW211
vew21xgo
Panasonic KXL-C101 / D20 / D745
kxld20go · es1688go
QLogic FAS408 SCSI
kxld20go
RATOC REX-5571 / REX-5572
es1688go
RATOC REX-CFU1 USB host
cfu1-win9x
Ricoh RL5C475 / RL5C476 CardBus
aud2go
Roland SCP-55 Sound Canvas
scp55-enabler
SRAM PC Cards
lingo
Yamaha YMF262 (OPL3)
vew21xgo

Proven on

bench hardware, not emulators

Every claim on this page was made on a real machine with a real card in the slot.