Lotus 1-2-3 on the PC w/DOS

VisiCalc started it, but 1-2-3 finished it. "It" being the discussion of what a spreadsheet can be, and also VisiCalc itself.

Lotus 1-2-3 on the PC w/DOS

What would a piece of software have to do today to make you cheer and applaud upon seeing a demo? I don't mean the "I'm attending a keynote and this is expected, please don't glower at me Mr. Pichai," polite-company type of applause. I mean the "Everything's different now." kind.

For that, the bar is pretty high these days. "Photorealistic" fight scenes between Brad Pitt and Tom Cruise against an apocalyptic cityscape are generated out of nothing but a wish, and social media, smelling the cynical desperation, can offer no more than a clenched-teeth grimace. Within 48 hours the cold light of the epic battle has faded, leaving no residual heat.

A sense of awe was easier to elicit back in the golden era. Bill Atkinson scrubbed out some pixels with an eraser in MacPaint to thunderous applause. Andy Warhol did a flood fill on an image capture of Debbie Harry, leaving an audience enraptured.

Perhaps miracles work best when they're minor.

Video frame grab of Debbie Harry in ProPaint V24 Release 14 on a Commodore Amiga. Her face has a blue-white solarized look, and her hair is mid-flood-fill to bright yellow.
A common story says the engineers panicked when Warhol used flood fill, but that story is disputed, especially for the version of ProPaint demoed at the time. Warhol's original Amiga disks were re-discovered not too long ago.

Mitch Kapor has been on the receiving end of the adulation. As CEO of newly-formed Lotus Corporation, demos of their flagship product 1-2-3 generated significant light and heat with the crowds. In a 2004 interview with the Computer History Museum, Kapor said, "You could with one-click see the graph from your spreadsheet. You could not do that before. That was the killer feature when we demo’d it. I mean, literally, people used to applaud – as hard as it is to believe."

He knew all too well the struggles of the VisiCalc crowd, having previously built VisiPlot and VisiTrend for VisiCorp. Those programs worked with VisiCalc data to draw graphs, but required a lot of disk swapping to move in and out of the various programs when fine-tuning charts and graphs. 48K on the Apple 2 made it essentially impossible to fit all of the software into memory at once, but they could at least put everything onto the same diskette, Kapor reasoned. Eliminating that song and dance would be useful to the customers.

Depicted as a literal song-and-dance in their advertising.

In an interview in Founders at Work, Kapor said, "At various times I raised a number of ideas with the publisher about combining (VisiCalc and VisiPlot onto one disk) and they weren't interested at all. I don't think they really saw me as an equal. They saw me, when I was there as a product manager, as an annoyance—as a marginal person without experience or credentials who was kind of a pest. And I suppose I was kind of a pest."

He said the feeling was mutual, and that was basically it for his employment with Personal Software and the VisiCalc team. He let them buy him out (i.e. the juicy royalties he was receiving for VisiPlot and VisiTrend) for $1.2M, then took that money and went off to build the better mousetrap he had tried to pitch.

Lotus 1-2-3 would quickly become the "killer app" for the nascent IBM-PC, doing for that system what VisiCalc had done earlier for Apple. 1-2-3's success (and corporate in-fighting between Personal Software and VisiCorp) drove VisiCalc sales into the ground almost immediately. Two years later, Lotus would buy out Personal Software. One year later, Lotus would kill VisiCalc. Today, Microsoft Excel documentation still references Lotus 1-2-3, not VisiCalc.

I have no 1-2-3 experience going into this. I always thought "1-2-3" referred to its relationship to numbers. "1, 2, 3. Row numbers. Numbers in a spreadsheet. Mathy number stuff. I get it." I honestly had no idea "1-2-3" indicated something more.

I'm learning that VisiCalc walked so 1-2-3 could run (over VisiCalc's ashes in a Sherman tank).


Historical Context

A vertical timeline infographic on a gray background, imitating the design of 1-2-3 packaging (not sure which version, TBH), chronicling the history of Lotus 1-2-3 from 1979 to 2018, with year headings in large dark red numerals like the 1-2-3 logo, and brief descriptive text for each period. The large "1-2-3" logo appears on the right side with the tagline "Market dominance (and concession) made simple." Key milestones include: Mitch Kapor publishing Tiny Troll and VisiCalc's release (1979); VisiCorp publishing VisiPlot and VisiTrend, and a dispute over the VisiCalc name (1981); Kapor founding Lotus with Jonathan Sachs (1982); Lotus 1-2-3 v1.0 shipping for DOS at US$495, with sales jumping from near zero to US$53M in the first year (1983); Lotus buying Software Arts and acquiring VisiCalc, and Microsoft debuting Excel for Macintosh (1985); Lotus discontinuing VisiCalc (1986); Microsoft releasing Excel for Windows (1987); a Computer Chronicles "Spreadsheet Wars" episode in which Gary Kildall mused if 1-2-3 could suffer VisiCalc's fate, Borland debuting Quattro (1988), and a first look at Release 3 of 1-2-3, which was very late to market; Release 3.0 launching as a C rewrite with mixed reviews, and Lotus debuting Notes (1989); Release 3.1 introducing WYSIWYG editing (1990); Release 2.3 and the first Windows release (1991); Release 2.4 adding WYSIWYG and icon editing, and Release 3.4 shipping at US$595 (1992); Release 4 for Windows shipping at US$495, and Excel surpassing 1-2-3 in sales (1993); Release 4 for DOS, the final DOS version (1994); IBM acquiring Lotus for US$3.5B in a hostile bid (1995); the Millennium Edition shipping as the last version of 1-2-3 (2002); IBM announcing end of support (2014); and IBM selling Lotus Software to HCL for US$1.2B (2018).

