Booting the Compaq Portable II

A while back I got my hands on a Compaq Portable II, notable for being one of the first “luggable” PCs. Not the very earliest (as one might imagine from the name, there was a predecessor even from Compaq), but close enough to be interesting yet developed enough to be able to actually do things.

Cpii arrives

When I first got it, I did something that you shouldn’t do: I turned it on. The screen worked, but it showed me an error message (“102-System Board Failure”). So, I did what I pretty much always do. I completely disassembled it. I will probably go through a more detailed photo essay of the features of this machine later, here’s just a couple of quick summary notes.

The case comes off, revealing a pretty carefully caged machine. It is intended to be able to withstand being lugged around.

Cpii uncovered

It has four available slots, and they were all filled. They include a 1200 baud Hayes modem, a QIC-20 tape interface card, a (CGA?) graphics card, and a multifunction card that at least handles the floppy and hard drives, and also seems to have some external ports (printer maybe?).

Cpii slotsoutside

However, even when I’d removed all of the cards except the video card, I was still getting “102-System Board Failure”).

Cpii sysfail

So, I kept going, took everything all the way apart, and put it back together. Something in that process did some good, since I was then faced with a much more friendly-looking “162-System Options Not Set-(Run Setup)” and “Insert DIAGNOSTIC diskette in drive A:”.

Cpii insertdiag

Home free! Except, I didn’t know if I had any bootable PC disks. This is a 360K drive, for one thing, so only the smallest disks would work. And I have pretty much been concentrating on Apple stuff, I only have three PC 5.25″ drives apart from the one in the Compaq, and the only interface I have to them is my Kryoflux USB board. So, now the question was: how do I create a bootable floppy? And this was really a harder problem than I thought it would be.

The Kryoflux is capable of writing, but the software is still under development, and most of the attention has focused on Amiga disks. So, pretty much the only option I had was to convert a disk image to their internal IPF format first, and then write it out.

Furthermore, the Compaq Portable II doesn’t have a BIOS setup screen, the way you set the BIOS parameters is by booting a special Diagnostic disk. So I needed to get my hands on that. A little bit of searching around revealed that I could get a copy of the program that can create the diagnostic disk from a link on the Compaq Portable III page at

It turns out that these images contain an EXE file that will unpack and then create the disks—if you have a 360K drive installed. Neither Parallels nor VirtualBox was willing to tell the QRST (Quick Release Sector Transfer) program what it wanted to hear about the capabilities of the attached drives. So, I couldn’t use this program to create the disks unless I could somehow get that program onto a disk I could boot the Compaq from.

Cpii qrstfail

The problem is that, although there is an internal hard drive, it wasn’t recognized at all, so I’d have to fit everything onto a 360K floppy, which was impossible. It needs space to unpack the disk images. So, that wasn’t going to work either.

Finally, after a lot of flailing around on the web, I found a page on that has already-made images of the Diagnostic disk and the Compaq flavor of DOS 3.1. I am now hosting those files as well: Compaq Portable II setup diskette (360K), Compaq Portable II DOS 3.1 disk 1 of 2 (360K), Compaq Portable II DOS 3.1 disk 2 of 2 (360K). But even then, the problem wasn’t solved, since these images need another program to unpack them. That program is CopyQM, which I am also now hosting but probably shouldn’t be—if I am not mistaken, it was pulled from the internet a while back as being still a going concern, but without any real replacement. I can’t remember now where I found it, but I did, and now there’s another copy on the internet linked from here as well. So, then I had to go back into VirtualBox and in a more modern Windows (that allows folder sharing), I was able to unpack the disks onto a 1.2MB disk image (which I got by downloading a FreeDOS boot disk from this page of boot disks), which VirtualBox allowed me to attach and which CopyQM allowed me to write to.

So now I had the disk images, in .img format. I just had to turn those into real 5.25″ floppies. In order to convert these into the IPF file format that the Kryoflux can write, I made use of KeirF’s Disk Utilities, which contain a program called disk-analyse that allows conversion of .img files into .ipf files. I had to compile it myself (./configure, make, sudo make install), but it compiled fine under Mountain Lion. Yet it still took a lot of fiddling. The disk-analyse program complains if the disk isn’t exactly the right size, and in fact I never did get it to work exactly as it was supposed to. What I did is this: I took the 1.2MB image and went in with a hex editor (0xED) and chopped off the bytes in the image beyond 360K, so the image would be the right size. Then I ran the following command:

disk-analyse -f ibm_pc_dd cp2setup.img cp2setup.ipf

This bombed out with an error as follows:

T0-79: IBM-PC DD
T80-167: Unformatted
disk-analyse(78653) malloc: *** error for object 0x101dd6000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

However, it did in the process write a 360K .ipf file, which, happily, was sufficient for the Kryoflux write program to do its thing. So, then I connected up the Kryoflux and did this:

dtc -w -wi1 -fcp2setup.ipf

