The file was so old that to read the data I had to find an older version of binutils that still supported a.out-sunos-big. $ file alert.so1Īlert.so1: SPARC demand paged shared library not stripped
But, the clues it contained about the driver API were invaluable, and saved me so much time. Now, this file was for a different architecture, operating system, compiler, release and was a long obsolete format. This was the only file (trust me, I checked them all) that had any debugging data left on the whole ftp! Typedef struct envblk_ /* id 9 */ envblk Short unsigned int (*syscall) (/* unknown */) /* bitsize 32, bitpos 512 */ Short unsigned int (*unload) (/* unknown */) /* bitsize 32, bitpos 480 */ Short unsigned int (*load) (/* unknown */) /* bitsize 32, bitpos 448 */ Short int (*dealloc) (/* unknown */) /* bitsize 32, bitpos 416 */ Short int (*free) (/* unknown */) /* bitsize 32, bitpos 288 */ Lhdl gabinfo /* bitsize 32, bitpos 192 */Ĭhar *regfile /* bitsize 32, bitpos 224 */ Unsigned char *applid /* bitsize 32, bitpos 160 */ Long unsigned int maxsize /* bitsize 32, bitpos 128 */ Short int type /* bitsize 16, bitpos 80 */ Short int maps /* bitsize 16, bitpos 64 */ Short int pad /* bitsize 16, bitpos 48 */ Short int csid /* bitsize 16, bitpos 32 */ Short int pfid /* bitsize 16, bitpos 16 */ Short int envsize /* bitsize 16, bitpos 0 */ Luckily, they forgot to remove the STABS data, leaving incredibly rich debugging data.
In 1991, Lotus released a version for SunOS4 on SPARC.Ī few years later, a Lotus engineer uploaded a patch for a file management bug in the XALERT component that affected the 1.2 update. Lotus 1-2-3 was ported to a bunch of systems, including OpenVMS, Xenix, and even System/390. I mirrored everything they had to my workstation and sifted through it.
Archivesīelieve it or not, the old Lotus ftp site is still online. If you want to read about what commercial addins were available, this article is a fun read.
I figured I would download all the drivers and add-ins I could find, I’ll start reversing the simplest one, and move on until I know enough to write my own. I learned a lot about the Lotus add-in ecosystem, and how they worked. I spent some time looking, but came up empty. I figured that Lotus must have sent Cirrus Logic some documentation to write the driver, perhaps that still exists somewhere and would save me some time.
Further complicating matters, 123 uses a technique called overlays (like software bank switching) which confuses the debugger I’m using as it loses breakpoints whenever a overlay switch occurs! The display driver API is unfortunately quite complicated, I think it might take a while to figure out with just a disassembler and a debugger. Is it possible that I could write a dosemu display driver, and 123 would just work in a fullscreen xterm? I know that dosemu can simulate arbitrary text mode resolutions, and some DOS software is able to use it. It seems plausible that 123 can internally generate an arbitrary sized canvas, and it simply asks the display driver what resolution it wants? Sadly they didn’t work, presumably they needed a real Cirrus Logic VGA card, but the fact that these drivers exist at all made me curious. I was able to find the drivers on an old ftp site.
I found this old manual for a 1993 PC Workstation called the Epson Endeavor, which claimed to be distributed with a utilities disk that enabled a 100x31 text mode in 1-2-3. Unfortunately, the answer is that nobody has a solution to my resolution problem, but I did find something interesting… Endeavor I spent an hour reading vintage computing forums and old USENET posts. I enjoy using it, but being limited to such a small work area is a real nuisance. I wondered if other people still uses 123, and if they had found a solution. There is no way to display more columns, and maximizing your terminal will do nothing. There’s a workaround, just type stty cols 80, and it will be confined to a portion of your terminal, looking a bit sad.
If your terminal is not exactly 80 columns wide, it just makes a big ugly mess on your screen. The truth is I’m cheating, it does work, but it only supports a few standard text mode resolutions. I do like using Lotus 1-2-3, I even have a boxed copy of the last DOS version released, version 4! Problem
There were a ton of major commercial software products for MS-DOS that were highly polished, and can still be used effectively in an xterm today. I tend to use a lot of retro software, partly because I’m a big nerd but also because I just prefer to work in a terminal.