Lotus 1-2-3 running on Linux (WSL)

Some days ago, Tavis Ormandy‘s work aroused a lot of interest in the world of retrocomputing. The developer has indeed managed to patch the UNIX System V version of Lotus 1-2-3, released 32 years ago, in order to run it natively on Linux, without emulation! All aspects of this work are detailed in this article, written by Tavis himself. The author has also released his work in a dedicated repository.

For those unfamiliar with it, Lotus 1-2-3 is a spreadsheet that also integrates database and graph functionalites. Developed by Lotus starting in 1983, it soon became the de facto standard for this kind of applications in the PC / DOS environment, only to be superseded by Microsoft Excel on Windows.

Lotus 1-2-3 (version 2.4 for DOS) manuals in Italian language.
Lotus 1-2-3 (version 2.4 for DOS) manuals in Italian language.

I fondly remember using Lotus 1-2-3 for DOS in late middle school and in high school. In particular, albeit somewhat improperly, I used it as a word processor to write the research for my eighth grade exam. However, until a few days ago, I was not aware of the existence of a version for the UNIX OS. For these reasons, I was enthusiastic about the Linux port and I tried my hand at the build. The procedure is well described in the repository readme file; however I ran into a couple of problems, fortunately they can be solved quite easily.

Having a PC with Windows 10 available, I decided to perform the build procedure on the Debian 10 distribution that I had installed some time ago in the WSL (Windows Subsystem for Linux) 2 environment. Unfortunately, on this distribution the toolchain is rather old and I could not complete the build. Tavis kindly suggested to try either with the testing version of Debian or with Ubuntu; I chose to go for the latter.

Lotus 1-2-3 on Linux (WSL): the step-by-step procedure

From the Windows Command Prompt, I installed the Ubuntu distro version (20.04 LTS Focal Fossa) currently available in WSL:

wsl --install -d Ubuntu

After configuring user name and password, I updated the system with:

sudo apt-get update

Then, I installed prerequisites with:

sudo apt-get install build-essential
sudo apt-get install gcc-multilib
sudo apt-get install lib32ncurses-dev

After that, I downloaded the 123elf repository from GitHub:

git clone https://github.com/taviso/123elf.git

Then, I entered the project directory and downloaded the Lotus 1-2-3 for UNIX floppy disk images:

cd 123elf/
wget https://archive.org/download/123-unix/123UNIX1.IMG
wget https://archive.org/download/123-unix/123UNIX2.IMG
wget https://archive.org/download/123-unix/123UNIX3.IMG
wget https://archive.org/download/123-unix/123UNIX4.IMG
wget https://archive.org/download/123-unix/123UNIX5.IMG

At this point, my attempt to run the script for compiling the binutils package failed, due to missing makeinfo. I solved the problem by installing texinfo:

sudo apt install texinfo

After that, I could finally download and biuld the binutils package:


Next, I copied the following tools: objcopy, objdump e ld-new (note: the latter must be renamed to: ld) to current project directory:

cp binutils-2.38/binutils/objcopy .
cp binutils-2.38/binutils/objdump .
cp binutils-2.38/ld/ld-new .
mv ld-new ld

Before launching the build, the content of the previously downloaded floppy disk images must be extracted:


Finally, the build can be started:


If all goes well, Lotus 1-2-3 can be run with:

Lotus 1-2-3 running on Linux Ubuntu in WSL (Windows 10)
Lotus 1-2-3 running on Linux Ubuntu in WSL (Windows 10)
My 8th grade study on the solar system, written with Lotus 1-2-3.
My 8th grade study on the Solar System, written with Lotus 1-2-3.
Leggi in Italiano

Leave a comment

Your email address will not be published. Required fields are marked *

2 thoughts on “Lotus 1-2-3 running on Linux (WSL)”