HP-85 Inspection and Power

The machine was plug and play – apart from the well documented issues with the tape drive. The capstan rubber turns to mush and can easily destroy a tape.

Destroying tapes was not an immediate issue for me, as i had none. It would soon become an issue, though, because tapes were the only means available to me at the time to load and save programs.

On power up, the machine displays a cursor for the basic interpreter. It is happy to immediately evaluate an expression and display the result.

The cursor can be moved around the screen to edit and reuse text. The screen rolls up and down, displaying 16 of 64 stored lines. This makes it pretty easy to use the small screen.

Basic programs are entered in the normal way. Data can be printed to the screen or to the thermal printer.

Inside, the machine is a joy to behold, with lots of ceramic packaged ICs and a neat arrangement of the CRT, thermal printer and tape drive. Outside, the case is quite yellow, but brightening cases is low on my to-do list.

HP-85 Tape Drive

Browsing the web quickly revealed that DC100 tapes were scarce and unreliable, and it was widely recommended that the tape drive be modified to accept QIC tapes, which are not as ancient and a lot easier to procure. I placed an order for tapes and set about attempting both the necessary mods and the capstan repair.

The tape drive mod is described in detail here. It requires a change in one resistor to account for the slightly different magnetic properties of the tape. This was easy.

The mod also required the wheel to grow a little to account for the slightly different dimensions of the cartridge. This was hard. The last thing i wanted to do was to put the existing capstan in the hands of a tradesman because i feared for the rotary encoder.

Instead, i crafted a piece of plastic to glue to the top of the capstan. After a few tries, i got it to bond. I use the drive sparingly (i now have better alternatives), but the extension is still there many years later.

I worked through several versions of rubber replacement and eventually i had success with 6/9mm surgical rubber tubing.

Reliability is not great but, it is good enough to demonstrate operation. QIC tapes are tight in the drive slot, which makes them a little tricky to insert. I found that if i kept the front screws of the enclosure a little loose, it was easier to insert. Not great but acceptable. The alternative is probably a file.

Of course, once you have a tape drive and some viable tapes, there is the small matter of getting software on to the tapes.

HP-85 HP-IB & Drive Emulator

Having a computer that can write and read tapes is great but, that left the problem of getting software on to the tapes.

The HP-85 doesn’t have a lot of I/O built-in but, it does have 4 expansion slots that can accommodate various adapters such as HP-IB (GP-IB), serial port, and a ROM tray for expansion ROMs.  

The most popular technique for file transfer is to connect a disk drive to the HP-IB adapter.  I also considered using the serial port but, I wasn’t sure that it would work.

So I needed HP-IB adapter.  And, of course, to get a HP-IB adapter to work with a disk drive requires some expansion ROMs.  Actually, if it had been an HP 85B instead of an HP 85, they would have been built in.  It wasn’t though.

That meant I needed an HP-IB adapter, a ROM tray, and the various ROMs.  None of this stuff is easy to come by. I did find a few vendors in the US with most of the items – unfortunately at high cost, high postage, and low interest in going to any trouble. This led me to the PRM-85. See my separate post on this.

I found a GPIB card in Australia on ebay, so I grabbed it. 

There are not many computers that use HP-IB for their disk interface (the Commodore PET is one) so only an HP drive unit will do, and they are even rarer than DC100 tapes. 

The HP computer community is awesome, though.  Recognising that HP drives were becoming very rare, a chap from the HP 9845 project set about creating an emulator called HPDrive.

It runs on a PC with a GP-IB adapter installed, and it is particularly good. I followed the instructions at:

http://www.hp9845.net/9845/projects/hpdrive/

GP-IB cards are generally expensive but, fittingly for such a project, I found a reasonably priced National Instruments ISA card that seemed suitable (suitability is described in detail at the project site). 

Then of course I needed a computer with an ISA slot.  I had an old Windows 2000 machine stored in pieces that had a slot (I had some other older options as well) so I set that up with the downloaded disk images. I’m never short of a project.

