The KDF11 processors (as used in the PDP-11/23 and PDP-11/23+) contain an 18-bit implementation of ODT, called Micro-ODT. Micronote 058 states that the standard start address for a large (18- or 22-bit) memory system is 773000. That that is the start address to be used in ODT is confirmed by micronote 105 which mentions the "773000G" command to boot the system.

This raises two questions for me:

  1. Why does the start address have to be specified as an 18-bit address? I do realize that the I/O page has to be addressed (by asserting BBS7) but at this point the (16-bit) program counter will be loaded with 173000 and as the processor is running in umapped mode that address will be mapped to I/O space anyway.

  2. How is this implemented? Even if ODT would fetch the first instruction from the 18-bit address 773000 the next instruction would be fetched by the processor from 173006 anyway?


1 Answer 1


Assumption: Micro-ODT implements the same functions as a more conventional PDP-11 lights and switches front panel, and in a similar way internally.

The 11/24 technical manual - same CPU as the 11/23 - gives some detail of command interpretation.

All addresses are bus addresses (18 bit). The address parser does not know that a 'G' will follow; it is just collecting an octal number. Nevertheless, addresses are always given in documentation as full 18-bit addresses; why complicate matters with explaining that in some cases you may (if indeed this is the case) only need 16 bits?

This is a consistency matter: 17xxxx/ would be examining an address in the first 32KW of memory, but 17xxxxG would start execution in the IO page. Per the 11/24 manual, the G command causes a bus init (therefore disabling the MMU), loads the (16-bit) address into the PC, and starts obeying instructions.

There's also a consistency argument concerning the PDP-11 models with lights and switches consoles. For a start operation, it is necessary to enter an 18 (or 22) bit physical (i.e., bus) address on the switches. 773000G is like entering 773000 on the switches, pressing LOAD ADDR, then pressing START.

LOAD ADDR transfers the address to the Bus Address Register, an internal CPU register not accessible to a PDP-11 program. START causes the CPU to begin execution at the address in the BAR.

In summary of my argument: full-width addresses are the absolute norm in console operation.

I don't know what would happen if you in fact typed 173000G - presumably it would actually work, since the reset makes those two addresses equivalent to the PDP-11 processor if not to the console. Examining the J-11 microcode listings of ODT supports that view; I have not found any F-11 microcode listings.

  • Your assumptions are correct, Micro-ODT implements the same functions as a conventional PDP-11 front panel. Operational consistency might be a reason for having to enter an 18-bit address, especially as in an 18-bit system the address 773000 references another location than address 173000. I'm curious what the effect of starting at address 173000 would be. The G command will initialize the bus, causing a reset of all registers to zero. I presume that means the MMU SR0 is reset too, which means a transition to unmapped mode.
    – JosF
    Jan 23 at 14:27
  • Yes - bus reset disables the MMU,
    – dave
    Jan 23 at 14:32
  • An alternative explanation might be: ODT is not running in "the PDP-11", it's running in the microcode engine, and as such the design is conditioned by the microprogrammer's view of the world. Notice how the descriptions of reading characters are given in terms of bus operations!
    – dave
    Jan 24 at 15:16
  • I found the J-11 microcode listings at bitsavers, and the G command did (as we supposed) just move the low 16 bits of the entered numeric value into the PDP-11 PC. Presumably the F-11 microcode does the same thing, though I could not find a listing of that.
    – dave
    Jan 25 at 1:40
  • Great! In the meantime I studied the KY11-LB (PDP-11/04 and 11/34) console and its microcode and essentially found the same: the lower 16 bits of the data loaded in the switch register are copied to the PC, an INIT is issued and the processor is started. We now have clear the way the start address is used but I'm still in the dark why it is documented that an 18-bit address has to be specified while it is clear that a 16-bit address is sufficient.
    – JosF
    Jan 25 at 17:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .