mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
115 lines
4.0 KiB
TeX
115 lines
4.0 KiB
TeX
D I G I T A L R E S E A R C H
|
||
|
||
P. O. Box 579, Pacific Grove, CA 93950, (408) 649-3896
|
||
|
||
|
||
*** MP/M 1.0 ***
|
||
|
||
Application Note #05
|
||
|
||
|
||
Debugging an XIOS or a Resident System Process
|
||
----------------------------------------------
|
||
|
||
|
||
An XIOS or a resident system process can be debugged using
|
||
DDT or SID running under CP/M 1.4 or 2.0. The debugging
|
||
technique is outlined in the following steps:
|
||
|
||
1.) Using GENSYS running under either CP/M or MP/M generate
|
||
a MPM.SYS file which specifies the top of memory as 'C0'H.
|
||
|
||
...
|
||
Top page of memory = C0
|
||
...
|
||
|
||
Also while executing GENSYS specify the breakpoint
|
||
restart number as that used by the CP/M SID or DDT which you
|
||
will be executing. This restart is usually #7.
|
||
|
||
...
|
||
Breakpoint RST # = 7
|
||
...
|
||
|
||
2.) If a resident system process is being debugged make
|
||
certain that it is selected for inclusion in MPM.SYS.
|
||
|
||
3.) Using CP/M 1.4 or 2.0, load the MPMLDR.COM file into
|
||
memory.
|
||
|
||
A>DDT MPMLDR.COM
|
||
DDT VERS 2.0
|
||
NEXT PC
|
||
1A00 0100
|
||
|
||
4.) Place a 'B' character into the second position of
|
||
default FCB. This operation can be done with the 'I' command:
|
||
|
||
-IB
|
||
|
||
5.) Execute the MPMLDR.COM program by entering a 'G'
|
||
command:
|
||
|
||
-G
|
||
|
||
6.) At point the MP/M loader will load the MP/M operating
|
||
system into memory, displaying a memory map.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
MP/M 1.0 Application Note #05 (Cont'd)
|
||
|
||
|
||
7.) If you are debugging an XIOS, note the address of the
|
||
XIOS.SPR memory segment. If you are debugging a resident system
|
||
process, note the address of the resident system process. This
|
||
address is the relative 0000H address of the code being debugged.
|
||
You must also note the address of SYSTEM.DAT.
|
||
|
||
8.) Using the 'S' command, set the byte at SYSTEM.DAT + 2
|
||
to the restart number which you want the MP/M debugger to use.
|
||
Do not select the same restart as that being used by the CP/M
|
||
debugger.
|
||
|
||
...
|
||
Memory Segment Table:
|
||
SYSTEM DAT C000H 0100H
|
||
...
|
||
|
||
-SC002
|
||
C002 07 05
|
||
|
||
9.) Using the 'X' command, determine the MP/M beginning
|
||
execution address. The address is the first location past
|
||
the current program counter.
|
||
|
||
-X
|
||
....................... P = 08CD .....
|
||
|
||
10.) Begin execution of MP/M using the 'G' command, specifying
|
||
any breakpoints which you need in your code. Actual memory address
|
||
can be determined using the 'H' command to add the code segment
|
||
base address given in the memory map to the relative displacement
|
||
address in your XIOS or resident system process listing.
|
||
|
||
The following example shows how to set a breakpoint to
|
||
debug an XIOS list subroutine:
|
||
|
||
Given the following memory map-
|
||
|
||
XIOS SPR B800H 0500H
|
||
|
||
Begin MP/M execution with the following breakpoint-
|
||
|
||
-G8CE,B80F
|
||
|
||
11.) At this point you have MP/M running with CP/M and its
|
||
debugger also in memory. Since interrupts are left enabled during
|
||
operation of the CP/M debugger when a breakpoint is reached, care
|
||
must be taken to ensure that interrupt driven code does not
|
||
execute through the point at which you have broken.
|
||
|
||
|