Vintage Computer Restoration, Part I

Rick Carlino
5 min readJan 4, 2021

I attended Vintage Computer Festival Midwest late last year. I purchased a functioning 386-based workstation running Windows 3.1 for $80 USD. The blog articles that follow will document my attempts to get it back on the internet.

Windows 3.1 has a special place in my heart. It was my first operating system. As a child in the mid 90s, it was also my first means of accessing the internet (via Compuserve and later, AOL).

Judging by filesystem dates, the computer operated from 1994 to 1997.

Specs and Hardware

The device is constrained. In 2019, even some microcontrollers are able to out perform this machine.

My intent for this project is to “make a 386 do things” and document my progress in a way that helps other retrocomputing enthusiasts. Here are some of the things I hope to accomplish:

Goal 1 (DONE): Get file transfer with my (modern) laptop via any means. This probably means via USB Floppy drive, or serial cable.

Goal 2 (DONE): Get it talking to a public-facing network.

Goal 3 (IN PROGRESS): Get it online and browse the text-based Web.

Stretch Goal: Run a public facing server on it for comedic effect. HTTP would be fun, although I may settle for an easier target (such as telnet) if the task turns out to be too ambitious.

Why not?

Despite the excitement of Windows 3.1 classics like Solitaire and Minesweeper, I can’t accomplish much on a clean install of Windows 3.1. I need to get software on it somehow. I had a USB floppy drive and a case of floppies I found from a local thrift store.

This seemed like the easiest way to make progress. I could download classic Windows software from The Internet Archive Software Collection, store them to disk via USB floppy drive (on my laptop) and then manually load them on to the Windows 3.1 machine.

The sneakernet approach presented challenges, however:

  • Many titles required more than 1.44 MB of storage space and the machine does not have a CD-ROM drive (yet).
  • My floppy disk collection had data integrity issues. Some files appeared to write to disk fine, but were unreadable afterward.
  • Linux support for USB floppy drives in 2019 is not great. I would hit strange issues, such as drives refusing to mount, endlessly spinning discs and botched system shutdowns whenever the drive was attached. Such errors happened sporadically without warning.

I was able to get a few notable titles (like SkiFree) loaded but it proved to be inconvenient. Although I probably could have split files on my laptop and then reassemble them on the host via pkzip or similar tools, I decided to search for more convenient file transfer methods.

In the bad old days of home computing, when wide area networks were less ubiquitous and <font/> tags roamed free, users could transfer data between computers via RS-232 lines. Simple transfer protocols such as XMODEM made such transfers possible. The process was as simple as plugging two computers together with a serial cable. Despite their simplicity, the protocols and transport layers were incredibly slow.

The first problem to tackle was purchasing an RS-232-to-USB adapter, since my laptop (and pretty much every computer sold during this millennium) does not come with an RS-232 port.

After purchasing an adapter on Amazon, I realized that many of the models sold require a male-to-female USB extender, which required a second set of online purchases.

Another inconvenience was that the machine had a single serial port. This meant I could use a mouse or perform data transfers, but not simultaneously. Since serial mice are not hot swappable on Windows 3.1, switching from “mouse mode” to “file transfer mode” required a full reboot of my machine. Not to be deterred, I spent some time re-learning Windows 3.1 keyboard shortcuts and was ready to configure a software toolchain for data transfers.

File Transfer Incantation

Now that I had all the required cables and adapters, I was ready to configure the software. The main tools I used were:

  • GNU screen: Opens a serial port on the Linux side.
  • sx: "Send XModem". A *nix tool for doing XModem transfers
  • terminal.exe: Used for opening serial (COM) ports on Windows 3.1 (screenshot).

To open a serial port and begin a serial transfer, I performed the following incantation:

  1. screen /dev/ttyUSB0 9600
  2. Enter sx -b FILE_RELATIVE_PATH_GOES_HERE
  3. Click Transfers => Begin Binary Tranfer in Windows 3.1 terminal.exe

This quickly became a tedious task. I ultimately wrote a custom Ruby script to automate the process and reduce the number of steps from 5 to 1.

My Windows 3.1 machine is healthy, happy and transferring files from the Internet Archive to disk.

In my next post, I will talk about opening TCP sockets for fun things like viewing the Wikipedia Telnet Gateway and my ongoing struggles to get HTTP access on Internet Explorer 5.

If you were a computer user during this era and wish to share advice with me, please contact me via Reddit or Lobste.rs.

Originally published at https://rickcarlino.com.

--

--

Rick Carlino

Open source software developer covering topics relating to computer programming, computer history and personal productivity. Co-founder @ farm.bot / fox.build