Original killer PC spreadsheet Lotus 1-2-3 now runs on Linux natively
As Google guru who ported it points out, the operating system did not exist when 1-2-3 came out in 1983
A long lost native Unix version of the killer PC spreadsheet has not only been rediscovered, but almost unbelievably, it's been updated to create a native Linux version.
Lotus 1-2-3 was arguably the single application which made the IBM PC a success, and was launched nearly 40 years ago, on January 26, 1983. The Reg celebrated its 30th anniversary by firing it up in DOSbox, and we mourned when IBM finally killed it.
Ormandy has previously blogged about finding a DOS word-processor to run on Linux. As he put it:
I prefer to use terminal applications when possible, I'm just more comfortable in an XTerm. […] I'm not nostalgic for DOS software or a long-time holdout, I'm a new user in 2020.
Given such refined tastes, if one wanted to run a DOS spreadsheet, then trusty old Lotus 1-2-3 is the obvious choice.
Lotus published a commercial development environment for 1-2-3 plugins, written in the Lotus Programming Language. In 1991, PC Magazine was impressed [PDF] by the range of addons. But unfortunately, the Lotus Add-in Toolkit for 1-2-3 (list price, $395) was long lost.
In Ormandy's hunt for the LPL compiler, he asked SCiZE, who maintains a page dedicated to the long-gone bulletin-board "warez" scene. Not only did SCiZE have a copy of the long-lost Lotus toolkit, he also had a copy of something else thought lost to history: Lotus 1-2-3 for Unix™.
Before it bought in MS-DOS from Seattle Computer Products, Microsoft offered its own version of Unix, called Xenix.
As recounted in this history, MS co-founder, the late Paul Allen, put it:
It's important to realize that MS-DOS is part of a family of operating systems… Providing the user with a family of operating system capabilities means a clear migration path from MS-DOS to XENIX.
With such a glowing endorsement, several leading PC applications were ported to Xenix, including Microsoft Word, WordPerfect – and Lotus 1-2-3. None were a big success and little trace of them remains today. Until now.
When 1-2-3 for Unix was released in 1990, there were a bunch of competing variants of Unix for x86 computers, all incompatible with one another. SCO Xenix was the most prevalent, then its successor, SCO UNIX (largely the same OS, but with an officially-licensed AT&T kernel.) Others included AT&T's own Unix System V/386 and Interactive 386/ix.
The closest thing to compatibility between them was an ABI called the Intel Binary Compatibility Standard or iBCS. The only way to release a proprietary application for all of these Unixes at once was to release a partially compiled object file, which could then be linked to create a binary for the specific x86 Unix variant you had.
How it works
What Ormandy has managed to do is to build a tool to convert this ancient COFF-format object file into Linux's ELF format. He has called the tool coffsyrup (and you can take a look here.) The result is 1-2-3 for Unix, linked to glibc, which the Google guru calls 123elf.
- Saved by the Bill: What if... Microsoft had killed Windows 95?
- Beige Against the Machine: The IBM PC turns 40
- Stob treks back across the decades to review the greatest TV sci-fi in the light of recent experience
- Yes, of course there's now malware for Windows Subsystem for Linux
In other words, the original 1990 Lotus 1-2-3 for x86 Unix, running on modern x86 Linux, without emulation.
Lotus called versions "releases." Probably the most widely used version of the original assembly language releases of 1-2-3 for DOS was r2.01, which improved the app's memory management and macro language, along with other desirable features.
But memory remained a problem, leading to the development of 1-2-3 Release 3.
1-2-3 r3 was very different from 1-2-3 r2. Release 3 was rewritten in C, supported 3D worksheets, and could handle multiple files in memory at once. It was one of the first widely used DOS apps to run in the 80286 processor's protected mode, using Rational Systems' DOS/16M DOS extender, and stored data in extended memory (XMS), while release 2.x used expanded memory (EMS).
Lotus 1-2-3 rebooted: My trip back to the old (named) rangeREAD MORE
Getting 1-2-3 r3 to run alongside anything else that required a DOS extender – such as Windows 3 – could be a nightmare.
All the later releases in the 2.x series were released after 1-2-3 r3.
Battle-scarred from years of wrangling DOS memory management, your correspondent suspects that the fancy C-based big-memory release is the primary reason that the app was made available for protected-mode OSes such as Microsoft's Xenix. ®