HP 264x Terminals
HP 264x Terminals Series Playlist:
HP 264x Terminals
The HP 264x are one of the nicest (and most expensive) widescreen terminals from the 1970's. They were built around the first commercially successful Intel 8-bit processors, the Intel 8008 and 8080. The terminals are completely modular (you can add and remove cards at will) and can be configured a million ways with many options, so there are almost no two the same, even if they share the same model number. Therefore the first step in inspecting a 264x terminal is opening the clamshell up with a special tool that fits in a side slot, and taking inventory of what cards are installed in the machine.
The most common of the series is the HP 2645A, with the 2648A (Graphics) and 2647F (Graphics + Basic + Disk Drive) also fairly common, but the whole series is:
HP 2640A - the original, based on a 8008 (!) processor (1974)
HP 2641A - an APL terminal with overstrike character capability (1976)
HP 2642A - a late version of the 2645 with external 5-1/4" floppy disc drives instead of tapes (1980)
HP 2644A - the 2640 with the addition of two tape drives (1975)
HP 2645A - the most popular text terminal, based on the Intel 8080, with or without tapes (1976)
HP 2645R - Arabic version of the 2645A, writes right to left (1977)
HP 2648A - adds high resolution graphics capability to the 2645 (1977)
HP 2647A and F - they are the late geniuses of the series, dubbed "intelligent terminal", they were really personal computers. The 2647 is based on a 2648 with more memory and more ROM. It came standard with BASIC (courtesy of Microsoft, written by Bill Gates himself), and a graphics data plotting program. The A model had two tape drives, and the F had to two external 5-1/4" floppy disc drives instead of the tapes (A: 1978, F: 1982).
HP 2649B - the 2645 OEM version, intended for custom applications. They are usually found as HP 3000 management consoles. The 2649C is the OEM version of the 2648A and the 2649G is the OEM of the 2647A. Its documentation is super helpful, since it includes the details of the internal implementation and memory map, structures and procedure calls to the underlying OS (see Internal Firmware section further below). A complete documented listing of the ROMs was provided, which would allow to program games for example. You can convert a HP 3000 console 2649B back to a regular terminal by just swapping one ROM.
HP 13290B - the development station for making custom firmware for the above 2649 series, with a 8080 assembler in ROM and a control store memory for testing the programs. The 2649B applications could also be developed using a cross assembler package running on an HP 1000 / RTE II mini computer.
Below is a chart with the models and corresponding list pricing. The HP 264x terminals were high end, very expensive terminals.
Model | 1980 1981 1982 1983 1984 1985 Notes
------|--------------------------------------------- --------------------
2640B | $2600 $2600 x x x x x
2640C | $4250 $4250 x x x x x Cyrillic
2641A | $4100 $4100 x x x x x APL
2642A | - ?? $6750 x x x
2645A | $3500 $3500 $3500 $3995 $4550 $4600 x
2645K | $4000 $4000 x x x x x Katakana
2645N | $3750 $3750 x x x x x Danish/Norwegian
2645R | $4350 $4350 x x x x x Arabic
2645S | $3750 $3750 x x x x x Swedish/Finnish
2647A | $8300 $8300 x x x x x b&w graphics, BASIC
2647F | - $8950 $9400 $9950 $9950 x b&w graphics, BASIC
2648A | $5500 $5500 $5950 $6530 x x x b&w graphics
2649A | $2150 $2150 $2150 x x x x
2649I | - $7750 x x x x 2649A - graphics
13290B | $6950 $6950 $6950 x x x x 2648A + more
Main Documentation
This is the user manual for the HP 2645:
The following document is an essential guide on the installation and configuration options of the 2645 terminals. In particular, it shows all the available card arrangements, the strapping configurations of the keyboard and communication cards, and the wiring diagrams for the interconnect cables:
This service document is a compendium of all the cards, options and strappings and some installation and service procedures. At 565 pages, it is both daunting and terse if you do not know the subject matter already, but there is a lot of condensed info and it covers all versions:
2649 Developer's Documentation has the ultimate engineering information. It includes a comprehensive description of the inner workings of the HP 264X series, and full listing of the impressively complete ROM firmware.
Fun with HP 264x Fonts
The HP 264x uses a clever scheme of resolution doubling using a half-shift of the scan lines. This results in a much finer character display than most terminals of the time. The HP 264x also came with several character sets, in the form of optional character ROMs. See my video explaining this, and how we burned an 8-bit Math character ROM and added the new font to the terminal:
In Part 2 we added one of the 9-bits vector character sets, and hacked a way to do it with a regular 8-bit ROM:
For "May the 4th", I went a step further and created a brand new Star Wars Aurebesh character set. See further below about the font editor I created to make it.
HP 2645 Character ROMs
Each character cell is 9x15 pixels. However interstitial pixels can be accessed using a half-pixel shift trick, increasing the apparent horizontal resolution. I wrote a Windows app that allows to view and edit character ROM sets.
Character set design and character ROM generation are described in this document:
2640 Series Character Generation,pdf
There are three different kinds of character ROMs:
Alphanumeric sets. The characters are defined by 7 bits + 1 half shift bit, fitting in a regular 8-bit x 1k (8 kbit) PROM. These are used for most regular fonts. Since they have only 7 active bits per line, the first and last row of the character matrix are always blank, and alphanumeric characters cannot fill the whole matrix. They never "touch".
9-bit Microvector sets. Microvector characters are 9 pixel wide and can span the entire cell, at the expense of not being able to access the half-pixel shifts. This allows successive characters to touch each other and form larger continuous shapes. This is used by the geometric line font and also the large character font, which works by stitching 9 smaller character pieces together. These font sets originally came in 9-bit x 1k (9kbit) mask ROMs made specially for HP. They are used with the HP 13255-91024 rev B DISP ENH board. Of course there is no such thing as a 9-bit wide PROM, but you can use a hack to make it work with a regular 8-bit PROM, as explained in our video.
8-bit Microvector sets. HP later realized that their commercial microvector ROM sets (there were only two) had two identical first bits in every row. This allowed them to later ditch the expensive 9-bit mask ROMs and instead use standard 8-bit ROMs. The 8-bit microvector ROMs can only be used on the later HP 13255-91024 rev C DISP ENH board, which includes extra hardware to duplicate the missing first bit on the fly.
The character set ROMs plug in either in the default Display board (base set) or on the optional DISP ENH board (alternate sets). There are jumpers to configure in order to tell the board which type of ROMs (Alphanum, Microvector) and set size (single ROM 64 characters or double ROM 128 characters) is plugged in each position. If you were to replace the base set, the terminal powers up with a different character set by default. This is what I did in the Star Wars font video.
After you install the additional font ROMs in a DISP ENH board, you are not quite done. It takes a convoluted escape and control sequence to use the new fonts on-screen:
ESC Shift-) Shift-@,A,B or C to select the base set, 2nd, 3rd or 4th character set respectively as the current alternate set
While entering text, use Ctl-Shift-N to switch to the current alternate set, and Ctl-Shift-O to switch back to the base set
In order to see which characters are installed on a given terminal and in which position, press the Terminal Test key. The screen fills up with all the characters sets installed, starting with character set C at the top, then B, then A, then base character, like so:
In the above test screen example, the large character set is on the top as C, the line set below as B, the math set as A and the regular roman character set is the base set.
Character ROM sets
ROM dumps and character maps of all the character ROMs I could lay my hands on are provided below. If any of you has one of the other rarer sets (Katakana, Arabic, Cyrillic, Finnish...), please contact me. I'd love to have the opportunity to archive their contents.
Roman Character Set
Roman Uppercase, ROM 1816-0612
Roman Lowercase, ROM 1816-0613
The Roman uppercase was the default set in the original HP 2640A. The lowercase was an extra cost add-on option in the original 2640, but later was included in the standard HP 2645A. Most terminals are equipped with this set. It was distributed on two ROMs, 1816-0612 (uppercase) and 1816-0612 (lowercase):
1816-0612 ROM Roman Uppercase.bin
1816-0613 ROM Roman Lowercase.bin
This set is usually found plugged in the DSPLY CNTL board in the terminal.
Math Character Set
Math Character Set, ROM 1816-0642
The Math set allows displaying mathematical equations. It has an integral sign split in two characters.
The 8-bit ROM number for the set is 1816-0642. We dumped the ROM here:
This ROM should be plugged in the optional DISP ENH board
Keyboard mapping is shown below:
Line Microvector Set
Line Character Set, ROM 1816-0641
The Line Set is for drawing tables and forms. It is a micro-vector set and uses 9 bits. It was originally distributed in the 9-bit wide ROM 1816-0641:
1816-0641 ROM 9-bit Line Set (first 8 bits).bin
1816-0641 ROM 9-bit Line Set (9th bit).bin
1816-0641 ROM 9-bit Line Set (all bits combined).bin
The rev C of the DISP ENH board uses the more common 8-bit ROM format for the microvectors, by taking advantage that the two first bits are always the same in this character set. The 8-bit ROM version is 1816-1417:
Large Character Microvector Set
Large Character Set, ROM 1816-0641
The Large Character Set is for drawing large titles. Each character is made of a 3x3 matrix of smaller character. It is a micro-vector set and uses 9 bits. It was originally distributed in the 9-bit wide ROM, which I do not have in any of my machines. It could be recreated from the 8-bit set below by doubling the first bit (i.e., the two first bits are the always the same in the 9-bit ROM versions).
The second revision of the Enhanced Display Board compressed it to the more common 8-bit ROM format, by taking advantage that the two first bits are always the same in this character set. The 8-bit ROM version is 1816-1425:
Single ROM Combined Character Set (HP 2647F, later HP 2645A)
The HP 2647F and late HP 2645 models have an updated processor and display block that consists of only 2 cards. The display card has a single 8k ROM that contains 4 character sets one after the other (Roman Upper and Lower, Math, Line and Large Character sets).
APL Character Set (for HP 2641A) and modified firmware
The HP2641A APL character set consists of 3 alphanumerical ROMs added in on an added DISP ENH board in the terminal.
The third ROM contains the infamous overstrike characters that are unique to APL. They occur quite naturally for the paper Teletypes APL was developed for, but are very unnatural on a "glass terminal". It required a modification to the firmware of the HP 2641 to simulate the overstrike character by picking them from the 3rd ROM. The modified 641 firmware ROMs (and that of the 2642 and 2649) are available on bitsavers.org and reproduced below (instructions of which ROMs goes where in the .txt file)
APL1 (1816-0984)
APL2 (1816-0985)
APL3 (1816-0986)
Location of APL ROMs on the DISP ENH card
My Star Wars Aurebesh Font
Aurebesh Font, CuriousMarc custom ROM
Here is the binary file for the Aurebesh font I created for the video
The font was burned on a 82S181 compatible bipolar 8k-bit PROM, like the original Signetics 82S181, the Harris 7618 or the AMD AM27S181. I put in place of the main uppercase character ROM on the main DISP CNTL board.
HP Font Editor Program
I created the Windows program below to work with HP 264X character ROM binary files, display them, edit them and create new character sets.
It can be used to view and edit any of the 3 types of character ROMs. See the screen shot below.
CuriousMarc's HP 264x Font Editor
Games on the HP 2645
Using a mostly undocumented binary loader (it's only documented on the HP 2649 programming overview, but it happens to be present in all HP 264x terminals), one can run binary programs on the 264x terminals, provided they have enough memory. This video explains how:
Part 4: Playing 8-bit Graphics Games with an Intel 8080 Processor
Here are the 6 games for the HP 2645 I demonstrate in the video
The files can be loaded directly from tape or uploaded through the serial interface from a computer. To play them on the HP 2648, you have to slightly modify the first few characters of the code, since entering the binary loader is slightly different on this machine.
HP 264x Internal Firmware
The 264x terminals are based on Intel 8008 and 8080, and run a large amount of code contained in the many ROMs on one or several CNTL cards. The documentation for the HP 2645 code, including the source listing, was made available with the introduction of the HP 2649A to permit the development of custom programs. The HP 2649 documentation below is a great description of the internal workings of the HP264x terminal. This code is further documented in the Technical Information Package (TIP) 13255-90003. This information could be used to develop further games, and drivers for new IO cards.
Later on, the HP 2648 and HP 2647 source code documentation were also made available for developers customizing the HP 2649G and F respectively, but I have not been able to find the corresponding HP2649G and TIP documentation. If anyone has it please let me know. However, the ROMs from most HP 264x models have been dumped (I believe by Al Kossow), and binaries are available on Al's bitsavers.org site. They are reproduced below for convenience. I also obtained files of the source code, but I am not sure if they are original and proven to compile or if they are just raw OCR from the listings. In the latter case they might contain transcription errors.
HP 2649 Conversion
The HP 2649 is a special version of the HP 2645, which was meant for running custom firmware developed by the customer. It only differs from the HP 2645 by one ROM chip, plus the ROMs that the customer adds. It's a pretty cool Intel 8080 development system if you ask me. All the base ROM calls from the HP 2645 are documented, so you have access to the keyboard, the screen, the comms cards, anything. The documentation is above.
However, the HP 2649 is most often encountered as a former HP 3000 console. It runs special software that communicates with the OS via HPIB (it has an HPIB card inside) and displays some custom menus in addition of being a console terminal. This was of no use to me, so I converted it back to a regular HP 2645. For that, I only had to change ROM 1810-0501 to the regular ROM 1818-0287 found in a normal HP 2645.
If you want to burn your own ROM, you'll have to use a 2716 (16k ROM arranged in 2k x8) PROM. In addition, you might have to monkey with the select logic, as the regular 2716 ROM use AND logic for the CS1 and CS2 chip selects, whereas the HP mask ROMs use OR logic for these two chip selects. I have not investigated that for these ROMs, but I sure had to do that conversion for the character ROMs, as explained in this episode https://youtu.be/QikO0WOAGWI .
Below are my raw lab notes about the minutiae of the conversion.