PCjs Machines

Home of the original IBM PC emulator for browsers.


PCjs Blog

PDP-11 Operator's Console (Front Panel) Demo

As I mentioned in the “PDP-11 Tutorials” blog post, I’ve been working on some methods for visually illustrating how machine components work. And the PDP-11/70 Operator’s Console, with its daunting number of lights and switches, seemed like a good candidate.

NOTE: I prefer the generic term “Front Panel” to describe DEC’s Operator’s Console, because it’s less ambiguous and more generally recognized and understood.

I still haven’t written a real tutorial on the PDP-11/70 Front Panel, which will require starting at a much more fundamental level, explaining and demonstrating each switch in turn. However, I have made more progress on the basic elements that any tutorial or demo will need: allowing the user to walk through a step-by-step demonstration of some procedure.

To illustrate, I’ve copied a multi-step procedure from the page on Toggle-Ins that shows how to use the PDP-11/70 Front Panel to verify that the Memory Management Unit (MMU) is operating properly.

The procedure requires you to enter a small 3-instruction program at address 200 that will write a value (070707) to address 200, execute the program, and then verify that the MMU relocated that value to address 300 instead.

As you click through each of the steps below, pay attention to the Front Panel. You should see all the switches being toggled at each stage. And as you complete each step, the button for that step will be disabled, so that you don’t forget your place or accidentally repeat a step. And as you scroll through the steps, the machine should always remain visible.

Give it a try!

[PCjs Machine "test1170"]

Waiting for machine "test1170" to load....

MMU Relocation Test

From DEC’s PDP-11/70 Maintenance Service Guide, Chapter 4:

Use the following toggle-in to verify the correct operation of Memory Management Relocation.

200/012737          MOV #400,@#177572 (load maint. bit in MMRO)
206/012737          MOV #070707,@#200 (move 070707 to virtual 200)
214/000000          HLT

300/000300          Preset loc 300 to 300

17772300/077406     Set Kernel I PDR 0 to R/W 4K page
17772340/000001     Set Kernel I PAR 0 to (Base address 100)

Load Address 200
Start               Display = 000216 (Halt@214)
Load Address 300
Exam                Display = 070707 ... Relocation works

The above “toggle-in” can broken down into the following steps.

Step 1: Load ADDRESS register with 200.

Step 2: Deposit 012737 at ADDRESS 200.

Step 3: Deposit 000400 at ADDRESS 202.

Step 4: Deposit 177572 at ADDRESS 204.

Step 5: Deposit 012737 at ADDRESS 206.

Step 6: Deposit 070707 at ADDRESS 210.

Step 7: Deposit 000200 at ADDRESS 212.

Step 8: Deposit 000000 at ADDRESS 214.

Step 9: Load ADDRESS register with 300.

Step 10: Deposit 300 at ADDRESS 300.

Step 11: Load ADDRESS register with 17772300.

Step 12: Deposit 077406 at ADDRESS 17772300 (“Set Kernel I PDR 0 to R/W 4K page”).

Step 13: Load ADDRESS register with 17772340.

Step 14: Deposit 000001 at ADDRESS 17772340 (“Set Kernel I PAR 0 to (Base address 100”).

Step 15: Load ADDRESS register with 200.

Step 16: Set ENABLE and toggle START.

Step 17: Load ADDRESS register with 300.

Step 18: Examine ADDRESS 300.

At this point, the DATA register should display 070707. You can also use the PCjs Debugger’s rm command to verify the contents of the DATA register, or use a Dump command (dw 300 l1) to dump memory location 300.

Jeff Parsons
Feb 9, 2017