19. Oktober 2017

Bootstrapping the HP 2116

   HP 2116 front panel (picture from Auckland University, slightly more focussed). – From top to bottom:
037033 T-Register, Memory Data
003023 P-Register, Program Counter
003030 M-Register, Memory Address
000006 A-Register, Accumulator
177775 B-Register, Accumulator
Loader Protect toggle switch down from “Loader Enabled” at “Protection”, “Preset” buttom light on, all others off  (Run, Halt, Load Memory, Load A, Load B, Load Address, Display Memory, Single Cycle; Power)
toggle switches standing at 000007

The 16 bit minicomputer HP 2116 could not hold memory without power. Its core memory could, though, for a while, I guess. In any case we had to fill memory with a program, when we turned it on.
   This was done by a bootsrapping process, involving maually switched in machine commands. You switched some of the toggle switches upwards (=1), three adjacent up 111 was a 7.
   You had to switch in just eleven or twelve instructions into memory, starting at location 100 (or elsewhere, so as to not overwrite yourself when booting?). My friend Enrico found a document page labeled “A017, Loaders” from August 1972, “hp 21xx 5950-9226 Hewlett-Packard Program Catalog Aug72”, here on page 1-24:


This program produces a punched tape containing com- 
puter instructions constituting either a basic binary loader 
or a basic binary disc loader. Also furnished by the program 
is a typed set of instructions for using the tape produced. 
By employing a bootstrap bootstrap, consisting of 11 
instructions entered through the switch register, the boot- 
strap loader tape can be read into the required positions of 
core storage. Bootstrap loader tapes can be produced for 
any core storage capacity used in HP computers. 

Assembly language, absolute. 



This program provides a simple method of entering a basic 
binary loader or a basic binary disc loader. First, twelve 
instructions are entered into the switch register. These 
instructions indicate the configuration of the computer 
system, and also serve as a driver for acquiring the boot- 
strap tape. After the tape has been read, the basic binary 
loader or basic binary disc loader is ready for use in 
memory. The program includes preparation of a check sum 
to detect tape reader errors. A test of the loader protect 
switch is also made. 

Assembly language, absolute. 


Fritz Joern 

HP, Germany /Frankfurt 

The full catalogue is to be seen here. Incidentally there you also find many other little programs by myself and by members of my group like Enrico Mariani with for example a fast sort program, Bjoern Lindbergh, Paul Gavarini’s Snobol Compiler and other software like a Tic-Tac-Toe game. Sorry, if I forget someone, look for yourself.
   There were quite a number of bootstrap loaders, see this index.

The instruction keyed in initially included read in a tape character, skip if flag set (SFS: i.e. wait in a loop until reader responds with one character), store content to location (somewhere higher up), increase location where program is stored, and repeat. IF SOMEONE KNOWS THE SEQUENCE, please let us know (Fritz@Joern.De). First tape read was a bootstrap paper – or rather sturdier Mylar – tape with the program you wanted to be executed first, I guess the 64 (see below) of the BBL, the basic binary loader, see below.  
   At HP’s computer museum I found a manual “2116A/2115A Computer Operating Manual
 http://www.hpmuseum.net/document.php?hwfile=1114 . Note that the document has not been OCRd, so you might want to that if you want to find something elctronically.

On page 1-1 the “Basic Binary Loader” is explained:
The manual goes on and explains how to start the reading process, once the bootstrap program is in, and its error halts. Further down the similar loading program for magnetic tape is given. Loading in the Basic Control System BCS functioning as “relocating loader” was already a secondary process, but is explained as well, as that was the “operating system” of the time before RTS and others. Even Algol is mentioned as compiler!
   So here is the paper tape loading program to key in, the “Basic Binary Loader” for paper tape:
In practice we used the version for the fast optical paper tape reader. It is slightly different, also to be found in the manual, but starts with 107700 as well.
   To explain the figures you must know that the 2116 had 16 bit memory words, containing data or one machine instruction each. We did not write those 2 bytes in hexadecimal form, but in octal. First thing you learned that three toggle switches (see them grouped in three in the front foto!) were memorized as one number from 0 to 7. 0 was all switches down, 1 was the rightmost switch up to give 001, octal 2 was binary 010 and so on till 111 for 7. The advantage was that you had not to go to ugly 10 decimal = hexadecimal A, 11 B, 12 C, 13 D, 14 E and 15 F. That’s IBM stuff.
   The disadvantage was that 16 didn’t divide by 3, so we had this one leading lonely dwarf bit to start with. The first digit was for one bit, so it could be only 0 or 1, followed 15 bits = 5 octal numbers for 3 bits each (23=8).
   The loader listing above thus shows only numers from 0 to 7, 6 octal digits per word. To key them in, the 2116 had 16 chrome shining toggle switches (2115: illuminated buttons).
   The meaning of the instructions can be decoded from the last page of the manual, the Consolidated Coding Sheet.

Note that here the instructions are given in pure binary, not in octal code! So 107700 oct. is 001 000 111 111 000 000 bin. which would relate to a AND command, I guess … – but it’s night, and I’ll stop here.
   Correspondence to Fritz@Joern.De please.

Permalink: http://j.mp/2Ikh6Tm =

More stories: https://blogabissl.blogspot.com/2017/10/old-computer-stories-hp-2116-et-al.html

See the HP2116A in operation at https://youtu.be/Kko526UpHsM. Unfortunately David Collins does not show the bootstrapping.

Keine Kommentare: