HP 21MX/F and OS choices (was Lookee what I just got!)
bshannon at tiac.net
Mon Jan 8 16:46:56 CST 2007
Thanks for the HP-IPL/OS plugs Jay,
Here is the fastest known method to bootstrap something useful on any HP1000
series CPU, be that a 2114 with 4K of core up to a 2117F with maximum
First off you need to identify your loader ROM's, there are up to 4 of them
on a 21MX
processor. Core memory machines of course do not use loader roms, you
loader code directly into memory.
Hopefully you will have either the 264x terminal loader, or (better, but
less common) the
paper tape loader. Some documentation claims that the paper tape loader was
on all E-series machines.
Not true, that was written by Engineering before Marketroids started talking
If you don't have the loader rom's you want, no big problem they are
available from list
Ok, next look at what I/O boards you have.
The paper tape reader can be used with:
GND TRUE I/O
+ TRUE I/O
+8 bit duplex register
+16 bit duplex register
And several other less common interface boards as well.
The 264x 'terminal' boot rom can be used with the super-common BACI board,
cannot be used with any 12521-series serial interface boards.
Now you should have some combination of loader rom and interface board that
to each other. Maybe you have no peripherals for your box, frankly that's
not a problem.
How the machine boots, the EASY way...
The simplest bootable software is stored in HP's "ABS" format. This is a
series of 8-bit
bytes that holds an absolute binary program with memory address, block
If your booting through the paper tape loader the HP will request a byte
with a hardware
strobe and wait for an 'ack' signal, read and process the byte, and either
byte or halt with an error or success code in the S-register. Bytes will be
read until the
end of the ABS file is reached, or there is an address or checksum error.
So the paper tape loader wants a string of 8-bit bytes, using a simple
protocol. The hardware signal DEVICE_COMMAND asserted requests a byte,
the DEVICE_FLAG signal on the I/O board acknowledges the request, clearing
command signal until another byte is requested.
A simple hack could tie a TTL-level parallel I/O board to a PC's printer
port, or a simple
microcontroller can emulate a paper tape reader using an EPROM, flash,
Booting ABS files from an 8-bit parallel data source is exceedingly fast.
It is in fact the
single fastest way to load large ABS images, and you can stuff an O/S into
than HP's own disk drives (given a fast source of bytes to read).
If you happen to have the 264x loader and BACI interface combo you have a
simpler hardware job, but the loading process is a little more complex.
Your still going
to need to send a series of 8-bit bytes, but this time over a RS-232
The 264x loader rom sets up the BACI board, then transmits an escape, then a
'e'. This escape sequence tells an HP terminal to begin an 8-bit read of an
stored on those little micro-cassette tapes.
But the BACI board is a bit of a beast, there are lots of wires that need to
correctly in the I/O hood, and the board even has the ability to stall the
CPU based on an
external signal line.
Exactly how this is all configured in an actual HP installation is slightly
unclear to me at this
time, however it is possible to send RS-232 data into the board slowly
without any hardware
handshaking. Normally 264x terminals use the handshaking lines, and the
loader rom does
set some control bits that suggest the booting process expects this to take
But if the BACI board has been 'strapped' for a basic 3-line RS-232
interface without any
handshaking you can listen for the escape-e and then start sending data in
the serial format
that's set by the I/O board jumpers (in the I/O hood, not on the board!).
Pace the serial
data so you don't overrun the CPU, and you will eventually halt at the end
of the ABS file.
This serial method is slow, and at some point someone needs to really poke
the code and the BACI interface manuals and figure out exactly what
and handshaking was used by HP when the loaded field diags and other
this cute little tape drives (that almost never work anymore, until you fix
the rollers and
find that good media is unobtainium).
With that work done, it may be practical to boot your HP over a serial port
at a reasonable
speed, but loading a large ABS file this way can take a very long time (as
I generally don't recommend the serial boot method due to its poor
Then again, I think its nothing to throw together a PIC and some I2C eeprom
little paper tape reader and punch emulators, and I can burn copies of any
All that aside, one of my HP's boots from a custom loader rom and an 8-gig
using a custom controller (so I clearly prefer the hardware solution, build
peripheral devices). All the others have the ability to boot from an
emulated tape reader.
One can also boot from CS/80 disks, another has a 7960E.
Ok, that's ~how~ to get these things up and running, now the hard part.
What to run?
If you have less than 8K words of memory:
I recommend OCTAPUS-C.
Stripped down IPL kernels exist for 4K machines, but its not very practical
with less than 8K.
IF you have 8K words only:
I recommend HPBASIC. This is the 1968 stand-alone interpreter. Has very
requirements, and its possible to rebuild HP BASIC for non-standard I/O
It supports a 'TTY' console, as well as a high speed paper tape reader,
punch, and a
printer. Requires a 12521-series console interface (HS TERM), does not
BACI (well, yes, it will, when patched and run from virtual memory under IPL
If you have a 21MX machine.
I recommend IPL (HP-IPL/OS). It was designed to bootstrap HP's lacking
peripherals, and its quite powerful. Its a (threaded) interpreter, a
compiler, and has
an assembler as well.
Ideal for blinking lights and reverse engineering device drivers and
I/O boards, etc.
It supports all HP1000 CPU's up to, but not including the A-series. Modular
extensible, its even got file systems for disk and mag tape, even F-series
point extensions, 12555 point-plot graphics via DCPC transfers, etc, etc.
Or, you can run RTE, etc.
Personally, I've never had the chance to run RTE, TSB, or any of the
time share systems. The only reason I don't recommend these is due to my
lack of knowledge and experience.
I 'cut my teeth' on HP's by pulling them out of scrap heaps and
with switches and lights. I've usually found HP1000's in automated test
virtually never is 'data center' applications, so I tend to see these
machines as being
computers for Engineers.
But clearly a lot of people had very different exposures to these machines,
them through very different eyes. My high school had a PDP-8E that ran a
stand-alone BASIC booted from paper tape, not some dual CPU HP rig!
More information about the cctalk