At 08:03 PM 7/2/00 +0930, Geoff Roberts wrote:
I am the proud owner of a HP85 after a friend persuaded
a country rubbish
dump operator that it really belonged in a museum or something similar.
Seems to work ok, found a listing for a fractal program on the web and it
worked after I corrected a typo in the listing. (And added a line to clear
the graphics screen at the start of each run.
I haven't been able to test the printer properly, but it appears ok, and I
can't test the tape drive because I don't have any media.
Good save; it is a well built machine, and a nice departure from the
hundreds of MS BASIC machines of the day.
I have one too, and it came with some tapes. The rub is this.
Typically, the tape rollers have been sitting in one position for
10 years or more, causing a flat spot on the roller. Worse than that,
I followed the directions of the manual which said to rub the roller with
isopropyl alcohol every so often to clean them up. Well, I tried that
and the roller disintegrated after I attempted to use it, ruining one of
the tapes by leaving sticky orange residue on the tape, plus chunks of
the rubber came off the roller and got stuck in various other parts of
the mechanism.
I don't know if there is a way to replace the rollers; right now my hope
is to hook it up to an external floppy or hard disk (my HP85 has the
I/O ROM module, so it should be possible). I'll just forsake the tape
drive, I guess.
Now for a bit of background, the HP85 uses a custom HP processor
that is quite interesting. It operates at only 600 KHz or so, and even
the quickest operations take two cycles; most take 4 or more. Where
it gets interesting is that a number of operations (add, sub, shift, etc),
can operate on 1 to 8 byte words, with each addition byte adding one
clock to the operation. So adding a byte takes 4 cycles, adding 8 bytes
takes 11 cycles. The obvious instructions operate either on binary data
or BCD. All instructions are a single byte, except for a few that have
an immediate operand. There are many addressing modes.
Perhaps most strange is that although there are 64 byte-wide registers,
the operands to instructions are specified by two register pointers. Thus
each instruction doesn't carry register pointers at all. There is the DRP
(destination register pointer) and the ARP (address (or source) register
pointer). To add R18 to R23, the instruction sequence would be (in
pseudo code):
DRP <-- 23
ARP <-- 18
ADDB (add byte)
Of course, DRP and ARP don't need to be loaded if they already point
to the register you want. Because there is a lot of register twiddling,
the assembler lets you pretend the instruction allow specifying the
register directly, and the assembler reloads ARP and DRP as necessary,
so in fact, you could code the above operation more like "ADDB R23, R18".
The uP itself fits in a 28 pin DIP, with a single 8b data/address bus. All
the peripherals that connect to this bus know the protocol so that many
times the address doesn't need to be transmitted at all. For example,
everyone on the bus basically keeps a copy of the PC, so as long as
instructions are fetched sequentially, no address is sent an the ROMS
and RAMS just keep incrementing their copy of the PC. Things like
jump instructions cause the uP to send the address out (in two cycles,
of course, it is a 16b address).
I believe that the HP 75 uses this same processor, as of course the
HP 86 and HP 87 do too.
This and a lot more is documented in the assembler ROM. It has a wealth
of information. Enough, in fact, that I've been toying with writing an
emulator
for it, but of all the defunct old computers, HP is one of the few that is
still
in business and would probably seriously care if someone ripped their ROMs
for an emulator. If somebody thinks HP might not care, then I might consider
writing the emulator.
-----
Jim Battle == frustum(a)pacbell.net