After installation of PDP11GUI, you might follow this tutorial:
I. First steps
- Explore the online documentation on this web site, then return to the tutorial.
- Open menu “File/Load machine description" and choose the generic file "pdp11.ini" ... this should do it for the first time. Open the “I/O page” menu and check out, what devices are defined now. All entries looking like “registers” were just loaded.
- Verify "Connection/Settings/PDP-11 target" is set to "Internal PDP-11/44 fake"
- Bring up the Terminal window (Connection/Terminal). You are connected to limited fake of an 11/44 console. Arrange it on screen.
- In the Terminal window, play with E(xamine) and D(eposit):
"E " shows a memory word.
"D " sets a memory word.
Remember: everything is entered octal. Addresses are always 22 bit wide.
For example, “D 1000 1234” sets memory address 1000 to 1234. “E 1000” show the content of address 1000.
- Open the Memory/Mem1 tool window, arrange it on the screen, adjust column widths. Set “start addr” to “1000” and press “Set”. The grid is loaded with all addresses from 1000 to 1176. You can change grid cells and press “Deposit changed” to update the memory.
The Terminal window shows the data traffic from and to the PDP-11.
- Open the CPU register window (I/O page/CPU registers) and press “Examine all”. Open the Bitfields window (I/O page/Bitfields). Click in the “Value” column of Register “PSW” and check, how the Bitfields window displays PSW bitwise.
Click on other CPU registers, and Bitfield changes. Change the Processor Status Word PSW in the CPU register window. Change PSW as a whole word, or bit wise in the Bitfields window.
II. Connect to SimH
- Start SimH (PDP11.EXE). Default is running a 11/73 with 256MB RAM.
- In PDP11GUI, open "Connection/Settings" and set
PDP-11 target = "SimH over telnet",
Telnet port=”2000” (or any other port you like)
Do not press OK yet!
- In SimH’s command window type "set stdio telnet=2000" (or the port number you choose).
Quickly go back to PDP11GUI and press the OK button in the Settings window.
- Then you should see SimH's command window in PDP11GUI's Terminal window
- Type "help" and see SimH responding. To disconnect SimH from PDP11GUI, type “set stdio notelnet”.
- If the connect to SimH fails, try to connect to SimH over telnet with another terminal emulator program.
- Repeat the steps in I.
III. Debug a MACRO-11 program
- Stay connected to SimH
- Open the MACRO11 Source window, the Execution Control window, the Disassembly window, and the CPU register window (all in menu “Programming”). Arrange them on screen.
- In MACRO11 Source, open one of the *.mac -files, best is "memsizing.mac".
Read the comment in the header, visit the authors page.
- In Execution Control window, set "Initial PC" = "1000". This is the address of the "start:" label in "memsizing.mac".
- In Execute Control window, press the big "New program ...." button. This will translate "memsizing.mac" with MACRO-11.
- The source is translated, the MACRO11 Listing window pops up, and in the Terminal window you can see how the code is DEPOSITed into memory
- Press "Examine All" in the CPU register window.
- Step through the “memsizing”-program. Press Single Step in the Execution Control window. Check out how this translates to SimHs “STEP 1” command in the Terminal window. See how the Program Counter marker in the MACRO11 Listing window is moved. See the display of the Disassembly window being updated. Watch the changed registers R0, SP and PC by pressing "Examine All" in the CPU register window.
- Repeat step 8. You see the program working.
- Press “Continue”. The program runs until a trap or HALT occurs. The Execute Control window should register the HALT.
IV. Connect to a real PDP-11
- Get a standard null modem cable and connect the PDP-11 to your PC.
(If you need a serial-to-USB-adapter, those with FTDI chip have the best reputation.)
- Set Settings/Connection to “Physical PDP-11/xx over COM port”, choose the correct COM port and baud rate.
- Try to access the machine over the Terminal window. Type something and verify the machine responds as expected.
- Repeat the steps in I. Verify that your PDP-11 is responding correctly to PDP11GUIs EXAMINE/DEPOSIT attempts.
When doing EXAM/DEPOSIT manually in the Terminal window, be sure to use the commands valid for your actual machine, not those for the 11/44 used in step I.
If this does not work, I must build a console adapter for your machine into PDP11GUI. Feel free to contact me!
- Repeat the steps in III.
V. Console panel play
In this tutorial, you will run a program with input and output only over the simulated PDP-11/70 console.
- Connect to SimH again, as in Step II.
- You need to simulate an old PDP-11 with console display register.
In the Terminal window, type “set cpu 11/70” in SimH. You are now using a PDP-11/70.
- Open the windows for MACRO-11 program execution, as in Step III.2.
- In MACRO-11 source window, open the program “sum.mac”.
This program sums up all natural numbers from 1 to n and displays the result on the console panel.
The formula is: s = n * (n+1) / 2
n is input over register R3. Output sum ‘s’ is 32 bit. On program HALT, the upper 16 bit of s is displayed on the “DATA” LEDs. After continuation, the program HALTs again and shows the lower 16 bit of s on the “DATA” LEDs.
- In the Execution Control window, press the “New program” button. The program is loaded. You surely will not do this over the panel!
- Open the console panel over “Tools/PDP-11/70 panel”.
- Prepare the panel:
- Click onto the image of the upper rotary knob, until the LED “CONS PHY” is ON.
- Click onto the lower rotary knob, until LED “DATA PATHS” is ON.
- Set all switches to their standard position, they must look like the white switch.
- Click slowly onto the white switch, and verify that all lamps are burning!
- Set the program start address to 1000.
- Enter “1000” on the data switches (set only switch 9).
- Press “LOAD ADRS”
- The value 1000 is displayed in the ADDRESS LEDs.
- The value for ‘n’ is input over the DATA switches and the switch register. We first try to sum up all integers 1+2+..+100. 100 is octal “144”
Enter “144” on the data input switches by only setting switches 6, 5, and 2.
- Start the program. The start address has been loaded in step 8.
- Be sure that “ENABLE/HALT” switch is on its upper position “ENABLE”
- Press “START”. The program starts, calculates the sum and stops at a HALT instruction. While the program is running, the “RUN” LED is on.
- Let the panel show the result, which was written into the “Display Register”
- Click onto the lower rotary knob, until the “DISPLAY REGISTER” LED is ON.
- The “DATA” LEDs show now the upper 16 bit of the result. They are all black ... the result is < 2^16.
- Continue program execution to get the lower 16 bit of the result.
- Click onto the “CONT” switch
- the “DATA” LEDs show the lower 16 bit of the result. It is octal “11672”
- Start the Windows calculator “calc.exe”, set it to “scientific” mode.
- Set base to “octal”, enter “11672”, set base to “decimal” and ... voilà:
The sum of 1..100 is 5050, just as the young C. F. Gauss calculated over 200 years ago!
- Since the start address remains unchanged at 1000, you can toggle in another value for ‘n’ and press START and CONT again (repeat from step 9.)
VI. Further steps
In Step I., the generic machine description file “pdp11.ini” was loaded. To get most benefit from PDP11GUI, you should create a copy of this file for the I/O cards you plugged into your special PDP-11 backplane (see here). Use the I/O page scanner and document all listed addresses in the machine descrition file. This requires some hour’s of searching in the DEC documentation, but it will really pay off!
Please forward me any new devices you added to the machine description file. Then I can include them into the next release of PDP11GUI !
And while you’re into it, write a SimH script to simulate your machine.
The MMU window, the Microcode window and other tool windows were not part of this tutorial. You can use PDP11GUI without them. Explore them and the concepts behind when there’s nothing on television. Take a look onto the “Disk Image” window.