My fascination with PCMCIA cards was created out of “necessity”. Most of my retro computing interest revolves around networking, and I wanted something that could natively attach to modern Wifi networks without the need to maintain an old linksys router just for my retro computers. There are many ways to do this, I just wanted something as clean and compact as possible. I was also left out of being able to use the various ESP based wifi modems as I mainly use an IBM PC110 and it has no serial port without a dock.
At the start I looked at butchering existing ethernet cards and wiring in a wifi232 module coupling together the ethernet PHYs. This was very sketchy and the module was large, no real hope of scaling it down.
I quickly moved onto attempting to make my own entire card. I used a small GAL for some address decoding, a parallel UART chip and a flash chip along side the esp8266. This worked quite well and depending on the crystal selected, when having the divisor at 0 (usually 115200 baud) it would actually be 460800. It was quite feasible to fit this onto a board in a tiny case, but the speed limitations and it only being a serial interface always had me thinking about an ethernet interface instead of or in addition to the UART. I did play with SLIP and various ways to use the serial interface to get onto the LAN, but it was not fast enough or transparent enough for what I wanted.
I came back to trying to emulate an NE2000 card on the ESP8266 (also tried ESP32). It was just too slow though, the interrupt latency on the ESP was already almost my entire 12uS time limit for an I/O cycle, and because of the limited IO on the all the ESP’s I needed to use an I/O expander chip or external multiplexer, and in both cases it was just so slow there was no chance. I even played with using a dual-port sram to act as a place to store the CIS on boot and to simulate the registers but there was just no overcoming how slow the ESP was in handling interrupts and manipulating the external multiplexer or expander. Maybe there were some other approaches but I put this back on to the back burner.
Then I saw the work by Ian Scott on the PicoGUS that was using a Rasberry Pi Pico to talk to an ISA bus. This brought the Pico to my attention and I quickly connected one to the PCMCIA bus to play around. I quickly saw that the interrupt latency for the PIO was very low, and the PIO itself allowed some very fast and easy coordination of the I/O wait signals and other potential multiplexing and that is how I arrived where I am at now.
It is a very simple design. I use a CPLD to handle some of the “glue logic”, and to deal with the multiplexing, and it has the added benefit of having 3.3V I/O which is compatible with the Pico, but the I/O is also 5V tolerant which is compatible with the PCMCIA bus.
Next steps, I would like to encapsulate it into a card much like the legacy wifi cards. There will be some bonus functionality available through the USB port operating in host mode.
And depending on mechanical limitations perhaps an audio jack. That may get left to a larger version of the card with more functionality in the future. With the Pico there are so many possibilities.