• Please review our updated Terms and Rules here

Lotus 1-2-3 Version 2.x Add-Ins and Developer Tools?

Martin Hepperle

Experienced Member
Joined
Nov 10, 2014
Messages
275
The early Lotus 1-2-3 spreadsheet program could be extended by writing Add-Ins in assembler (later versions changed the Add-In model and provided their own higher level Add-In language).

While the Add-In development kits for versions 3 and 4 seem to be available, no information about the earlier Add-In interface can be found.
Even Add-Ins for Version 2 seem to be rare. Some complex, menu controlled Add-Ins are available, but no simpler Add-Ins with @ functions.
At the time, there were many Add-Ins available, mostly for financial calculations.
It would be helpful to find some of these early Add-Ins, especially containing @ functions, for reverse engineering the interfacing mechanism.
Of course, the associated Developer Tools would be most desirable.

So far I have only seen one single detailed publication about these Developer Tools including an example in assembler. It was contained in the EXE Magazine and shows how simple functions can be programmed.
The code makes use of equates, macros and structures provided by Lotus in its Developer Tools, which are not available. Having one or several example @ function plugins could make it possible to reverse engineer these macros and structures.

Martin
 

Attachments

I bet this not what you are looking for but there are some PDFs that mention macros for Lotus 123 2.3 here
For addins etc there is a (massive, 50GB) copy of Lotus FTP site on archive.org

Also check this , special from PC Mag Apr'91 about addins

HTH
 
Last edited:
Yes, macros are well documented in the manuals. Add-ins go one step beyond macros.
Thank you also for the pointer to the archive.org file - I found some small items for Lotus 1-2-3 2.x, but unfortunately no function add-ins or associated tools. But the archive contains a lot of stuff which might be interesting for others.
The PC-Magazine article presents a few addins, including some which implement new @functions. Unfortunately these 3rd-party products seem to have been lost over time like the original Lotus Developer tools.

Martin
 
I think I probably have some addins on floppies somewhere. They'd be for 3.x at the latest and I wouldn't be surprised if some are for 2.x. If I don't get back to you, feel free to send me a PM or something.

https://en.wikipedia.org/wiki/Lotus_1-2-3#Real_Mode_(8088+) says "Release 2.3 brought WYSIWYG editing to the 2.x line" and that's my recollection from an advertisement or something I saw recently. I think perhaps that was in the form of an add-in, perhaps "Allways" (yes, two "l"s) It looks like a standalone version of Allways is available for download on the web already.
 
I am interested in the earlier 2.x Versions because I have HP Palmtop and Portable computers which have 1-2-3 in ROM.
It might be fun to write some new @function add-ins for them, e.g. to access the serial port or even provide access to network data sources.
 
I am interested in the earlier 2.x Versions because I have HP Palmtop and Portable computers which have 1-2-3 in ROM.
Oh, that's interesting, there are a few proud owners of HP 200LXs (or similar) at my local retro computer group, and I'd seen the built-in application launcher on their devices before, but never noticed 1-2-3 in there until I just looked at Wikipedia!

