Just for fun I took my PDP-11/70 console panel project and integrated it into PDP11GUI. So PDP11GUI can be operated over an ancient “light and switches” console now.

I first intended the panel only as an enhancement for SimH. But the experiment got out of control and created strange mutants (old horror movie theme!): the 11/70 console panel connects also to all machines supported by PDP11GUI, resulting in “panelized” versions of 11/44, 11/23, 11/73, etc.!

Of course only a few PDP11GUI-operations are executable by panel:

  • Examine and Deposit
  • Processor reset
  • Run, Halt and Single step
  • Visualisation of the Display register (address 17777570) in older PDP-11’s, if working on SimH.
  • Data entry over the Switch register (address 17777570) in older PDP-11’s, if working on SimH.

On the other hand, not all modes of the panel are useable for PDP11GUI ... the panel is very 11/70-hardware-specific.

The console panel window is not an MDI window, instead it is free floating. So you can hide PDP11GUI and the console panel window is still visible. This is nice for demonstrations!

The panel is a photo realistic simulation, but I can also connect my real PDP-11/70 panel over USB! Feel free to visit me if you want a demonstration.

 

pdp11gui_consolepanel

The panel looks nice, but needs a lot of explanation!

Description of the panel

The labels printed onto the panel are not very readable, but you can move the mouse over a LED or a switch or a knob and get a hint.

The original documentation is the PDP-11/70 processor manual, Section III, pdf page 187ff.
But under PDP11GUI, the panel behaves sometimes different.

You can toggle switches and rotate the knobs by just left-clicking onto them.

Status indicators

The upper row of LEDs contains status indicators, DEC calls them “Execution indicators” . Most of them have constant values under PDP11GUI.

  • “ADDR ERR” is ON if a not existing address was used for Examine, Deposit or Run.
  • “RUN” is ON, if code execution was startet. It goes OFF, if the processor was halted by user or run onto an HALT opcode. It is coupled to the state of the Execution window.
  • “MASTER” is always ON (means “console operation”).
  • “KERNEL”, “SUPER”, “USER”, “ADDR”, “DATA”, “16”, “18” and “22” indicate the state of the memory managment unit (MMU). They are fixed at “KERNEL” “22” bit mode.

ADDRESS display

The mid row of LEDs displays an address up to 22 bit wide. They are labeled “ADDR” on the panel. This the physical address loaded with the “LOAD ADDR” switch.

The upper rotary knob is not labeled, but internally called “ADDRESS SELECT”. It chooses what is displayed on the “ADDRESS” LEDs. Only two positions are implemented:

  • “CONS PHY” displays the physical address entered on the console panel with the “LOAD ADRS” switch.
  • “PROG PHY” displays “the 22-bit physical address generated by Memory Management for the current Unibus or Memory cycle.” (DEC documentation)
    So while the program is running, it should flicker a lot. After a HALT, however, it should always display the address of the HALT instruction.
    So here I always display Program Counter - 2.
  • All other positions leave the “ADDRESS” LEDs black!

DATA display

The bottom row of LEDs displays a 16 bit data word. They are labeled “DATA”.

The lower rotary knob also not labeled, it is called “DATA SELECT” and chooses what kind of data is shown. There are two implemented positions:

  • “DATA PATH” means, that the “DATA” LEDs show the result of the last Examine or Deposit operation.
  • “DISPLAY REG” means, that the “DATA” LEDs show the content of  the “Display Register”. This a special write-only register on older PDP-11 at address 177570, which is directly connected with the “DATA” LEDs. Since the register is write-only, and PDP11GUI has no real insight into the simulated machines processor, the Display Register is only available if SimH is connected, and is only updated if SimH HALTs. Nevertheless, if you write 17777570 directly with PDP11GUI, the LEDs are always updated.

The two Parity-LEDs are always OFF.

Note: The DATA display does NOT show always the content of the displayed address!

Data Input Switches

The left bank of switches on the panels bottom is used to enter addresses or data words. Therefore they are vertically aligned with the “ADDRESS” and “DATA” LEDs.

A switch flipped upward represents a logic “1”, a switch in normal position is a “0” (zero). (See the “bit-to-octal” table below)

Command Switches

