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.

It still has admirers today, and one of them is Google bughunter Tavis Ormandy, of Project Zero. Ormandy explains how he ported Lotus 1-2-3 natively to Linux here.

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.

Many maintain that the ultimate DOS word-processor was WordPerfect, and the last DOS version was 6.2. That's what Ormandy is running, under DOSemu2.

Given such refined tastes, if one wanted to run a DOS spreadsheet, then trusty old Lotus 1-2-3 is the obvious choice.

Ormandy not only owns and runs 1-2-3, he even developed a new display driver for 1-2-3 release 3, enabling it to support more than an 80×25 window – a considerable undertaking in reverse-engineering.

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.

Until now.


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.

In other words, the original 1990 Lotus 1-2-3 for x86 Unix, running on modern x86 Linux, without emulation.

Youtube Video


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) range


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

Similar topics

Other stories you might like

  • FabricScape: Microsoft warns of vuln in Service Fabric
    Not trying to spin this as a Linux security hole, surely?

    Microsoft is flagging up a security hole in its Service Fabric technology when using containerized Linux workloads, and urged customers to upgrade their clusters to the most recent release.

    The flaw is tracked as CVE-2022-30137, an elevation-of-privilege vulnerability in Microsoft's Service Fabric. An attacker would need read/write access to the cluster as well as the ability to execute code within a Linux container granted access to the Service Fabric runtime in order to wreak havoc.

    Through a compromised container, for instance, a miscreant could gain control of the resource's host Service Fabric node and potentially the entire cluster.

    Continue reading
  • Arrogant, subtle, entitled: 'Toxic' open source GitHub discussions examined
    Developer interactions sometimes contain their own kind of poison

    Analysis Toxic discussions on open-source GitHub projects tend to involve entitlement, subtle insults, and arrogance, according to an academic study. That contrasts with the toxic behavior – typically bad language, hate speech, and harassment – found on other corners of the web.

    Whether that seems obvious or not, it's an interesting point to consider because, for one thing, it means technical and non-technical methods to detect and curb toxic behavior on one part of the internet may not therefore work well on GitHub, and if you're involved in communities on the code-hosting giant, you may find this research useful in combating trolls and unacceptable conduct.

    It may also mean systems intended to automatically detect and report toxicity in open-source projects, or at least ones on GitHub, may need to be developed specifically for that task due to their unique nature.

    Continue reading
  • Unpatched Exchange server, stolen RDP logins... How miscreants get BlackCat ransomware on your network
    Microsoft details this ransomware-as-a-service

    Two of the more prolific cybercriminal groups, which in the past have deployed such high-profile ransomware families as Conti, Ryuk, REvil and Hive, have started adopting the BlackCat ransomware-as-as-service (RaaS) offering.

    The use of the modern Rust programming language to stabilize and port the code, the variable nature of RaaS, and growing adoption by affiliate groups all increase the chances that organizations will run into BlackCat – and have difficulty detecting it – according to researchers with the Microsoft 365 Defender Threat Intelligence Team.

    In an advisory this week, Microsoft researchers noted the myriad capabilities of BlackCat, but added the outcome is always the same: the ransomware is deployed, files are stolen and encrypted, and victims told to either pay the ransom or risk seeing their sensitive data leaked.

    Continue reading

Biting the hand that feeds IT © 1998–2022