"pdp11monloader" is a tool to download code into vintage PDP-11 computers over serial connection using the console monitor. After download the code can be started, even a simple non-graphical terminal emualtion is implemented.
Several code file formats are supported, and several PDP-11 types can be controlled.
pdp11monloader is a Linux command line tool written in C. It can also compiled under CYGWIN to run on MS-Windows, in this the support file "cygwin.dll" is needed.
The commandline syntax is:
pdp11monloader - Load binary code into PDP-11 over console monitor.
Version v1.0.0, compile Jun 23 2017 08:07:10.
(C) 2017 Joerg Hoppe <[email protected]>
SYNOPSIS
pdp11monloader --help --version --debug --baudrate <baudrate>
--format <bits_parity_stop> --port <serial_device> --odt --m9312
--m9301 --octaltext <inputfile> --macro11listing <inputfile>
--papertape <inputfile> --go [<start_addr>]
--gocomitted [<start_addr>] --tty
--usbdelay <milliseconds>
-? | --help
Print help.
-v | --version
Output version string.
-dbg | --debug
Enable debug output to console.
-b | --baudrate <baudrate>
Set serial line speed to 300..3000000 baud. Default: "38400"
-f | --format <bits_parity_stop>
Set format parameters for serial line as a 3 char string <bitcount><parity><stopbits>
<bitcount> maybe 7 or 8, <parity> is n (no), e (even) or o (odd), <stopbits> is 1 or 2.
Set to special console params for --boot operation. leave default for device emulation.
Default: "8N1"
Simple example: -f 7e2
Set for 7 bit even parity with 2 stop bits (--boot)
-p | --port <serial_device>
Select serial port: "COM<serial_device>:" or <serial_device> is a node like "/dev/ttyS1"
-odt | --odt
Set PDP-11 console monitor type to "ODT", for all QBUS machines
-m9312 | --m9312
Set PDP-11 console monitor type to "M9312".
This BOOT-terminator card is used on many UNIBUS machines.
-m9301 | --m9301
Older variant of M9312 BOOT terminator.
-ot | --octaltext <inputfile>
Input file is interpreted as text file containing octal address and data words.
Words made of characters '0' to '7', all other chars are interpreted as white space.
First word in each text line is the address, next words are data.
For example, the "octaltext" format allows to read SimH "deposit" scripts.
Simple example: -ot hello.txt
load memory from hello.txt
-ml | --macro11listing <inputfile>
Input file is interpreted as MACRO-11 listing
Code is parsed and DEPOSITed into memory.
Simple example: -ml hello.lst
load memory from hello.lst
-pt | --papertape <inputfile>
Input file is interpeted as "Standard Absolute Paper Tape" image.
-go | --go [<start_addr>]
Issue a "<start_addr>G" to start program execution.
The RUN/HALT switch must be in RUN position.
<start_addr> can be omitted, if code loaded by previous --ptap
Simple example: -go 1000
Start program execution at address 1000 (octal)
-gc | --gocomitted [<start_addr>]
Same as "go", but the final "G" is not sent.
Typical used if a terminal emulation is started next:
User types a single "G" to start and no output is lost
Simple example: -gc
Start program execution at address set by papertape file (if any)
-t | --tty
After operation a simple line based terminal remains active on the serial port,
so you can operate the PDP-11 over serial console immediately.
If not used after "go" you have to start a more comfortable terminal emulator
and will probably loose some output of the started program.
-ud | --usbdelay <milliseconds>
Specifies extra delay for console monitor protocol.
Some USB-RS232 adapters have large delays when polling input (for example FTDIs).
Other brands (Prolific) and non-USB RS232 ports should never need this.
Experiment for an optimum between download speed and reliability, recommended range 5-20.
Option names are case insensitive.
EXAMPLES
sudo ./pdp11monloader -p /dev/ttyS2 -b 9600 -odt --octaltext pattern.bin
The PDP-11 is connected to serial RS232 port "ttyS1" under Linux,
Baud rate is 9600, data format is "8N1" by default.
Access to serial line device requires "sudo".
It is a QBUS LSI-11 (11/03,11/23,11/73) with ODT console monitor.
The PDP-11 must have been halted to show the "@" prompt.
Data is read from file "pattern.bin", in the form of
one octal address and one or more octal 16bits words per line.
The data is loaded into the PDP-11 memory over console "Deposit" commands.
sudo ./pdp11monloader -p /dev/ttyS2 -b 9600 -odt -ml dd.lst -go 1000 -tty
Same PDP-11 and connection as before, booting a TU58 tape device:
pdp11monloader eliminates the need for a Boot ROM.
The boot loader code is parsed from MACRO-11 listing file "dd.lst"
After loading the code program execution is started at address 1000,
then program switches mode and user can operate the running PDP-11 over a
simple terminal emulation.
pdp11monloader.exe -p 1 -b 9600 -odt --macro11listing cxcpag.lst -go 220 -tty
Call when running under MS Windows, serial port COM1 is used for connection.
This time the diagnostic CXCPAG is executed at start address 000220.
pdp11monloader.exe -p 1 -b 9600 -odt -pt DEC-11-AJPB-PB.ptap -go -tty
Code is loaded from an "Absolute Papertape" image, its the
"Papertape BASIC" from 1972. Execution is started.
The program start address is read from paper tape and not given on command line.
pdp11monloader.exe -p 1 -b 4800 -fmt 7e1 -m9312 -pt DEC-11-AJPB-PB.ptap -go -tty
BASIC is run on an UNIBUS PDP-11, which executes the console monitor from a
M9312 Boot Terminator card. The DL11 serial console on this PDP-11 is jumpered
to 38400 baud, serial line format is 7 bit with even parity.
pdp11monloader.exe -p 7 -b 115200 --usbdelay 7 -m9312 -pt DEC-11-AJPB-PB.ptap -go -tty
As before. An USB-to-RS232 adapter is used, plug'n'play assigns port number COM7.
The PDP-11 console DL11 hardware is tuned for 115200 baud,
this USB dongle is FTDI and needs 7 ms extra delay.
SEE ALSO
Online docs: www.retrocmp.com/tools/pdp11monloader
Repository: https://github.com/j-hoppe/pdp11monloader
Contact: [email protected]