Lotus 1-2-3 For Linux
lock.cmpxchg8b.com
lock.cmpxchg8b.com
I wonder if anyone still has a copy of Lotus 1-2-3/M? It was the port to the IBM mainframe operating systems MVS (nowadays known as z/OS) and VM/CMS (nowadays z/VM). [0] Not that I ever used it or saw it, but just I have become fascinated with it from reading descriptions of it. From what I understand, it is more different from 1-2-3 for DOS than the Unix or VMS ports were; the Unix and VMS ports work with character mode terminals (such as VT100 compatibles), which while rather different from the terminal model used on MS-DOS or text mode OS/2 (direct memory access to the screen buffer), nonetheless are close enough that the bridge can be gapped–which (on Unix) is classically the job of the curses library (and its various descendants). By contrast, 1-2-3/M was written to work with the block mode 3270 terminals commonly used on IBM mainframes, which send to/from the terminal whole screenfuls of data at a time, rather than individual characters (somewhat similar, in principle, to classic HTML forms). This forced greater changes in the UI compared to the other ports, because a lot of things which are easy to implement with character mode terminals are essentially impossible in 3270.
[0] https://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ss...
3270, and it's derivatives such as 6530, had (have?) a protect mode protocol that sends fields in much the same way as an HTTP post [1]. It doesn't seem to have been used that much on IBM's, probably due to the synchronous write-a-screen-and-wait-for-the-result readline style of programming. However, it was used extensively on the Tandem, which had an asynchronous 3-tier style architecture.
1. https://x3270.miraheze.org/wiki/3270_data_stream_protocol
We were at Sears, and my parents were waiting for customer service-- they were buying an appliance or something. There were terminals around, open to public use. I recognized them as 3290's from my dad's work.
They had an application where you could do form work-- building up an order or searching for stock on items-- that used this protect mode. You'd fill in fields and then hit a pfkey, and wait several seconds for a result.
I can't find anything about this system having ever existed online-- one of those blackholes of missing information about pre-web days. There's an interesting web site of how point-of-sale evolved at Sears and other places-- https://vintagepointofsale.com/author/jpnearl/ but that's not really what I'm talking about.
I remember other instances of this from when I was little, too. Lots of IBMs internal applications used this whole forms interface and the lower right status HOLDING while you filled out fields. And I recall travel agents using it with SABRE, too.
My memory is that it wasn't uncommon-- that a whole lot of mainframe usage looked like this: https://basis.uark.edu/frequently_asked_questions/email_noti...
From the floppy, I’m guessing it was more likely to be an AS/400. (RS/6000s had them too, and they were originally invented on mainframes, where they were used for microcode updates-but I believe AS/400s dropped them later than RS/6000s and mainframes did.)
Now the RS/6000 and AS/400 lines have been merged at the hardware level - but an old machine being thrown out in 2001/2002 would have been from when they were still distinct hardware.
By collecting all that data, the AI info-hunter will in milliseconds be able to tell a young girl 150 years from now that "Your great great grandfather was a computer man. I found 168,235 deceased people who directly used his work, and while his work never made it to the internet, there is a high probability that it is recoverable from a trash dump site in California in a red safe buried 13 yards below the surface also containing some car keys and a vintage $50 note. Shall I navigate there now?".
I was at my insurance agent a few weeks ago and they still had a 3270 emulator in use.
Makes less sense now just about everyone uses emulators rather than physical terminals, especially when you can get emulators which speak both - but still supported anyway. You can set up your IBM i to accept TN3270 as well as TN5250.
That said, people confusing 5250 for 3270 is more common than people actually using 3270 with an AS/400, so this is probably a case of the former rather than the later
Couldn't they just render everything to a local virtual terminal and then send the screen after updates?
The big idea behind the 3270 architecture was to support things like CICS, where you could have tens of thousands of terminals attached to a single processor computer with 16 megabytes of memory, and then take individual requests from terminals, recover state, and render screens.
How did Lotus 1-2-3/M address this? From what I understand, they adopted an approach commonly used in 3270 applications – a fixed area at the bottom of the screen was reserved as a "Command area". You would type your slash sequence there, and then press ENTER. The whole sequence would be sent to the host. If what you typed was not a full command, just the prefix of a command, I believe it would display you a menu showing the command options, similar to how 1-2-3 worked on other platforms.
But it also was a problem with things like scrolling off the screen. On 1-2-3 on other platforms, you could just use the cursor keys, and the screen would scroll immediately. Under 3270, the cursor keys are implemented locally, so you'd have to use a function key or command to scroll instead.
How would you go about it in the first place?
EDIT: ah, their coffsyrup tool (https://github.com/taviso/123elf/blob/main/coffsyrup.c) with help from objdump (it's more powerful that I gave it credit for) does the relocation and patching. I would have loved to read more into that part of the process.
The coff tool is harder than the rewritten functions.
Curious how piracy seems half the time to be the best form of archival for older software that was abandoned (most older software is no longer available to download even if one has a license, let alone still runs on a more modern environment, but if you have A you can try and sort out B, as this post so nicely demonstrates)
Love seeing his step-by-step on hacking something like this together. What a great engineer.
Linux did have lcall7 and lcall27 compatability support
There is very little information available online about that --- section 2.11 here might be a better description:
https://tldp.org/LDP/lki/lki-2.html
Further digging reveals that it's related to https://en.wikipedia.org/wiki/Intel_Binary_Compatibility_Sta... (which I couldn't find the actual document of) and might explain where the original set of system call numbers in Linux came from. This also reminds me of the "CALL 5" interface in DOS which was used for CP/M compatibility.
BUT they did release Lotus 1-2-3 for it in on a ROM cartridge which in the days when most programs ran on 5.25 inch floppies meant that performance just cranked!
Really? I remember it having a "chiclet" keyboard that was widely criticized among other things. As for the compatibility, I'm not sure how many computer makers at that time--including IBM--completely grokked that PC compatibility really did mean 100% compatibility as opposed to mostly compatible.
For the home market where the Jr. was aimed it really needed the better graphics and sound to compete with the C64 and the like.
But to your basic point. Yeah. IBM wanted to create a competitor to the other home computers. Not cannibalizing its business computers was probably a rather secondary concern.
I'm sure the PCjr could have really taken off if it had been more like the Amiga.
The PCjr had the promise of "runs some PC software", so if Dad needs to finish his spreadsheet from the office in an emergency, he can barge the kids off the PCjr for the night.
If it had been something different to the point of total incompatibility, why not buy the kids a cheaper Atari 800XL or C64 for games and "educational software" instead?
You can also argue that the PCjr's unique features did survive a bit longer, in the form of the Tandy 1000 series.
I think this was it: https://en.wikipedia.org/wiki/HP_95LX
Emacs is the most productive environment (for me) and it is half a century old.
There is no doubt that for any tasks simple enough to have their speed limited by the interaction with the user, and not by waiting for a very large number of cells to be recomputed or by the execution time of a long macro, the MS-DOS Lotus 1-2-3 on an 80386 CPU was faster than MS Excel or any other modern spreadsheet program on a modern computer with a CPU having a one hundred times higher clock frequency.
Lotus 1-2-3 had a well-designed menu-driven user interface and the keyboard shortcuts needed to execute quickly all menu commands became automatic in a short time for anyone who used the program daily, and they were easy to discover for novice users.
In the recent versions of MS Office, the menu structure has become very opaque for me, even if I have used it for decades, since its first version. I may need some minutes to discover in which submenu a seldom-used command can be found, because the distribution of the commands over the menu hierarchy no longer makes sense for me, even if I know that the command must exist, because I had used it in some older version of MS Office, where it was located in a completely different submenu.
There was a preference that for some reason was off by default that enabled / commands, so that you could use the GUI version just like the old DOS version. My dad did that for years when his company forced him to switch to GUI 1-2-3, until they finally forced him to switch to Excel.
Office admin staff hated the web based alternatives when they were rolled out
(According to Yegge.)
We are seeing a new resurgence now. There is some competition. Even on the FLOSS space, LibreOffice must show it is better than OnlyOffice. But it is very far from how things looked like in mid 90's when office suite vendor really had to include useful and differentiated software.
You're probably right about the competition, Wordperfect was the market leader at one point, and Adobe also had FrameMaker - perhaps more of a Publisher competitor.
1-2-3 was like crack for accountants (it was first released right around that time). One of my tasks was making "backup copies" for users. Probably had 1 legit copy for every 20 staffers so this was quite a sum of money they "saved".
After getting sued for millions for copyright infringement they realized it was cheaper to buy a real copy for every user.
Travis is moving on from 0 (Google Project Zero) to 1-2-3.
I wonder when the article about Quattro Pro will come.
Just putting that thought out there.
This 1990 Computerworld article mentions that Lotus compiled all their Unix applications with gcc. Given the timeframe involved, this likely means early gcc 1.x and supporting tools
There was a bug in early Pentiums called the f00f bug, it would cause a deadlock if you provided an invalid operand to cmpxchg8b while using the lock prefix. It was an important vulnerability at the time, and I thought it would be fun to own lock.cmpxchg8b.com.