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 "$!".