Have you looked into whether taviso has figured out the plugin interface at all? He seems to have reverse-engineered some of 1-2-3 (I didn't read the article too closely, although I see him lamenting the same lack of SDK as you!).
 
The referenced articles deal with Lotus 1-2-3 Version 3 and Unix versions. These used a different, more programmer-friendly Add-In mechanism than the 2.0 Versions (including a special higher level language). Thus these interesting findings are not directly usable. But maybe sniffing out old BBS listings might brind something to the surface.
 
I've found these floppies so far:
  • @EASE Set Of Six: according to that link, this is for 1-2-3 R2.01 or later. I guess this is exactly the kind of add-in you're looking for!
  • SeeMORE for 1-2-3 version 1.0: according to this magazine, version 2.0 supported 1-2-3 R2 through R2.2, so presumably this supports similarly old versions. If this version does anything like what the advertisement in that magazine shows then I suppose this might not be too interesting for you.
It might take a while before I get a chance to image them.

I have a (presumably) genuine 1-2-3 R2.01 floppy set and one of the disks is called "Add-ins" and says it includes "Lotus Speedup & Lotus Learn" (and also "You may copy and distribute this disk, provided you do not accept payment"!). Those don't seem like the kind of add-ins you're interested in, but I wonder if there were any add-ins supplied with any of the 1-2-3 releases that are of the kind you seek?

If by any chance you find a list of add-ins for these versions, e.g. I imagine some 1-2-3 releases could have README files with such lists, saying which ones have been tested to work, it might be useful if you shared it with me to jog my memory. I'll also ask my dad what he remembers, since this is his stuff he used for work, I just used stock 1-2-3 a bit as a kid.
 
I remember a third-party utility called sideways that allowed you to print spreadsheets sideways. Seen a retail copy at a thrift store many years ago nobody wanted.
 
The "SpeedUp" and "Learn" Add-Ins are already available on the net. They are for improved recalculation speed and for recording macros.
I don't have a list of Lotus-approved Add-Ins - the only way to find out what was available is to further look through old magazines and advertisments.
The "Sideways" Add-In allowed printing very wide spreadsheets by rotating the printout by 90 degrees.
 
Not sure if this is what you want, but I just came across this in my collection last week, and have made .img files of them.
Consists of 5 x 360KB floppies. Let me know if you need me to upload to archive.org?

Edit: Just saw the post earlier mentioning Allways, and see that it is already available for download.

Allways - Disk 01.jpg
 
Last edited:
In the meantime I found a copy of @ BASE which contains several Add-Ins. One of them @BASEFUN contains several @ functions for accessing dBASE files.
I tried to partially decode the binary and could identify the structures contained in the example Add-In listed in the first posting.

Some header info remains unclear, though. And the access to 1-2-3 core, which is provided by the Add-In library with 1-2-3 interface functions which is linked into the *.ADN file and therefore difficult to identify. For these details the actual Add-In Developers Kit for Lotus 1-2-3 R2.x would be required.

Martin
 

Attachments

The attached ZIP archive contains the assembler source of an Add-In which can be assembled and linked to a binary.
Lotus 1-2-3 Release 2.2 can attach this Add-In and recognizes the functions, but of course there is nothing behind the individual functions.
The actual data exchange with 1-2-3 is missing due to lack of documentation/libraries.

Martin
 

Attachments

I have found a few Add-Ins, but almost all were "application" Add-Ins, i.e. they are programs which have to be called using the menu system.

The @ BASEFUN Add-In was the only one which implemented new @ functions.
@ function Add-Ins can be identified by the fact that they include binary sequences of the form "@functionname(" (a string ending with an opening parenthesis) for each function.
Additional function add-ins could be helpful, but it will still be difficult to reconstruct the information how to access the spreadsheet cells and how to return values.

The original Add-In Developer Kit must have included assembler include files which made the interface functions public and a library which was linked with the Add-In object module to add the interface functions. Comparing different Add-Ins and looking for common code might reveal some of these common interface functions.
 
I was watching a video on YouTube which mentioned a "HAL" addin which provided a natural language interface to 1-2-3, and it happens to actually be available online with documentation and is for release 2: https://winworldpc.com/product/lotus-hal/1x I think the example I saw was it being asked to insert a row. Given that it would presumably have to support doing a lot of different operations, I presume it must use a lot of the add-in API, unless it happens to bypass that entirely.

Sorry I haven't had a chance to image @EASE yet!
 
Interesting find ... if I try to start 1-2-3 R2.2 it is started, but not recognized by HAL - obviously to new.

I guess (but this is only a guess) that HAL.EXE loads and starts Lotus 1-2-3, then examines its memory and, if everything is found in the correct places, directly hooks into the keyboard read/eval loop of 1-2-3.
It can then read the users input, translate it to 1-2-3 commands and execute these commands as if they were typed.
This approach seems to be circumnavigating the AddIn interface for a direct approach.

command_000.png
 
Inside the file HAL.123 I see the notice "This HAL.123 supports 1-2-3 releases 1A, 1A*, 2, 2.01."
... and ... "Something's happening . . . Something wonderful . . ."
 
That's a shame, I was wondering if perhaps it did too many things for an add-in API to be able to support it :( Or perhaps they wanted to support earlier versions when there may not yet have been an API yet.
 
I am interested in the earlier 2.x Versions because I have HP Palmtop and Portable computers which have 1-2-3 in ROM.
It might be fun to write some new @function add-ins for them, e.g. to access the serial port or even provide access to network data sources.
Hello Martin, I too am interested in Lotus 2.x add-ins. Were you aware of the 321GOSUB function compiler for V2? It was produced by a small Waterloo, Ontario area company. I used it to build compiled financial add-ins. I might just have a floppy with the compiler somewhere and start will looking for it. I am also looking for historical information on the company that produced it, have found nothing on the web. I might have the exact arrangement of the product name slightly wrong, for example it could be 321-GOSUB or 321GO-SUB. Hope this information intrigues you as much as it does me
 
Back
Top