On-line Debugging Tool: Difference between revisions

Content deleted Content added
Add xref to adb on unix
m Fix link to bitsavers.
 
(31 intermediate revisions by 27 users not shown)
Line 1:
'''OctalOn-line Debugging TechniqueTool''', or ('''ODT''',) wasis thea namefamily of several [[debugger]] programs originally developed for [[Digital Equipment Corporation|DEC]] (DEC) hardware. Various [[operating system]]s including [[OS/8]], [[RT-11]], [[RSX-11]], and [[RSTS/E]] implementedimplement ODT, as did the [[firmware]] console of all of the [[LSI-11]]-family processors including the 11/03, 11/23/24, 11/53, [[PDP-11/73|11/73]], and 11/83/84.
: ''For other expansions of "ODT", see [[ODT]].''
 
The debugger allows access to memory using [[octal]] addresses and data. Within the [[software system]]s, the debugger accesses the process's address space. DEC's line of PDP-11 processors do not implement [[virtual memory]], from an operating system perspective, but instead work in a fixed address space, which is mapped into a unified view of the program's address space, using an Active Page Register (APR). An APR can map the program's RAM in increments of 4K 16-bit words, to a maximum of 32K. In other words, an APR can map 8 segments of RAM, each limited to 4K. Because of this structure, an APR is able to map a maximum of 32K 16-bit words in RAM. In the case of RSTS/E, this usually means that a Runtime System, or RTS, maps to the upper portion of the address space and a user program resides in the lower portion of the address space. The RTS provides code to support access to the Operating System, on behalf of the user program; the RTS itself stores any of its non-static data in the address space of the user program, because the RTS is typically read-only. The operating system loads a single copy of the RTS and this is mapped to any user program that requires that RTS. The APR is set to map the RTS into the upper portion of the program's address space, in 4 KiB increments. So the BASIC Plus RTS (for the Basic+ Programming Language) typically maps 16 KiB to itself and the user program is mapped, in 4 KiB increments, in the lower 16 KiB. The RT11 RTS occupies 4 KiB, so a user program, like the RT11-based Peripheral Interchange Program (PIP), can expand to a maximum of 28 KiB.
'''Octal Debugging Technique''', or '''ODT''', was the name of several [[debugger]] programs originally developed for [[Digital Equipment Corporation|DEC]] hardware. Various [[operating system]]s including [[OS/8]], [[RT-11]], [[RSX-11]], and [[RSTS/E]] implemented ODT as did the [[firmware]] console of all of the [[LSI-11]]-family processors including the 11/03, 11/23/24, 11/53, [[PDP-11/73|11/73]], and 11/83/84.
 
ODT can be used to "patch" binary modules, like an RTS, without requiring the re-compilation of the binary's source.
The debugger allowed access to memory using [[octal]] addresses and data. Within the [[software system]]s, the debugger accessed the process's [[virtual memory]]. The firmware console implementation accessed [[physical memory]].
 
The firmware console implementation accesses [[physical memory]].
ODT is a non-symbolic debugger and implements similar functionality to [[Absolute_Debugger|adb]] on [[Unix]] systems.
 
ODT is a non-symbolic debugger and implements similar functionality to [[Absolute_Debugger|adbAdvanced Debugger]] (adb) on [[Unix]] systems.
== Console ODT==
Console ODT<ref>p192-202 PDP-11 Processor Handbook: pdp11/04/24/34a/44/70, Digital, 1981</ref> replaced the lights and switches console of many of the eralier processors.
Access to console ODT is obtained either from power up (with appropriate power up mode selected), by the execution of a HALT instruction in kernel mode, or by use of the front panel halt switch or button.
 
===Console Commands =ODT==
Console ODT<ref>p192-202 ''PDP-11 Processor Handbook: pdp11/04/24/34a/44/70'', Digital, 1981</ref> replacedreplaces the "lights and switches" console of many of the eralierearlier processors.
 
Access to console ODT is obtained either from power up (with appropriate power up mode selected), by the execution of a HALT instruction in kernel mode, or by use of the front panel halt switch or button.
Console ODT commands are as follows:
 