And it just worked. To get the disk catalogue type:

CAT “:D700”

My notes were a bit sketchy about how i set this up so i recently fired it up again to gets some details. Unfortunately, part way through that exercise the PC motherboard developed a fault and i have not been able to resolve it. That means i will go through the exercise again sometime in the next couple of months!

HP-85 PRM-85

The HP-85 comes with a Tape Drive, a Thermal Printer, a CRT display, 16k of RAM, and Basic in ROM. Out of the box, there is no external I/O, but it does have a 4 slot expansion bus that can accept modules, of which there are many.

The expansion bus not only allows additional I/O to be added but also additional RAM and ROM. Probably the most important I/O to be added is a HP-IB interface to support connection to many peripherals and instruments.

The addition of ROMs allowed command set enhancements and in many cases the use of additional I/O or peripherals needed enhanced commands. eg the use of disk drives requires the addition of a mass storage ROM and an enhanced mass storage ROM. A plotter requires the addition of a Plotter/Printer ROM.

ROMs were sold individually and were plugged into a ROM tray that plugged into the expansion bus.

The exercise of finding the individual ROMs and the ROM tray requires deep pockets and patience. Noting that providing code in ROMs is fairly easy to do, it was a matter of time before an alternative solution appeared.

The HP computer community is awesome and some years ago a couple of gents (Bill Kotaska with support from John Shadbolt) developed an expansion module, PRM-85, that emulates a ROM tray.