My Setup

  • DOSBox-X 2026.01.02, Windows x64 build. I updated from the 2025.12 build mid-investigation.
    • CPU set to 286
    • DOS reports as v6.22
    • Windows folder mounted as drive C:\ holds multiple Lotus installations
    • 2x (forced) scaling; 80 columns x 25 lines
    • I flipped back and forth with TrueType text mode (this is moot for 1-2-3's WYSIWYG mode)
  • Lotus 1-2-3 Releases 2.01, 2.2, 2.3, 2.4, and 3.4 all get exercised to some extent; you'll see that reflected in the screenshots. I mostly gravitate toward R2.3; it does what I need without bogging me down in feature creep.
    • "Sharpening the Stone" explains getting DOSBox-X to work with R3.x.
  • dBase III Plus for compatibility testing with 1-2-3.

Let's Get to Work

I have one goal in learning Lotus 1-2-3. I want to understand what it did that was so superior to my beloved VisiCalc that it practically wiped them out in the first year of launch. Kapor had projected first year 1-2-3 sales of US$1M, but did US$53M instead.

That's not just a little better than VisiCalc, that's "VisiWho?" dominance.

Splash screen of Lotus 1-2-3 Release 2.2. Black with white text, the 1-2-3 logo is rendered in ASCII graphics. Other text gives copyright info, loading status, and a stern warning about breaking the license agreement. Violators may be prosecuted. "May" it says? I'll take my chances!
PC Magazine, April 16 1991, said Release 2.2 was outselling competitors more than two to one. Competitors included Quattro Pro, Microsoft Excel, and Release 3 of 1-2-3 itself!

A one and a two

VisiCalc is a spreadsheet and 1-2-3 is a spreadsheet, so what's the big fuss? First, the platform of choice, the IBM-PC running PC-DOS (MS-DOS, to those buying it separately), affords two big wins right off the bat. 80-column text mode makes the Apple 2's 40-columns feel claustrophobic (and perhaps a bit un-business-like?). The greatly expanded memory of the 16-bit PC, max 640K vs. the 8-bit Apple 2's 48K, lets far more complex worksheets fill out those roomy 80-columns.

As Lotus Corporation and magazines and Wikipedia pages and other blogs love to point out, the true game-changer is contained in the program's very name. "1-2-3" refers to the three components of this "integrated software" package.

"1" is the spreadsheet capability, which surpassed most contemporaries handily in speed, being written in x86 assembly (until Release 3).

"2" is for those graphing tools which had Kapor's audiences applauding.

"3" was intended to be a word processor, but according to programmer Jonathan Sachs, "I was a few weeks into working on the word processing part, and I was getting bogged down. That's about when Context MBA came out, and I got a look at what they had done."

"What they had done" was integrate a word processor, communications, and database, along with the spreadsheet and graphics components. Context 1-2-3-4-5, as it were. When Sachs saw the database, that felt to him like a more natural fit and "3" was re-implemented as a database. "It would be a heck of a lot easier to implement," he noted.

Woz bless our lazy programmers.

The upshot is 1-2-3 plays nicely with last post's focus, dBase, which feels like a particularly powerful combination. I feel a tingle when skills picked up on a previous exploration pay dividends later. Deluxe Paint + Scala paid off similarly. Is this what it feels like to "level up?"

Character record sheet from one of the AD&D Gold Box Krynn series games. It has been expertly modified, if I do say so myself, to include many witty jokes, if I do say so myself. Character status is "Been worse", class is "Blogger." Typical stats have been replaced with genres of software I've covered. THAC0 says "snicker" while Damage is rated at "Ha!" Inventory reads: laptop with 4070, big coffee mug, Dril tweets book, BOOX Note Air. At the bottom is reads, "Reroll stats?" with the options "God yes, please!" and "No"
Technically, I'm dual class blogger-developer, but I don't want to split the XP these days. Not with you-know-who min-maxing the fun out of everything.

Getting lit

Obtaining literature on Lotus 1-2-3 is only difficult in the "overchoice" sense. I expected to find a lot of books, but perhaps not the "What have I gotten myself into?" existential dread of 1,000 hits on archive.org.

A collage of 55 book covers, all about Lotus 1-2-3. Features books mostly in English, but German, Japanese, Spanish, and Italian are in the mix as well. Seriously, nobody could figure out how to make a sexy cover; they're all terribly boring designs.
The amuse bouche of a larger, international smorgasbord.

It wasn't just books, that period had an interesting side phenomenon of "software vendor published enthusiast magazines." Companies like Aldus, Corel and Oracle all had self-titled publications on newsstands. Lotus Corporation did as well with LOTUS Magazine.

Published monthly by Lotus Corporation, it debuted with the May 1985 issue (probably on newsstands late March, early April). The tagline, "Computing for Managers and Professionals," oriented itself toward the decision makers, the ones with purchasing power. A poll of Lotus software users revealed, "Most of you see the computer primarily as a tool and are not interested in computing, per se."

Toward that end, the magazine took a different tack than the BYTEs and PC Magazines of the time. It was to be no-nonsense, non-techno-babble, short, easy-to-digest articles about computing from the manager's perspective.

"What's all this I keep hearing about 'floopy disks' and 'rams' and 'memories' and such and so on? It's enough to drive a reasonable business computerist straight to distraction!" says the frazzled corporate executive trope. There there, fret not! LOTUS Magazine feels your pain and addresses it with the cover story of issue 1.

Six covers of early LOTUS Magazine issues. Each has a hand-painted, custom illustration depicting computer concepts in artistic, perhaps obtuse, ways. A cube earth dances on the horizon of one, while a man plays ball with one of multiple round earths. A hand reaches inward from the POV of the reader, catching a handful of change while a building in the background is decorated with spreadsheet-y numbers.
I miss the days of artful magazine covers.

"The world of computer memory has enough complexity and high-tech jargon to drive the most reasonable business computerist straight to distraction," leads in to "An Inside Look at Computer Memory" by T.R. Reid. The article explains the differences between RAM and ROM, floppies and hard disks, and so on, unfurrowing the knitted brows of befuddled mid-80's business executives.

When it got into the 1-2-3 of it all, LOTUS Magazine didn't pull its punches. Articles were short, around four pages, and assumed a higher level of analytical aptitude than IT aptitude. Lots of charts of formulas, macro definitions with explanations, tips and tricks for faster data entry, and so on fill out the pages.

That ran for about seven years, until the December 1992 issue, when publishing duties transferred to PC Magazine as PC Magazine: LOTUS Edition. It was PC Magazine with a mini-magazine's worth of Lotus-specific content appended each month, as a special imprint. That ran until August 1995, marking a 10-year publication run which would have exceeded my prediction by about eight years.

Comparative covers from the same month of publication. The left is the newsstand version, branded with the normal PC World logo: bold white letters on a red field. The right has that, but the logo has been shifted up to make room for an attachment along the base of the logo which reads "Lotus Edition". The "2 Buyer's Guides" callout on the cover for the newsstand edition has been replaced with "42 Lotus Pages" and a couple of article teases.
What the plebeians received vs. what the Lotus elite received in December 1992.

After judging books entirely by their covers, I've chosen the official Lotus manuals for 1.0A, 2.2, and 3.4, and two compilations of tips and tricks previously published in LOTUS Magazine. I flip through other stuff as well, but honestly nothing is holding my attention this time around; they all read the same, "dry and boring."

1,000 pages or more for some of those books and they didn't have room for even one joke? I promise at least seven in this post alone. See if you can spot them all!

Launching into the program proper brings me to the expected "I'm a spreadsheet!" grid layout, with column and row labels, arrow-key controllable cell cursor, and a blank area at the top for VisiCalc-y stuff. Let's go.

Slash and burn

As an intermediate level VisiCalc user, I am delighted my / menu muscle memory pays immediate dividends. Clearly Lotus welcomes defectors and even makes life easier on everyone by taking advantage of the 80-column display.

VisiCalc's single-letter menu mnemonics are enhanced in 1-2-3 by simply spelling it all out on-screen. Full menu item names are always visible, yet still accessible by single-letter commands. From the jump, 1-2-3 makes a strong case for itself, providing improved usability and discoverable tools.

Screenshot of the main interface for Lotus 1-2-3 Release 2.3. A black background with a light grey field denoting the worksheet proper. CGA cyan colors the column and row headers. CGA blue highlights the current column and row. The top two lines show the menu, with the current selection in cyan. This is the scheme for almost every in-app screenshot, unless otherwise noted.
The interface can be controlled by mouse in DOS; the arrows on the right are for moving around the worksheet via mouse.

Before digging in too deeply, I should note that 1-2-3 does all of the VisiCalc things. A1-style cell references, slash / menu, fixed and relative cell references, @ functions including transcendentals, range .. specifier, + prefix for values, and on and on. It adds, it subtracts, it calculates interest. 1-2-3 "Yes, and..."s VisiCalc from there.

We gain a lot, but there is a notable absence: the upper-right status check. VisiCalc shows calculation order, arrow-key toggle, and free memory in that spot. Those are all gone in 1-2-3 and good riddance, frankly. On the PC I have full arrow keys and more RAM than Woz; 1-2-3 sees my full 16MB of DOS Extended memory. There is no stopping me.

1-2-3 also says nuts to VisiCalc's "calculation order" (by row or by column) hoo-hah and introduces "minimal recalculation." From the almost comically-straightforward named book Lotus 1-2-3, Release 2.3, "When 1-2-3 recalculates a worksheet, only those formulas directly affected by a change in the data are recalculated." I am living large here in 1989, or 1991, or whatever year I'm pretending it is this week.

Even VisiCalc's @lookup gets a glow up. You know it today as @hlookup and @vlookup, both of which were present in 1-2-3 Release 1 back in 1983. At this rate, 1-2-3 is flirting dangerously close to "expected spreadsheet behavior in 2026." Don't get my hopes up, Lotus. There's only down from there.

Fake screenshot from Late Night with David Letterman's famous "Top Ten" list. It's old-school, blue background with white text on top. The list title is, "Top 10 Lotus 1-2-3 at functions or edible roadkill." In true Letterman fashion, here they are starting with number 10. Number 10, @NOW. Number 9, @DATE. Number 8, Possum. Number 7, @ROUND. Number 6: @PMT or DEER (a tie). Number 5: @VLOOKUP. Number 4: @IF. Number 3: @UPPER. Number 2: @AVG. And the number one Top Ten Lotus 1-2-3 at function or Edible Roadkill. Squirrel!
Strictly for my own amusement. Lotus 1-2-3, Release 2.3 has a sidebar "Top Ten @ Functions" and I couldn't stop myself. Apologies to those with no idea what I'm referencing.

A defense of the horizontal menu-bar

1-2-3 menu bar showing some options along the first line, and a description on the second. "Unique" (sorting) is selected. The second line helpfully reads, "Copy records that match criteria to output range, eliminating duplicates"

The more I encounter this, the more I wonder if we gave up on it too soon. This could be "blogger overly immersed in their subject matter" brain, but I'm growing to oftentimes prefer two-line horizontal menus over modern GUI menus.

I find the left-right, up-down, left-right, up-down, scanning through GUI menus kind of tiring. With the two-line menu, I can step through top-level options with the left/right arrow keys, eyes focused on line two as I scan sub-menu items.

It also provides something GUI menus don't: an immediate explanation of a menu item before committing its action to the document. If a menu item is not a sub-menu, line two describes it. It's easy to audit features in an unknown program.

Also, every menu item has a keyboard shortcut; just type the first letter. This requires creativity by the developer when naming menu items such that each has a unique first letter, but it also creates a de-facto mnemonic for the user. Don't discount muscle memory!

There's one "drawback," but I'll try to make a case for it. Specifically, it is probably impossible to fit everything in a modern GUI menu into a two-line scheme. There's just too much! I suggest the horizontal menu-bar solves this precisely because of that design constraint. If there's too much, the menu needs to be simplified.

"Problem solved," the author asserted.

Choosing your relatives

This has to be one of 1-2-3's greatest contributions to modern spreadsheets. It still exists, just open up your modern spreadsheet of choice and try it. Enter 1 through 5 down the A column. Starting with B2, enter the formula +$A1+A$2 and copy it down a few rows. Old hands know that a $ symbol in a cell reference fixes that row or column of the reference, otherwise references are relative.

That's a huge step up from VisiCalc's "all or nothing" approach to cell references. Put in a formula and copy it through to other cells. For every cell reference, in every copy of the formula, VisiCalc prompts the user for "relative or fixed?" It is a complete drag, and Woz help you the day that formula needs updating.

The $ approach is superior, allowing us to embed relativity into the formula itself. Then, copying a formula across cells copies our intent as a natural course. It's simple to understand and hard to mess up: my favorite combination.

Found in translation

Screenshot from Lotus 1-2-3 Release 2.4's "Translate Utility". It reads, "What do you want to translate FROM?" The option list reads: 1-2-3 (various versions), dBase 2 or 3, DIF, Enable 2.0, Multiplan, SuperCalc4, Symphony, and VisiCalc.

While it can't load non-1-2-3 documents natively, Lotus does provide a nice translation tool for helping us get data out of the heavy hitters of the day. From a Stone Tools perspective, this handles everything I need so far, as VisiCalc and dBase are both accounted for and work as advertised.

Translation works both ways, so bringing in dBase data, messing around with it in 1-2-3, and going back out to dBase is possible, though there are cautions in doing so. One notable thing to watch out for is "deleted" records. dBase only "marks for deletion" (until a .PACK command), and that flag won't survive transit. A small inconvenience, all things considered.

Two screenshots showing successful data import, as the caption described. The VisiCalc data show various grains, their protein percentages, cost per ton, and other calculations. The right shows some of the games from the dBase import, including titles, release year, genre, critic scores.
The hog-raising worksheet from "VisiCalc on the Apple 2" and the CP/M games database from "dBASE on the Kaypro II" both translated well, though the database didn't bring over my boolean field contents (they were all blank).

Applause-worthy?

In the top-level menu is the shiny new Graph option, the "2" in "1-2-3." I know exactly what I want: a pie chart of game software genres imported from dBase II.

Screenshot from Release 2.4's "Graph Settings". It is an TUI design, dividing up related options into logical areas of the screen. "Type" is a list reading line, XY, bar, stacked bar, pie, HLCO, and Mixed. "Ranges" has room to set 7 ranges, labelled X, and A through F. Orientation, frame, grid lines, margins, 3-D effect, colors, and more can be set.
Release 2.4 options shown.

The options for are straightforward, and the limitations are self-evident. Notably, look at the "Ranges" settings. Range X sets value labels which will appear along the X-axis. Ranges A through F define six, and only six, ranges of data to plot on the graph. That's it. Everything else you see is "make it pretty."

Within the confines of my self-imposed time capsule, my only point of reference thus far is VisiCalc and its clones. Through that lens, I'm blown away by Lotus 1-2-3. I mean, come on, 3-D bar charts?! Am I living in the world of TRON right now?! The applause is well-earned, Mitch. Bravo! Encore, even!

Now, Mr. Kapor, if you'll excuse me a moment, I need to have a quick, private chat with my readers. Yes, sorry, I'll only be a moment.

Hello dear readers. Mitch can't hear us, yeah? We're safe? OK, between you and me, that graphing tool is a little underwhelming, huh? There's a lot we can do to make a graph look as pretty as possible for screens and printers of the time, but the core graphing options themselves are kind of anemic.

Here's Google Sheets making the pie chat I'd hoped 1-2-3 could generate.

Screenshot from Google Sheets showing a simple column of data, a mix of values "a", "b", or "c". and a red/green/blue pie chart trivially breaking down the count of each value.

However, 1-2-3 cannot do this because it can only graph strict numeric values; strings, like "genre" types, return blank charts. 1-2-3 also can't coalesce data, like we see Sheets doing above. To achieve my goal, I'll need to figure out a different approach. (Plus, maybe I've discovered a DOSBox-X bug?)

A janky, obviously bugged, CGA line drawing of an exploded pie chart. Two slices are drawn properly, but their in-fill is drawn outside of the boundaries, rotated out of position. One slice has the fill right, but the boundaries are whack. One slice is perfect.
Slices can be tagged as "exploded" to call them out from the main pie. The drawing issue only occurs in the pie chart tool. 86Box did not exhibit this behavior in a simple test, but is a more difficult system to tame.

It's not fair to judge past tools as being "inferior" just because they don't live up to 2026 standards. Still, what I'm trying to do must have been one of the first things many business owners wanted to do, right? Am I storing my data in a style that hadn't been popularized yet? Is my 2026 brain making life more difficult for my 1991 doppelgänger unnecessarily?

How does one graph out the count of each unique genre?

Unique up on it

Alright, this is going to get complicated, so I think a diagram is in order. This actually explains a lot about the Lotus 1-2-3 approach to data in general, how to manipulate it, how to query it, and generally how to interface with the more complex functions of the program.

Having imported the dBase list of CP/M games from the dBase article, let's extract a list of all titles that are of genre "Simulation." I'll use a subset of the total data so everything fits on screen for demonstration purposes and perform /Data Query Unique (aka /dqu, aka The Notorious DQU, aka Query's L'il Helper)

An annotated diagram explaining how to configure a database query in Lotus 1-2-3 to extract unique records. A Query Settings dialog box is shown at the top, displaying three range fields: Input range (A1..B15), Criteria range (E1..E2), and Output range (D5..D20). Colored arrows connect each range in the dialog to its corresponding area in the spreadsheet. Below the dialog, a slice of the spreadsheet is visible with columns A through E. Columns A and B, highlighted in green, form the input range and contain a list of software titles and genres: Adventureland (Adventure), B-1 Nuclear Bomber (Simulation), Bridge 2.0 (Strategy/Tactics), etc. Column E, highlighted in pink, is the criteria range, containing the field name GENRE in row 1 and the criterion "Simulation" in row 2. Column D, highlighted in light gray, is the output range, showing the query results: the simulation titles B-1 Nuclear Bomber, Computer Stocks & Bonds, and Eliza. A caption reads: "Each range must include the field names. The 'criteria' range includes our target criteria as a line item below its associated field name. My output range is narrow; I only wanted titles."

A worksheet is not just rows and columns of data. It also serves as a control mechanism for defining interactions with the data. A worksheet has columns up to IV (256) and rows up to 8192. What do we do with 2,000,000+ cells? In true Dwarf Fortress fashion, we section off areas ("ranges" in 1-2-3 speak) and designate functions to those areas.

First, I have my data as the main table, field names at top. Then, I need to set up my query criteria. This is a separate portion of the worksheet, with the fields I want to query against and room below to accept the criteria definition. Think of it like building a little query request form.

Then, Lotus needs a place to spit out the results. Again, I set up a little "form" to receive the data. Put in whichever field names are of interest in the final data capture.

Now, what if there are multiple queries I want to re-use from time to time? Painful as it sounds, I must set up multiple query forms, one for each query I expect to re-use. So, re-copy all of the field headers of interest into a new portion of the worksheet. Re-copy the field headers for the output range. Put in the new query criteria. Do another extraction.

Keep dividing the worksheet up into all of the various queries one might need to reuse. Each lives in its own little area of the worksheet, so maybe now's a good time to start labeling things? Maybe mentally divide the worksheet into "my queries live over here, in Q-Town" and "my results live over there, in Resultsville" and so on.

Count on it

For my stated goal, I need the unique list of genres for my game list and the count of each genre within the data set. From the previous section, I know how to extract a list of unique genres. To count them, @DCOUNT can count all non-empty records which match my criteria. Lemme draw up another diagram here.

An annotated diagram explaining the @DCOUNT database function in Lotus 1-2-3. At the top, a blue help screen displays the @DCOUNT documentation, describing it as a function that counts non-blank cells in a given field of selected records meeting certain criteria, with the format @DCOUNT(INPUT, FIELD, CRITERIA) The three parameters are color-coded as green, pink, and white respectively. A spreadsheet below is divided into three areas: the main data (green) in the leftmost two columns, column B header in pink as the field offset value, a small range to the right at the top defines search criteria, and a larger range below that to catch and list the results, with a small criteria block reading "GENRE RPG" highlighted in white.
Shout-out to 1-2-3's built-in contextual help system. I couldn't remember how to use @DCOUNT but when I typed it in and hit F1 I got the blue help screen you see. It's very good!

After extracting the list of unique values for "Genre", I get a column of results as seen at E5..E12 in the image above. Notice the criteria at E1..E2 is empty? By not specifying anything, that equates to matching any "Genre".

Next, I need to reformat that column into countable criteria for @DCOUNT. Just like in a query, criteria consists of two vertically contiguous cells, the top of which is the field name and the bottom holds the parameter. The field name must be physically, immediately above each and every genre I want to count.

/Range Trans will transpose a range of vertical or horizontal cells into their mirror universe opposite. That's how I generated the horizontal list at E16. A /Copy of the field name across row 15 generated nice pairings, perfect for use with @DCOUNT.

The cell formula outlined in yellow is essentially the same across G6..G13, each lightly modified to point to a different criteria range. That calculates the count for each genre in column G, and column E holds my titles. Now I have what I need to generate the chart I wanted (aforementioned pie chart drawing bug notwithstanding). Here it is in glorious 3-D from the future (of the past)!

Bright white text and CGA magenta 3-d bars plot out the genre distribution. Strategy/Tactics has the most, followed by Simulation, then Adventure and RPG are tied, and last Sports, Gambling, and Puzzle all have a single entry in the data.
The previous chart, only as a plain black and white, no 3-d effect, low quality dot-matrix bar chart.
As a virtual printout using Lotus PrintGraph (couldn't fit the Y-Axis title on the page).
The same chart, this time in much higher resolution than before. A medium gray background, reminiscent of Windows 95's prevalent color, with a teal field on which sit bright green 3-d bars. The typeface for labels and such are rendered in higher definition in an attractive Futura-esque typeface.
As rendered in Release 3.4, so you can see how output quality evolved.

Frustratingly, figuring all of that out took the better part of a day. But now I know! If only there were some way to make it easier.

Making it easier

There are issues with my solution thus far, many of which boil down to the physical spaces assigned to hold queries and results and transformations and data. If I bring in new data with new genres, new result lists could physically lengthen and overlap one another. Planning a physical map for the worksheet is a priority.

Building out the sheet, especially keeping cell references flexible to changes in data, is a drag. I'd also like to generate a graph from the new sheet arrangement, with just a simple hot-key. Like all great developers, I want to be lazy.

The first step toward the promised land of laziness is "hard work," unfortunately.

Hard work can be captured and reused, luckily, as Lotus 1-2-3 features "Friend of the Blog": macros. VisiCalc didn't have it, and 1-2-3's implementation is robust enough that many books were devoted to understanding and taming it. Here's a simple macro, which hints at its latent power.

0:00
/0:07

Custom menus are easy to build. Selecting an option could trigger a longer automation task, simplifying a multi-step process, or something as simple as a help menu.

Macros are stored...

(say it with me now)

...in the worksheet. Yep, whatever map you had in mind for dividing up the worksheet into query-related fiefdoms, redistrict once more to hold macro definitions. Custom menus are an easy way to illustrate macro structure. Here's a dumb example.

Slice of a screenshot showing macros defined in the worksheet. Cell A1 reads "\m". Cell B1 reads "{menubranch menu1}" which is a macro call to draw a custom menu, using the information found at the range named "menu1" B3 is that location, and reads across row 3, "Rhubarb, Sassafras, Jicama, Stone Tools". Row 4 defines each menu item's function, which in this case is simple descriptive text. Each is defined scientifically, but "Stone Tools" is defined as "A pretty cool blog"
I remember three foods from my childhood in the 70's: carob, zucchini, and rhubarb.

The text in column A is mostly comments to organize our worksheet and thoughts. \m represents the keyboard shortcut assigned to the macro, accessed by ALT + m. menu1 is a reference to a named cell range.

Named ranges are an important improvement over VisiCalc. Once defined, a range can be invoked by name anywhere a range is expected. Assuming a cell range as a2..a7 has been assigned a name like january, @sum(january) is totally valid.

\m is a range defined as B1..B1. menu1 is a range defined as B3..B3. Notice a range only needs to define the first start of a macro definition. Macro execution will read each cell in order down a given column until the first empty cell. \ range names are interpreted by 1-2-3 as macro keyboard shortcuts automatically.

The convention shown, of a human-readable label to the immediate left of a range by the same name is so common it has its own menu shortcut. /Range Name Labels Right applied to column A will auto-assign column B cells to the names in A. To a certain extent, a named range can function like a programming "goto". In the macro case, its saying "Goto the range named menu1 and continue executing the macro from there."

Programmers in the readership are salivating at the deviously complex ways this "goto labeling" could be abused. Combine it with decision making through {IF <condition>} and iteration through {FOR <counter, start, stop, step, subroutine>} and the possibility space opens wide.

School's out

After doing dBase work last post, I noted that I had accidentally become a dBase developer without even trying; the dBase scripting language was precisely equivalent to the commands issued at the dot prompt. I'm not so lucky with 1-2-3.

Setting up a macro which issues a simple string of commands is easy enough, and reads (mostly) like how I'd type it at the / menu, akin to Bank Street Writer's approach to macros. For example, /WCH~ will issue / to bring up the slash menu, access the (W)orksheet menu, then the (C)olumn sub-menu, and finally (H)ide a column. ~ issues "enter", which at this point in the menu navigation will commit the prompt default, i.e. the current position of the cursor. Just like that, hiding the current column just became a single keystroke.

There is also a Learn menu tool which is "record every keystroke I do from now." That recording will be output into the worksheet. Apply a range name to that and it transforms into a macro. Very nice!

That said, 1-2-3 macros go from zero to 100 pretty quickly and are visually difficult to parse and reason out. One must be super-duper intimately familiar with every command in the slash menu, plus the macro-specific { } vocabulary.

Capture from the LOTUS macro book showing complex macro definitions. As an example, the first line of the first macro reads, "/XIrev>1~/XGba5~" It's the kind of stuff that I just glaze over when confronted by its impenetrable syntax.
From Lotus Magazine: The Macro Book

Lotus understood things could get hairy pretty quickly and added a debugging tool to help make sense of things. ALT-F2 enters STEP mode, which executes macros one line at a time. The status bar at the bottom of the screen explains what is being run, so when something goes wrong I know who to blame.

OK , are you ready to dig in and implement macros which simplify the queries and @DCOUNT procedure discussed earlier? <cracking knuckles>

Well, I'm not. <uncracks knuckles back to stiffness> The macro system has proven too complicated to feel any sense of control or mastery beyond Baby's First Macro™. With a couple of more weeks' study I think I could achieve my goal.

Unfortunately, for this post, I am defeated.

Callback screenshot back to the AD&D game, this being an image that depicts a "death knight" riding a skeletal dragon. The caption has been altered to read, "You, a common blogger, prove no match for the overwhelming force of the Lotus 1-2-3 macro programming language. You contemplate a change of hobby. "I could really get into trains," you think, as it dives for the kill.

Prime time

The "3" in "1-2-3", 1-2-3 can function as a database. A very simple, limited, one-row-equals-one-record, 8192 record max, 256 field max, flat database. Let's be honest, oftentimes that's more than enough.

I showed examples of querying earlier, and that's as fancy as it gets for this. We can sort records ascending/descending by up to two keys, find and replace values, find records which match a search query, and extract those records into another area of the spreadsheet. And nothing else (at least for Releases 2.x).

0:00
/0:52

Sorting dBase II data by genre.

It may seem I'm giving this aspect of the program short-shrift, but so did Lotus. In their own manual for Release 2.2, macros have 300 pages devoted to them. Database functionality has 50, and the first 20 of those are instructions for typing in dummy data. Sorting, querying, finding, and extracting, the meat and potatoes of database-ing, warrant a mere 20 pages total.

It's a useful feature and I'm glad it's here. It's enough to handle most of my meager needs. Beyond that, there's not much to say, except to note its legacy. It was an obvious idea to anyone who touched VisiCalc for more than five minutes, so its development feels inevitable. Do some database work in Excel tonight and light a candle for 1-2-3.

Add it up

A very nice feature of 1-2-3 that fits right in with its "integrated" approach, is what we would call today "plug-ins" or "extensions," but which Lotus calls "add-ins." 1-2-3 shipped with a few. For example, one expanded macros by letting them live in-memory, for use across worksheets. Normally the only macros accessible to a worksheet are those defined within itself.

Man, VisiCalc is just getting lapped by 1-2-3's ingenuity, huh?

According to a PC Magazine article about the state of add-ins, many business-people lived inside 1-2-3 all day long and wanted to do everything from within its confines. The 3rd party add-in after-market happily commodified those desires.

In addition to obvious ideas, like automated save/backup utilities, or industry-specific analysis tools, add-ins could mold 1-2-3 into almost anything. Complete word processors, entire graphic subsystem replacements for complicated graphing needs, expert system logic, and non-linear function solvers were injected into the program. Oracle offered a way to connect to their external SQL databases from within the snugly confines of 1-2-3's security blanket.

The Lotus approach, being a product of lower-memory days, is both annoying and useful. Add-ins can be, though are not by default, loaded at app startup. Add-ins must be "activated" one-by-one to gain access to their extended powers, or "deactivated" to make room for other add-ins or a larger worksheet. I have enough memory, so I'm not in trouble here, though I'm sure it's easy to imagine on a 512K system that manual memory management was a real thing.

Between macros and add-ins, 1-2-3 becomes an ecosystem unto itself, like dBase or HyperCard. One thing I don't like about Lotus's approach is how it can bifurcate the user experience. That's seen clearly with their own WYSIWYG add-in.

WYSIWYG? IDGAF.

Screenshot in WYSIWYG mode. Black background, white field for the worksheet, but now the row and column headers are rendered in that "embossed" look like Windows 95. Mid grey, with pixel-thin white highlights on the left and upper edge, dark grey shadows along the right and bottom edges.
The default scheme for WYSIWYG mode is ugly. I've switched to the "Relief" color scheme.

With Release 2.3, Lotus included this add-in to help a world transitioning from textual interfaces into the flash and sizzle of OS/2, Windows, and Mac GUI interfaces. It's DOS for the GUI envious and frankly, I'm cold on it. It's not integrated elegantly, feels sluggish, and makes the program more difficult to use.

Activating WYSIWYG switches the application from terminal mode to graphics mode, so already as a DOSBox-X user I'm annoyed at losing my lovely TrueType text. That's not Lotus's fault, but a blogger's gotta have his standards.

The big usability problem is how the functionality of the program now splits in two. The / menu works as before, but we also have a new : menu for all things WYSIWYG. So, when you want to use a menu command, you must remember which menu holds that command. Many : options appear at first blush to be the same as their / counterparts, but they control WYSIWYG-specific parameters of those functions. Usually.

Same WYSIWYG mode, depicting what the caption describes.
The upper-right tells us which menu mode we're in; this is the standard / menu. Set-Width does what it says in line two of the menu (See? It's a nice feature!). Column-Range does the same thing, except for multiple columns at once.
For some reason, under the : menu, Set-Width functions are duplicated but altered to combine two / menu options.

That's not to say the add-in isn't useful for cell styling, or placing graphs into a worksheet directly. Making documents look nice is important after all. The boss needs to be impressed with those Q3 projection charts, even when they forecast doom. Especially then, probably!

Release 3 embraced WYSIWYG as its main and only interface, no add-in required, which is probably why I keep gravitating to the 2.x releases. I'd chalk it up to being a stubborn old man, but the recent embrace of TUI interfaces by the Hacker News crowd seems to have me in good company.

Give 'em HAL

I'm writing this part on February 22. Two days prior, a project called "Pi for Excel: AI sidebar add-in for Excel" released and got good traction on Hacker News. As I noted in the XPER column, our current "AI" boom is the biggest, but not the first. English language interactions, first by keyboard and fingers-crossed-one-day-by-voice-if-AI-technology-continues-along-our-projected-path-of-wishes-and-dreams, were available as add-ins to various programs.

Screenshot from The Simpsons. Disco Stu is trying to make a sale to Homer, showing a chart reading "Disco Record Sales". The years 73, 74, 75, 76 show a skyrocketing curve, promising a bright future. My caption reads, "Sure, we're only typing English today. But, if these trends continue..."

Databases in particular were a notable target for those experiments. Consider how English-like dBase's user interface is, and it doesn't take a huge leap to understand why developers felt something closer to true English was within reach. Symantec's Q&A had its natural language "Intelligent Assistant" built right in. R:BASE tried it with their CLOUT add-in, promising a user could query, "Which warehouses shipped more red and green argyle socks than planned?" The spreadsheet Silk promised built-in English language control over its tools.

Like those self-published magazines at the start of this article, Lotus didn't want to miss out on this English parser party either.

What the HAL

Splash screen for Lotus HAL. Black with the logo in block ASCII art letters. Lotus in white, HAL in yellow. It reads below that, "A 1-2-3 Companion Product"
Is it good to name a product after a murderous villain? Sound off in the comments!

(For this exploration I must drop down into R2.01)

Released for US$150 in late 1986, HAL is a memory-resident wrapper to 1-2-3. We launch HAL directly, which in turn launches 1-2-3. Its advertising explains the gimmick well enough. "Lotus HAL gives you the ability to perform 1-2-3 tasks using simple English phrases." What I've seen in my early time with it can honestly feel kind of magical. Look at how easily it generates monthly column headers.

0:00
/0:22

That's pretty slick, I can't deny it.

Similarly tedious actions are promised to be eased greatly by "requesting" HAL to do the heavy lifting. Here, I'm stepping through a quick tutorial to have HAL build an entire spreadsheet. I never touch the formula; I only describe it by intent.

0:00
/1:14

HAL only recognizes the first three letters of anything. "Name" and "Names" and "Namaste" are all the same to well-meaning, but a bit dimwitted, HAL.

As is the case for all such English-like languages for the time, it's English only within a generous definition of the word. Ultimately, we're learning to speak 1-2-3's specific dialect and vocabulary.

PC Magazine, February 1987, their HAL review was the cover story, "HAL comes with a 250-page manual. It is as important to read this manual as it is to read the 1-2-3 manual. All the commands are described as rigidly as the syntax of any command-line interface." That it takes a 250 page manual to explain how to speak "English" with HAL perhaps makes an argument against its own existence?

The base 640K of DOS must hold both programs in memory at the same time, so this is a nice piece of corroborating history for those who think software today is too bloated. An industry-defining spreadsheet with graphing and database capabilities close to modern expectations, an online help system, plus a natural language interface, all run together in less than 1MB of RAM.

There's the retro-computing dopamine hit I've been hoping for!

The road to HAL is paved with

HAL doesn't just provide an English-language interface to 1-2-3's native tools, it brings its own unique toys to the Release 2.01 sandbox. I do need to emphasize the release version here, because some of these tools were later worked into the product proper over time. That said, HAL worked hard to be your friend.

  • Undoing your last action. It's almost worth installing HAL just for this, though it is a little dangerous that BACKSPACE is the keyboard shortcut.
  • Entering a sequential list of days, months, letters, or numbers automatically, though I wonder if macros could duplicate this to a certain degree.
  • Linking a cell in one worksheet to data in another. Release 2.3 has this.
  • Referring to columns and rows by name is a very neat trick. In fact, it's so neat I'm going to ask you to remember this fact for a later article. Just keep it tucked away in the part of your mind devoted to spreadsheet history, as we all have. The cell-row-bellum, I think its called? (I refuse to apologize.)
  • Worksheet "auditing" can identify cell relationships/dependencies, or list out all formulas in use by a table in natural English. Auditing would become an add-in in later 2.x releases.
  • Find and replace; change all instances of a product name, for example.
  • Macros can mix HAL English with native 1-2-3 macro commands.

Go to HAL

Split image showing evil HAL from 2001 on the left and gentle dumb Hal from "Malcolm in the Middle" on the right.
Not at all the one on the left, but perhaps not entirely the one on the right, either.

Even though HAL controls 1-2-3, interfacing with it still feels bolted on. \ brings up the HAL dialog box, which isn't hard to remember, but never feels natural. Even after setting the HAL request dialog to remain on screen, it feels tenuous. Sometimes it toggles off after navigating a menu option, or the request box will intercept commands I wanted to do through the normal slash menu. It's in the way more than I expected, and I couldn't find a balance between "when I want it" and "when I don't."

PC Magazine also felt that HAL is a bit of a kludge. Charles Petzold wrote in his review, "Is HAL really a natural-language interface for 1-2-3? Is it useful? Will it revolutionize the computer industry? Are menus dead? My answers are: Not really. Often. Give me a break. No way."

The traditional "Don't make me tap the sign" meme from The Simpsons, only expanded. Panel 1, Lisa says "It's been 40 years since HAL. Since then, LLMS have improved English understanding dramatically and..." Panel 2, the bus driver says, "Don't make me tap the sign." Panel 3, the sign reads, "One of the most dangerous things you an have around the office is a computer program that seems to be smarter than it actually is, and this is exactly what HAL is." from Petzold's PC Magazine review. Panel 4 continues the meme with Lisa countering, "But some now think they've achieved consciousness, perhaps even sentience..." . Panel 5 has the bus driver retorting, "Don't make me tap the other sign." Panel 6 is mirrored to appear to be pointing to a different sign which reads, "I had not realized that extremely short exposures to a relatively simple computer program could induce powerful delusional thinking in quite normal people." by Joseph Weizenbaum, creator of Eliza.

This is all academic, because Lotus killed HAL. It has been difficult to find sales figures, though in a Raymond Chen post we catch a glimpse of the Softsel Hot List for December 1986. HAL hit the top 10 (along with other, future blog subjects), moving up the charts over the previous three weeks. On the other hand, it was only available for Releases 1A through 2.01, the pre-WYSIWYG releases, and never returned.

HAL-elujah?

Earlier I poked at macros, hoping to make charting "count by genre" easier, and failed. Then I got to ponderin' if HAL might be able to do it for me. Shockingly, HAL can, through its special vocabulary word "tabulate." It makes those previously complex actions, the ones I diagrammed earlier, so simple to perform I don't really need a macro (though I could make one). Check out this 80's magic.

0:00
/0:22

We are supposed to be able to execute HAL requests via F6 to have the system output the 1-2-3 commands HAL puts together to get the job done. It's a peek inside HAL's brain, basically. If I watch HAL think, maybe it can teach me a better way to do all of the busywork I slogged through earlier?

Screenshot showing HAL in progress. My request reads, "tabulate genres counting genres" which works! But here in F6 mode, we get a TUI alert, "There is not a direct translation to 1-2-3 commands for your Data Table 1 request." Ah well, I tried.
So much for my "one weird trick" to getting better at 1-2-3.

Level up

In 1962's Diffusion of Innovations, author Everett Rogers described five characteristics individuals consider when adopting new solutions to existing problems. If VisiCalc was the "existing problem," how well did Lotus 1-2-3 make its case as the "new solution?"

  1. "Relative advantage is the degree to which an innovation is perceived as better than the idea it supersedes." 1-2-3 received applause for one-button graphing. Check.
  2. "Compatibility is the degree to which an innovation is perceived as being consistent with...past experiences, and needs of potential adopters." 1-2-3 shipped with a VisiCalc translation tool and its interface is clearly built to make VisiCalc users comfortable. Check.
  3. "Complexity is the degree to which an innovation is perceived as difficult to understand and use." 1-2-3 was initially praised for the simplicity with which a user could get up to speed. Its adoption of high-level VisiCalc concepts, like the slash menu, @ functions, and A1 cell references, helped. Check.
  4. "Trialability is the degree to which an innovation may be experimented with on a limited basis." Trial disks for software during the 80's and 90's wasn't so prevalent; there was a lot of "blind faith" in software purchasing. I can't find any widespread cases of 1-2-3 demo disks circulating. No check.
  5. "Observability is the degree to which the results of an innovation are visible to others." If the live demos, prevalent advertising, and magazine write-ups didn't convince you, 1-2-3 made it clear in the product name itself that you're getting 3x what VisiCalc delivers. Check.

In the VisiCalc post I talked about how much of its DNA is seen in modern spreadsheets. I see now that an equal case can be made for Lotus 1-2-3. I'd phrase it as VisiCalc contributed the "look," and 1-2-3 contributed the "feel" we've come to expect. Where VisiCalc was life-changing for number crunchers, 1-2-3 positioned itself as an engine for business and executed that vision almost perfectly.

Having gotten to know 1-2-3 over the past weeks, I can now say, "I get it." I see what the fuss was about and, truth be told, I'm a convert. Sorry, VisiCalc, you know I love you! But the next time I reach for a spreadsheet, I'm reaching for 1-2-3.


Sharpening the Stone

Ways to improve the experience, notable deficiencies, workarounds, and notes about incorporating the software into modern workflows (if possible).

Emulator Improvements

  • As with ThinkTank, DOSBox-X provided a simple, pain-free experience to get Lotus running. Multi-disk installs are handled well, but could be improved. Specifically, the "Swap Disk" option when loading up a stack of disks into the A: drive could use a selector and/or indicator of which disk is currently loaded.
  • mount c <path to lotus install> in autoexec.bat to auto-mount at launch.

Troubleshooting

  • Revision 3.4 would not run until I explicitly set CPU Core > Normal, CPU Type > 286 in DOSBox-X.
  • I noted the pie graph bug in Release 2.x. I suspect, but cannot prove, that some x86 assembly call is being mangled by DOSBox-X. 86Box, which strives to be as pedantically accurate a simulation of real-world hardware as possible, does not exhibit this issue. However, setting up 86Box comes with a whole day of learning about the parts and pieces of assembling one's own raw DOS system from virtual components, installing from diskettes, and all of the old-school troubleshooting that entails. It's a commitment, is what I'm saying.
  • I found that DOSBox-X would run the Lotus.exe for Release 2.2, but failed to run it for Releases 2.3 and 2.4. 123.exe can launch and run without issue. Lotus.exe is a front-end utility to launch auxiliary programs like GraphPrint.

Interfacing with the Real World

  • If you're mounting a system folder as a "hard drive" in DOSBox-X, it is trivial to extract your data files.
  • The Lotus utility "Translate" is handy for moving data between formats. I found that native .wk1 files open in LibreOffice, as-is. From there, you have any number of modern exporting options, though you might find some quirks from time to time. Check your formulas, just in case!
  • I'd recommend checking out Travis Ormandy's site. He's smarter than me and performs magic I didn't think possible, like pulling live stock data as JSON into 1-2-3. He also got the Unix build to work natively in Linux.

What's Lacking?

Obviously, it depends on what you're trying to do. For business work, it doesn't play well in groups unless you're the CEO and can dictate, "OK people, we're all switching to DOS now." For personal projects, it meets many common needs and doesn't feel too much like compromise, aside from the graphing. Heck, the DOS version supports mouse control, and you can always turn on WYSIWYG mode to approximate modernity.

We're also in luck with Y2K compatibility. Even Release 1.0 supports dates up to the year 2099. Let's take a moment of silent appreciation for yet another 1-2-3 foresight which keeps its spirit alive and kicking here in the 21st century.


Fossil Record

A full-page print advertisement for Lotus 1-2-3 from Lotus Development Corporation. The headline on the left reads "Introducing 1-2-3. It'll have your IBM/PC jumping through hoops." Below the headline is a line drawing of a caveman-like figure jumping through a hoop, inside which sits a smiling IBM PC. The right side contains dense body copy describing 1-2-3's three integrated functions — spreadsheet, information management, and graphing — illustrated with a hand-drawn Venn diagram showing three overlapping cloud shapes labeled "Spreadsheet," "Information Management," and "Graphs," with the 1-2-3 logo at the center. The ad touts a 2048-by-256-column workspace, 41 functions, 66 commands, speeds up to 50 times faster than competing spreadsheets, and a phone number for dealer referrals: 1-800-343-5414. The Lotus 1-2-3 logo appears in the lower right. A caption beneath the Venn diagram reads "Spreadsheet, graphing, information management all-in-one."
It begins.
A full-page print advertisement from Lotus Development Corporation, dated 1985, introducing Lotus 1-2-3 Release 2. Not nearly as charming as the first ad; just serious and straightlaced. The headline reads "It's the best thing since 1-2-3." Body copy describes the upgrade's new features: an expanded worksheet of 8192 rows, support for memory above 640K via the Lotus/Intel/Microsoft Expanded Memory Specification, Intel 8087/80287 math coprocessor support, 40 advanced macro commands, hard disk support without a key disk, and compatibility with other Lotus products including Symphony and Jazz. The ad also details upgrade pricing — $150 for registered users, free for copies purchased on or after April 24, 1985 — and includes phone numbers for ordering. A black-and-white photograph shows two men in business attire, one standing and one seated, looking at an IBM PC in an office setting. The Lotus 1-2-3 logo and Lotus corporate logo appear at the bottom right. A footnote gives the suggested retail price of $495 and minimum RAM requirements.
Serious men doing serious work on serious hardware with Release 2.
A full-page print advertisement from Intel Corporation, dated 1989. The dominant image is a close-up photograph of an outstretched hand with dozens of colorful reminder strings tied around every finger and knuckle. The headline reads "1-2-3 Release 3 may require more memory than you have." Body copy frames this as an opportunity, promoting the Intel Above Board Plus 8 expanded memory board and a $50 rebate offer available by mailing in a coupon from the Release 3 box — with the rebate deadline of December 31, 1989. The ad notes that Lotus and Intel jointly developed the expanded memory standard.
1-2-3's minimum hardware requirements grew enough over time as to abandon many 2.x users entirely. Intel was ready to cash in on that gap.
A two-page print advertisement for Lotus HAL, a companion product for Lotus 1-2-3. The left page headline reads "To get Lotus 1-2-3 to do all this more quickly and easily, we didn't make it more powerful." It features six small screenshots of 1-2-3 in use, each with a caption demonstrating a plain-English command: graphing sales by district by typing "graph Jan to Mar," extracting database records by typing "who has sales ≥ 8000," sorting by typing "sort by dist," summing rows by typing "total all rows," listing spreadsheet formulas by typing "list the relations in the sheet," and creating a macro with the resulting macro code shown. The right page headline reads "We made you more powerful." and shows a product photo of the Lotus 1-2-3 and Lotus HAL boxes side by side. Body copy describes HAL as a natural-language companion that lets users issue commands in plain English, perform undo operations, audit spreadsheets, and link cells across worksheets. The ad quotes Computerworld naming HAL "Product of the Year" and Business Software noting it lets users move through 1-2-3 at least twice as fast. Retail price is listed as $150.
HAL is faster at 1-2-3 tasks within a narrow definition of "tasks."
A two-page print advertisement for Lotus 1-2-3 from 1987, styled to look like a whiteboard covered in handwritten marker notes and scattered printed clippings. The left page features handwritten text mapping 1-2-3's evolution: a circled heading reading "1-2-3 — More than the best selling PC software," then a timeline showing "1982 — intro," "1984 — The Standard," and "1986/87 — A System," with branching annotations pointing to "New Lotus products — Lotus HAL, Freelance Plus, etc." and "independent software developers." The right page contains a printed text block inside a framed rectangle describing 1-2-3 as a system rather than just software, citing companion products including Lotus HAL, 1-2-3 Report Writer, and Freelance Plus, plus over 1,000 third-party applications, a free telephone hotline, and the Lotus PROMPT support program.
In my final analysis, I wrote that 1-2-3 is more like a business engine before finding this ad which flat out states that as an intended goal of the product.
Small clipping from a magazine which notes, "Multiplan is also very competitive with the 16-bit-only spreadsheets. When the complete Multi-Tool family of programs is available, Microsoft will have a powerful set of business management tools.
Came across this while researching. I hadn't heard of the "Multi-Tool family of programs," but TIL that Microsoft Word was originally called "Multi-Tool Word"
Clipping from BYTE Magazine about Excel 1.03. "Some people call Microsoft's Excel ($395) the 1-2-3 of the Macintosh world. With its large number of features and formidable power, Excel has a justifiable claim as the best spreadsheet for any machine. In the benchmark tests, Excel was clearly the fastest of all nine programs, especially when compared with the IBM PC-compatible spreadsheets."
They weren't kidding about "clearly the fastest." Excel was up to 500% faster. 1-2-3's days were numbered.