And the drive chugged away until it had written the disk. And I wrote the DOS 3.1 disks this way as well. Then I went over to the Compaq Portable II and tried them out—and they were not recognized at all. After scratching my head for a little while, I decided to take the Compaq Portable II’s own drive out and hook it up to the Kryoflux, so that it would be writing on the drive that later needed to read the images. Another round of writing and disk-chugging and I had three more disks made, and then I moved the drive back to the Compaq Portable II to try it out.

And, this time, it worked!

Cpii setupscreen

Cpii setupsummary

This done, I was now able to boot from the DOS 3.1 disks, which, it turns out, are in German.

Cpii dos31boot

That accomplished, I formatted the internal hard drive (maybe I should have tried to save it, but I could see no easy way to do so). Looks like a 20MB drive.

Cpii formatdrive

And then I copied the contents of all three floppies onto it. And now, it boots, in German, from its own internal drive.

Cpii boots

So, finally, success. I’ll reassemble it later, that’s enough for one day.

[Addendum: In the unlikely event somebody else is going to try to do this very same thing, here is a zip file containing the various images I used. The .dsk files are the original ones I got from, which need to be converted with CopyQM, the .ima files are the 1.2MB images that resulted from using CopyQM on the .dsk files, the .img files are the .ima files chopped down to 360K, and the .ipf files are the images converted to Kryoflux format to allow them to be written out.]

ADTPro vs. Mountain Lion

The new version of ADTPro has a couple of really interesting enhancements. One is that even the ProDOS version of the client can send nibbles now (before it was only the DOS 3.3 serial client), and the other is that it has now implemented a virtual server that allows you to connect a disk image on the host machine as a ProDOS volume on the remote Apple.

However, it turns out that ADTPro won’t launch in Mountain Lion. At least for me, pretty much no version back as far as I checked (1.2.0) would launch, it tells me that the application is damaged and that I should put it in the trash.

We’ll see how soon the official build fixes this, but after a little bit of hunting around on the net I was able to ascertain that the culprit is the JavaApplicationStub file contained within the application. Mountain Lion has a mechanism to determine whether an application is “signed” by a known developer, and the problem here appears to be that the JavaApplicationStub has some kind of mismatched signature.

I got it working by “unsigning” the JavaApplicationStub file, using a ruby script I found out in the wilds of the internet. If you go to and download the file, saving it as something like “unsign_snipt.rb” (Safari will probably smash a couple of extra endings on there, but the important thing is that it end in .rb), then in Terminal get into the directory it’s in, and do this…

chmod 755 unsign_snipt.rb
./unsign_snipt.rb /Applications/ADTPro-1.2.4/

It should then be possible to right-click on the application icon and select “Open”, confirm that this is something you want to do, and then the application will launch normally. It worked for me anyway.

Adtpro 124 iicplus

In fact, I even succeeded in doing something horribly inappropriate. With Virtual.po mounted on the IIc Plus and simultaneously mounted in Sweet16, I was able to save a file on the IIc Plus and have it appear in Sweet16, and vice versa. The only catch I saw is that you need to set the ProDOS prefix away and then back in Sweet16 for it to pick up the change. ADTPro seems to catch changes made by Sweet16 immediately, though. (But don’t do this, it’s scary.)

Hey hey hey

Here’s another bunch of scans, this time the materials accompanying the Texas Instruments TI 99/4a. I have two of these, and recently got a nanoPEB, so I’m all set to play with them and report back here. Once I can find the time. Meanwhile:

Ti994a read this first
Ti994a user reference guide
Ti video modulator operating guide
Ti994a basic reference card
Computer advantage club
Ti audio cassette recorder info
Texnet brochure
Ti home computer program library 1982
Tihcn 1983summer
Tihcn 1983july
Tichn 1983sept
Tihcn undated
Triton catalog 1984spring
Triton catalog 1984fall

—Listen, what’s this thing for anyway? —I can’t tell you… ha ha ha ha ha ha ha ha. But at least now we can read the manuals.

Good on ya, eMate

Today’s batch of scans pertain to the eMate 300 and associated eProbe experiment box that I got from a teacher who was using it in school back around the turn of the century. I’ve included here both the official Apple scans and scans of some of the homebrew documents.

First, some pictures of one of the eMate 300s, the serial interface box, and three of the probes (voltage probe, light sensor, and temperature probe).

Emate overview

Emate serial box interface

Emate voltage probe

Emate light sensor

Emate temperature probe

And then the scans. As of now, I have not scanned the primary (large) manual, this is just the smaller extra stuff.

Apple emate in education
Emate interface box
Emate300lab operating basics
Emate300lab using applications
Emate300lab newtonworks
Emate300lab sending and receiving
Emate300lab classroom server
Eprobe general science activities guide
Emate eprobe handbook homebrew
Emate introduction for students
Emate notes for teachers
Eprobe teacher notes