The switches to the right of the white “Lamp test” switch (try it!) are the real command center of the panel. Most switches return to their standard-position, they are called “Momentary Action Switches” by DEC.

  • “LOAD ADDR” sets the current address for the next Examine/Deposit or Run Command. After you trigger it, the state of the input switches is copied to the “ADDRESS” LEDs. (The “ADDRESS SELECT” knob.must be in the “CONS PHY” position
  • “EXAM” issues an “Examine”. The memory location shown in “ADDRESS” LEDs is read, an the result is displayed in “DATA” LEDs. If the memory adress is invalid, LED “ADDR ERR” goes ON.
  • “DEP” issues a Deposit. The content of the “Data Input” switches is written into the memory location indicated by “ADDRESS” LEDs.
    Since DEPOSIT changes data, it must be toggled upward.
  • Auto increment: If you trigger EXAM/DEPOSIT repeatedly, the “ADDRESS” LEDs are automatically incremented by 2, then the memory on the new address is read/written. You do NOT have to enter always new addresses, if you read/set a whole memory block.
    Furthermore, if you’re reading a processor register R0..R7 (addresses 17777000 .. .1777707), the address is incremented just by one, and there’s a roll-over from R7 to R0.
  • “CONT” resumes program execution. If “ENABLE/HALT” is in the “HALT” position, a single step is executed.
  • “ENABLE/HALT” modifies “CONT” and “RUN”, see there. Flipping to “HALT” also stops a running program.
  • “S INST/ S BUS CYLE” has no function. Set it to “S INST”.
  • “START” resets the processor and sets the program counter to the content of the “ADDRESS” LEDs. If “ENABLE/HALT” is in the “ENABLE” position, the program execution begins.

Decoding binary digits

DATA display, ADDRESS Display und Data Input Switches present data as bits. Groups of three bits are optically grouped together on the panel, because three bits make one octal digit. In case you forgot:

 

Switches/LEDs in group
(for switches: ON=up)
Binary value
Octal value
off, off, off
0 0 0
0
off, off , ON
0 0 1
1
off, ON,  off
0 1 0
2
off, ON,  ON
0 1 1
3
ON,  off,  off
1 0 0
4
ON,  off,  ON
1 0 1
5
ON,  ON, off
1 1 0
6
ON,  ON, ON
1 1 1
7

 

How to operate the panel

General notes

  • Again and again: If the rotary knobs are in the wrong position, the LEDs will display nothing or wrong data. “ADDRESS SELECT” must be in the “CONS PHY” or “PROG PHY” position. “DATA SELECT” must be in the “DATA PATH” position, sometimes “DISPLAY REGISTER” is also useful.
  • You should keep PDP11GUIs Terminal window visible. The instruction stream there is an execellent means to verify your operation on the console panel!
  • Examine/Deposit operation can also be controlled with a Memory or a Register window.
  • Reset/Start/Continue operations can be controlled  in the Execution Control window or the Disassembly window.

Read a memory address

  1. Set the “ADDRESS SELECT” knob to “CONS PHY”
  2. Enter the address with the Data Input Switches
  3. Trigger  the “LOAD ADDR” switch
  4. The address is displayed on the “ADDRESS” LEDs
  5. Trigger the “EXAM” switch
  6. Data is displayed in the “DATA” LEDs
  7. In case of an illegal address, “ADDR ERR” LED goes ON.

Read the next memory address

  1. Trigger the “EXAM” switch again
  2. The “ADDRESS” LEDs increment by 2 (or by 1, if you’re reading R0..R7).
  3. New data is displayed in the “DATA” LEDs

Write a memory address

  1. Set the “ADDRESS SELECT” knob to “CONS PHY”
  2. Enter the address with the Data Input Switches
  3. Trigger  the “LOAD ADDR” switch
  4. The address is displayed on the “ADDRESS” LEDs
  5. Enter data with the “Data Input” switches.
  6. Trigger the “DEP” switch
  7. Entered data is displayed in the “DATA” LEDs
  8. In case of an illegal address, “ADDR ERR” Led goes ON:

Write the next memory address

  1. Enter data with the “Data Input” switches.
  2. Trigger the “DEP” switch again
  3. The “ADDRESS” LEDs increment by 2  (or by 1, if you’re writing R0..R7).
  4. Entered data is displayed in the “DATA” LEDs

Reset the processor to a start address

  1. Set the “ADDRESS SELECT” knob to “CONS PHY”
  2. Enter the start address with the “DATA INPUT” switches.
  3. Trigger  the “LOAD ADDR” switch
  4. The address is displayed on the “ADDRESS” LEDs
  5. Set “ENABLE/HALT” to “HALT”
  6. Trigger “START”

Start program execution

  1. Set the “ADDRESS SELECT” knob to “CONS PHY”
  2. Enter the start address with the “DATA INPUT” switches.
  3. Trigger  the “LOAD ADDR” switch
  4. The address is displayed on the “ADDRESS” LEDs
  5. Set “ENABLE/HALT” to “ENABLE”
  6. Trigger “START”
  7. The “RUN” LED goes ON.
  8. If the program HALTS, set the “ADDRESS SELECT” knob to “PROG PHY” The ADDRESS LEDs iwll then dispaly the addresss of the HALT instruction.

Stopping a running program

  1. Switch “ENABLE/HALT” to “HALT”
  2. The “RUN” LED goes OFF.

Continue program execution

  1. Switch “ENABLE/HALT” to “ENABLE”
  2. Trigger “CONT”
  3. The “RUN” LED goes ON.

Execute next instruction / Single Step

  1. Switch “ENABLE/HALT” to “HALT”
  2. Trigger “CONT”
  3. The “ADDRESS” LEDs show the  program counter after the next instruction.

Display the content of the PDP-11 “Display Register” at 17777570

  1. Connect to SimH
  2. Choose a processor with Switch/Display register. To select a PDP-11/70, type “set cpu 11/70” on SimH’s command prompt. The QBus PDP-11’s (LSI11, 11/23/53/73/93) don’t implement a Switch/Display register, you will get a UNIBUS timeout trap if you access it!
  3. Set the lower rotary “DATA SELECT” knob to “DISPLAY REGISTER”
  4. Either stop program execution, SingleStep, let the processor run onto HALT, or write to 17777570 with a Memory or a Register window.
  5. The new value of the Display Register is shown on “DATA” LEDs.
  6. Reset “DATA SELECT” to “DATA PATH” again.

Set the PDP-11 “Switch Register” at 17777570

  1. Connect to SimH
  2. Choose a processor with Switch/Display register. The QBus PDP-11’s (LSI11, 11/23/53/73/93) don’t implement it, you will get a UNIBUS timeout trap!
  3. Set DATA switches 0 to 15 to any 16 bit value.
  4. Before every START, CONTINUE or SINGLE STEP command, the value of DATA switches is set to SimHs “SR” (switch reg) registers.