> It turns out that the BBS also had a warez copy of Lotus 1-2-3 for UNIX. This was widely thought to be lost – I’m told it couldn’t compete with a more popular UNIX office suite called SCO Professional, so there were not many copies sold.<p>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.<p>[0] <a href="https://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/4/897/ENUS290-104/index.html&lang=en&request_locale=en" rel="nofollow">https://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ss...</a>
That was awesome, but they skipped over the crucial part I'm most interested in: how the heck did they rewrite and reroute the incompatible system calls and libc functions? That's probably the hardest task of it all.<p>How would you go about it in the first place?<p>EDIT: ah, their coffsyrup tool (<a href="https://github.com/taviso/123elf/blob/main/coffsyrup.c" rel="nofollow">https://github.com/taviso/123elf/blob/main/coffsyrup.c</a>) 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.
Fascinating write up!<p>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)
Tavis Ormandy has had everything ranging from ice cold takes to white hot takes, but man, when he does something cool, it's usually the coolest thing I've heard of in months and months.<p>Love seeing his step-by-step on hacking something like this together. What a great engineer.
Overall very interesting article, but this bit caught my eye:<p><i>Linux did have lcall7 and lcall27 compatability support</i><p>There is very little information available online about that --- section 2.11 here might be a better description:<p><a href="https://tldp.org/LDP/lki/lki-2.html" rel="nofollow">https://tldp.org/LDP/lki/lki-2.html</a><p>Further digging reveals that it's related to <a href="https://en.wikipedia.org/wiki/Intel_Binary_Compatibility_Standard" rel="nofollow">https://en.wikipedia.org/wiki/Intel_Binary_Compatibility_Sta...</a> (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.
Little known fun-fact re Lotus 1-2-3 was that it came on a ROM cartridge for the PCJr. The PCJr was a total sad sack of a machine. Technically superior to the PC and cheaper too so IBM intentionally crippled it with incompatibility bugs so that businesses could not really rely on it.<p>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!
My first PC came with LotusSmartsuite on CD-ROM. At the time I dreamed that the office suite area was full of competition and vendors would implement features all the time continuously improving their offers. It probably was actually like that at the time (1997). Soon monopoly turned on.<p>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.
My first "real" job was working at Arthur Anderson, where due to my geeky love of computers I was able to quickly move from the mail room to Data Processing.<p>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".<p>After getting sued for millions for copyright infringement they realized it was cheaper to buy a real copy for every user.
So, incidentally, having symbols makes it doable to use a decompiler to retrieve something resembling source code.<p>Just putting that thought out there.
There is one thing I feel like missing now: dosbox should have a mode to run DOS programs on the terminal and only start a GUI if a graphics mode is started. That would give seamless use of DOS apps.
There was WordPerfect for unix back in the day as well, I used it at work in an HP-UX environment. I don't know if it was ever available for Linux.
I fixed some spelling mistakes: <a href="https://github.com/taviso/123elf/pull/1" rel="nofollow">https://github.com/taviso/123elf/pull/1</a>