mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-27 02:14:19 +00:00
Upload
Digital Research
This commit is contained in:
115
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/14/apnote05.tex
Normal file
115
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/14/apnote05.tex
Normal file
@@ -0,0 +1,115 @@
|
||||
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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user