I had gathered an HP-IB and serial cards, and I had a serial plotter and an HP-IB printer. I also wanted to be able to use HPDrive to emulate disk drives via the HP-IB interface, including SS/80 protocol. To achieve this, i needed the following ROMs:

  • EDISK (85B version – supports Extended Mass Storage
  • Mass Storage (85B version) – supports Extended Mass Storage
  • Extended Mass Storage – Supports SS/80 protocols
  • Input/Output – Supports HP-IB and Serial interfaces
  • Plotter/Printer – Supports plotter peripherals

All the ROMs have been captured and can be loaded into the onboard ROM.  I contacted Bill in 2018. They had done a small run the previous year and had one left, which I purchased for much less than the combined cost of the original tray and ROMs. The details are here. ROM info is here.

The “85A without EMS” uses the first ROM socket on the PRM-85. It uses the 8 predefined addresses below:

Jumper J10 Decoded
Contact#   ROM Address  ROM Name
---------- ------------ --------------------
  17       232 (E8 Hex) Advanced Programming
  18        40 (28 Hex) Assembler
  19       224 (E0 Hex) Service-85
  20         8 (08 Hex) Program Development
  21       208 (D0 Hex) Mass Storage
  22       176 (B0 Hex) Matrix
  23       192 (C0 Hex) Input/Output
  24       207 (CF Hex) Extended Mass Storage

But for the 85 to use SS/80 disk storage requires the “85A with EMS” Super ROM. This Super ROM replaces the Program Development ROM (08H) with the 85B EDISK ROM (D1H) and the Mass Storage (D0H) with the 85B Mass Storage ROM (also D0H). The address D1H requires DIP Switch 1 as it is not one of the predefined addresses.

Jumper J6/9/10 J6=1-8, J9=9-16, J10=17-24
Contacts  ROM Name
--------  ---------------------
 9 to 17  232 (E8 Hex) Advanced Programming
10 to 18  40 (28 Hex) Assembler
11 to 19  224 (E0 Hex) Service-85
 4 to 12  209 (D1 Hex) EDISK (85B version) - set address with first DIP Switch
13 to 21  208 (D0 Hex) Mass Storage (85B version)
14 to 22  176 (B0 Hex) Matrix
15 to 23  192 (C0 Hex) Input/Output
16 to 24  207 (CF Hex) Extended Mass Storage

The second ROM slot on the PRM-85 is available. It can take up to a 27C512 for 8 x 8k slots.  I had a 27C256 so that was 4 slots.  Practically, though, the only addresses left were the predefined 08H and the second DIP switch.

Active Enable  ROM Image Start Address (Hex) 
Signal (pin)   2764 27128 27256 27512
------------- ----- ----- ----- -----
Enable 0 (9)   XXXX  XXXX  XXXX  0000
Enable 1 (10)  XXXX  XXXX  XXXX  2000
Enable 2 (11)  XXXX  XXXX  XXXX  4000
Enable 3 (12)  XXXX  XXXX  XXXX  6000
Enable 4 (13)  XXXX  XXXX  0000  8000  =>Prog Dev (08H)
Enable 5 (14)  XXXX  XXXX  2000  A000  =>Plotter/Printer 
Enable 6 (15)  XXXX  0000  4000  C000
Enable 7 (16)  0000  2000  6000  E000

I could add the Plotter ROM (F0H) using the DIP switch and pop the Program Development ROM (08H) in next to it.

Jumper J7/8 J7=1-8, J8=9-16
Contacts        ROM Name
--------        ---------------------
4  to 20(J10!!) 8 (08 Hex) Program Development
5  to 13(J8)    240 (F0H)  Plotter/Printer  - set address with second DIP switch

I think i could probably add a couple more ROMs to the second EPROM. They could not be used at the same time as the Plotter/Printer ROM. The link from J7-5 to J8-13 would need to be changed and the second DIP switch changed to the appropriate address.

ROM Name               Number Switch settings
---------------------- ------ ---------------
Advanced Programming 2  231   11100111
Matrix 2                177   10110001
Plotter/Printer         240   11110000

HP-85 7470A Plotter

An HP 7470A plotter appeared on gumtree. It’s a serial version rather than the HP-IB version, but i thought i might be able to make it work. The bloke who sold it to me, Bob, was an absolute gentleman – even offering to turn up pen holders on his lathe!

It’s quite a simple little plotter that uses only two pens.

The plotter itself needed a drop of oil on the rail, but otherwise worked fine.

The manual lists the HP-IB version as the one to use with the HP-85, so I had a bit of reading to do to work out if it could work over the serial line. In principle, it could be done by directing the plotter output to the serial line:

PLOTTER IS 10

Many people have reported that this causes the HP-85 to just hang.  There was some suggestion that this was due to the serial version of the plotter sending just a CR rather than a CR/LF at the end of its transmission. (10 is actually set on the serial card.)

https://forum.vcfed.org/index.php?threads/serial-plotting-on-the-hp85.41043

The last post which came very late is key.

The plotter can be programmed to send a CR/LF.  I did the required reading and found that this worked:

PRINTER IS 10
PRINT CHR$(27);”.M;;;13;10:”
PLOTTER is 10

No hang!  I tried some test code and found that I could send HPGL and use the HP 85 plotter commands.  I didn’t have any success with the Graphics Presentation software on disk.  I suspect that it resets the interface.  There may be a workaround for that, but I’m not overly concerned.  I don’t mind writing a bit of BASIC to make the plotter do its thing.

I used 2400 baud, 8 bits, 1 stop bit, no parity as per the serial card.  This is done through DIP switches next to the serial connector.  The serial card and the plotter both had female connectors but the transmit/receive was reversed so I just used a M-M gender changer between them.

The plotter commands are the same as for the screen.  Using PLOTTER IS 10 points them to the plotter instead.

The HPGL codes are in the plotter interfacing manual. 

Comms are more reliable with flow control.  I’ve used xon/xoff a lot in the past – this sets up the machine and the plotter to use xon/xoff.

Xon/xoff at plotter – 7470A Interfacing and programming manual

PRINTER IS 10
PRINT CHR$(27);”.M;;;13;10:”
PRINT CHR$(27);”.I;;17:”
PRINT CHR$(27);”.N;19:”
PLOTTER is 10

Xon/Xoff at computer – 82939A Serial Port Manual

I changed the DIP switch settings on the serial card to suit the datacomms pac, so the settings for the plotter need to be programmed.

CONTROL 10,3 ; 11 ! 2400 baud
CONTROL 10,4;7 ! No parity, 2 stop bits, 8 data bits

The I/O ROM provides a command, TRANSLATE, which converts a program to play nicely with it.  Load the program (eg CALEND in the standard pac, and type TRANSLATE.  It can then be STORED as an external plotter variant. 

For the serial plotter, load and run the instructions above and then load and run the external plot variant.

HP-85 Disk Drive

The HP-85 tape drive was never going to be a daily drive proposition and the HPDrive emulator, good as it is, is a bit unwieldy for a convincing demonstration. I really needed (wanted?) a disk drive.

I kept an eye out for a disk unit.  They are usually very expensive and i’ve only seen them listed for sale in the states, from where the cost of postage is horrendous.  I did find a cheap 3.5” unit, but the thought of paying nearly $200 for postage prompted me to scream for help on one of the facebook groups.

To my surprise a gentleman Ben G happened to have a M82901 Dual Drive uniit out in a container at his property in NSW.  He was kind enough to send some pics, explain the unit’s shortcomings, offer it at nominal cost, and arrange for its dispatch. That was a generous thing to do.

When it arrived it was clear from some dents and gouges that it had landed very heavily at some stage.  Ben said that he’d recovered it from a gold recycler. 

There were rattles in the box and once opened some damage was apparent.  Both of the drives had parts of the plastic broken.  The interface card was only secured by a couple screws used to secure the circuit card on the right drive.  Not a great effort from HP really but I guess they weren’t planning on the unit being thrown on the scrap heap.

I attempted to glue things up but it will always be fragile. I pulled it all apart, cleaned it up, checked the supplies and put it all back together.

The drives are PC style double height double sided units. The heads were not moving easily so they needed some lubrication and bit more rough treatment to get them moving again. Once they were free, i connected them to a PC for alignment using ImageDisk.

One was pretty good on the PC but the other had some issues formatting; successful but with lots of retries so I subbed in a known good spare drive.

There’s a set of dip switches that set the HP-IB address.  The drives are referenced by “:D720” where the second digit is the HP-IB address and the third is the disk drive number. 

Format with:

INITIALIZE “<label>”,”:D720”

The drive unit failed to communicate.

Fortunately, the manual was available online and the unit has built in self tests.  It took a while to work out how the tests worked and they seemed to produce very erratic results.  It seemed to consistently show that the RAM test was failing so I ordered some new RAM.  128 byte static RAMs.

I also read back the ROMS using an EPROM programmer and that suggested that one ROM didn’t seem to be working. I scrambled to see if the binaries were online.  Fortunately there were.

The natural replacement would be 2716 EPROMS but I only had 2732 EPROMs.  They have a compatible footprint but with the upper half being the active portion.  My EPROM and cheap EPROM programmer did not play nicely together but eventually i convinced myself that i had two working EPROMs.

After spending a long time searching for a problem which turned out to be incorrect configuration, i was able to get all of the tests to pass with a known good drive.  That meant the controller was good.  Even better the unit worked with the HP-85!!

Neither of the two original drives wanted to play the game. I had a good look at the writes on the first drive.  Everything looked good except the signal on the top head was different to the bottom – about half the size.  That made me have a closer look at the head which I discovered had been damaged – it looked like a piece of ferrite was missing.

The other drive’s heads seemed ok, and I’d checked the first drive’s electronics pretty thoroughly, so I thought I might get a second drive working by swapping the electronics card.  That worked.

Sure enough the HP 85 could happily operate two drives.

The other original drive now has an electronics fault as well as a drive head fault! 

I needed some disks to try it all out.  The teledisk images I had seemed to often be for 3.5” drives and wouldn’t write to 5.25” disks.  Instead i used the HPdrive emulator and copied them across:

COPY “:D700” to “:D720”

It’s not fast.

I found many of the disks would not run unless labelled correctly.  The failing line of basic revealed the required label.

VOLUME “:D720” IS “STDPAC”

I could copy from the tape drive to disk:

COPY “:D700” to “:T”

HP-85 External Printer

I spotted an HP 82905 printer on ebay.  It was made by Epson. I’d never seen an HP-IB printer come up before, so I grabbed it.  I figured that it would be cheaper to run than the thermal printer.  I was hoping that it might be good for Centronics as well, but not so.

It needs the Plotter/Printer ROM, which I was surprised to find was not on my PRM-85 super ROM. See the post on the PRM-85.

The printer can be set to be the default printer:

PRINTER IS 701,80

where 7=GPIB and 01=GPIB address – set with DIP switches under secret panel on top of the printer.

I punched in the screen plotting program in Application Note: Copying CRT Graphics from the HP-83/85 to the 82905B.

Tandy TRS-80 Model I

Generously given to me by Michael from the ARC Group.

The Model I was originally released in 1977, but this one was made in about 1980. It has 16k of memory and has been highly modified.

It also came with an expansion unit with RS232 interface and 32k of additional memory.  There was no disk drive, but that was only a minor obstacle.

It also came with an original monitor (probably not the ideal one to use with the expansion box), buffered cable to connect the computer to the expansion unit, a box which turned out to be a high resolution graphics mod, a joystick, and dust covers.

Model I Inspection and Power On

Inspection didn’t show any particular problems.  The power supplies are quite simple and don’t seem to have any of the usual EMI filtering.

Everything fired up without smoke.  The rails looked clean, and I adjusted the supplies on both the computer and the expansion unit.

There are a lot of modifications including:

  1. High resolution graphics
  2. Lower case mod
  3. High speed mod
  4. Joystick
  5. Termination of control signals on the expansion unit
  6. Cassette modification
  7. Reset switch

This machine was obviously owned by an enthusiast.

I only briefly got clear text on the monitor, and then it would not sync.  This was traced to Z5 in the sync generator, which is a common failure point.  This is a CMOS part and I replaced it with an 74HC02.

Some keys were generating strange character sequences.  This was caused by a broken wire ground on the keyboard cable which was somewhat fragile. 

The machine uses an ALPS keyboard and the key switches seem to be working well.

I replaced the keyboard cable using the instructions here:

I found the keyboard ic positions too close to the connector so I had to bend the pins up at 45°.  I also added some earth lines to try to provide some shielding. The keyboard is mounted using some rubber mounts which had deteriorated.  I replaced them with rubber tubing.

The amount of RAM reported by the ROM basic (PRINT MEM) was variable.  I had four spare 16k RAM chips, so I kept on swapping the mainboard RAM chips until I got the full 15572.  Then I repeated the exercise on the expansion interface.  I found 5 dubious RAM chips which were replaced.

Expansion Interface 48k topFFFF-1
Expansion Interface 48k bottomC000-16384
Expansion Interface 32k topBFFF-16385
Expansion Interface 32k bottom8000-32768
16k top7FFF32767
16k bottom400016384
 3FFF16383
 00000

The screen showed artefacts on the two bottom lines and occasionally on the two lines above.  These changed as new text was displayed over them but the text was incorrect.  Looking at the text it was apparent that the LSB was always set.

This becomes very annoying because the bottom lines are copied up as the text scrolls.  Eventually the whole screen is filled with corrupt text.  For now, I can keep clearing the screen, but it needs to be fixed.  This was due to a faulty video RAM chip 2102 at Z48.  It was replaced.

With this last fix the machine appeared to be working.

Model I High Speed Mod

The machine included a modification that allowed either the original clock (1.7MHz) or a slightly faster clock (2.6MHz) to be routed to the processor.  The high speed was enabled at power-up, although that seemed to be a matter of luck as there was no reset on the register.  I’ve added a system reset so that it defaults to the normal speed.  I suspect that this might be more reliable.

The mod includes a register in I/O space to enable / disable the high speed clock.

OUT 254, 1 --> Changes to the high speed clock

OUT 254, 0 --> Changes to the normal clock

The mod includes a LED to indicate whether “turbo” mode is activated.  I’ve added a series connector so that the lid can be separated.