This document, "PART II: THE DOS/BATCH DEBUGGING PROGRAM ODT," introduces and details the On-line Debugging Technique (ODT) for PDP-11 DOS/BATCH systems. ODT is a system program that assists users in debugging programs by allowing interactive control and inspection from a keyboard terminal.
Key features and functionalities of ODT include:
- Memory Examination and Modification: Users can view and alter the contents of any memory location, whether word or byte. It supports various commands for opening, closing, navigating (next/previous location), and filling blocks of memory.
- Relocation Facility: A core aspect is its ability to handle relocatable code. ODT uses 8 relocation registers to apply "relocation biases," allowing users to relate absolute memory addresses to the relative addresses found in assembly listings.
- Program Execution Control: ODT provides robust features for controlling program flow, including:
- Breakpoints: Users can set up to eight breakpoints (0-7). When a breakpoint is encountered, ODT suspends program execution, restores the original instruction (which it temporarily replaced with a trap), and allows the user to inspect program state. Breakpoints can also have "repeat counts."
- Single-Instruction Mode: Allows execution of a specified number of instructions before control returns to ODT.
- Go/Proceed Commands: Commands to start (
r;G
) or continue (r;P
) program execution.
- Data Searching: Capabilities to search specific memory areas for particular bit patterns ("Word Search") or for instructions that reference a given effective address ("Effective Address Search").
- Register Access: Users can examine and modify the contents of general registers (R0-R7) and various internal ODT registers (e.g., status, mask, constant, format, and relocation registers).
- Address and Data Interpretation: ODT can calculate offsets for relative addresses and supports the display and input of data in various formats, including Radix-50 and ASCII.
The document also covers operational procedures such as loading ODT (as a relocatable object module linked with the user program), starting and restarting ODT, its internal functional organization, and how it handles errors and terminal I/O interactions. Users are advised to have an assembly listing of their program for effective debugging with ODT.