Virtual PDP-10 KI10 - SimH extended

Parent Category: Projects Category: BlinkenBone panel simulations Written by Administrator

To support the KI10 panel, a special version of SimH was build:

PDP-10 simulator V3.8-2 (JH stdio telnet REALCONS)

SimH has been extended in two ways: REALCONS and KI10 features.


The "REALCONS" device controls the Java panel simualtion over network.
It is described in detail here.

The commands you need to know are:

SimH command Info
sim> show realcons Show status
sim> set realcons host=<hostname> Link with a Blinkenlight API server. This is the host the Java app is running on.
sim> set realcons connected Activate the Java panel
sim> set realcons disconnected Deactivate the Java panel
sim> set realcons test Lamp test, and status of all input buttons

See the SimH control file "tops-10.simh_pdp10" in the package.

KI10 features

As said before, SimH simulates a PDP-10 KS10, while the panel belongs to the model KI10 (read here about PDP-10 models).
Consequently, the KI10 has many I/O operations which read panel buttons and write panel lamps.
These are lacking in SimH, but at least a few operations have been added.

Making SimH a full KI10 is far beyond my capabilites ... so TOPS-10 will not recognize the panel and will not show its famous "idle" pattern on the "memory indicator" LEDs.

Access the panel over SimH prompt

SimH has implemented additional registers for the PDP-10 CPU.

  • "cds" - console data switches
  • "cmi" - console memory indicator
  • "caacs" - console address and address

They are like the "switch register" and the "display register" of smaller machines (PDP-11).

These registers can be set and read over the SimH prompt with

sim> examine cds
sim> deposit cmi
sim> deposit caacs

"cds" is a read-only register and displays the content of the 36 bit DATA SWITCHES on the KI10 panel. For example
"sim> d cmi 777777777777" (twelve "7") will light all 36 LEDs on the "memory indicator".

"cmi" is write only. Values written are displayed on the "memory indicator LEDS" (lower panel, row 4). Then the traingle LED "memory data" goes off
and "program data" above row 4 goes ON.  Display on the memory indicator" is disabled if the "MI PROG DIS" button is active.
And after write, "LOAD DATA" and "LOAD ADDR" are disabled, until control is given back to console by activating MI PROG DIS.

"caacs" is write only. It sets the 22 ADDRESS SWITCHES as well as INST FETCH, DATA FETCH, WRITE, ADDRESS BREAK, EXEC PAGING, and USER PAGING. See bitsavers, pdf/dec/pdp10/TOPS10/1973_Assembly_Language_Handbook/01_1973AsmRef_SysRef.pdf document page "103".

Access the panel under program control

Many panel buttons and lamp can be accessed by programs running on the KI10.
At the moment, only "cds", "cmi" and caacs" registers are accessible over program control.

A read from "cds", (the DATA SWITCHES) is done with instruction
       DATAI APR,  ("Data in, Console")
opcode = 70004

A write to "cmi" (the Memory indicator) is done with
       DATAO PI, ("Data out, Console")
opcode = 70054

A write to "caacs" (Address and address condition switches) is done with
       DATAO PTR,("Operating Data Out Console")
opcode = 71504

Strange enough, there is nothing like a "console" device. Instead, these three opcodes use unimplemented operations on completely other devices.
For instance "DATAO PTR" means: "Write data to the paper tape reader" (which is a read-only device). "APR" stands for "arithmetic processor" and "PI" is the interupt system.
Console access is done using the definition gaps in the I/O system.
The best in the famous orthogonal computer design of DEC are is the creative use of holes in the instruction matrix !