Pi Pico W Does PCMCIA, Gets This IBM PC110 Online

Card's author typing on the IBM PC110's keyboard, with the Pico W-based card plugged into the PCMCIA slot on the left. PC110's screen shows successful ping 8.8.8.8.8.

Bringing modern connectivity to retro computers is an endearing field- with the simplicity of last-century hardware and software being a double-edged sword, often, you bring a powerful and tiny computer of modern age to help its great-grandparent interface with networks of today. [yyzkevin] shows us a PCMCIA WiFi card built using a Pi Pico W, talking PCI ISA. This card brings modern-day WiFi connectivity to his IBM PC110, without requiring a separate router set up for outdated standards that the typical PCMCIA WiFi cards are limited by.

The RP2040 is made to talk PCI ISA using, of course, the PIO engine. A CPLD helps with PCI ISA address decoding, some multiplexing, and level shifting between RP2040’s 3.3V and the PCI 5 V levels. The RP2040 software emulates a NE2000 network card, which means driver support is guaranteed on most OSes of old times, and the software integration seems seamless. The card already works for getting the PC110 online, and [yyzkevin] says he’d like to improve on it – shrink the design so that it resembles a typical PCMCIA WiFi card, tie some useful function into the Pico’s USB port, and perhaps integrate his PCMCIA SoundBlaster project into the whole package while at it.

This is a delightful project in how it achieves its goal, and a pleasant surprise for everyone who’s been observing RP2040’s PIO engine conquer interfaces typically unreachable for run-of-the-mill microcontrollers. We’ve seen Ethernet, CAN and DVI, along many others, and there’s undoubtedly more to come.

We thank [Misel] and [Arti] for sharing this with us!

