PDP11GUI is an integrated development environment (IDE) for PDP-11’s, running under MS Windows.
You can write programms in assembler and load them onto the PDP-11, run programs or single step them, disassemble code, load, dump and display memory and inspect registers.
You can use it in conjunction with SimH to learn about PDP-11’s, or you can attach it to a real PDP-11 as an handy hardware investigation and diagnostic tool.
First I’ve written PDP11GUI for some diagnostic tasks on my 11/44, then it developed its own momentum and kept me busy for nearly a year. And it’s still growing.
The current version of PDP11GUI is 1.38.0.
No switch toggling, no typing?
PDP11GUI is attached to the target PDP-11 console over serial line (COM port) or over telnet.
The system console gives you complete control over a PDP-11 by implementing just a few commands: You can examine and change (“deposit”) memory locations and also CPU or controller registers. And you can run and stop programs, or single step through code. With those few basic features you would do tasks like
- check and understand how the CPU executes code.
- type-in bootloaders in binary form
- checking presence of hardware like disk controllers or memory cards
- testing devices by manipulation controller register bits
- starting bootloaders from several devices
- breaking into the operation system or user cod
- get notified if the processor halts.
Early computers had consoles which consisted of lights to indicate addresses and data content, and switches to toggle in addresses and data words. (The “Reset” button and the power LED on modern PC’s are the last remain of a “blinken light console”) While those are very fascinating to look at, they really are a pain to work with. So they were replaced by video terminals attached to serial RS232 lines, and a console processor which controlled the main CPU on user input. This is called “ASCII-console”, and if a machine has one, an external PC can connect to it via serial line. The PDP-11 is under complete software control by an IBM PC then.
Ken Olsen would not like it ...
There are many flavours of serial consoles in the DEC world, but they are mostly doing the same. PDP11GUI supports these:
- The 11/34 has a limited serial “console emulator”, which mimics very closely the switch operations on their physical console.
- The PDP-11/44 has a quite elaborated console, implemented with an independent micro controller. (Here is a good documentation).
- QBus PDP-11’s (11/03, 23, 73, 93) have a so-called “ODT” (octal debugger technique) consoles. They are running on the PDP-11 processor itself, so they are somewhat limited.
- SimH’s command window implements lot of functions, but has also the basic Examine/Deposit/Run/Halt/SingleStep command set in its own syntax.
Look at all those windows!
PDP11GUI has a modular design. Function is distributed on many small “tool windows”. In good DEC-style those tool windows form an “orthogonal instruction set”, meaning the functionality of the tool windows does not overlap, and for most task you need more than one tool window. Enough abstraction! I implemented those tool windows:
- a Connection window, which let you connect to the target machine in several ways.
- a Terminal window, which shows the data traffic to and from the PDP-11 console. You may also use it to type directly commands to the console and look at the unfiltered answers.
- The Register window lists a set of register addresses of a physical device (CPU, cache, disk controller and the like) in symbolic form. Symbol information is held in a ”machine description file”. There are as many Register windows as are defined in the machine description file.
- Four blocks of consecutive memory addresses each are shown and edited in the four Memory windows.
- Often a peripheral register contains not a single scalar 16 bit value, but is segmented into different bitgroups. The Bitfields window shows and edits those bitgroups. The bitfield information is held in the machine description file as well.
- It is synchronized with the Memory and Register windows.
- For writing assembler programs, source code can be loaded, saved and edited in the MACRO-11 Source window. A MACRO-11 clone can be called to translated the program source.
- Output of a MACRO-11 run is shown in the MACRO-11 Listing window. There you can transmit the generated code to the target machine’s memory.
- The Execution Control window allows executing the program. There are Reset, Run, Halt and Single-Step buttons. The current execution address is also highlited in the MACRO11 source, MACRO11 listing and Disassembly window.
- The Disassembly window shows disassembled code around an selected address. It’s synchronized with the Execution Window.
- The Memory test window can test memory with DEPOSIT and EXAM commands over the console
- The Memory Loader window contains logic to load data from external files into memory. Several file formats are implemented.
- The Memory Dump window contains logic to dump data from memory to external files. Several file formats are implemented.
- Loader and Dumper together can be used as a file format converter.
- The Memory Management window shows the state of the “virtual to physical” memory map unit of later PDP11’s. This is important, because addresses for program executions are virtual 16 bit addresses, but register adresses for loading program code into pdp11 memory are physical 22 bit addresses.
- The I/O Page Scanner window scans every even address in the I/O page and reports existing addresses.
- The Disk Image read/write window allows to transfer disk or tape images between host PC and PDP.11.
- The 11/44 µCode window shows in detail the function bit groups for all micro instructions of the 11/44. If you micro step through a single PDP11 instruction, you can get an understanding of the CPU’s internal operation.
- The 11/70 Console panel window let you operate PDP11GUI through a the console panel of a PDP-11/70.
- Finally a Log window tells you what PDP11GUI did so far.
Some general features
The serial interface to the PDP-11 console is pretty slow. A simple click onto an button like “Examine All” can generate a lot of serial traffic. Keep an eye onto the Terminal window.
It is possible that one single memory location is displayed in more than one tool window. If such a memory location is changed, it is updated in all visible tool windows automatically.
All numbers are octal numbers.Physical addresses are 18 or 22 bit width, depending on the connected target machine.
The tool windows can be resized and repositioned and keep their place on the screen between sessions. If data tables are shown, their columns widths can be individually adapted to the grid’s content, this also is persistent.
If you have edited a memory location, so that its differerent from the locationss value on the PDP -11, its always higlighted in yellow:
For educational purposes, you can demonstrate user interface techniques from three different ages:
- From the beginning to the mid of 1970’s, users had to use “light & switches” consoles. (Console panel window)
- In the golden PDP-11 area, mid 1970’s to 1990, the ASCII video terminal console was used (Terminal window)
- Since then, Windows-based GUIs were state of the art. (PDP11GUI itself )