<CR> Close currently open ___location or register
<LF> Close currently open ___location or register and open next
P Proceed, execute next instruction with no imlied reset
If the halt switch is down this is allows for single steppinng
<addr>G Load PC with <addr>, reset and commence execution at address
Rn/ or $n/ Open register n
RS/ or $S/ Open PSW
 
=== Example ===
If console ODT encounters a bus timeout it displays ?<CR><LF>
=== Example ===
@1000/ xxxxxx 112737<LF>
001002 xxxxxx 101<LF>
Line 35 ⟶ 24:
 
This deposits the program
<syntaxhighlight lang="nasm">
 
MOVB 'A', @#177666177566 ; Move 'A' into console transmit register
JMP @#1000 ; Jump back to start
</syntaxhighlight>
 
The deposit to the PC [Program Counter], sets the PC to the start of the program and the deposit to the PSW [Program Status Word] locks out interrupts.
 
The effect of this will be to write a stream of "A" to the console. As there is no check for transmitter ready, it is highly probable that a large number of garbage characters will be displayed.
 
==RSX-11M-Plus ODT==
The RSX-11M-Plus ODT<ref>''IAS/RSX-11 ODT Reference Manual'', Order Number AA-M507A-TC, Digital, 1982</ref> is essentially a superset of all other ODT implementations.
 
ODT is implemented as code that is linked with a task using the Task Builder /DA switch.
Line 58 ⟶ 47:
The underscore is the standard ODT prompt.
 
It should be remembered that addressesAddresses in the ODT debugger are 16 -bit virtual addresses in the mode in which ODT is currently operating, not the physical addresses used with console ODT.
 
<!--==OS/8 [[XDT]] -- ExecutiveOctal Debugging Technique -->==
===Commands===
The [[PDP-8]]'s [[OS/8]] operating system's ODT command<ref>Reference manual DEC-D8-COCO-D, ODT-8, Dec. 1967 {{cite web
{| class="wikitable"
|url=http://www.bitsavers.org/www.computer.museum.uq.edu.au/pdf/DEC-D8-COCO-D%20ODT-8.pdf
|-
|title=DEC-D8-COCO-D ODT.pdf |website=BitSavers.org}}</ref> invokes its ''Octal Debugging Technique'' tool.
! Command
! Effect
|-
| .
| Current ___location indicator i.e. address of last ___location opened
|-
| <CR>
| Closes current ___location/register
|-
| k<CR>
| Deposit the value k in the currently open ___location/register and closes it
|-
| <LF>
| Closes current ___location/register and opens next
|-
| k<LF>
| Deposit the value k in the currently open ___location/register and open next
|-
|^
| Closes currently open ___location and opens immediatly preceeding
|-
| k^
| Deposits the value k in the currently open ___location and opens immediatly preceeding
|-
| _ or k_
| Opens the ___location calculated by using the contents of the present ___location as a PC relative offset if k is specified deposits the value k in the present ___location before opening the new ___location
|-
| @ or k@
| As _ except using the contents of the current ___location as an absolute address
|-
| > or k>
| Treats the low order byte of the currenly open ___location as a branch offset, calculates the destination address of the branch and opens that ___location. If k specified stores the value k in the currently open ___location before opening the new ___location
|-
| < or k<
| If the currently opened ___location was opened using the commands _ or > or @ closes the currently open ___location and reopens the ___location most recently opened using <lf>, ^, or /.
|}
 
As with the subsequent PDP-11 ODT programs, it is non-symbolic, and it can examine or modify memory, and also set breakpoints.
== See also ==
 
* [[Dynamic debugging technique|Dynamic Debugging Technique]]
== See also ==
<!-- [[XDT]] -- Executive Debugging Technique -->
* [[Dynamic debugging technique|Dynamic Debugging Technique]] (DDT)
* [[Executive Debugging Technique]] (XDT)<!-- link with possibilities -->
 
==References==
{{Reflist}}
 
{{Digital Equipment Corporation}}
{{comp-sci-stub}}
 
[[Category:Debuggers]]
[[Category:DECDigital OperatingEquipment SystemsCorporation]]