37 thoughts on “Pi Pico W Does PCMCIA, Gets This IBM PC110 Online

  1. PCMCIA is based on the ISA bus, which is why this is able to build on the PiGUS project.

    CardBus cards are based on PCI and they came later. An RP2040 can’t do PCI (32-bit, 33 MHz) – it doesn’t have enough pins.

      1. There’s also PC Card..

        But don’t worry, we all confused this stuff.
        A CardBus card could be either PCI or ISA, depending on the design/type.

        Then, there’s Express Card, with PCIe?

          1. IIRC there were a couple of laptops that used ExpressCard 2.0 but I doubt any ExpressCard 2.0 devices were made. EC2.0 had a single PCIe 1.0 lane but optionally supported PCIe 2.0

            Unfortunately the USBIF, which has taken over ExpressCard, doesn’t seem to care to do anything more with it and removed information on it from their site in 2018.

            An expanded version would be ideal for the expansion module slots of a future Framework laptop. Take ExpressCard 2.0 and add an additional connector section to make it 54mm wide, same as PCMCIA and CardBus. Bump up the PCIe version to at least 3.0 and use all of the additional connector pins for PCIe lanes. Some electronic trickery could shift the lane numbers over if a combo PCIe USB 3.x card is inserted. An x3 PCIe connection should work, right?

            It would be akin to how 16bit ISA added a separate section onto the 8bit version, some early 16bit motherboards even used separate connectors for the two parts.

            ExpressCard 1.0 and 2.0 are cross compatible, with 2.0 cards supposed to be able to fall back to 1.0 speeds and 2.0 slots supposed to be able to work with 1.0 cards. ExpressCard 3.0 devices with a wider connector wouldn’t work in 1.0 or 2.0 slots but 1.0 and 2.0 devices would have to work in a 3.0 slot.

            Would USBIF just hand over maintenance of the ExpressCard standard if Framework or another company asked nicely?

          2. Id really like to comment on Gregg’s reply here, but can’t, reply depth.

            Framework has 4 USB-c ports, and altho not officially marketed as such, due to certification by Intel is required, they support thunderbolt 4.0, meaning, PCIe expension over these USB-c ports is possible. There excist eGPU adapters for this and they can take whatever PCIe card you’d like to install. Cheaper and easier access to these boards might be what we want.

            AliExpress sells some of these boards for arround 200 euro. Can’t find the Intel original cards, might be sold out. Intel dint intended these for eGPU usage, but Asian market got their hands on the datasheets and made adapter boards anyway

  2. The PC110 was way ahead of its time, and due to IBM’s incredibly dumb marketing department it was only released in Japan. I imported three to use for my work. I set them up with the expansion bay that had a serial port and used them to manage enterprise raid systems. Always got a laugh I would pull out a tiny little laptop and hook it to a huge rack system to set it up.

  3. If only the RP2040 had 5v tolerant IO. I understand why it isn’t, but it’s PIO functionality is amazing for hooking up to retro PC buses for all sorts of things… if only it didn’t need a huge amount of level translation glue in the middle :(

    1. Note: the pads themselves are 5V tolerant for input, just not 5V5 tolerant, which is what we’d need them to be to put “5V tolerant” in the data sheet. (Hypothetical) future designs will fix this.

      Note also: they’re not (and will never be) 5V *failsafe*, so don’t subject them to 5V without first powering VDDIO.

    1. Yes, it’s nice. Because , is the little sister of.. Just Kidding!
      Both NE1000 and NE2000 were basic standards, like VGA or AdLib.
      Not very powerful, but well known.

      The problem with NE2000 is, that is very slow and has an CPU overhead.
      In comparison to other network cards of the time, which had a FiFo and some intelligence (parts of the network frames were processed inside the ICs).

      Or in other words, the NE2000 is like a dumb Baycom PC modem or a Terminal Node Controller (AX.25 TNC) in KISS mode.
      An Etherlink III or another, more advanced ethernet card can process data and handle network traffic without CPU intervention. In my previous example, it would compare to a TNC in HOST mode (or Terminal mode) in which the HDLC information is processed all in hardware.

      Anyway, NE2000 is fine as a basic standard. Maybe a native mode can be added next to it in the future, without removing NE2000. A jumper could enable NE2000 compatibility. Real NICs had NE2000 compatibility as a fall-back, as well. Just like early VGA cards (ISA bus models) had a DOS mode utility to enter Emulation Mode, to switch to CGA/EGA or Hercules mode.

      1. and which cards would those be? because 3Com was producing duds at the time, with famous
        > This is a device driver for the 3Com Etherlink 3c501.
        > Do not purchase this card, even as a joke. It’s performance is horrible, and it breaks in many ways.
        line in linux kernel driver? :)

        NE2000 cards as implemented by Realtek RTL8019A shipped with same fifo size as 3Com 3c503, and equally cheap UM9003F had twice that. All were transferring data thru direct I/O operations and had no offloading to speak of.

        1. Try the 3C509 EtherLink III ISA.
          Supposedly supports Plug-and-Pray, AFAIK OK performance, if you have the right model support for 10Base-T, 10Base-2 and 10Base-5 and widely supported by just about any OS.
          I always grabbed one of those if I needed ethernet in a pinch back in the days these were up for grabs at just about any second hand market or thrift shop.

        2. “and which cards would those be? because 3Com was producing duds at the time”

          The 3C509, for example, as user Rudy vK has just mentioned, too.
          That’s the chip used in the Etherlink III, and I suspect you already knew this long before. ;)

          Anyway, here’s another chip, since you asked for it: The D-Link DE-220 series (say, DE220PCT). Note that network cards using it are often sold under different product names, rather than by the chip’s name.

          Here’s what the readme file says (de220_x.zip, has setup utilities and drivers):

          “D-Link DE-220 Family Ethernet Adapter Rev. D1 equipped with
          Just-In-Time-Interrupt (JITI) on board remarkably boosts its performance
          and optimizes CPU Utilization.

          The enhancement in throughput provided by JITI is astonishing. It’s
          the A.I. enabled network interface card in the industry and the best
          performance card in the market. With JITI, the improved DE-220 Family
          Ethernet Adapter’s performance is sure to benefit most our users.”

          Sure, that’s likely overstated. But it’s a far cry from the NE2000, also. And along with the Etherlink III (3C509) it’s also being autodetected by WFW 3.11 and other vintage software.

          That being said, the problem with the NE2000 is not the reference card per se, the original “NE2000”, but rather the incomplete NE2000 emulation of many third-party ethernet cards. It caused incomplete software support, too. – Though to be fair, basic operation should work. That’s why “native mode” often is/was to be preferred. Which, as a side effect, is much more CPU friendly simultaneously, making NE2000 superfluous once available.

          That’s my point. I didn’t mean to discredit the author of this project. He/she has all my respect (kudos!) for building such an ethernet card. It’s just that he/she is so close to the finish line already. Which might be adding a “native mode” for the finished network card, with less overhead.

          1. >3C509

            You will be happy to learn 3C509 is an optimized 3C503. There is slight problem tho, it was COST optimized :D Mainly by integrating everything into single chip, but also by cutting resources.
            3C509 has 4KB of FIFO ram instead of 16KB on 3C503 and Realtek RTL8019A. 4KB was really bad. With 3C509B 3Com was generous and shipped with 8KB of fifo, still 2x less than cheapest Realteks. 509 also lost ability to have memory mapped fifo of 3C503 and fastest ISA designs from WD/SMC.
            3C509 features _zero_ offloading logic.

            >DE-220

            This is marketing drivel for early receive/transmit interrupts. Slightly lowers latency.

            Big differences came in 100Mbit PCI era. Thats when Realtek dropped the ball shipping absolute minimal viable product.

        3. 3Com? Duds? Say it wasn’t so!!!

          I never new the 3c501 but long ago I acquired a shoe box full of 3c503s. Those giant PCBs were amazing! Early Linux supported them very easily at a time when many of the cards in the local computer shop had no Linux drivers. Worse, in those days the name/models on network card packages were meaningless with the actual contents varied by what chip was on sale the day it was manufactured. The only way to really know if a card was supported was get the number off the main chip on the card and go look it up online. Which usually of course required buying the card first!

          Besides all that they seemed better at making do with a lousy connection. While Cat5 was still priced like platinum coated Monster cable those things would usually get a good link over a mouse-chewed length of original Ma Bell. I think they might have worked via a wet noodle! I always figured it was because they had so many discrete components. Lots of bypass caps and filter inductors.

          If the ISA buss hadn’t mostly gone the way of the Dodo and networks progressed so far beyond 10M I would probably still be using those beauties today!

    1. I am so excited to see how well this general technique will work with the HP-LX as well. Not so much for the WiFi but I have been wanting to make something like the RaSCSI for the HP-LX with multiple functions attached via a simulated SCSI. This seems like a major step on that path. 🤞🏼that this works with the weird PCMCIA in the HPs

      1. It does work on the HP 200LX, which is what I test on, and also it is below 100mA.

        Laptops with a standard Intel PCIC, things are fairly forgiving but on the HP no surprise I have had to really work on following specifications closely.

        Good news also is that this draws below 100mA, which is important for the LX. Your point of SCSI emulation is interesting as there are options for ethernet SCSI interfaces also.

  4. The laptop in the thumbnail and post image isn’t the PC110, but the Thinkpad 235, aka Chandra, aka Clavius. It’s a very nifty Pentium I machine with tons of expandability that would put most current laptops to shame

      1. Not even a renamed Hitachi! They are both (the PC110 and Thinkpad 235) from RIOS, with the PC110 being a specific partnership with IBM.

        I like the Thinkpad 235, it uses the same camcorder batteries as the PC110

  5. Wow. I wasn’t aware of PicoGUS. I’m wondering, if a Pico has the ability to emulate an ISA card, can it emulate an ISA bus? I’ve been eager for the day when open source micro-controller or Pi projects start getting that ability. I want an inexpensive USB to ISA-adapter that allows old peripherals to connect to a modern computer. Yes, I know, there are commercial devices that do that however I’m looking for something in a toy price range, not an industrial device.

    1. Hi there! 🙂 I’m not entirely sure, but I think yes, there’s a chance. With some glue logic. Things like address decoding etc. should be done with TTL chips (74 series), PALs/GALs etc. Because of latency, at least. It would stress the Pico unnecessarily, if it had to do these things all on its own.

      Btw, IDE/ATAPI use a subset of the AT-Bus (related to ISA). IDE uses a fixed port address each and can’t be used as a bus for multiple devices so easily (there’s just a master/slave configuration per physical IDE port).

      In the past, some people attached EPROM programmers on a spare IDE port, also. The ISA “IDE controllers” were just host adapters. The HDD I/O pins were directly routed to the corresponding ISA slot pins. A simple glue-logic made of discrete parts did the address decoding.

      Parallel port is/was similar, albeit much more limited. It exists in different versions (SPP, PS/2, ECP, EPP etc). It’s like a very crude USER port, albeit with some modern additions like DMA. That’s why in the past it could had served as an external PC-Bus replacement, like for CD-ROMs, Scanners, network cards and such. SCSI also existed, but was high-end. Some vendors like Serdashop do sell modern PC retro soundcards for LPT port, for example.

        1. Um, okay. If I’m not mistaken, the PicoGUS card seems to have discreet buffers and/or address decoders, though? Haven’t really checked the schematic yet, just had a quick look on the photos. 😅

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.