Interface console debug monitor
 
The core board includes a small button that is connected to the CTS pin of the ACIA. When the software starts (power-up or manual reset), the software checks the level at the CTS pin of the ACIA. Depending the level, the software starts the console application (default) or starts the simple debug monitor when the button is pressed.

To use the debug monitor you connect the serial port to a VT220 or a PC that runs a terminal program, for example Hyperterm. Since the heart of the homebrew PDP-11 is a PC, that is all you need! As an example click the screenshot to see a clear picture of a Hyperterm capture after the first part of the help is displayed and the Load Memory command is started.

In the next paragraph is short "user manual" that explains all the monitor commands.
You can download the monitor source software (6802 assembler) from here: 6802mon.zip  (version #3, 11 kBytes).
Note that this file only contains the start-up software and the debug monitor.

The software is developed with a cross-assembler that runs on any PC. I use the 6800/1/2/3 assembler that I downloaded from the   Simtel archives, but there are a few more out there. Just enter as search query "assembler". Since the assembler is freeware, you can get it also from here:  as02_130.zip  (49 kBytes).


"User manual" - debug monitor commands

The monitor software supports most the commands you know (?) from those simple microprocessor kits of the Eighties.
Since this design uses the 6802 processor from Motorola you might see much resemblence with MIKBUG®.

PROCESSOR   RELATED   COMMANDS
dr display all registers
C=--HINZVC A=12 B=AF X=A17F P=A000 S=BFF8
s= set stack register
S=BFF8
c= set condition codes
C=3F
b= set accumulator B
B=AF
a= set accumulator A
A=12
x= set index register X
X=A17F
p= set program counter
P=A000
MEMORY   RELATED   COMMANDS
tm test memory
tm A000 AFFF    response (hopefully) :   pass 1: OK   pass 2: OK
cm copy memory
cm A000 A1FF A800
lm load memory
lm A000
dm display memory
dm A000<CR>     display byte from address
dm A000 p          display word from address (pointer)
dm A000 n<CR>  display n lines of 16 bytes hex from address   (n = 1..9)
dm A000 na        display n lines of 16 bytes ASCII from address   (n = 1..9)
mm modify memory
mm A000     ---   display contents and await interaction :
             <CR> = stop,   <+> = next location,   <-> = previous location
             <   > = change contents,   <'> = show ASCII
DEBUGGING   RELATED   COMMANDS
db display breakpoints
db
sb set breakpoint
sb A038
cb clear breakpoint
cb A038
ca clear all breakpoints
ca
PROGRAM   START   COMMANDS
xp start from current program counter
xp
xa start from specified address
xa A000
$! start integrated application
$!
MISCELLANEOUS   COMMANDS
xx erase screen
xx
?? print command overview help screen
??

Note that most commands do not have a carriage return ('Enter') at the end. Exceptions are in de modify memory command to terminate the interaction and two forms of the display memory command. When the last required character is entered, the command is complete and will be executed. Required data in a command can not be shortened, so even if you want to enter zero for an accumulator contents you must enter two zeroes (00). Likewise for an address, it is always 4 hexadecimal digits.
All data entry is hexadecimal, unless specified otherwise (for example the mm command).

The "$!" command makes a vectored jump to the application. Because the address for the jump is retrieved from a RAM location, you can simply store your test code in memory, modify the contents of the 2 bytes in RAM (see listing: address at "APPLIC") to the start address of your test program. To start the program you do not need to specify the program counter before you enter the "xp" command or enter the "xa <address>" command; just enter "$!".