Jeff Parsons has been able to locate an executable compressed with Realia SpaceMaker which significantly pre-dates all hitherto known SpaceMaker or EXEPACK survivors. It’s an editor called DVED.COM version 6.02, found on disk 191 of the PC-SIG Library 8th Edition CD-ROM. The DVED.COM file is timestamped September 14, 1983 and its accompanying READ.ME file is dated September 18, 1983.
DOS timestamps are not necessarily trustworthy, and timestamps from before the PC/AT era (and built-in clocks) are notoriously unreliable. But in this case, the version history in the READ.ME file clearly talks about DVED “V6.02 (September 14th, 1983)”, which matches the COM file’s timestamp.
The 1983 DVED.COM file is certainly compressed with SpaceMaker. It has the same MEMORY$ signature, no long runs of zero bytes, as well as stub loader code at the beginning and end of the file that’s very similar (but not identical) to what SpaceMaker 1.06 (1986) produces.
Could DVED.COM have been compressed at some point well after 1983? Yes, but there’s an excellent reason to believe that’s not the case. DVED stands for Dewar Visual Screen Editor, and it was written by the same Robert B.K. Dewar who also wrote SpaceMaker. The on-line help for DVED in fact explicitly mentions SpaceMaker as a product available from Realia (DVED itself was a freebie). If anything should have been compressed with SpaceMaker, it’s DVED.
The 1983 version of DVED.COM can be examined live on pcjs.org, just load PCSIG08:DISK0191 into the machine and run DVED.
Can anyone find an even older executable compressed with SpaceMaker (or anything else for that matter)?
Again an interesting read about the history of DOS…. Thanks for sharing
As a side comment: Your website is not reachable from everywhere. Seems that some providers have blocked the access.
Not reachable how? It’s also possible that things are blocked on the server side (effing spammers…). If you tell me what IP address you’re coming from I can tell you if it’s blocked.
IP that works: 193.24.32.42
IP that does not work: 79.218.69.71 / 2003:42:2e7f:9644:3681:c4ff:fe1c:9b27
If you want to test more, send me a private message
UNP does detect spacemaker. Fileinfo will find it but often it shows up as EXE2COM (+Compression) Realia.
If you unpack MCLock / Bitlocker from crunch.com (ftp://ftp.sac.sk/pub/sac/pack/crunch.zip cruncher 1.0) its packed with SpaceMaker / EXE2COM Realia. Cruncher 1.0 is from 1989 tho..
Which version? UNP 4.12 (05/19/97) definitely does not detect SpaceMaker 1.06. You are right that it contains code to detect SpaceMaker 1.03. How well it works across SpaceMaker versions I have no idea.
The occasional SpaceMaker-compressed binary is definitely out there, but it’s not common and typically only binaries from mid-1980s or so. By 1990 there were way better alternatives available, so using .
Yeah UNP source code only has SpaceMaker 1.03 in it.
Pingback: Yep, Norton Did It | OS/2 Museum
I believe I have located a copy of SpaceMaker 1.03, via discmaster.textfiles.com:
http://discmaster.textfiles.com/browse/11758/ftp.update.uu.se.2014.03.zip/ftp.update.uu.se/pub/rainbow/msdos/misc/spacemkr.lzh
I haven’t actually ran the executable yet, but looking at the binary, it has the following string inside:
“SPACEMAKER (TM) 1.03#T. (c) 1982 Realia Inc”
Cool, thanks! That is indeed SpaceMaker 1.03. Hard to say how old, the file has a 1985 timestamp but the copyright message only shows 1982 (whereas SM 1.06 shows 1983, 1984, 1985).
There is circumstantial evidence in the code: it asks if the input file was linked by old or new version of DOS. The DOS 2.0 was released only in 1983, so it can be assumed that old version is DOS 1.0 and new is DOS 1.1
All in all, there are few points of interest in the program.
First is a way it preprocesses relocations before compression:
converts 4 bytes reloff:relseg to 3 bytes: reloc = relseg << 4 + reloff ,
then transforms using next method:
do {
for (i = 0; i reloc[i+1][0] || reloc[i][1] > reloc[i][1]) {
temp = reloc[i][0]
reloc[i][0] = reloc[i+1][0]
reloc[i+1][0] = temp
temp = reloc[i][1]
reloc[i][1] = reloc[i+1][1]
reloc[i+1][1] = temp
f_again = 1
}
}
} while (f_again)
Next is how it tries to reduce IO: read only exe_pages * 512 + exe_last_page_len of input file instead of filesize provided in fcb in the ‘new version of DOS’, caches writes until full exe page (or disk sector) is accumulated.
Finally, it calculates and writes exe header checksum for the output file.