Hello! If you follow the channel, you probably endured the short format YouTube video filmed
the wrong way, so you know that I recently visited my friend Jack Rubin in Michigan,
and that we booted his HP 1000 to test the paper tape drive. It’s a step a highly recommend
you do when you receive your new HP computer. Now that I have returned, here is the fuller
story of the visit, filmed in the right orientation.
[Marc] Hi, this is Jack. [Jack] Hello! [Marc] This is jack's den.
What do you call the space Jack? [Jack] This is the Computerarium. [Marc] Yes, it’s the
Computerarium. A place for old and strange species of endangered computers to swim freely,
without fear of being eaten by new faster computers. Like me, Jack has a particular
liking for vintage HP instruments and computers, and has been collecting [for] a lot longer
than me. I could recognize quite a few HP instruments swimming around.
[Jack] It's an HP 200BR audio oscillator. [Marc] It’s HP’s first product, here with
young Bill Hewlett and Dave Packard in their famous Palo Alto garage.
[Jack] HP 5512A electronic counter. HP 9865A cassette. Teletype Model 15. PDP 8e. HP 9825.
[Marc] And he has almost as many as I have!
Except this one has the printer on top, I don't have that!
HP 9830.
[Marc] What? Do you have an HP 9100?
[Jack] The memory, and the plotter! [Marc] The whole shebang. And it works? [Jack] The
9100 works, yes. [Marc] Oh, then we will try it!
This is the first time I saw a 9100 working, HP’s first programmable scientific calculator.
Pretty! Two, square root, enter to move it to the Y register, multiply the two to get
the square, and we are back to 2 exactly. All the scientific functions you ever dreamed
of, and you can even program it.
And what's that big beast? [Jack] This is a HP 2109 or an HP 1000E, ready to work! [Marc]
And... [Jack] ...7900 disk drive, 2748B paper tape, 2116C, which is really the star. [Marc]
Yeah, that's the predecessor to that one, right? This came, and then that's the grand
son of that one. [Jack] Yeah. Well, twice removed. [Marc, chuckling] Twice removed...
[Jack] And then the 7970E tape drive.
[Marc] So the HP 2116 was HP’s first computer, introduced in 1966. That’s the machine that
started HP on its current computer path. It was a specialized computer for real time test
and measurement automation, fitting perfectly into HP’s core business. Then it got shrinkified
into the HP 2100 in 1971, still using core memory. Then it got upgraded to semiconductor
memory, one of the very first machines to do so, and became the 21MX, in 1974. But after
a period of major naming confusion, the 21MX eventually got rebranded the HP 1000M. It
progressively got more powerful successors, the 1000E from 1976 and the 1000F from 1978,
which look almost exactly the same. The different sizes mainly relate to how many more empty
slots you have, to add memory and interface cards expansions. Jack’s computer is the
middle of the range 1000E.
And we forgot, we also have the little green terminal on the side. What are we going to
do with it? [Jack] And if we are lucky, we're going to use the processor, to run the tape
drive, to load the diagnostic program, to test the paper tape reader.
[Marc] So today is going to be a light episode, we are just going to boot the machine, get
it to load the master test program from the magnetic tape drive, and use that to run the
paper tape diagnostic test. You’d think it would be a piece of cake, but it isn’t.
Starting these machines is notoriously difficult.
On the early machines like the 2116, you had to paddle in the first 64 words of boot code
with the front switches, in glorious 16 bit binary.
Thankfully they were using core memory, so your hard worked stayed there even when power
was off. The later 1000E has regular silicon memory, but thankfully it has the startup
code in small resident ROMs. Or we should say startup codes, as there are four different
ROMs with four different boot codes that you can start from.
Each is used to boot from a different type of peripheral, such as a disk, a magnetic
tape, or paper tape. But you still have to construct and paddle in a 16 bit word that
will tell the computer which of the 4 ROMs to start from, and which is the slot number
for the card that your corresponding peripheral is connected to. That’s what Jack is currently
trying to do, so far not so successfully, using the magnetic tape as our boot device.
[Jack] 100, store. [Marc] You're on P. Yeah, that's correct. [Jack] S 16 store.
Run. No?
[Marc] Doesn't like it.
[Jack] Store.
OK I think we got it. We finally paddled in the correct start word. To make it more fun,
this uses octal grouping, not hexadecimal, so you can see the 16 register bits divided
in groups of 3, which gives you 5 digits and the first bit of a 6th one. Starting from
the left of the register, we have 0 4. That means that we are using ROM number 4 to start,
the one used when booting from a mag tape device. Then the two next digits are 1 3 in
octal binary. That means that our tape controller card is in slot 13. We store that in register
S, as indicated by the row of 6 LEDs below the main row. We reset the machine, Initial
Boot Load, and press run. That should launch the ROM 4 boot code, which will start the
tape, and read the rest of the boot program from tape into memory.
[Jack] Okay, now we should see a tape load, okay? [Marc] Okay. [Jack] Store, Preset, IBL,
Run. Queued up. [Marc] Bingo.
But when it’s done, it does not continue to boot. No, no, no. No newfangled user friendliness
varnish that gets in the way and hides the important inner workings that WE deserve to
know. Instead, it stops, or more exactly, the processor halts. Then it displays a halt
code that indicates if the initial load was successful or not. The code here is 102077,
which obviously means success, as is customary for HP 1000 halts. Yes, I know, don’t ask
me why.
[Jack] We got P. 100, Store.
[Marc] So Jack just entered 100 in register P. This is to tell the computer where to continue
to boot from. We store that memory address, 100, which points to the code we just loaded
from tape, in register P, the program counter.
[Jack] So, S, 1 6, Store.
We also have to tell the boot program where our terminal is connected, so it can display
the results on our screen. In our case, the terminal interface card is in slot 16. Jack
entered that into register S.
[Jack] Run. Maybe something happened over there.
[Marc] Yep! That did work!
And for a moment I was expected the tape to run again, but of course it did not, because
we were simply running the boot program that we already loaded on memory. However, our
terminal at address 16 woke up. Woohoo! Amazing. We have a user interface.
21MX line printer. It wants to know what your line printer is.
[Jack] N O N E
Didn't like that. N O N E.
There's got a space in there, yeah. Input device is 7970, select code is 13.
7970 stands for HP 7970, the model of our tape drive. It is still connected to the same
interface on slot 13. But of course we are now running a different program, so it does
not know what we told the ROM boot loader a second ago, we have to tell it all over
again.
And that's our tape drive.
[Jack] Okay.
DSN is 1 4 6 2 0 0.
[Marc] Finally! That’s the number of our paper tape test program. There are many, many
test programs on this reel, one for every existing piece of hardware that connects to
the HP 1000, plus internal tests for the CPU. Here we use the mag tape to load the test
for the paper tape, but the inverse is also possible.
[Jack] Now it's gonna spin like crazy.
Interesting it did back up all the way to the beginning of tape.
[Marc] Probably because, so it can count?
[Jack] It should know where it is!
[Marc] Now the computer is automatically searching for the appropriate test to load from the
tape, and it’s quite a ways off.
[Jack] We got a halt on 77 so we got a good load.
Here is a halt again, and since you are in the know already, you recognized the 102077
code, which means all is good.
[Jack] I'm going to set this register to 17, paper tape reader. We are going to store that.
[Marc] This is similar to what we did with the boot ROM, we have to tell the test program
on which slot our paper tape hardware controller resides, also known as its select code. In
our case, the tape controller is in slot 17. Note that you don’t want to do the newbee
mistake and load it in the two last digits, but like a seasoned professional, you put
it correctly in digit 3 and 4 right in the middle. Congratulations!
[Jack] Now we've got to set P, program counter to 100, store that.
[Marc] Once again we set the program counter to 100, the memory address at which the program
starts. Very good, you are starting to get the hang of it.
[Jack] Preset, Run. Halt 74. Success!
[Marc] OK, we ran it, and it halted with a 102074 this time. Which is success for this
program actually. Just a little change to keep us on our toes.
[Jack] The S register to 9, which means that I'm going to manually select the test.
Store that.
Preset. Run. So now, it's going to ask me to choose a test.
The A register for the test that I want to run, which is test 4. Store that. Set S back
to zero, store.
Preset. Run.
Okay, we got a halt 54, which is correct.
[Marc] Set bit zero to one!
[Jack] Now I'm gonna set S-register bit zero to 1.
[Marc] You can take a step to the left, so I can see...
[Jack] And we're gonna run that sucker... I'm gonna set S zero to 1.
[Marc] It's running!
[Jack] And set it to zero, it's gonna stop.
And if I set it to 1, run, it might be running next? Set it to 1, store it. It's off.
[Marc] That's it for today!
[Jack] That's it folks. That's all folks!
Alright! That felt like an achievement. It’s very much like we still do today, when we
finally get a command right on Linux. Very rewarding. Thanks Jack!