Of vital importance

Also scanned today were a few bits of miscellaneous paperwork. Not sure if they’re useful for anything, but they’re for some reason mildly intriguing. This came from the purchase of an Apple II plus system and related things in October and December 1982.

[Update: four more, from an Apple III, added after initial posting.]

A2plus acc pack

Of vital importance

Encoder board

D2 16 pack

D2 pack

D2 install

Auir iiplus

A2 lgcard pack

A2 ssc pack

Mon3 pack

Auir iii

Aiii syssoft pack

aiii unpack

aiii pack

Monitor iii owners manual

Apple Cat II manuals

I did a bit of scanning today, resulting in a nearly complete set of manuals for the Novation Apple Cat II, although these manuals were not originally mine and some have been, sadly, kind of marked up. The Com-Ware II manual is the worst of them. I hope to unearth my own manuals at some point, and if I do I will re-scan those and replace these copies. But for now, here are these.

[Update: added another five scans, after initial posting.]

Acii cover Acii cw2 cover Acii cw2 add cover
Acii api cover Acii 212 cover Acii bsr cover
Acii cassette recorder cable Acii expansion module Acii serial printer cable
Acii options accessories Acii 212 info sheet

How I came to have a UniDisk 3.5

Ever since I’d heard that the UniDisk 3.5 has within it a 65C02, I’ve wanted to get my hands on one. Not so I could read 3.5″ floppies, but so I could try to see if I could get any mileage out of doing parallel processing, dumping computing tasks to the disk drive while the computer itself did other things. Details of how this kind of thing can be done are buried in the IIgs Firmware Reference Manual in chapter 7, where one can find details of how to send programs to the drive. In principle, it appears that a SetAddress call (defining where the code will go), DownLoad (sending the code itself), Execute (to set the code in motion), and UniDiskStat (to find out what the result was) should be all that is needed. Since it’s just 65C02 code, too, I could handle that.

Of course, whatever time one gains by letting the drive compute stuff on its own, one trades in the time it takes to get data in and out. The only kind of thing that makes sense for something like this would be some kind of intense computation that doesn’t either need or return a lot of data. My first experiment with this will likely be something like a fractal drawing program.

The problem is, the UniDisk 3.5 is fairly rare. And for some reason, pretty much as soon as I decided I wanted one, the prices of these things on eBay skyrocketed. As I type this, there are three available on US eBay, one for $250, one for $305, and one with a starting bid of $88 (all calculated with shipping to me). I’m no longer able to see some of the completed auctions that I know I remember, but they have actually sold for prices like this too (the only completed one I could find just now was another $88 one). But at least while I was watching, $125-$150, or higher even, was not an unrealistic price to see these sell at. (Particularly if the sale involves the LIRON card you need to connect a pre-GS expandable II to a UniDisk 3.5.)

As I was browsing around with the Google search term A2M2053 (the model number of the UniDisk 3.5), daydreaming of parallel processing, I came across this, on an alternative commerce site called ecrater.

Reconstituted sale page

After doing a little bit of research, I’ve come to the conclusion that ecrater is a complete wild west of a marketplace, anyone can get a seller’s account, with very little in place by way of safeguards. Boy did this look too good to be true. Well, apart from the fact that this seller’s feedback score was negative 64%. It was four drives, two of them regular 3.5″ drives, one a 5.25″ drive, and one a UniDisk 3.5, all shipped to me for $47—which is less than any one of those units individually would be capable of fetching on eBay.

I sent a couple of cautious emails to the seller, and when I got what seemed to be sensible (if terse) responses, I decided to gamble. I crossed my fingers, hoped that PayPal’s own dispute resolution might be able to help me out in a pinch, resolved myself to the fact that I didn’t care all that much if I was just throwing away $47, and hit the button.

And then, the drives came!

And for some reason I didn’t take a picture of them that I can include here. But they all arrived, exactly as pictured in the ad, all of the drives look perfectly workable and intact. I cleaned up the UniDisk 3.5 so that it looks presentable, but I’m going to open it up and clean up the inside as well, at which point there will be pictures (and hopefully of fractals it helped to draw as well).

I’m not sure what the moral of this story is. Really, I just acted recklessly, I wouldn’t suggest anyone else do the same, certainly. But, weirdly enough, it all worked out perfectly well. And so now I have the UniDisk 3.5 that I was after, and I got it for essentially $12. It would be great if things like this happened often, but I think this was just a fluke. I have managed to score a couple of pretty outstanding deals even on eBay (at some point in the not so distant future, I’ll perhaps also tell the story of how I came to have two Titan /// plus //(e) board sets, for example), but really I’ve probably just been lucky. Perhaps it can restore a little bit of faith in humanity and the internet that this thing, which, honestly, seemed like it had “scam” plastered all over it, turned out well. Or, maybe, this is just the internet giving me the first one for free, so it can demolish me later once I start to trust it.