Realia SpaceMaker

A recent exploration of Microsoft’s EXEPACK posed the question whether EXEPACK was the first executable compressor, at least in the world of PCs. It wasn’t.

That distinction almost certainly belongs to Realia SpaceMaker, which was probably released sometime in late 1982. Why “probably”? SpaceMaker is so old and so obscure that the oldest (and only) surviving version (1.06) is from 1985, in fact newer than the earliest known EXEPACK.

SpaceMaker was covered by the trade press, though not exactly extensively. Peter Norton mentioned it in his Hard Disk Housekeeping article in the January 8, 1985 issue of PC Magazine. That is the most solid piece of evidence that SpaceMaker is older than EXEPACK. SpaceMaker was written about in December 9, 1985 issue of Fidonews (The PC’s Space Program, by Gene Plantz). It was also mentioned in the January 1986 issue of Compute! magazine (page 119, Last Minute Gifts).

Note that the first known coverage is from 1985. So how do we know that SpaceMaker is from 1982? In the absence of surviving binaries, it’s difficult to prove. But SpaceMaker was advertised in the January 1983 issue of PC Magazine, which probably hit the newsstands in late 1982. And it was listed it as being developed in 1982-1983 (together with the Realia Termulator terminal emulator) in a legal document (page 20 in the PDF) which ought to be a reasonably trustworthy source of information.

If only we could ask the author to clarify the timeline. But alas, we cannot. The author of Realia SpaceMaker, Robert B.K. Dewar, died in 2015.

How Does SpaceMaker Work?

Let’s quote the first known SpaceMaker ad which explains how the utility works: Uninitialized (binary zero) areas are compressed, and the relocation entries are eliminated. When executed, the program expands and relocates itself, recreating the original program.

SpaceMaker is thus in principle very similar to EXEPACK, but at the same distinctly different. SpaceMaker compresses runs of repeated zero bytes—but only zero bytes; EXEPACK compresses any repeated bytes. SpaceMaker, unlike EXEPACK, also converts EXE files to COM files, dispensing with the EXE header and relocations. Especially for smaller programs, that helps by getting rid of the typically 512-byte header.

Does SpaceMaker Work?

SpaceMaker (1.06, the only version available for analysis), works… with caveats. There is no attempt to detect whether the compressed file is larger than the original. SpaceMaker also does not object to processing executables already compressed with SpaceMaker, making them slightly larger with each iteration.

Some executables no longer run after being compressed with SpaceMaker. It has not been investigated why, but the problem was reported in contemporary literature.

The effectiveness of SpaceMaker wildly varies depending on the executable being compressed. For typical small C executables, the savings are unspectacular, often under 5%. In some cases though, it could be 30% or more, but only if there are large statically initialized data areas (which modern tools often eliminate).

There’s one bug which SpaceMaker does not have, while versions of EXEPACK released prior to mid-1998 did. It’s discussed in an post by Robert Dewar titled “DOS 3.1 ASMB (Another Silly Microsoft Bug)”. The problem described in the post is that EXEPACK loses the initial AX value. If the program depends on it (most don’t, including programs using standard Microsoft run-time libraries), it will not function correctly after EXEPACKing.

The SpaceMaker/Norton Connection

An intriguing claim surfaced in the October 1991 issue of Russian-language КомпьютерПресс (ComputerPress) magazine, in an article on the LZEXE compressor. On page 62, the magazine says that the very first version of Norton Utilities consisted of COM files processed by SpaceMaker (“Самая первая версия Norton Utili­ties состояла из .СОМ-файлов, обработанных SpaceMaker.”)—given that Peter Norton wrote about SpaceMaker, that does not sound implausible.

So it should be dead easy to verify, right? Right? Wrong. The first version of Norton Utilities is nowhere to be found. If someone had the original Norton Utilities disk, and the executables were really processed with SpaceMaker, that would be a good proof SpaceMaker really was available at that time.

What is available is only an archive of Norton Utilities 3.0, still a collection of COM files, but not processed by SpaceMaker.

Identifying SpaceMaker

SpaceMaker is so old and obscure that the excellent UNP utility, which recognizes about 20 executable packers, does not know about SpaceMaker.

Programs processed with SpaceMaker 1.06 contain the string ‘MEMORY$’ near the beginning of the executable (within the first 32 bytes). It is not clear if that’s a characteristic of executables processed with older SpaceMaker versions as well.

Any provably ancient SpaceMaker’ed executables, anyone?

This entry was posted in Compression, Development, PC history. Bookmark the permalink.

12 Responses to Realia SpaceMaker

  1. God says:

    OT: glad to see you your blog back up, Michal. 🙂

  2. MiaM says:

    OT: Mee too, were missing your blog. What happened?

  3. Michal Necasek says:

    Nothing exciting. The site was using more CPU cycles than the hosting company would like, there was a misunderstanding when sorting out the problem, the site got suspended. It took a while to sort everything out, especially with me having lots of other things going on.

    Big thanks to Fred van Kempen for a well placed phone call.

  4. CarlosPC says:

    Hey! Thanks for bringing the site back. Are you taking donations? Cheers!!

  5. Michal Necasek says:

    Nope, no donations at the moment. There was no money problem, there was an “excessive resource usage” problem.

  6. ender says:

    Speaking of accessing the blog, I can’t do it from my workplace any more – the server returns

    You don’t have permission to access /wp/ on this server.
    Apache/2.2.3 (CentOS) Server at Port 80

    I tried with two browsers (Vivaldi and Firefox), just to be sure it isn’t something in User-Agent that’s triggering this, and it happens in both. Any ideas what’s happening? The IP I can’t access from starts with 89.212.

  7. DOS says:

    As everyone else has already said, thanks for bringing the site back! Also thanks for the link to UNP, I still have a copy floating around that I downloaded from a BBS that I use from time to time. I see it’s only 0.01 of a version behind the last available release though, so I guess I haven’t been missing much in the way of updates for the last 23 years.

    I too frequently get permission errors like the one @ender shows above.

  8. Michal Necasek says:

    There have been various IP addresses and ranges added by the hosting company to the blacklist recently. Aha… indeed 89.212 is one of them. If you punch “89.212” into Google right now, it comes up with a bunch of spam reports. So that’s why. If this is a problem for you, please give me a more specific IP address or range and I should be able to sort it out. Feel free to e-mail me.

  9. Neozeed says:

    I’ve always had a mistrust of exe Packers, meanwhile I’ve always loved on the fly disk compression…

    Also I can access os2museum from home again, which is nice! I know the pains of even managed self hosting! But the fight is worth it!

  10. Michal Necasek says:

    Yeah, EXE packers can never be as un-intrusive as disk compression. It usually works just fine… but not always. DOS wasn’t much of an OS, but file access was the one thing it did handle, and disk compression was transparent.

  11. Richard Wells says:

    Disk compression was rather unworkable when the powerhouse machines might have 256 kB. EXE packing was about the only viable method to shrink file size while operating off a floppy. Packed binaries became a very significant part of the 8-bit computer scene since many files started as memory dumps and could therefore be shrunken a lot.

  12. Pingback: SpaceMaker Update | OS/2 Museum

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.