Vintage Computer Restoration, Part I
Published: 2021-03-10 23:39:07

---
title: Vintage Computer Restoration, Part I
published: true
date: 2019-01-01 14:00:00 UTC
tags: 
canonical_url: 
---

<center>
<img src="https://rickcarlino.com/images/2019/386/collage.gif" alt="">
</center>

I attended [Vintage Computer Festival Midwest](http://vcfmw.org/) late last year. I purchased a functioning [386-based](https://en.wikipedia.org/wiki/Intel_80386) 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](https://en.wikipedia.org/wiki/CompuServe) and later, AOL).

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

## Specs and Hardware

- Intel i386 @ 25 Mhz
- 4 Megabytes of [SIPP Memory](https://en.wikipedia.org/wiki/SIPP_memory)
- 120 MB hard drive
- VGA Monitor complete with gigantic video card
- Serial Mouse (predates [PS/2](https://en.wikipedia.org/wiki/PS/2_port))
- [AT Keyboard](https://en.wikipedia.org/wiki/IBM_PC_keyboard)
- [3.5 Inch Floppy](https://en.wikipedia.org/wiki/Floppy_disk)

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

![](https://rickcarlino.com/images/2019/386/specs.png)

# Project Goals

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](http://rickcarlino.com/2018/07/11/fabulous-text-only-websites-2018-edition-html.html).

**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.

<center>
<img src="https://rickcarlino.com/images/2019/386/fiddling.png" alt="Cleaning the case and reseting the BIOS with Michael Christenson">
</center>
# Why?

Why not?

# Data Transfer Attempt I: Sneakernet

<center>
<img src="https://rickcarlino.com/images/2019/386/floppy.jpg" alt="">
</center>

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](https://archive.org/details/software), 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](https://classicreload.com/win3x-skifree.html)) 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.

# Data Transfer Attempt II: Serial Line Transfer

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](https://en.wikipedia.org/wiki/RS-232) lines. Simple transfer protocols such as [XMODEM](https://en.wikipedia.org/wiki/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.

<center>
<img src="https://rickcarlino.com/images/2019/386/serial.jpg" alt="">
</center>

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](https://guidebookgallery.org/screenshots/win31)).

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

1. `screen /dev/ttyUSB0 9600`
2. Type `ctrl + a`
3. Type `:`
4. Enter `sx -b FILE_RELATIVE_PATH_GOES_HERE`
5. 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](https://github.com/RickCarlino/Dialup-Modem-Tools#x-modem) and reduce the number of steps from 5 to 1.

# What’s Next?

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](https://meta.wikimedia.org/wiki/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.