GzipAout & The best laptop I ever had

FreeBSD removed support for executing gzip’e a.out binaries today and that deserves a word on the way.

The best laptop I ever had was a GateWay2000 Handbook/486, seen here in Wikiuser Samboys excellent photo:

../../_images/Hb486_dillo_big.jpg

I paid $2500 for it, a substantial amount both now and back in 1994, but it was worth every cent: Rock solid build quality, suspend/resume worked perfectly - and I mean that: No computer I have had before or after have had as trouble-free and reliable suspend/resume.

At the start of a flight you would get interested side-eye attention because the small size actually allowed you to work comfortably in an airline seat.

The charger plugs into the battery, which meant that if you had two batteries, you could take the charger and spare battery and persuade the nice cabin crew to let you charge it in the galley, while you worked away on the other battery in your seat.

A couple of hours into a flight, you would start to get interested enquiries because you were still working when everybody elses batteries were long out of juice.

GateWay2000 should have paid me commission for my enthusiastic in-the-air sales-pitch.

A lot of my FreeBSD 2.x era code was developed on that Handbook, MD5Crypt, phkmalloc, devfs, not to mention The Bikeshed email.

The biggest drawbacks were the non-square pixels on the grayscale LCD, the 4MB RAM and the 135MB 2½” disk.

Connectivity

Until FreeBSD got PCMCIA support for NE2000 ethernet cards, I was seriously bandwidth limited: 115200 SLIP over the serial port.

But the HandBook had a multi-function port, to which you could either attach the floppy drive, or a dongle for a parallel printer.

A company called “LapLink” had made a business out of transferring data over serial and parallel ports on PC’s: The parallel port has five input lines for handshaking and paper-out detection and by cross-wiring these to data-lines on the other end you get a 4-bit wide bidirectional channel.

An evening hacking on the parallel port driver, and I had PLIP which turned a parallel port with a LapLink cable into a network interface.

Capacity

A visit to Fry’s got me a 16MB RAM extension, but the disk was literally the largest one in existence in the brand new 7mm thickness.

Obviously I wanted the FreeBSD source tree on the machine and that left little room for anything else.

I tried a PCMCIA flash card but that totally sucked and officially it was a spare for our Cisco 7010 router, so I couldn’t just abscond with it.

One day on the daily BART trip from Pleasant Hill to Oakland, it ocurred to me that I literally never used most of /usr/bin so I started gzip’ing things like dc(1), primes(1), nfsstat(1) and so on. That yielded a lot of space, at the cost of ever so often having to gunzip a program to run it.

Then another day it occured to me that the kernel could do that on the fly, and presto: gzipaout was born.

Technically there wasn’t anything to it. It was an image-activator which gunzip’ed the file into memory, but performance wise there were serious footnotes.

The gunzip’ing took time obviously, but more importantly demand-paging from the gzip’ed file did not work, so the text-segment was paged to swap-space.

Jordan and I applied gzipout to the install floppies, which together with crunching made it possible to boot FreeBSD and run sysinstall from a single 1.2MB or 1.44MB floppy. It was a tight fit however, and we soon caved in to a two or three floppy model, in order to have space for more features.

Gzipaout was popular with early embedded FreeBSD users, because both in RAM-disks and flash-disk based layouts you paid serious money for the disk-space.

TravelStar LP

In 1995 IBM launched the TravelStar LP family of disk-drives, presumably for Apple:

../../_images/travelstar.png

Eventually I managed to get hold of a drive, only to run into a bug in the BIOS of the HandBook: The drive said it had 16 heads, but the BIOS reduced that to 15. I solved that with a boot-time flag for the ATA driver which overrode the BIOS idea of how many heads the drive had.

It was not just some random programming error, the Handbook stored its BIOS on the harddisk. The motherboard held a very primitive BIOS in EPROM, which picked up the “real” BIOS from the harddisk, and then reduced the geometry the harddisk reported, so the operating system would not accidentally overwrite the BIOS.

But still: Best Laptop I ever had.

phk