mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-12-11 15:53:01 +00:00
Upload
Digital Research
This commit is contained in:
614
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug30.tex
Normal file
614
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug30.tex
Normal file
@@ -0,0 +1,614 @@
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 85
|
||||
.HE MP/M User's Guide
|
||||
.FT (All Information Herein is Proprietary to Digital Research.)
|
||||
.sp 2
|
||||
3. MP/M ALTERATION GUIDE
|
||||
.sp
|
||||
.pp
|
||||
3.1 Introduction
|
||||
.pp
|
||||
The standard MP/M system assumes operation on an Intel MDS-800
|
||||
microcomputer development system, but is designed so that the user
|
||||
can alter a specific set of subroutines which define the hardware
|
||||
operating environment. In this way, the user can produce a diskette
|
||||
which operates with any IBM-3741 format compatible diskette subsystem
|
||||
and other peripheral devices.
|
||||
.pp
|
||||
Although standard MP/M is configured for single density
|
||||
floppy disks, field-alteration features allow adaptation to
|
||||
a wide variety of disk subsystems from single drive minidisks
|
||||
through high-capacity "hard disk" systems.
|
||||
.pp
|
||||
In order to achieve device independence, MP/M is distinctly separated
|
||||
into an XIOS module which is hardware environment dependent and
|
||||
several other modules which are not dependent upon the hardware
|
||||
configuration.
|
||||
.pp
|
||||
The user can rewrite the distribution version of the
|
||||
MP/M XIOS to provide a new XIOS which provides a customized interface
|
||||
between the remaining MP/M modules and the user's own hardware
|
||||
system. The user can also rewrite the distribution version of the
|
||||
LDRBIOS which is used to load the MP/M system from disk.
|
||||
.pp
|
||||
The purpose of this section is to provide the following step-by-step
|
||||
procedure for writing both your LDRBIOS and new XIOS for MP/M:
|
||||
.sp 2
|
||||
(1) Implement CP/M 2.0 on the target computer
|
||||
.pp
|
||||
To simplify the MP/M adaptation process, we assume (and STRONGLY
|
||||
recommend) that CP/M 2.0
|
||||
has already been implemented on the target MP/M machine.
|
||||
If this is not the case it will be necessary for the user to
|
||||
implement the CP/M 2.0 BIOS as described in the Digital Research
|
||||
document titled "CP/M 2.0 Alteration Guide" in addition to the
|
||||
MP/M XIOS.
|
||||
The reason that both the BIOS and XIOS have to be implemented is
|
||||
that the MP/M loader uses the CP/M 2.0 BIOS to load and relocate
|
||||
MP/M. Once loaded, MP/M uses the XIOS and not the BIOS.
|
||||
The CP/M 2.0 BIOS used by the MP/M loader is called the LDRBIOS.
|
||||
.pp
|
||||
Another good reason for implementing CP/M 2.0 on the target MP/M
|
||||
machine is that debugging your XIOS is greatly simplified by
|
||||
bringing up MP/M while running SID or DDT under a CP/M 2.0 system.
|
||||
.sp 2
|
||||
(2) Prepare your custom MPMLDR by writing a LDRBIOS
|
||||
.pp
|
||||
Study the BIOS given in the "CP/M 2.0 Alteration Guide"
|
||||
and write a version which has a ORG of 1700H.
|
||||
Call this new BIOS by the
|
||||
name LDRBIOS (loader BIOS). Implement only the primitive disk
|
||||
read operations on a single drive, and console output
|
||||
functions.
|
||||
.pp
|
||||
The first LDRBIOS call made by the MPMLDR is SELDSK: select
|
||||
disk. If there are devices which require initialization a
|
||||
call to the LDRBIOS cold start or other initialization code
|
||||
should be placed at the beginning of the SELDSK handler.
|
||||
.pp
|
||||
Note: The MPMLDR uses 4000H - 6FFFH as a buffer area when
|
||||
loading and relocating the MPM.SYS file.
|
||||
.pp
|
||||
Test LDRBIOS completely to ensure that it properly performs
|
||||
console character output and disk reads. Be especially
|
||||
careful to ensure that no disk write operations occur accidently
|
||||
during read operations, and check that the proper track and sectors
|
||||
are addressed on all reads. Failure to make these checks
|
||||
may cause destruction of the initialized MP/M system after it is patched.
|
||||
.pp
|
||||
The following steps can be used to integrate a custom LDRBIOS
|
||||
into the MPMLDR.COM:
|
||||
.pp
|
||||
A.) Obtain access to CP/M version 1.4 or 2.0 and prepare the
|
||||
LDRBIOS.HEX file.
|
||||
.pp
|
||||
B.) Read the MPMLDR.COM file into memory using either DDT
|
||||
or SID.
|
||||
.li
|
||||
|
||||
A>DDT MPMLDR.COM
|
||||
DDT VERS 2.0
|
||||
NEXT PC
|
||||
1A00 0100
|
||||
.ad
|
||||
.pp
|
||||
C.) Using the input command ('I') specify that the LDRBIOS.HEX
|
||||
file is to be read in and then read ('R') in the file. The effect
|
||||
of this operation is to overlay the BIOS portion of the MP/M
|
||||
loader.
|
||||
.li
|
||||
|
||||
-ILDRBIOS.HEX
|
||||
-R
|
||||
NEXT PC
|
||||
1A00 0000
|
||||
.ad
|
||||
.pp
|
||||
D.) Return to the CP/M console command processor (CCP) by
|
||||
executing a jump to location zero.
|
||||
.li
|
||||
|
||||
-G0
|
||||
|
||||
.ad
|
||||
.pp
|
||||
E.) Write the updated memory image onto a disk file using
|
||||
the CP/M 'SAVE' command. The 'X' placed in front of the file
|
||||
name is used simply to designate an experimental version, preserving
|
||||
the orginal.
|
||||
.li
|
||||
|
||||
A>SAVE 26 XMPMLDR.COM
|
||||
.ad
|
||||
.pp
|
||||
F.) Test XMPMLDR.COM and then rename it to MPMLDR.COM.
|
||||
.sp 2
|
||||
(3) Prepare your custom XIOS
|
||||
.pp
|
||||
If MP/M is being tailored to your computer system for the first
|
||||
time,
|
||||
the new XIOS requires some relatively simple software development and
|
||||
testing. The standard XIOS is listed in APPENDIX I, and can be used as
|
||||
a model for the customized package.
|
||||
.pp
|
||||
The XIOS entry points, including both basic and extended, are described
|
||||
in sections 3.2 and 3.3. These sections along with APPENDIX I
|
||||
provides you with the necessary information to write your XIOS.
|
||||
We suggest that your initial implementation of an XIOS utilize polled
|
||||
I/O without any interrupts. The system will run without even a clock
|
||||
interrupt.
|
||||
The origin of your XIOS should be 0000H. Note the two equates needed
|
||||
to access the dispatcher and XDOS from the XIOS:
|
||||
.li
|
||||
|
||||
ORG 0000H
|
||||
PDISP EQU $-3
|
||||
XDOS EQU PDISP-3
|
||||
.ad
|
||||
.pp
|
||||
The procedure to prepare an XIOS.SPR file from your customized XIOS
|
||||
is as follows:
|
||||
.pp
|
||||
A.) Assemble your XIOS.ASM and then rename the XIOS.HEX file to
|
||||
XIOS.HX0.
|
||||
.pp
|
||||
B.) Assemble your XIOS.ASM again specifying the +R option which
|
||||
offsets the ORG statements by 100H bytes. Or, edit your XIOS.ASM
|
||||
and change the initial ORG 000H to an ORG 100H and assemble it again.
|
||||
.pp
|
||||
C.) Use PIP to concatenate your two HEX files:
|
||||
.li
|
||||
|
||||
A>PIP XIOS.HEX=XIOS.HX0,XIOS.HEX
|
||||
.ad
|
||||
.pp
|
||||
D.) Run the GENMOD program to produce the XIOS.SPR file from the
|
||||
concatenated HEX files.
|
||||
.li
|
||||
|
||||
A>GENMOD XIOS.HEX XIOS.SPR
|
||||
|
||||
.ad
|
||||
.cp 15
|
||||
.ce
|
||||
*** Warning ***
|
||||
.pp
|
||||
Make certain that your XIOS.ASM file contains a defined
|
||||
byte of zero at the end. This is especially critical if
|
||||
your XIOS.ASM file ends with a defined storage. The reason
|
||||
for this requirement is that there are no HEX file records
|
||||
produced for defined storge (DS) statements. Thus, the
|
||||
output HEX file is misleading because it does not identify
|
||||
the true lenth of your XIOS. The following example
|
||||
illustrates a properly terminated XIOS:
|
||||
.li
|
||||
|
||||
begdat equ $
|
||||
dirbuf: ds 128
|
||||
alv0: ds 31
|
||||
csv0: ds 16
|
||||
|
||||
db 0 ; force out hex record at end
|
||||
end
|
||||
.ad
|
||||
.pp
|
||||
Note that this same technique must be applied to any
|
||||
other PRL or RSP programs that you prepare.
|
||||
.sp 2
|
||||
(4) Debug your XIOS
|
||||
.pp
|
||||
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:
|
||||
.pp
|
||||
A.) Determine the amount of memory which is available to MP/M
|
||||
with the debugger and the CP/M operating system resident. This
|
||||
can be done by loading the debugger and then listing the jump
|
||||
instruction at location 0005H. This jump is to the base of
|
||||
the debugger.
|
||||
.li
|
||||
|
||||
A>DDT
|
||||
DDT VERS 2.0
|
||||
|
||||
-L5
|
||||
|
||||
0005 JMP D800
|
||||
.ad
|
||||
.pp
|
||||
B.) Using GENSYS running under CP/M, generate
|
||||
a MPM.SYS file which specifies the top of memory determined by
|
||||
the previous step, allowing at least 256 bytes for a patch area.
|
||||
.li
|
||||
|
||||
...
|
||||
Top page of memory = D6
|
||||
...
|
||||
.ad
|
||||
.pp
|
||||
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.
|
||||
.li
|
||||
|
||||
...
|
||||
Breakpoint RST # = 7
|
||||
...
|
||||
.ad
|
||||
.pp
|
||||
C.) If a resident system process is being debugged make
|
||||
certain that it is selected for inclusion in MPM.SYS.
|
||||
.pp
|
||||
D.) Using CP/M 1.4 or 2.0, load the MPMLDR.COM file into
|
||||
memory.
|
||||
.li
|
||||
|
||||
A>DDT MPMLDR.COM
|
||||
DDT VERS 2.0
|
||||
NEXT PC
|
||||
1A00 0100
|
||||
.ad
|
||||
.pp
|
||||
E.) Place a 'B' character into the second position of
|
||||
default FCB. This operation can be done with the 'I' command:
|
||||
.li
|
||||
|
||||
-IB
|
||||
.ad
|
||||
.pp
|
||||
F.) Execute the MPMLDR.COM program by entering a 'G'
|
||||
command:
|
||||
.li
|
||||
|
||||
-G
|
||||
.ad
|
||||
.pp
|
||||
G.) At point the MP/M loader will load the MP/M operating
|
||||
system into memory, displaying a memory map.
|
||||
.pp
|
||||
H.) 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.
|
||||
.pp
|
||||
I.) 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.
|
||||
.li
|
||||
|
||||
...
|
||||
Memory Segment Table:
|
||||
SYSTEM DAT D600H 0100H
|
||||
...
|
||||
|
||||
-SD602
|
||||
D602 07 05
|
||||
.ad
|
||||
.pp
|
||||
J.) Using the 'X' command, determine the MP/M beginning
|
||||
execution address. The address is the first location past
|
||||
the current program counter.
|
||||
.li
|
||||
|
||||
-X
|
||||
....................... P = 0A93 .....
|
||||
.ad
|
||||
.pp
|
||||
K.) 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.
|
||||
.pp
|
||||
The following example shows how to set a breakpoint to
|
||||
debug an XIOS list subroutine given the memory map:
|
||||
.li
|
||||
|
||||
...
|
||||
XIOS SPR CD00H 0500H
|
||||
|
||||
|
||||
-GA94,CD0F
|
||||
.ad
|
||||
.pp
|
||||
L.) 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, care
|
||||
must be taken to ensure that interrupt driven code does not
|
||||
execute through a point at which you have broken.
|
||||
.pp
|
||||
Since the CP/M debugger operates with interrupts
|
||||
left enabled it is a somewhat difficult task to debug an interrupt
|
||||
driven console handler. This problem can be approached by leaving
|
||||
console #0 in a polled mode while debugging the other consoles
|
||||
in an interrupt driven mode. Once this is done very little, if any,
|
||||
debugging would be required to adapt the interrupt driven code from
|
||||
another console to console #0. It is further recommended that you
|
||||
maintain a debug version of your XIOS which has polled I/O for
|
||||
console #0.
|
||||
Otherwise it will not be possible to run the CP/M debugger underneath
|
||||
the MP/M system because the CP/M debugger will not be able to get
|
||||
any console input, as it will all go to the MP/M interrupt driven
|
||||
console #0 handler.
|
||||
.sp 2
|
||||
(5) Directly booting MP/M from a cold start
|
||||
.pp
|
||||
In systems
|
||||
where MP/M is to be booted directly at cold start rather than loaded
|
||||
and run as a transient program under CP/M, the customized MPMLDR.COM
|
||||
file and cold start loader can be placed on the first two tracks of a diskette.
|
||||
If a CP/M SYSGEN.COM program is available it can
|
||||
be used to write the MPMLDR.COM file on the first two tracks.
|
||||
If a SYSGEN.COM program is not available, or if SYSGEN.COM will not
|
||||
work because a different media such as a mini-diskette or "hard" disk
|
||||
is to be used, the user must write a simple memory loader,
|
||||
called GETSYS, which brings the MP/M loader into memory and a
|
||||
program called PUTSYS, which places the MPMLDR on the first two tracks
|
||||
of a diskette.
|
||||
.pp
|
||||
Either the SID or DDT debugger can be used in place of writing a
|
||||
GETSYS program as is shown in the following example which also
|
||||
uses SYSGEN in place of PUTSYS.
|
||||
Sample skeletal GETSYS and PUTSYS programs are described
|
||||
later in this section (for a more detailed description of
|
||||
GETSYS and PUTSYS see the "CP/M 2.0 Alteration Guide").
|
||||
.pp
|
||||
In order to make the MP/M system load and run
|
||||
automatically, the user must also supply a cold start loader, similar
|
||||
to the one described in the "CP/M 2.0 Alteration Guide".
|
||||
The purpose of the cold start loader is to load the MP/M loader into
|
||||
memory from the first two tracks of the diskette.
|
||||
The CP/M 2.0 cold start loader must be modified in the following
|
||||
manner: the load address must be changed to 0100H and the execution
|
||||
address must also be changed to 0100H.
|
||||
.pp
|
||||
The following techniques are specifically for the MDS-800 which has
|
||||
a boot ROM that loads the first track into location 3000H. However,
|
||||
the steps shown can be applied in general to any hardware.
|
||||
.pp
|
||||
If a SYSGEN program is available, the following steps can be used to
|
||||
prepare a diskette that cold starts MP/M:
|
||||
.pp
|
||||
A.) Prepare the MPMLDR.COM file by integrating your custom
|
||||
LDRBIOS as described earlier in this section. Test the MPMLDR.COM
|
||||
and verify that it operates properly.
|
||||
.pp
|
||||
B.) Execute either DDT or SID.
|
||||
.li
|
||||
|
||||
A>DDT
|
||||
DDT VERS 2.0
|
||||
.ad
|
||||
.pp
|
||||
C.) Using the input command ('I') specify that the MPMLDR.COM
|
||||
file is to be read in and then read ('R') in the file with an
|
||||
offset of 880H bytes.
|
||||
.li
|
||||
|
||||
-IMPMLDR.COM
|
||||
-R880
|
||||
NEXT PC
|
||||
2480 0100
|
||||
.ad
|
||||
.pp
|
||||
D.) Using the 'I' command specify that the BOOT.HEX file is to
|
||||
be read in and then read in the file with an offset that will load
|
||||
the boot into memory at 900H. The 'H' command can be used to
|
||||
calculate the offset.
|
||||
.li
|
||||
|
||||
-H900 3000
|
||||
3900 D900
|
||||
|
||||
-IBOOT.HEX
|
||||
-RD900
|
||||
NEXT PC
|
||||
2480 0000
|
||||
.ad
|
||||
.pp
|
||||
E.) Return to the CP/M console command processor (CCP) by
|
||||
jumping to location zero.
|
||||
.li
|
||||
|
||||
-G0
|
||||
.ad
|
||||
.pp
|
||||
F.) Use the SYSGEN program to write the new cold start loader
|
||||
onto the first two tracks of the diskette.
|
||||
.li
|
||||
|
||||
A>SYSGEN
|
||||
SYSGEN VER 2.0
|
||||
SOURCE DRIVE NAME (OR RETURN TO SKIP)<cr>
|
||||
DESTINATION DRIVE NAME (OR RETURN TO REBOOT)B
|
||||
DESTINATION ON B, THEN TYPE RETURN<cr>
|
||||
FUNCTION COMPLETE
|
||||
.ad
|
||||
.sp 2
|
||||
If a SYSGEN program is not available then the following steps can
|
||||
be used to prepare a diskette that cold starts MP/M:
|
||||
.pp
|
||||
A.) Write a GETSYS program which reads the
|
||||
custom MPMLDR.COM file into location 3380H and the cold start
|
||||
loader (or boot program) into location 3300H.
|
||||
Code GETSYS so that it starts
|
||||
at location 100H (base of the TPA).
|
||||
.pp
|
||||
As in the previous example, note that SID or DDT can be used to
|
||||
perform this function instead of writing a GETSYS program.
|
||||
.pp
|
||||
B.) Run the GETSYS program using an initialized MP/M diskette to see
|
||||
if GETSYS loads the MP/M loader starting at 3380H (the operating
|
||||
system actually
|
||||
starts 128 bytes later at 3400H).
|
||||
.pp
|
||||
C.) Write the PUTSYS program which writes
|
||||
memory starting at 3380H back onto the first two tracks of the
|
||||
diskette. The PUTSYS program should be located at 200H.
|
||||
.pp
|
||||
D.) Test the PUTSYS program using a blank uninitialized diskette by
|
||||
writing a portion of memory to the first two tracks; clear memory
|
||||
and read it back. Test PUTSYS completely, since this program will
|
||||
be used to alter the MP/M system diskette.
|
||||
.pp
|
||||
E.) Use PUTSYS to place the MP/M loader and cold start loader
|
||||
onto the first two tracks of a blank diskette.
|
||||
.sp 2
|
||||
.ce
|
||||
SAMPLE PUTSYS PROGRAM
|
||||
.pp
|
||||
The following program provides a framework for the PUTSYS program.
|
||||
The WRITESEC subroutine must be inserted by the user to write the
|
||||
specific sectors.
|
||||
.cp 52
|
||||
.li
|
||||
|
||||
|
||||
; PUTSYS PROGRAM - WRITE TRACKS 0 AND 1 FROM MEMORY AT 3380H
|
||||
; REGISTER USE
|
||||
; A (SCRATCH REGISTER)
|
||||
; B TRACK COUNT (0, 1)
|
||||
; C SECTOR COUNT (1,2,...,26)
|
||||
; DE (SCRATCH REGISTER PAIR)
|
||||
; HL LOAD ADDRESS
|
||||
; SP SET TO STACK ADDRESS
|
||||
;
|
||||
START: LXI SP,3380H ;SET STACK POINTER TO SCRATCH AREA
|
||||
LXI H, 3380H ;SET BASE LOAD ADDRESS
|
||||
MVI B, 0 ;START WITH TRACK 0
|
||||
WRTRK: ;WRITE NEXT TRACK (INITIALLY 0)
|
||||
MVI C,1 ;WRITE STARTING WITH SECTOR 1
|
||||
WRSEC: ;WRITE NEXT SECTOR
|
||||
CALL WRITESEC ;USER-SUPPLIED SUBROUTINE
|
||||
LXI D,128 ;MOVE LOAD ADDRESS TO NEXT 1/2 PAGE
|
||||
DAD D ;HL = HL + 128
|
||||
INR C ;SECTOR = SECTOR + 1
|
||||
MOV A,C ;CHECK FOR END OF TRACK
|
||||
CPI 27
|
||||
JC WRSEC ;CARRY GENERATED IF SECTOR < 27
|
||||
;
|
||||
; ARRIVE HERE AT END OF TRACK, MOVE TO NEXT TRACK
|
||||
INR B
|
||||
MOV A,B ;TEST FOR LAST TRACK
|
||||
CPI 2
|
||||
JC WRTRK ;CARRY GENERATED IF TRACK < 2
|
||||
;
|
||||
; ARRIVE HERE AT END OF LOAD, HALT FOR NOW
|
||||
HLT
|
||||
;
|
||||
; USER-SUPPLIED SUBROUTINE TO WRITE THE DISK
|
||||
WRITESEC:
|
||||
; ENTER WITH TRACK NUMBER IN REGISTER B,
|
||||
; SECTOR NUMBER IN REGISTER C, AND
|
||||
; ADDRESS TO FILL IN HL
|
||||
;
|
||||
PUSH B ;SAVE B AND C REGISTERS
|
||||
PUSH H ;SAVE HL REGISTERS
|
||||
..........................................
|
||||
perform disk write at this point, branch to
|
||||
|
||||
label START if an error occurs
|
||||
..........................................
|
||||
POP H ;RECOVER HL
|
||||
POP B ;RECOVER B AND C REGISTERS
|
||||
RET ;BACK TO MAIN PROGRAM
|
||||
|
||||
END START
|
||||
.ad
|
||||
.bp
|
||||
.ce
|
||||
DIGITAL RESEARCH COPYRIGHT
|
||||
.pp
|
||||
Read your MP/M Licensing Agreement; it specifies your legal
|
||||
responsibilities when copying the MP/M system. Place the copyright notice
|
||||
.sp
|
||||
.ce 2
|
||||
Copyright (c), 1980
|
||||
Digital Research
|
||||
.sp
|
||||
on each copy which is made of your customized MP/M diskette.
|
||||
.sp 2
|
||||
.ce
|
||||
DISKETTE ORGANIZATION
|
||||
.sp
|
||||
.pp
|
||||
The sector allocation for the standard distribution version of MP/M is
|
||||
given here for reference purposes. The first sector (see table on the following page)
|
||||
contains an optional software boot section. Disk controllers are often
|
||||
set up to bring track 0, sector 1 into memory at a specific location
|
||||
(often location 0000H). The program in this sector, called BOOT, has
|
||||
the responsibility of bringing the remaining sectors into memory
|
||||
starting at location 0100H. If your controller does not have a
|
||||
built-in sector load, you can ignore the program in track 0, sector 1,
|
||||
and begin the load from track 0 sector 2 to location 0100H.
|
||||
.pp
|
||||
As an example, the Intel MDS-800 hardware cold start loader brings
|
||||
track 0, sector 1 into absolute address 3000H.
|
||||
Upon loading this sector, control transfers to location 3000H, where
|
||||
the bootstrap operation commences
|
||||
by loading the remainder of track 0, and all of track 1 into
|
||||
memory, starting at 0100H. The user should note that this bootstrap loader
|
||||
is of little use in a non-MDS environment, although it is useful to
|
||||
examine it since some of the boot actions will have to be duplicated in
|
||||
your cold start loader.
|
||||
.bp
|
||||
.li
|
||||
Track# Sector# Page# Memory Address MP/M Module name
|
||||
00 01 (boot address) Cold Start Loader
|
||||
00 02 00 0100H MPMLDR
|
||||
" 03 " 0180H "
|
||||
" 04 01 0200H "
|
||||
" 05 " 0280H "
|
||||
" 06 02 0300H "
|
||||
" 07 " 0380H "
|
||||
" 08 03 0400H "
|
||||
" 09 " 0480H "
|
||||
" 10 04 0500H "
|
||||
" 11 " 0580H "
|
||||
" 12 05 0600H "
|
||||
" 13 " 0680H "
|
||||
" 14 06 0700H "
|
||||
" 15 " 0780H "
|
||||
" 16 07 0800H "
|
||||
" 17 " 0880H "
|
||||
" 18 08 0900H "
|
||||
" 19 " 0980H "
|
||||
" 20 09 0A00H "
|
||||
" 21 " 0A80H "
|
||||
" 22 10 0B00H "
|
||||
" 23 " 0B80H "
|
||||
" 24 11 0C00H "
|
||||
00 25 " 0C80H MPMLDR
|
||||
00 26 12 0D00H LDRBDOS
|
||||
01 01 " 0D80H "
|
||||
" 02 13 0E00H "
|
||||
" 03 " 0E80H "
|
||||
" 04 14 0F00H "
|
||||
" 05 " 0F80H "
|
||||
" 06 15 1000H "
|
||||
" 07 " 1080H "
|
||||
" 08 16 1100H "
|
||||
" 09 " 1180H "
|
||||
" 10 17 1200H "
|
||||
" 11 " 1280H "
|
||||
" 12 18 1300H "
|
||||
" 13 " 1380H "
|
||||
" 14 19 1400H "
|
||||
" 15 " 1480H "
|
||||
" 16 20 1500H "
|
||||
" 17 " 1580H "
|
||||
" 18 21 1600H "
|
||||
01 19 " 1680H LDRBDOS
|
||||
01 20 22 1700H LDRBIOS
|
||||
" 21 " 1780H "
|
||||
" 22 23 1800H "
|
||||
" 23 " 1880H "
|
||||
" 24 24 1900H "
|
||||
" 25 " 1980H "
|
||||
01 26 25 1A00H LDRBIOS
|
||||
.br
|
||||
|
||||
276
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug31.tex
Normal file
276
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug31.tex
Normal file
@@ -0,0 +1,276 @@
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 96
|
||||
.HE MP/M User's Guide
|
||||
.FT (All Information Herein is Proprietary to Digital Research.)
|
||||
.sp
|
||||
.pp
|
||||
3.2 Basic I/O System Entry Points
|
||||
.pp
|
||||
The entry points into the BIOS from the cold start loader and BDOS are
|
||||
detailed below. Entry to the BIOS is through a "jump vector" located at
|
||||
the base of the BIOS, as shown below (see Appendix I as well).
|
||||
The jump vector is a sequence of 17 jump
|
||||
instructions which send program control to the individual BIOS
|
||||
subroutines. The BIOS subroutines may be empty for certain functions
|
||||
(i.e., they may contain a single RET operation) during regeneration of
|
||||
MP/M, but the entries must be present in the jump vector.
|
||||
The extended I/O system entry points (XIOS) immediately follow the
|
||||
last BIOS entry point.
|
||||
.pp
|
||||
The jump vector takes the form shown below, where the
|
||||
individual jump addresses are given to the left:
|
||||
.li
|
||||
|
||||
BIOS+00H JMP BOOT ; COLD START
|
||||
BIOS+03H JMP WBOOT ; WARM START
|
||||
BIOS+06H JMP CONST ; CHECK FOR CONSOLE CHAR READY
|
||||
BIOS+09H JMP CONIN ; READ CONSOLE CHARACTER IN
|
||||
BIOS+0CH JMP CONOUT ; WRITE CONSOLE CHARACTER OUT
|
||||
BIOS+0FH JMP LIST ; WRITE LISTING CHARACTER OUT
|
||||
BIOS+12H JMP PUNCH ; WRITE CHARACTER TO PUNCH DEVICE
|
||||
BIOS+15H JMP READER ; READ READER DEVICE
|
||||
BIOS+18H JMP HOME ; MOVE TO TRACK 00
|
||||
BIOS+1BH JMP SELDSK ; SELECT DISK DRIVE
|
||||
BIOS+1EH JMP SETTRK ; SET TRACK NUMBER
|
||||
BIOS+21H JMP SETSEC ; SET SECTOR NUMBER
|
||||
BIOS+24H JMP SETDMA ; SET DMA ADDRESS
|
||||
BIOS+27H JMP READ ; READ SELECTED SECTOR
|
||||
BIOS+2AH JMP WRITE ; WRITE SELECTED SECTOR
|
||||
BIOS+2DH JMP LISTST ; RETURN LIST STATUS
|
||||
BIOS+30H JMP SECTRAN ; SECTOR TRANSLATE SUBROUTINE
|
||||
|
||||
.pp
|
||||
Each jump address corresponds to a particular subroutine which performs
|
||||
the specific function, as outlined below. There are three major
|
||||
divisions in the jump table: the system (re)initialization which
|
||||
results from calls on BOOT and WBOOT, simple character I/O performed by
|
||||
calls on CONST, CONIN, CONOUT, LIST, and LISTST, and diskette
|
||||
I/O performed by calls on HOME, SELDSK, SETTRK, SETSEC, SETDMA, READ,
|
||||
WRITE, and SECTRAN.
|
||||
.pp
|
||||
All simple character I/O operations are assumed to be performed in
|
||||
ASCII, upper and lower case, with high order (parity bit) set to zero.
|
||||
An end-of-file condition for an input device is given by an ASCII
|
||||
control-z (1AH). Peripheral devices are seen by MP/M as "logical"
|
||||
devices, and are assigned to physical devices within the BIOS.
|
||||
.pp
|
||||
In order to operate, the BDOS needs only the CONST, CONIN, and CONOUT
|
||||
subroutines (LIST and LSTST may be used by PIP, but not the
|
||||
BDOS).
|
||||
.cp 4
|
||||
.sp
|
||||
The characteristics of each device are
|
||||
.sp
|
||||
.in 16
|
||||
.ti 4
|
||||
CONSOLE The principal interactive consoles which communicate with
|
||||
the operators, accessed through CONST, CONIN, and CONOUT. Typically,
|
||||
CONSOLEs are devices such as CRTs or Teletypes.
|
||||
.sp
|
||||
.ti 4
|
||||
LIST The principal listing device, if it exists on your system,
|
||||
which is usually a hard-copy device, such as a printer or Teletype.
|
||||
.sp
|
||||
.ti 4
|
||||
DISK Disk I/O is always performed through a sequence of calls on the various
|
||||
disk access subroutines which set up the disk number to access, the
|
||||
track and sector on a particular disk, and the direct memory access
|
||||
(DMA) address involved in the I/O operation. After all these
|
||||
parameters have been set up, a call is made to the READ or WRITE
|
||||
function to perform the actual I/O operation. Note that there is often
|
||||
a single call to SELDSK to select a disk drive, followed by a number of
|
||||
read or write operations to the selected disk before selecting another
|
||||
drive for subsequent operations. Similarly, there may be a single call
|
||||
to set the DMA address, followed by several calls which read or write
|
||||
from the selected DMA address before the DMA address is changed. The
|
||||
track and sector subroutines are always called before the READ or WRITE
|
||||
operations are performed.
|
||||
.pp
|
||||
Note that the READ and WRITE routines should perform several retries
|
||||
(10 is standard) before reporting the error condition to the BDOS. If
|
||||
the error condition is returned to the BDOS, it will report the error
|
||||
to the user. The HOME subroutine may or may not actually perform the
|
||||
track 00 seek, depending upon your controller characteristics; the
|
||||
important point is that track 00 has been selected for the next
|
||||
operation, and is often treated in exactly the same manner as SETTRK
|
||||
with a parameter of 00.
|
||||
.pp
|
||||
.in 0
|
||||
The exact responsibilities of each entry point subroutine are
|
||||
given below:
|
||||
.sp
|
||||
.sp
|
||||
.in 16
|
||||
.ti 4
|
||||
BOOT The BOOT entry point gets called from the MP/M loader
|
||||
after it has been loaded by the cold start
|
||||
loader and is responsible for basic system initialization.
|
||||
Note that under MP/M a return must be made from BOOT to continue
|
||||
execution of the MP/M loader.
|
||||
.sp
|
||||
.ti 4
|
||||
WBOOT The WBOOT entry point performs a BDOS system reset,
|
||||
terminating the calling process.
|
||||
.sp
|
||||
.ti 4
|
||||
CONST Sample the status of the console device specified by
|
||||
register D
|
||||
and return 0FFH in register A if a character is ready to read,
|
||||
or 00H in register A if no console characters are ready.
|
||||
.sp
|
||||
.ti 4
|
||||
CONIN Read the next character from the console device specified
|
||||
by register D into register A, and set
|
||||
the parity bit (high order bit) to zero. If no console character is
|
||||
ready, wait until a character is typed before returning.
|
||||
.sp
|
||||
.ti 4
|
||||
CONOUT Send the character from register C to the console output
|
||||
device specified by register D. The character is in ASCII, with high
|
||||
order parity bit set to
|
||||
zero. You may want to include a delay on a line feed or carriage
|
||||
return, if your console device requires some time interval at the end
|
||||
of the line (such as a TI Silent 700 terminal). You can, if you
|
||||
wish, filter out control characters which cause your console device
|
||||
to react in a strange way (a control-z causes the Lear Seigler
|
||||
terminal to clear the screen, for example).
|
||||
.sp
|
||||
.ti 4
|
||||
LIST Send the character from register C to the
|
||||
listing device. The character is in ASCII with zero parity.
|
||||
.sp
|
||||
.ti 4
|
||||
PUNCH The punch device is not implemented under MP/M. The
|
||||
transfer vector position is preserved to maintain CP/M compatibility.
|
||||
Note that MP/M supports up to 16 character I/O devices, any of which
|
||||
can be a reader/punch.
|
||||
.sp
|
||||
.ti 4
|
||||
READER The reader device is not implemented under MP/M. See the
|
||||
note above for PUNCH.
|
||||
.sp
|
||||
.ti 4
|
||||
HOME Return the disk head of the currently selected disk
|
||||
(initially disk A) to the track 00 position. If your controller
|
||||
allows access to the track 0 flag from the drive, step the head until
|
||||
the track 0 flag is detected. If your controller does not support
|
||||
this feature, you can translate the HOME call into a call on SETTRK
|
||||
with a parameter of 0.
|
||||
.sp
|
||||
.ti 4
|
||||
SELDSK Select the disk drive given by register C for further
|
||||
operations, where register C contains 0 for drive A, 1 for drive
|
||||
B, and so-forth up to 15 for drive P (the
|
||||
standard MP/M distribution version supports four
|
||||
drives).
|
||||
On each disk select, SELDSK must return in HL the base address of a
|
||||
16-byte area, called the Disk Parameter Header, described in
|
||||
the digital research document titled "CP/M 2.0 Alteration Guide".
|
||||
For standard floppy disk drives, the
|
||||
contents of the header and associated tables does not change,
|
||||
and thus the program segment included in the sample XIOS
|
||||
performs this operation automatically. If there is an attempt
|
||||
to select a non-existent drive, SELDSK returns HL=0000H as
|
||||
an error indicator.
|
||||
.pp
|
||||
On entry to SELDSK it is possible to determine whether it
|
||||
is the first time the specified disk has been selected.
|
||||
Register E, bit 0 (least significant bit) is a zero if the
|
||||
drive has not been previously selected. This information
|
||||
is of interest in systems which read configuration
|
||||
information from the disk in order to set up a dynamic
|
||||
disk definition table.
|
||||
.pp
|
||||
Although SELDSK must return the header
|
||||
address on each call, it is
|
||||
advisable to postpone the actual physical disk select operation until an I/O
|
||||
function (seek, read or write) is actually performed, since disk
|
||||
selects often occur without utimately performing any disk I/O, and
|
||||
many controllers will unload the head of the current disk before
|
||||
selecting the new drive. This would cause an excessive amount of
|
||||
noise and disk wear.
|
||||
.sp
|
||||
.ti 4
|
||||
SETTRK Register BC contains the track number for subsequent disk
|
||||
accesses on the currently selected drive. You can choose to seek the
|
||||
selected track at this time, or delay the seek until the next read or
|
||||
write actually occurs. Register BC can take on values in the range
|
||||
0-76 corresponding to valid track numbers
|
||||
for standard floppy disk drives, and 0-65535 for non-standard
|
||||
disk subsystems.
|
||||
.sp
|
||||
.ti 4
|
||||
SETSEC Register BC contains the sector number (1 through 26) for
|
||||
subsequent disk accesses on the currently selected drive. You can
|
||||
choose to send this information to the controller at this point, or
|
||||
instead delay sector selection until a read or write operation occurs.
|
||||
.sp
|
||||
.ti 4
|
||||
SETDMA Register BC contains the DMA (disk memory access) address for
|
||||
subsequent read or write operations. For example, if B = 00H and C
|
||||
= 80H when SETDMA is called, then all subsequent read operations read
|
||||
their data into 80H through 0FFH, and all subsequent write operations
|
||||
get their data from 80H through 0FFH, until the next call to SETDMA
|
||||
occurs. The initial DMA address is assumed to be 80H. Note that the
|
||||
controller need not actually support direct memory access. If, for
|
||||
example, all data is received and sent through I/O ports, the XIOS
|
||||
which you construct will use the 128 byte area starting at the
|
||||
selected DMA address for the memory buffer during the following read
|
||||
or write operations.
|
||||
.sp
|
||||
.ti 4
|
||||
READ Assuming the drive has been selected, the track has been
|
||||
set, the sector has been set, and the DMA address has been
|
||||
specified, the READ subroutine attempts to read one sector based
|
||||
upon these parameters, and returns the following error codes in
|
||||
register A:
|
||||
.sp
|
||||
.li
|
||||
0 no errors occurred
|
||||
1 non-recoverable error condition occurred
|
||||
|
||||
.br
|
||||
Currently, MP/M responds only to a zero or non-zero value as the
|
||||
return code. That is, if the value in register A is 0 then MP/M
|
||||
assumes that the disk operation completed properly. If an error
|
||||
occurs, however, the XIOS should attempt at least 10 retries to see
|
||||
if the error is recoverable. When an error is reported the BDOS will
|
||||
print the message "BDOS ERR ON x: BAD SECTOR". The operator then
|
||||
has the option of typing <cr> to ignore the error, or ctl-C to abort.
|
||||
.sp
|
||||
.ti 4
|
||||
WRITE Write the data from the currently selected DMA address
|
||||
to the currently selected drive, track, and sector. The data should
|
||||
be marked as "non deleted data" to maintain compatibility with other
|
||||
MP/M systems. The error codes given in the READ command are returned
|
||||
in register A, with error recovery attempts as described above.
|
||||
.sp
|
||||
.ti 4
|
||||
LISTST Return the ready status of the list device.
|
||||
The value 00 is returned in A if the list device
|
||||
is not ready to accept a character, and 0FFH if a character
|
||||
can be sent to the printer. Note that a 00 value always
|
||||
suffices.
|
||||
.sp
|
||||
.ti 4
|
||||
SECTRAN Performs sector logical to physical sector translation
|
||||
in order to improve the overall response of MP/M. Standard MP/M
|
||||
systems are shipped with a "skew factor" of 6, where six physical
|
||||
sectors are skipped between each logical read operation. This
|
||||
skew factor allows enough time between sectors for most programs
|
||||
to load their buffers without missing the next sector. In particular
|
||||
computer systems which use fast processors, memory, and disk
|
||||
subsystems, the skew factor may be changed to improve overall
|
||||
response. Note, however, that you should maintain a single
|
||||
density IBM compatible version of MP/M for information transfer into and
|
||||
out of your computer system, using a skew factor of 6.
|
||||
In general, SECTRAN receives a logical sector number in BC, and
|
||||
a translate table address in DE. The sector number is used as
|
||||
an index into the translate table, with the resulting physical
|
||||
sector number in HL. For standard systems, the tables and
|
||||
indexing code is provided in the XIOS and need not be changed.
|
||||
.qi
|
||||
.br
|
||||
|
||||
272
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug32.tex
Normal file
272
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug32.tex
Normal file
@@ -0,0 +1,272 @@
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 102
|
||||
.HE MP/M User's Guide
|
||||
.FT (All Information Herein is Proprietary to Digital Research.)
|
||||
.sp
|
||||
.pp
|
||||
3.3 Extended I/O System Entry Points
|
||||
.PP
|
||||
The extended I/O facilities include the hardware environment dependent
|
||||
code to poll devices, handle interrupts and perform memory
|
||||
management functions.
|
||||
.pp
|
||||
A jump vector containing the extended I/O system entry points
|
||||
is located immediately following the BIOS jump vector as shown
|
||||
below:
|
||||
.li
|
||||
|
||||
BIOS+33H JMP SELMEMORY ; SELECT MEMORY
|
||||
BIOS+36H JMP POLLDEVICE ; POLL DEVICE
|
||||
BIOS+39H JMP STARTCLOCK ; START CLOCK
|
||||
BIOS+3CH JMP STOPCLOCK ; STOP CLOCK
|
||||
BIOS+3FH JMP EXITREGION ; EXIT CRITICAL REGION
|
||||
BIOS+42H JMP MAXCONSOLE ; MAXIMUM CONSOLE NUMBER
|
||||
BIOS+45H JMP SYSTEMINIT ; SYSTEM INITIALIZATION
|
||||
BIOS+48H JMP IDLE ; IDLE PROCEDURE (Optional)
|
||||
|
||||
.AD
|
||||
.pp
|
||||
Each jump address corresponds to a particular subroutine which performs
|
||||
the specific function. The exact responsibilities
|
||||
of each entry point subroutine are given below:
|
||||
.SP
|
||||
.in 16
|
||||
.ti 4
|
||||
SELMEMORY Each time a process is dispatched to run a call is made to
|
||||
the XIOS memory protection procedure. If the hardware environment has
|
||||
memory bank selection/protection it can use the passed
|
||||
parameter to select/protect
|
||||
areas of memory. The passed parameter (in registers BC) is a pointer
|
||||
to a memory descriptor from which the memory base, size,
|
||||
attributes and bank
|
||||
of the executing process can be determined.
|
||||
Thus, all other regions of memory can to be write protected.
|
||||
.SP
|
||||
.ti 4
|
||||
POLLDEVICE In hardware environments where there are no interrupts a
|
||||
polled environment can be created by coding an XIOS device poll handler.
|
||||
The device poll handler (POLLDEVICE) is called by the XDOS with the
|
||||
device to be polled in the C register as a single parameter.
|
||||
The user written POLLDEVICE procedure can be coded to access the device
|
||||
polling routines via a table which contains the addresses
|
||||
of the device polling procedures. An association is made between
|
||||
a device number to be polled and the polling procedure itself.
|
||||
The polling procedures must return a value of 0FFH in the accumulator
|
||||
if the device is ready, or 00H if the device is not ready.
|
||||
.SP
|
||||
.ti 4
|
||||
STARTCLOCK When a process delays for a specified number of ticks of
|
||||
the system time unit, the start clock procedure is called.
|
||||
.PP
|
||||
The purpose of the STARTCLOCK procedure is to eliminate unneccessary
|
||||
system clock interrupt overhead when there are not any delayed
|
||||
processes.
|
||||
.PP
|
||||
In some hardware environments it is not acutally possible to shut off
|
||||
the system time unit clock while still maintaining the one second flag
|
||||
used for the purposes of keeping time of day. In this situation
|
||||
the STARTCLOCK procedure simply sets a boolean variable to true,
|
||||
indicating that there is a delayed process. The clock interrupt
|
||||
handler can then determine if system time unit flag is to be set
|
||||
by testing the boolean.
|
||||
.SP
|
||||
.ti 4
|
||||
STOPCLOCK When the system delay list is emptied the stop clock
|
||||
procedure is called.
|
||||
.PP
|
||||
The purpose of the STOPCLOCK procedure is to eliminate unneccessary
|
||||
system clock interrupt overhead when there are no delayed
|
||||
processes.
|
||||
.PP
|
||||
In some hardware environments it is not acutally possible to shut off
|
||||
the system time unit clock while still maintaining the one second flag
|
||||
used for the purposes of keeping time of day. (i.e. a single
|
||||
clock/timer interrupt source is used.) In this situation
|
||||
the STOPCLOCK procedure simply sets a boolean variable to false,
|
||||
indicating that there are no delayed processes. The clock interrupt
|
||||
handler can then determine if the system time unit flag is to be set
|
||||
by testing the boolean.
|
||||
.SP
|
||||
.ti 4
|
||||
EXITREGION The purpose of the exit region procedure is to test a
|
||||
preempted flag,
|
||||
set by the interrupt handler, enabling interrupts if preempted is
|
||||
false. This procedure allows interrupt service routines to make
|
||||
MP/M system calls, leaving interrupts disabled until completion of
|
||||
the interrupt handling.
|
||||
.SP
|
||||
.ti 4
|
||||
MAXCONSOLE The purpose of the maximum console procedure is to enable
|
||||
the calling
|
||||
program to determine the number of physical consoles which the BIOS
|
||||
is capable of supporting. The number of physical consoles is returned
|
||||
in the A register.
|
||||
.SP
|
||||
.ti 4
|
||||
SYSTEMINIT The purpose of the system initialization procedure is to
|
||||
perform
|
||||
required MP/M cold start initialization. Typical initialization
|
||||
includes setting up interrupt jump vectors, interrupt masks, and
|
||||
setting up the base page in each bank of a banked memory system.
|
||||
.pp
|
||||
The SYSTEMINIT entry point is called prior to any other
|
||||
XIOS call. The MPMLDR disables interrupts, thus it can be
|
||||
assumed that interrupts are still disabled upon entry to
|
||||
SYSTEMINIT. Interrupts are enabled by MP/M immediately
|
||||
upon return from SYSTEMINIT.
|
||||
.pp
|
||||
In systems with bank switched memory it is necessary to
|
||||
setup the base page (0000H - 00FFH) within each bank of
|
||||
memory. Both the MPMLDR and MP/M itself assume that the
|
||||
base bank (bank #0) is switched in when the MPMLDR is
|
||||
executed. The base bank is properly initialized by MP/M
|
||||
prior to entering SYSTEMINIT. The information required for
|
||||
the initialization is provided on entry to SYSTEMINIT in
|
||||
the following registers:
|
||||
.li
|
||||
|
||||
C = MP/M Debugger restart #
|
||||
DE = MP/M entry point address for the debugger
|
||||
Place a jump at the proper debugger
|
||||
restart location to the address contained
|
||||
in DE.
|
||||
HL = BIOS direct jump table address
|
||||
Place a jump instruction at location
|
||||
0000H in each banks base page to the
|
||||
address contained in HL.
|
||||
.ad
|
||||
.sp
|
||||
.ti +4
|
||||
IDLE The idle entry point is included to permit
|
||||
optimization of system performance when the user
|
||||
has an XIOS that is all interrupt driven. If you
|
||||
have polled devices in your XIOS, the IDLE
|
||||
procedure may be omitted by placing a NOP
|
||||
instruction at the BIOS+48H location where there
|
||||
would otherwise be a jump to an idle procedure.
|
||||
.pp
|
||||
The idle entry point is called repeatedly when
|
||||
MP/M is idling. That is, when there are no other
|
||||
processes ready to run. In systems that are
|
||||
entirely interrupt driven the idle procedure
|
||||
should be as follows:
|
||||
.li
|
||||
|
||||
IDLE:
|
||||
HLT
|
||||
RET
|
||||
|
||||
.ad
|
||||
.sp
|
||||
.in 0
|
||||
.CE
|
||||
INTERRPUT SERVICE ROUTINES
|
||||
.SP
|
||||
.PP
|
||||
The MP/M operating system is designed to work with virtually any
|
||||
interrupt architecture, be it flat or vectored. The function of the
|
||||
code operating at the interrupt level is to save the
|
||||
required registers,
|
||||
determine the cause of the interrupt,
|
||||
remove the interrupting condition, and to set an appropriate flag.
|
||||
Operation of the flags are described in section 2.4.
|
||||
Briefly, flags are used to synchronize asynchronous processes. One
|
||||
process, such as an interrupt service routine, sets a particular flag
|
||||
while another process waits for the flag to be set.
|
||||
.PP
|
||||
At a logical level above the physical interrupts the flags can be
|
||||
regarded as providing 256 levels of virtual interrupts
|
||||
(32 flags are supported under release 1 of MP/M).
|
||||
Thus, logical interrupt handlers wait
|
||||
on flags to be set by the physical interrupt handlers.
|
||||
This mechanism allows a common XDOS to operate on all microcomputers,
|
||||
regardless of the hardware environment.
|
||||
.PP
|
||||
As an example consider a hardware environment with
|
||||
a flat interrupt structure. That is, a single interrupt level is
|
||||
provided and devices must be polled to determine the cause of the
|
||||
interrupt. Once the interrupt cause is determined a specific flag
|
||||
is set indicating that that particular interrupt has occurred.
|
||||
.PP
|
||||
At the conclusion of the interrupt processing a jump should be made
|
||||
to the MP/M dispatcher. This is done by jumping to the PDISP entry
|
||||
point. The effect of this jump is to give the processor to the highest
|
||||
priority ready process, usually the process readied by setting the
|
||||
flag in the interrupt handler, and then to enable interrupts before
|
||||
jumping to resume execution of the process.
|
||||
.PP
|
||||
The only XDOS or BDOS call which should be made from an
|
||||
interrupt handler is FUNCTION 133: FLAG SET. Any other
|
||||
XDOS or BDOS call will result in a dispatch which would
|
||||
then enable interrupts prior to completing execution of the
|
||||
interrupt handler.
|
||||
.pp
|
||||
It is recommended that interrupts only be used for
|
||||
operations which are asynchronous, such as console input or
|
||||
disk operation complete. In general, operations such as
|
||||
console output should not be interrupt driven. The reason
|
||||
that interrupts are not desirable for console output is
|
||||
that the system is afforded some elasticity by performing
|
||||
polled console outputs while idling, rather than incurring
|
||||
the dispatch overhead for each character transmitted. This
|
||||
is particularily true at higher baud rates.
|
||||
.pp
|
||||
On systems requiring the Z80 return from interrupt (RETI)
|
||||
instruction, the jump to PDISP at the end of the interrupt
|
||||
servicing can be done by placing the address of PDISP on
|
||||
the stack and then executing an RETI instruction.
|
||||
.SP 2
|
||||
.ce
|
||||
TIME BASE MANAGEMENT
|
||||
.sp
|
||||
.PP
|
||||
The time base management provided by the BIOS performs the operations
|
||||
of setting the system tick and one second flags. As described
|
||||
earlier the start and stop clock procedures control
|
||||
the system tick operation. The one second flag operation is logically
|
||||
separate from the system tick operation even though it may physically
|
||||
share the same clock/timer interrupt source.
|
||||
.PP
|
||||
The purpose of the system time unit tick procedure is to set flag #1
|
||||
at system time unit intervals. The system time unit is used
|
||||
by MP/M to manage the delay list.
|
||||
.pp
|
||||
The recommended time unit is 16.67 milliseconds,
|
||||
corresponding to 60 Hz. When operating with 50 Hz the
|
||||
recommended time unit is 20 milliseconds.
|
||||
.pp
|
||||
The tick frequency is critical in that it determines the
|
||||
dispatch frequency for compute bound processes. If the
|
||||
frequency is too high, a significant amount of system
|
||||
overhead is incurred by excessive dispatches. If the
|
||||
frequency is too low, compute bound processes will keep the
|
||||
CPU resource for accordingly longer periods.
|
||||
.PP
|
||||
The purpose of the one second flag procedure is to set flag #2
|
||||
at each second of real time. Flag #2 is used by MP/M to maintain
|
||||
a time of day clock.
|
||||
.SP 2
|
||||
.ce
|
||||
XIOS EXTERNAL JUMP VECTOR
|
||||
.sp
|
||||
.PP
|
||||
In order for the XIOS to access the BDOS/XDOS a jump vector is
|
||||
dynamically
|
||||
built by the MP/M loader and placed directly below the base address
|
||||
of the XIOS. The jump vector contains two entry points
|
||||
which provide access to the MP/M dispatcher, XDOS and BDOS.
|
||||
.PP
|
||||
The following code illustrates the equates used to access the jump
|
||||
table:
|
||||
.LI
|
||||
|
||||
BASE EQU 0000H ; BASE OF THE BIOS
|
||||
PDISP EQU BASE-3 ; MP/M DISPATCHER
|
||||
XDOS EQU PDISP-3 ; MP/M BDOS/XDOS
|
||||
...
|
||||
CALL XDOS ; CALL TO XDOS THRU JUMP VECTOR
|
||||
.AD
|
||||
.br
|
||||
|
||||
410
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug33.tex
Normal file
410
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmug33.tex
Normal file
@@ -0,0 +1,410 @@
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 107
|
||||
.HE MP/M User's Guide
|
||||
.FT (All Information Herein is Proprietary to Digital Research.)
|
||||
.sp
|
||||
.pp
|
||||
3.4 System File Components
|
||||
.pp
|
||||
The MP/M system file, 'MPM.SYS' consists of five components: the
|
||||
system data page, the customized XIOS, the BDOS or ODOS, the XDOS, and the
|
||||
resident system processes.
|
||||
MPM.SYS resides in the directory with a user code of 0 and is
|
||||
usually read only. The MP/M loader reads and relocates the MPM.SYS
|
||||
file to bring up the MP/M system.
|
||||
.SP 2
|
||||
.ce
|
||||
SYSTEM DATA
|
||||
.sp
|
||||
.PP
|
||||
The system data page contains 256 bytes used by the loader to
|
||||
dynamically configure the system. The system data page can be
|
||||
prepared using the GENSYS program or it can be manually prepared
|
||||
using DDT or SID. The following table describes the byte
|
||||
assignments:
|
||||
.LI
|
||||
|
||||
Byte Assignment
|
||||
---- ----------
|
||||
|
||||
000-000 Top page of memory
|
||||
001-001 Number of consoles
|
||||
002-002 Breakpoint restart number
|
||||
003-003 Allocate stacks for user system calls, boolean
|
||||
004-004 Bank switched memory, boolean
|
||||
005-005 Z80 CPU, boolean
|
||||
006-006 Banked BDOS file manager, boolean
|
||||
007-015 Unassigned, reserved
|
||||
016-047 Initial memory segment table
|
||||
048-079 Breakpoint vector table, filled in by DDTs
|
||||
080-111 Stack addresses for user system calls
|
||||
112-122 Scratch area for memory segments
|
||||
123-127 Unassigned, reserved
|
||||
128-143 Submit flags
|
||||
144-255 Reserved
|
||||
|
||||
.AD
|
||||
.SP 2
|
||||
.ce
|
||||
CUSTOMIZED XIOS
|
||||
.sp
|
||||
.PP
|
||||
The customized XIOS is obtained from a file named 'XIOS.SPR'. The
|
||||
'XIOS.SPR' file is actually a file of type PRL containing the
|
||||
page relocatable version of the user customized XIOS. A submit
|
||||
file on the distribution diskette named 'MACSPR.SUB' or 'ASMSPR.SUB' can be used
|
||||
to generate the user customized XIOS. The following sequence of
|
||||
commands will produce a 'XIOS.SPR' file given a user 'XIOS.ASM'
|
||||
file:
|
||||
.LI
|
||||
|
||||
A>SUBMIT MACSPR XIOS
|
||||
|
||||
.AD
|
||||
.sp 2
|
||||
.ce
|
||||
BDOS/ODOS
|
||||
.sp
|
||||
.pp
|
||||
The Basic Disk Operating System (BDOS) file named 'BDOS.SPR' is a page
|
||||
relocatable
|
||||
file essentially containing the CP/M 2.0 disk file management.
|
||||
This module handles all the BDOS system calls providing both multiple
|
||||
console support and disk file management.
|
||||
.pp
|
||||
In systems with a banked BDOS, the file named 'ODOS.SPR' is a page
|
||||
relocatable file containing the resident portion of the banked BDOS.
|
||||
.SP 2
|
||||
.ce
|
||||
XDOS
|
||||
.sp
|
||||
.PP
|
||||
The XDOS file named 'XDOS.SPR' is a page relocatable file
|
||||
containing the priority driven MP/M nucleus. The nucleus contains
|
||||
the following code pieces: root module, dispatcher,
|
||||
queue management, flag management, memory management, terminal
|
||||
handler, terminal message process, command line interpreter, file
|
||||
name parser, and time base management.
|
||||
.SP 2
|
||||
.ce
|
||||
RESIDENT SYSTEM PROCESSES
|
||||
.sp
|
||||
.PP
|
||||
Resident system processes are identified by a file type of RSP. The
|
||||
RSP files distributed with MP/M include: run-time system
|
||||
status display (MPMSTAT), printer spooler (Spool), abort named
|
||||
process (ABORT), and a scheduler (SCHED).
|
||||
.PP
|
||||
At system generation time the user is prompted to select which RSPs
|
||||
are to be concatenated to the 'MPM.SYS' file.
|
||||
.PP
|
||||
It is possible for the user to prepare custom resident system
|
||||
processes. The resident system processes must follow these rules:
|
||||
.PP
|
||||
* The file itself must be page relocatable. Page relocatable files
|
||||
can be simply generated using the submit file 'MACSPR.SUB' or 'ASMSPR.SUB'
|
||||
and then renaming the file to change the type from 'SPR' to 'RSP'.
|
||||
.PP
|
||||
* The first two bytes of the resident system process are reserved
|
||||
for the address of the BDOS/XDOS. Thus a resident system process can
|
||||
access the BDOS/XDOS by loading the two bytes at relative 0000-0001H
|
||||
and then performing a PCHL.
|
||||
.PP
|
||||
* The process descriptor for the resident system process must begin at
|
||||
the third byte position. The contents of the process descriptor are
|
||||
described in section 2.3.
|
||||
.SP 2
|
||||
.ce
|
||||
BNKBDOS
|
||||
.sp
|
||||
.PP
|
||||
In addition to the MPM.SYS file a file named 'BNKBDOS.SPR' is used in
|
||||
systems with a banked BDOS. It is a page relocatable file containing
|
||||
the non-resident portion of the banked BDOS.
|
||||
This file is not used by systems without banked memory.
|
||||
.bp
|
||||
.sp
|
||||
.pp
|
||||
3.5 System Generation
|
||||
.pp
|
||||
MP/M system generation consists of the preparation of a system
|
||||
data file and the concatenation of both required and optional code
|
||||
files to produce a file named 'MPM.SYS'. The operation is performed
|
||||
using a GENSYS program which can be run under either MP/M or
|
||||
CP/M. The GENSYS automates the system generation process by
|
||||
prompting the user for optional parameters and then prepares the
|
||||
'MPM.SYS' file.
|
||||
.PP
|
||||
The operation of GENSYS is illustrated with two sample executions
|
||||
shown below:
|
||||
.LI
|
||||
|
||||
A>GENSYS
|
||||
|
||||
MP/M System Generation
|
||||
======================
|
||||
|
||||
Top page of memory = ff
|
||||
Number of consoles = 2
|
||||
Breakpoint RST # = 6
|
||||
Add system call user stacks (Y/N)? y
|
||||
Z80 CPU (Y/N)? y
|
||||
Bank switched memory (Y/N)? n
|
||||
Memory segment bases, (ff terminates list)
|
||||
: 00
|
||||
: 50
|
||||
: a0
|
||||
: ff
|
||||
Select Resident System Processes: (Y/N)
|
||||
ABORT ? n
|
||||
SPOOL ? n
|
||||
MPMSTAT ? y
|
||||
SCHED ? y
|
||||
|
||||
.pp
|
||||
The queries made during the system generation shown above are
|
||||
described as follows:
|
||||
.sp
|
||||
.pp
|
||||
Top page of memory: Two hex ASCII digits are to be entered giving
|
||||
the top page of memory. A value of 0 can be entered in which case
|
||||
the MP/M loader will determine the size of memory at load time
|
||||
by finding the top page of RAM.
|
||||
.pp
|
||||
Number of consoles: Each console specified will require 256
|
||||
bytes of memory. MP/M release 1 supports up to 16 consoles.
|
||||
During MP/M initialization an XIOS call is made to obtain the
|
||||
actual maximum number of physical consoles supported by the
|
||||
XIOS. This number is used if it is less than the number specified
|
||||
during the GENSYS.
|
||||
.pp
|
||||
Breakpoint RST #: The breakpoint restart number to be used by the
|
||||
SID and DDT debuggers is specified. Restart 0 is not allowed.
|
||||
Other restarts required by the XIOS should also not be used.
|
||||
.pp
|
||||
Add system call user stacks (Y/N)?: If you desire to
|
||||
execute CP/M *.COM files then your response should be Y. A 'Y'
|
||||
response forces a stack switch with each system call from a
|
||||
user program.
|
||||
MP/M requires more stack space than CP/M.
|
||||
.pp
|
||||
Bank switched memory (Y/N)?: If your system does not have bank switched
|
||||
memory then you should respond with a 'N'. Otherwise
|
||||
respond with a 'Y' and additional questions and responses (as shown in
|
||||
the second example) will be required.
|
||||
.pp
|
||||
Memory segment bases: Memory segmentation is defined by the
|
||||
entries which are made.
|
||||
Care must be taken in the entry of memory bases as all entries
|
||||
must be made with successively higher bases.
|
||||
If your system has ROM at 0000H then the first memory segment
|
||||
base which you specify should be your first actual RAM location.
|
||||
Only page relocatable (PRL) programs can be run in systems that
|
||||
do not have RAM at location 0000H.
|
||||
.pp
|
||||
Select Resident System Processes: A directory search is made for
|
||||
all files of type RSP. Each file found is listed and included in
|
||||
the generated system file if you respond with a 'Y'.
|
||||
.sp 2
|
||||
.pp
|
||||
The second example illustrates a more complicated GENSYS in which
|
||||
a system is setup with bank switched memory and a banked BDOS.
|
||||
This procedure requires an intial GENSYS and MPMLDR execution to
|
||||
determine the exact size of the operating system, followed by
|
||||
a second GENSYS.
|
||||
.li
|
||||
|
||||
A>GENSYS
|
||||
|
||||
MP/M System Generation
|
||||
======================
|
||||
|
||||
Top page of memory = ff
|
||||
Number of consoles = 2
|
||||
Breakpoint RST # = 6
|
||||
Add system call user stacks (Y/N)? y
|
||||
Z80 CPU (Y/N) y
|
||||
Bank switched memory (Y/N)? y
|
||||
Banked BDOS file manager (Y/N)? y
|
||||
Enter memory segment table: (ff terminates list)
|
||||
Base,size,attrib,bank = 0,50,0,0
|
||||
Base,size,attrib,bank = ff
|
||||
Select Resident System Processes: (Y/N)
|
||||
ABORT ? n
|
||||
SPOOL ? n
|
||||
MPMSTAT ? n
|
||||
SCHED ? y
|
||||
|
||||
.ad
|
||||
.pp
|
||||
The queries made during the system generation shown above
|
||||
which relate to bank switched memory are described as follows:
|
||||
.sp
|
||||
.pp
|
||||
Bank switched memory: Respond with a 'Y'.
|
||||
.pp
|
||||
Bank switched BDOS file manager: Respond with a 'Y' if
|
||||
a bank switched BDOS is to be used, this will provide an additional
|
||||
0C00H bytes of common area for large XIOS's and possibly some
|
||||
RSP's.
|
||||
The banked BDOS is slower than the non-banked because FCB's must
|
||||
be copied from the bank of the calling program to common and then
|
||||
back again each time a BDOS disk function is invoked.
|
||||
.pp
|
||||
Memory segment bases: When bank switched memory has been
|
||||
specified, you are prompted for the base, size, attributes, and
|
||||
bank for each memory segment.
|
||||
Extreme care must be taken when making these entries as there is
|
||||
no error checking done by GENSYS regarding this function. The first
|
||||
entry made will determine the bank in which the banked BDOS is to
|
||||
reside. It is further assumed that the bank specified in the first
|
||||
entry is the bank which is switched in at the time the MPMLDR is
|
||||
executed.
|
||||
The attribute byte is normally defined as 00. However, if
|
||||
you wish to pre-allocate a memory segment a value of FFH
|
||||
should be specified. The bank byte value is hardware
|
||||
dependent and is usually the value sent to the bank
|
||||
switching hardware to select the specified bank.
|
||||
.sp 3
|
||||
Then execute the MPMLDR in order to obtain the base address of
|
||||
the operating system. The base address in this example will be
|
||||
the address of BNKBDOS.SPR (BC00H).
|
||||
.li
|
||||
|
||||
A>MPMLDR
|
||||
|
||||
MP/M Loader
|
||||
===========
|
||||
|
||||
Number of consoles = 2
|
||||
Breakpoint RST # = 6
|
||||
Z80 CPU
|
||||
Banked BDOS file manager
|
||||
Top of memory = FFFFH
|
||||
|
||||
Memory Segment Table:
|
||||
SYSTEM DAT FF00H 0100H
|
||||
CONSOLE DAT FD00H 0200H
|
||||
USERSYS STK FC00H 0100H
|
||||
XIOS SPR F600H 0600H
|
||||
BDOS SPR EE00H 0800H
|
||||
XDOS SPR CF00H 1F00H
|
||||
Sched RSP CA00H 0500H
|
||||
BNKBDOS SPR BC00H 0E00H
|
||||
-------------------------
|
||||
Memseg Usr 0000H 5000H Bank 00H
|
||||
|
||||
|
||||
.ad
|
||||
Using the information obtained from the initial GENSYS and MPMLDR
|
||||
execution the following GENSYS can be executed:
|
||||
.li
|
||||
|
||||
A>GENSYS
|
||||
|
||||
MP/M System Generation
|
||||
======================
|
||||
|
||||
Top page of memory = ff
|
||||
Number of consoles = 2
|
||||
Breakpoint RST # = 6
|
||||
Add system call user stacks (Y/N)? y
|
||||
Z80 CPU (Y/N)? y
|
||||
Bank switched memory (Y/N)? y
|
||||
Banked BDOS file manager (Y/N)? y
|
||||
Enter memory segment table: (ff terminates list)
|
||||
Base,size,attrib,bank = 0,bc,0,0
|
||||
Base,size,attrib,bank = 0,c0,0,1
|
||||
Base,size,attrib,bank = 0,c0,0,2
|
||||
Base,size,attrib,bank = ff
|
||||
Select Resident System Processes: (Y/N)
|
||||
ABORT ? n
|
||||
SPOOL ? n
|
||||
MPMSTAT ? n
|
||||
SCHED ? y
|
||||
|
||||
.ad
|
||||
.bp
|
||||
.sp
|
||||
.pp
|
||||
3.6 MP/M Loader
|
||||
.pp
|
||||
The MPMLDR program loads the 'MPM.SYS' file and dynamically relocates
|
||||
and configures the MP/M operating system. MPMLDR can be run
|
||||
under CP/M
|
||||
or loaded from the first two tracks of a disk by the cold start loader.
|
||||
.PP
|
||||
The MPMLDR provides a display of the system loading and configuration.
|
||||
It does not require any operator interaction.
|
||||
.pp
|
||||
In the following example
|
||||
the 'MPM.SYS' file prepared by the first GENSYS example shown in
|
||||
section 3.5 is loaded:
|
||||
.LI
|
||||
|
||||
A>MPMLDR
|
||||
|
||||
MP/M Loader
|
||||
===========
|
||||
|
||||
Number of consoles = 2
|
||||
Breakpoint RST # = 6
|
||||
Z80 CPU
|
||||
Top of memory = FFFFH
|
||||
|
||||
Memory Segment Table:
|
||||
SYSTEM DAT FF00H 0100H
|
||||
CONSOLE DAT FD00H 0200H
|
||||
USERSYS STK FC00H 0100H
|
||||
XIOS SPR F600H 0600H
|
||||
BDOS SPR E200H 1400H
|
||||
XDOS SPR C300H 1F00H
|
||||
MPMSTAT RSP B600H 0D00H
|
||||
Sched RSP B100H 0500H
|
||||
-------------------------
|
||||
Memseg Usr A000H 1100H
|
||||
Memseg Usr 5000H 5000H
|
||||
Memseg Usr 0000H 5000H
|
||||
|
||||
MP/M
|
||||
0A>
|
||||
.ad
|
||||
.sp 2
|
||||
.cp 30
|
||||
In the following example
|
||||
the 'MPM.SYS' file prepared by the second GENSYS example shown in
|
||||
section 3.5 is loaded:
|
||||
.LI
|
||||
|
||||
A>MPMLDR
|
||||
|
||||
MP/M Loader
|
||||
===========
|
||||
|
||||
Number of consoles = 2
|
||||
Breakpoint RST # = 6
|
||||
Z80 CPU
|
||||
Banked BDOS file manager
|
||||
Top of memory = FFFFH
|
||||
|
||||
Memory Segment Table:
|
||||
SYSTEM DAT FF00H 0100H
|
||||
CONSOLE DAT FD00H 0200H
|
||||
USERSYS STK FC00H 0100H
|
||||
XIOS SPR F600H 0600H
|
||||
BDOS SPR EE00H 0800H
|
||||
XDOS SPR CF00H 1F00H
|
||||
Sched RSP CA00H 0500H
|
||||
BNKBDOS SPR BC00H 0E00H
|
||||
-------------------------
|
||||
Memseg Usr 0000H C000H Bank 02H
|
||||
Memseg Usr 0000H C000H Bank 01H
|
||||
Memseg Usr 0000H BC00H Bank 00H
|
||||
|
||||
MP/M
|
||||
0A>
|
||||
|
||||
.br
|
||||
|
||||
235
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmuga-f.tex
Normal file
235
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmuga-f.tex
Normal file
@@ -0,0 +1,235 @@
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 116
|
||||
.HE MP/M User's Guide
|
||||
.FT (All Information Herein is Proprietary to Digital Research.)
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX A: Flag Assignments
|
||||
.LI
|
||||
|
||||
|
||||
+----+
|
||||
| 0 | Reserved
|
||||
+----+
|
||||
| 1 | System time unit tick
|
||||
+----+
|
||||
| 2 | One second interval
|
||||
+----+
|
||||
| 3 | One minute interval
|
||||
+----+
|
||||
| 4 | Undefined
|
||||
|
||||
| | Undefined
|
||||
+----+
|
||||
| 31 | Undefined
|
||||
+----+
|
||||
|
||||
.AD
|
||||
.bp
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX B: Process Priority Assignments
|
||||
.LI
|
||||
|
||||
0 - 31 : Interrupt handlers
|
||||
|
||||
32 - 63 : System processes
|
||||
|
||||
64 - 197 : Undefined
|
||||
|
||||
198 : Teminal message processes
|
||||
|
||||
199 : Command line interpreter
|
||||
|
||||
200 : Default user priority
|
||||
|
||||
201 - 254 : User processes
|
||||
|
||||
255 : Idle process
|
||||
|
||||
.AD
|
||||
.bp
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX C: BDOS Function Summary
|
||||
.sp 2
|
||||
.li
|
||||
FUNC FUNCTION NAME INPUT PARAMETERS OUTPUT RESULTS
|
||||
---- --------------------- ---------------- --------------
|
||||
0 System Reset none none
|
||||
1 Console Input none A = char
|
||||
2 Console Output E = char none
|
||||
3 Raw Console Input none A = char
|
||||
4 Raw Console Output E = char none
|
||||
5 List Output E = char none
|
||||
6 Direct Console I/O see def see def
|
||||
7 ** Not supported **
|
||||
8 ** Not supported **
|
||||
9 Print String DE = .Buffer none
|
||||
10 Read Console Buffer DE = .Buffer see def
|
||||
11 Get Console Status none A = 00/01
|
||||
12 Return Version Number none HL= Version #
|
||||
13 Reset Disk System none see def
|
||||
14 Select Disk E = Disk Number see def
|
||||
15 Open File DE = .FCB A = Dir Code
|
||||
16 Close File DE = .FCB A = Dir Code
|
||||
17 Search for First DE = .FCB A = Dir Code
|
||||
18 Search for Next none A = Dir Code
|
||||
19 Delete File DE = .FCB A = Dir Code
|
||||
20 Read Sequential DE = .FCB A = Err Code
|
||||
21 Write Sequential DE = .FCB A = Err Code
|
||||
22 Make File DE = .FCB A = Dir Code
|
||||
23 Rename File DE = .FCB A = Dir Code
|
||||
24 Return Login Vector none HL= Login Vect*
|
||||
25 Return Current Disk none A = Cur Disk#
|
||||
26 Set DMA Address DE = .DMA none
|
||||
27 Get Addr(Alloc) none HL= .Alloc
|
||||
28 Write Protect Disk none see def
|
||||
29 Get R/O Vector none HL= R/O Vect*
|
||||
30 Set File Attributes DE = .FCB see def
|
||||
31 Get Addr(disk parms) none HL= .DPB
|
||||
32 Set/Get User Code see def see def
|
||||
33 Read Random DE = .FCB A = Err Code
|
||||
34 Write Random DE = .FCB A = Err Code
|
||||
35 Compute File Size DE = .FCB r0, r1, r2
|
||||
36 Set Random Record DE = .FCB r0, r1, r2
|
||||
37 Reset Drive DE = drive vctr A = Err Code
|
||||
38 Access Drive DE = drive vctr none
|
||||
39 Free Drive DE = drive vctr none
|
||||
40 Write Random zerofill DE = .FCB A = Err Code
|
||||
.sp 2
|
||||
* Note that A = L, and B = H upon return
|
||||
.bp
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX D: XDOS Function Summary
|
||||
.sp 3
|
||||
.li
|
||||
FUNC FUNCTION NAME INPUT PARAMETERS OUTPUT RESULTS
|
||||
---- --------------------- ---------------- --------------
|
||||
128 Absolute Memory Rqst DE = .MD A = err code
|
||||
129 Relocatable Mem Rqst DE = .MD A = err code
|
||||
130 Memory Free DE = .MD none
|
||||
131 Poll E = Device none
|
||||
132 Flag Wait E = Flag A = err code
|
||||
133 Flag Set E = Flag A = err code
|
||||
134 Make Queue DE = .QCB none
|
||||
135 Open Queue DE = .UQCB A = err code
|
||||
136 Delete Queue DE = .QCB A = err code
|
||||
137 Read Queue DE = .UQCB none
|
||||
138 Conditional Read Que DE = .UQCB A = err code
|
||||
139 Write Queue DE = .UQCB none
|
||||
140 Conditional Write Que DE = .UQCB A = err code
|
||||
141 Delay DE = #ticks none
|
||||
142 Dispatch none none
|
||||
143 Terminate Process E = Term. code none
|
||||
144 Create Process DE = .PD none
|
||||
145 Set Priority E = Priority none
|
||||
146 Attach Console none none
|
||||
147 Detach Console none none
|
||||
148 Set Console E = Console none
|
||||
149 Assign Console DE = .APB A = err code
|
||||
150 Send CLI Command DE = .CLICMD none
|
||||
151 Call Resident Sys Pr DE = .CPB HL = result
|
||||
152 Parse Filename DE = .PFCB see def
|
||||
153 Get Console Number none A = console #
|
||||
154 System Data Address none HL = sys data adr
|
||||
155 Get Date and Time DE = .TOD none
|
||||
156 Return Proc. Dsc. Adr none HL = proc descr adr
|
||||
157 Abort Spec. Process DE = .ABTPB A = err code
|
||||
.ad
|
||||
.sp
|
||||
.bp
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX E: Memory Segment Base Page Reserved Locations
|
||||
.sp
|
||||
.pp
|
||||
Each memory segment base page, between locations 00H and 0FFH, contains
|
||||
code and data which are used during MP/M
|
||||
processing. The code and data areas are given below for reference purposes.
|
||||
.sp
|
||||
.in 4
|
||||
Locations Contents
|
||||
.br
|
||||
from to
|
||||
.in 22
|
||||
.ti 4
|
||||
0000H - 0002H Contains a jump instruction to XDOS which terminates
|
||||
the process. This allows simple process termination by executing a
|
||||
JMP 0000H.
|
||||
.sp
|
||||
.ti 4
|
||||
0005H - 0007H Contains a jump instruction to the BDOS & XDOS, and serves
|
||||
two purposes: JMP 0005H provides the primary entry point to the
|
||||
BDOS & XDOS, and LHLD
|
||||
0006H brings the address field of the instruction to the HL register
|
||||
pair. This value is the top of the memory segment in which the
|
||||
program is executing. Note that the DDT program
|
||||
will change the address field to reflect the reduced memory size in
|
||||
debug mode.
|
||||
.sp
|
||||
.ti 4
|
||||
0008H - 003AH (interrupt locations 1 through 7 not used)
|
||||
However, one restart must be selected for use by the debugger and
|
||||
specified during system generation.
|
||||
.sp
|
||||
.ti 4
|
||||
003BH - 003FH (not currently used - reserved)
|
||||
.sp
|
||||
.ti 4
|
||||
0040H - 004FH 16 byte area reserved for scratch, but is
|
||||
not used for any purpose in the distribution version of MP/M
|
||||
.sp
|
||||
.ti 4
|
||||
0050H - 005BH (not currently used - reserved)
|
||||
.sp
|
||||
.ti 4
|
||||
005CH - 007CH default file control block produced for a transient
|
||||
program by the command line interpreter.
|
||||
.sp
|
||||
.ti 4
|
||||
007DH - 007FH Optional default random record position
|
||||
.sp
|
||||
.ti 4
|
||||
0080H - 00FFH default 128 byte disk buffer (also filled with the
|
||||
command line when a transient is loaded under the CLI).
|
||||
.qi
|
||||
.bp
|
||||
.sp 2
|
||||
.ce
|
||||
Appendix F: Operation of MP/M on the Intel MDS-800
|
||||
.sp 2
|
||||
.pp
|
||||
This section gives operating procedures for using MP/M on the Intel
|
||||
MDS microcomputer development system. A basic knowledge of the MDS
|
||||
hardware and software systems is assumed.
|
||||
.pp
|
||||
MP/M is initiated in essentially the same manner as Intel's ISIS
|
||||
operating system. The disk drives labelled 0 through 3 on the MDS,
|
||||
correspond to MP/M drives A through D, respectively. The MP/M
|
||||
system diskette is inserted into drive 0, and the BOOT and RESET
|
||||
switches are depressed in sequence. The interrupt 2 light should go
|
||||
on at this point. The space bar is then depressed on either console
|
||||
device, and the light should go out. The BOOT switch is then turned
|
||||
off, and the MP/M sign-on message should appear at both consoles,
|
||||
followed by the "0A>" for the CRT or "1A>" for the TTY. The user
|
||||
can then issue MP/M commands.
|
||||
.pp
|
||||
Use of the interrupt switches on the front panel is not recommended.
|
||||
Effective 'warm-starts' should be initiated at the console by
|
||||
aborting the running program rather than pushing the INT 0 switch.
|
||||
Also, depending on the choice of restart for the debugger the INT
|
||||
switch which will invoke the debugger is not necessarily #7.
|
||||
.pp
|
||||
Diskettes should not be removed from the drives until the user verifies
|
||||
that there are no other users with open files on the disk. This can
|
||||
be done with the 'DSKRESET' command.
|
||||
.pp
|
||||
When performing GENSYS operations on the MDS-800, make certain that
|
||||
a negative response is always made to the Z80 CPU question. Responding
|
||||
with a 'Y' will lead to unpredictable results.
|
||||
.br
|
||||
|
||||
888
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugerr.tex
Normal file
888
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugerr.tex
Normal file
@@ -0,0 +1,888 @@
|
||||
.po 0
|
||||
.fo - # -
|
||||
|
||||
MULTI-PROGRAMMING MONITOR CONTROL PROGRAM - USER'S GUIDE
|
||||
|
||||
Corrections and Additions - January, 1980
|
||||
-------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
Page 4, paragraph 4
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Change:<3A>Th<54><68> initia<69><61> use<73><65> cod<6F> i<> on<6F> greate<74><65> tha<68><61> th<74><68> consol<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>number<EFBFBD><EFBFBD> Fo<46> example<6C> consol<6F> #<23> i<> initialize<7A> t<> use<73> #<23> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>an<EFBFBD> th<74> followin<69> promp<6D> i<> displaye<79> o<> consol<6F> #0:
|
||||
|
||||
1A>
|
||||
|
||||
To: Th<54> initia<69> use<73> cod<6F> i<> equa<75> t<> th<74> consol<6F> number<65><72> Fo<46> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>example<EFBFBD><EFBFBD> consol<6F><6C> #<23><> i<><69> initialize<7A> t<> use<73> #<23><> an<61><6E> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>followin<EFBFBD> promp<6D> i<> displaye<79> o<> consol<6F> #0:
|
||||
|
||||
0A>
|
||||
|
||||
Note<74><65> Cautio<69><6F> mus<75> b<> use<73> whe<68> operatin<69> unde<64><65> <20><> use<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cod<EFBFBD><EFBFBD> o<><6F> <20><> sinc<6E><63> al<61> it<69> file<6C><65> ca<63><61> b<><62> accesse<73><65> whil<69> <20>
|
||||
<20><><EFBFBD><EFBFBD>operatin<69> unde<64> an<61> othe<68> use<73> code.
|
||||
I<><49> general<61><6C> use<73><65> cod<6F> <20> shoul<75> b<><62> reserve<76><65> fo<66> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>file<EFBFBD> whic<69> ar<61> accesse<73> b<> al<61> users<72> I<> th<74> even<65> tha<68> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fil<EFBFBD><EFBFBD> wit<69><74> th<74> sam<61> nam<61> i<> presen<65> unde<64> use<73> cod<6F> <20><> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>anothe<EFBFBD><EFBFBD> use<73> code<64><65> th<74> firs<72> fil<69> foun<75> i<> th<74><68> director<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wil<EFBFBD> b<> accessed.
|
||||
|
||||
|
||||
Page 4, paragraph 6
|
||||
|
||||
Add: Sinc<6E><63> ther<65><72> ar<61> n<> built-i<> commands<64><73> th<74><68> defaul<75><6C> dis<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>specifie<EFBFBD><EFBFBD> mus<75> contai<61> th<74> desire<72> comman<61> file<6C> (suc<75><63> a<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DIR<EFBFBD><EFBFBD> REN<45><4E> ER<45> etc.)<29> o<> eac<61> comman<61> mus<75> b<> preceede<64> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD> "A:".
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3B>A:DIR
|
||||
|
||||
|
||||
Page 5, paragraph 5
|
||||
|
||||
Add: <20> chec<65> consol<6F> statu<74> i<> automaticall<6C> performe<6D> eac<61> tim<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a user program makes a BDOS disk function call.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<EFBFBD>
|
||||
|
||||
Page 6, paragraph 2
|
||||
|
||||
Add: ctl-Q Obtai<61><69> ownershi<68> o<> th<74> printe<74> mutua<75><61> exclusio<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>message<EFBFBD> Obtainin<69> th<74> printe<74> usin<69> thi<68> comman<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wil<EFBFBD> ensur<75> tha<68> th<74> MP/<2F> spooler<65><72> PIP<49> an<61> othe<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ctl-Р<> o<><6F> ctl-Ѡ command<6E><64> entere<72><65> fro<72><6F><EFBFBD> othe<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>console<EFBFBD><EFBFBD><EFBFBD> wil<69><6C> no<6E><6F> b<><62> allowe<77><65> acces<65><73> t<><74> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>printer<EFBFBD><EFBFBD> Th<54> printe<74> i<> "owned<65> b<> th<74> TMР unti<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>anothe<EFBFBD><EFBFBD> ctl-<2D> o<> ctl-<2D> i<> entered<65><64> releasin<69> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>printer<EFBFBD><EFBFBD> Th<54><68> ctl-<2D> shoul<75> b<> use<73> whe<68> <20> progra<72> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(suc<75> a<> <20> CP/<2F> *.CO<43> file<6C> i<> execute<74> tha<68><61> doe<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>no<EFBFBD><EFBFBD> obtai<61><69> th<74> printe<74> mutua<75> exclusio<69><6F> messag<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>prio<EFBFBD> t<> accessin<69> th<74> printer<65> I<> th<74> lis<69> devic<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD> no<6E><6F> availabl<62><6C> <20> 'Printe<74><65> busy<73><79> messag<61><67> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>displaye<EFBFBD> o<> th<74> console.
|
||||
|
||||
|
||||
Page 7, paragraph 6
|
||||
|
||||
Change: [the entire DISK RESET description]
|
||||
|
||||
To: Th<54><68> DSKRESEԠ (dis<69> reset<65> comman<61> i<> use<73> t<><74> enabl<62><6C> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>operato<EFBFBD> t<> chang<6E> disks<6B><73> I<> n<> paramete<74> i<> entere<72><65> al<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD><EFBFBD> drive<76> ar<61> reset<65><74> Specifi<66> drive<76> t<> b<> rese<73> ma<6D> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>include<EFBFBD> a<> parameters.
|
||||
|
||||
1A>DSKRESET
|
||||
|
||||
1A>DSKRESET B:,E:
|
||||
|
||||
|
||||
I<><49> ther<65> ar<61> an<61> ope<70> file<6C> o<> th<74> drive(s<> t<><74> b<><62> reset<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD><EFBFBD> dis<69><73> rese<73> i<> denie<69> an<61> th<74> caus<75> o<> th<74> dis<69><73> rese<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>failur<EFBFBD> i<> shown:
|
||||
|
||||
1A>DSKRESET B:
|
||||
|
||||
Disk reset denied, Drive B: Console 0 Program Ed
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD> reaso<73> tha<68> dis<69> rese<73> i<> treate<74> s<> carefull<6C> i<><69> tha<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>file<EFBFBD> lef<65> ope<70> (e.g<> i<> th<74> proces<65> o<> bein<69> written<65> wil<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>los<EFBFBD> thei<65> update<74> informatio<69> i<> the<68> ar<61> no<6E> close<73> prio<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> <20> dis<69> reset.
|
||||
|
||||
|
||||
Page 8, paragraph 2
|
||||
|
||||
Add: <20><> secon<6F><6E> for<6F><72> o<> th<74> eras<61> comman<61><6E> (ERAQ<41><51> enable<6C><65> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>operato<EFBFBD><EFBFBD> t<><74> selectivel<65><6C> delet<65><74> file<6C><65> tha<68><61> matc蠠 th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>specifie<EFBFBD> filenam<61> reference<63> Fo<46> example:
|
||||
|
||||
0A>ERAQ *.LST
|
||||
|
||||
<EFBFBD>
|
||||
|
||||
<EFBFBD> Page 8, paragraph 3
|
||||
|
||||
Add: Th<54><68> TYPŠ comman<61> ha<68> <20> paus<75> mod<6F> whic<69> i<><69> specifie<69><65> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enterin<EFBFBD><EFBFBD> <20><> 'P<> followe<77> b<> tw<74> decima<6D> digit<69><74> afte<74><65> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>filename<EFBFBD> Fo<46> example:
|
||||
|
||||
0A>TYPE DUMP.ASM P23
|
||||
|
||||
Th<54><68> specifie<69> numbe<62> o<> line<6E> wil<69> b<> displaye<79><65> an<61><6E> the<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TYP<EFBFBD> wil<69> paus<75> unti<74> <20> <cr<63> i<> entered.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> TYPŠ progra<72> i<> smal<61> an<61> relativel<65> slo<6C> becaus<75><73> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>buffer<EFBFBD> onl<6E> on<6F> secto<74> a<> <20> time<6D><65> Th<54> large<67> PI<50> progra<72> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ca<EFBFBD> b<> use<73> fo<66> faste<74> display<61> i<> th<74> followin<69> manner:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0A>PIP CON:=MYFILE.TEX
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Page 8, paragraph 4
|
||||
|
||||
Add: Th<54><68> DIҠ comman<61> ca<63> includ<75> file<6C> whic<69> hav<61><76> th<74><68> syste<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>attribut<EFBFBD> set<65><74> Thi<68> i<> don<6F> b<> usin<69> th<74> 'S<> option<6F> Fo<46> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>example:
|
||||
|
||||
0A>DIR *.COM S
|
||||
|
||||
|
||||
Page 8, paragraph 5
|
||||
|
||||
Add: I<><49> th<74><68> destinatio<69> filenam<61> exist<73> th<74> operato<74> i<><69> give<76> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD> optio<69> o<> deletin<69> th<74> curren<65> destinatio<69> fil<69><6C> befor<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>renamin<EFBFBD> th<74> sourc<72> file.
|
||||
|
||||
|
||||
Page 9
|
||||
|
||||
Add: PRLCOM
|
||||
|
||||
Th<54><68> PRLCO<43> comman<61> accept<70> <20> fil<69> o<> PR<50> typ<79> an<61> produce<63> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fil<69> o<> CO<43> type<70><65> I<> th<74> destinatio<69> CO<43> fil<69> exists<74> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>quer<EFBFBD><EFBFBD> i<> mad<61> t<> determin<69> i<> th<74> fil<69> shoul<75><6C> b<><62> delete<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>befor<EFBFBD> continuing.
|
||||
|
||||
0A>prlcom b:program.prl a:program.com
|
||||
|
||||
|
||||
Page 9, paragraph 7
|
||||
|
||||
Add: MP/M DDT enhancements are described in Appendix J.
|
||||
|
||||
|
||||
|
||||
|
||||
<EFBFBD>
|
||||
|
||||
Page 10, paragraph 2
|
||||
|
||||
Add: GENHEX
|
||||
|
||||
<20>Th<54><68> GENHEؠ comman<61> i<> use<73> t<> produc<75> <20> fil<69> o<> typ<79><70> HE<48> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fro<EFBFBD><EFBFBD> <20><> fil<69> o<> typ<79> COM<4F><4D> Thi<68> i<> usefu<66> t<> b<><62> abl<62><6C> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>generat<EFBFBD><EFBFBD> HE<48> file<6C> fo<66> GENMO<4D> input<75><74> Th<54> GENHEؠ comman<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ha<EFBFBD> tw<74> parameters<72><73> th<74> firs<72> i<> th<74> CO<43> fil<69> nam<61> an<61> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>secon<EFBFBD> i<> th<74> offse<73> fo<66> th<74> HE<48> file<6C> Fo<46> example:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0A>GENHEX PROG.COM 100
|
||||
|
||||
|
||||
Page 13, paragraph 3
|
||||
|
||||
Add: Th<54> non-residen<65> versio<69> o<> th<74> spoole<6C> (SPOOL.PRL<52> differ<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD> it<69> operatio<69> fro<72> th<74> SPOOL.RS<52> a<> follows<77> i<> use<73> al<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD> th<74> memor<6F> availabl<62> i<> th<74> memor<6F> segmen<65> i<> whic<69><63> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD> runnin<69><6E> fo<66><6F> buffe<66><65> space<63><65><EFBFBD> i<><69> display<61><79> <20><> messag<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>indicatin<EFBFBD><EFBFBD> it<69> statu<74> an<61> the<68> detache<68> fro<72> th<74><68> console<6C> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD> ma<6D> b<> aborte<74> fro<72> <20> consol<6F> othe<68> tha<68> th<74><68> initiato<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>onl<EFBFBD> b<> specifyin<69> th<74> consol<6F> numbe<62> o<> th<74> initiato<74> a<> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>paramete<EFBFBD> o<> th<74> STOPSPL<50> command.
|
||||
|
||||
3B>STOPSPLR 2
|
||||
|
||||
|
||||
Page 14, paragraph 2
|
||||
|
||||
Add: ABORT
|
||||
|
||||
Th<54><68> ABORԠ comman<61><6E> allow<6F> th<74> use<73><65> t<><74> abor<6F><72> <20><> runnin<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>program<EFBFBD><EFBFBD> Th<54><68> progra<72><61> t<><74> b<><62> aborte<74> i<><69> entere<72><65> a<><61> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>paramete<EFBFBD> i<> th<74> ABOR<4F> command.
|
||||
|
||||
1A>ABORT RDT
|
||||
|
||||
<20><> progra<72><61> initiate<74><65> fro<72> anothe<68><65> consol<6F><6C> ma<6D><61> onl<6E><6C> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>aborte<EFBFBD> b<> includin<69> th<74> consol<6F> numbe<62> o<> th<74> initiato<74> a<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> paramete<74> o<> th<74> ABOR<4F> command.
|
||||
|
||||
3B>ABORT RDT 1
|
||||
|
||||
Page 21, paragraph 1
|
||||
|
||||
Change: 3 Reader Input
|
||||
4 Punch Output
|
||||
|
||||
To: 3 Raw Unattached Console Input
|
||||
4 Raw Unattached Console Output
|
||||
|
||||
|
||||
|
||||
<EFBFBD>
|
||||
|
||||
Add: 37 Reset Drive
|
||||
38 Access Drive
|
||||
39 Free Drive
|
||||
40 Write Random with Zero Fill
|
||||
|
||||
156 Return Process Descriptor Address
|
||||
157 Abort Specified Process
|
||||
|
||||
|
||||
Page 23, paragraph 3, following t2' definition
|
||||
|
||||
t3' = 1 => file has been updated
|
||||
|
||||
Page 27, change FUNCTION 3 to:
|
||||
|
||||
***************************************
|
||||
* *
|
||||
* FUNCTION 3: RAW CONSOLE INPUT *
|
||||
* *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 03H *
|
||||
* *
|
||||
* Returned Value: *
|
||||
* Register A: ASCII Character *
|
||||
***************************************
|
||||
|
||||
<EFBFBD><EFBFBD> Th<54><68> RAנ CONSOLŠ INPUԠ functio<69><6F> read<61><64> th<74><68> nex<65><78> consol<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>characte<EFBFBD><EFBFBD> t<><74> Registe<74><65> A<><41> Ther<65><72> i<> n<><6E> testin<69><6E> o<><6F> th<74><68> inpu<70> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>character<EFBFBD><EFBFBD> tha<68><61> is<69><73> th<74><68> syste<74> wil<69> directl<74> pas<61><73> throug<75><67> al<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>character<EFBFBD><EFBFBD><EFBFBD> includin砠 th堠 contro젠 character<65><72><EFBFBD> withou<6F><75><EFBFBD> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>interpretation<EFBFBD><EFBFBD> Thi<68><69> functio<69> doe<6F> no<6E> requir<69> tha<68> th<74> consol<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD> attached<65> no<6E> doe<6F> i<> attac<61> th<74> console.
|
||||
|
||||
***************************************
|
||||
* *
|
||||
* FUNCTION 4: RAW CONSOLE OUTPUT *
|
||||
* *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 04H *
|
||||
* Register E: ASCII Character *
|
||||
* *
|
||||
<EFBFBD> ***************************************
|
||||
|
||||
Th<54><68> RAנ CONSOL<4F> OUTPU<50> functio<69> send<6E> th<74><68> ASCIɠ characte<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fro<EFBFBD> registe<74> <20> t<> th<74> consol<6F> device<63><65> Ther<65> i<> n<> testin<69> o<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>outpu<EFBFBD> character<65><72> tha<68> is<69> tab<61> ar<61> no<6E> expande<64> an<61> n<> check<63> ar<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mad<EFBFBD><EFBFBD> fo<66> start/sto<74> scrol<6F> an<61> printe<74> echo<68><6F> Thi<68> functio<69><6F> doe<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>no<EFBFBD><EFBFBD> requir<69> tha<68> th<74> consol<6F> b<> attached<65><64> no<6E> doe<6F> i<> attac<61><63> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>console<EFBFBD><EFBFBD> Thus<75> unsolicite<74> message<67> ma<6D> b<> sen<65> t<> othe<68> console<6C> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><EFBFBD> simpl<70> changin<69> th<74> consol<6F> byt<79> o<> th<74> proces<65> descripto<74><6F> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>the<EFBFBD> usin<69> thi<68> function<6F>
|
||||
<EFBFBD> Page 28, paragraph 1
|
||||
|
||||
Add: Cautio<69><6F> mus<75> b<> observe<76> i<> th<74> us<75> o<> th<74><68> printe<74><65> sinc<6E> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ther<EFBFBD> i<> n<> implici<63> lis<69> devic<69> ownership<69><70> Tha<68> is<69><73> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lis<EFBFBD><EFBFBD> devic<69> i<> no<6E> "opened<65> o<> "closed"<22><> MP/<2F> afford<72><64> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>secondar<EFBFBD><EFBFBD><EFBFBD> explici<63><69><EFBFBD> mean<61><6E> t<><74> resolv<6C><76> printe<74><65><EFBFBD> mutua<75> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>exclusion<EFBFBD> <20> queu<65> name<6D> 'MXList<73> i<> create<74> b<> th<74> syste<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> handl<64> mutua<75> exclusion<6F> T<> properl<72> obtai<61> us<75> o<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>printe<EFBFBD><EFBFBD> <20> progra<72> shoul<75> ope<70> th<74> 'MXList<73> queu<65> an<61><6E> rea<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD> message<67><65> Whe<68> th<74> messag<61> i<> obtaine<6E> th<74> printe<74> ma<6D> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD> used<65><64> Whe<68> printin<69> i<> complete<74> th<74> messag<61> shoul<75><6C> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>writte<EFBFBD> bac<61> t<> th<74> 'MXList<73> queue<75><65> Thi<68> techniqu<71> i<> use<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD> th<74> MP/<2F> PIP<49> SPOOLer<65> an<61> TM<54> ctl-<2D> operations.
|
||||
|
||||
|
||||
Page 32, add the following to FUNCTION 13 box
|
||||
|
||||
* Returned Value: *
|
||||
* Register A: Return Code *
|
||||
|
||||
|
||||
Page 32, paragraph 2
|
||||
|
||||
Change: [entire paragraph]
|
||||
|
||||
To: Th<54><68> RESE<53> DIS<49> SYSTE<54> functio<69> i<> qualifie<69> i<><69> MP/M<><4D> I<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ther<EFBFBD><EFBFBD> ar<61><72> an<61> ope<70> file<6C> o<> an<61><6E> drive<76><65> th<74><68> rese<73><65> dis<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>syste<EFBFBD><EFBFBD> i<><69> denie<69><65> an<61><6E> th<74> reaso<73><6F> i<><69> displaye<79><65> o<><6F> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>console.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD> returne<6E> valu<6C> indicate<74> whethe<68> o<> no<6E> th<74> rese<73> disk <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wa<EFBFBD><EFBFBD> successful<75><6C> I<> an<61> proces<65> i<> currentl<74> accessin<69><6E> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>drive<EFBFBD> a<> erro<72> cod<6F> o<> 0FF<46> i<> returne<6E> i<> th<74> <20> register<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> retur<75> cod<6F> o<> <20> indicate<74> success.
|
||||
|
||||
Page 46, add the following functions:
|
||||
|
||||
***************************************
|
||||
* *
|
||||
* FUNCTION 37: RESET DRIVE *
|
||||
* *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 25H *
|
||||
* Register DE: Drive Vector *
|
||||
* *
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>* Returned Value: *
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>* Register A: Return Code *
|
||||
***************************************
|
||||
|
||||
Th<54><68> RESEԠ DRIVŠ functio<69><6F> allow<6F><77> resettin<69><6E> o<><6F> specifie<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>drive(s)<29><> Th<54> passe<73> paramete<74> i<> <20> 1<> bi<62> vecto<74> o<> drive<76> t<> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>reset<EFBFBD><EFBFBD> th<74><68> leas<61> significan<61> bi<62> i<> driv<69> A:<3A><> I<> ther<65> ar<61><72> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ope<EFBFBD> file<6C> o<> <20> specifie<69> drive<76><65> th<74> rese<73> driv<69> i<> denie<69> an<61> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>reaso<EFBFBD> i<> displaye<79> o<> th<74> console.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54><68> returne<6E> valu<6C> indicate<74> whethe<68> o<> no<6E> th<74> rese<73><65> driv<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wa<EFBFBD> successful<75><6C> I<> an<61> proces<65> i<> currentl<74> accessin<69> <20> driv<69><76> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD> reset<65><74> a<> erro<72> cod<6F> o<> 0FF<46> i<> returne<6E> i<> th<74> <20> register<65><72> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>return code of 0 indicates success.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
***************************************
|
||||
* *
|
||||
* FUNCTION 38: ACCESS DRIVE *
|
||||
* *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 26H *
|
||||
* Register DE: Drive Vector *
|
||||
* *
|
||||
***************************************
|
||||
|
||||
Th<54><68> ACCESӠ DRIV<49> functio<69> allow<6F> settin<69> th<74><68> driv<69><76> acces<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bit(s<><73> i<><69> th<74> callin<69> processe<73> proces<65> descriptor<6F><72> Th<54><68> passe<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>paramete<EFBFBD> i<> <20> 1<> bi<62> vecto<74> o<> drive(s<> t<> b<> accessed<65><64> th<74> leas<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>significan<EFBFBD> bi<62> i<> driv<69> A:.
|
||||
|
||||
|
||||
***************************************
|
||||
* *
|
||||
* FUNCTION 39: FREE DRIVE *
|
||||
* *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 27H *
|
||||
* Register DE: Drive Vector *
|
||||
* *
|
||||
***************************************
|
||||
|
||||
Th<54><68> FREŠ DRIVŠ functio<69> allow<6F> freein<69><6E> th<74><68> driv<69><76> acces<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bit(s<><73> i<> th<74> callin<69> processe<73> proces<65><73> descriptor<6F><72> Th<54><68> passe<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>paramete<EFBFBD><EFBFBD> i<><69> <20> 1<> bi<62> vecto<74> o<> drive(s<> t<> b<> freed<65><64> th<74><68> leas<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>significan<EFBFBD> bi<62> i<> driv<69> A:.
|
||||
|
||||
***************************************
|
||||
* *
|
||||
* FUNCTION 40: WRITE RANDOM WITH *
|
||||
* ZERO FILL *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 28H *
|
||||
* Register DE: FCB Address *
|
||||
* *
|
||||
* Returned Value: *
|
||||
* Register A: Return Code *
|
||||
***************************************
|
||||
|
||||
Th<54><68> WRITŠ RANDO͠ WIT<49> ZER<45> FIL<49> operatio<69><6F> i<><69> simila<6C><61> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FUNCTIOΠ 34<33> WRIT<49> RANDO<44> wit<69> th<74> exceptio<69> tha<68> al<61><6C> unallocate<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>block<EFBFBD> ar<61> zer<65> filled.
|
||||
<EFBFBD> Page 49, add to description of circular queue element BUFFER
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Note<EFBFBD> Mutua<75> exclusio<69> queue<75> requir<69> <20> tw<74> byt<79> buffe<66> fo<66> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>the owner process descriptor address.
|
||||
|
||||
|
||||
Page 51, add to bottom of page
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> QUEUE NAMING CONVENTIONS
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> followin<69> convention<6F> shoul<75> b<> use<73> i<> th<74> namin<69><6E> o<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>queues<EFBFBD><EFBFBD> Queue<75> whic<69> ar<61> t<> b<> directl<74> writte<74> t<> b<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Termina젠 Messag<61><67> Proces<65><73> (TMP<4D><50> vi<76><69> th<74><68> Comman<61><6E> Lin<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Interprete<EFBFBD> (CLI<4C> mus<75> hav<61> a<> uppe<70> cas<61> ASCI<43> name<6D> Thu<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>whe<EFBFBD><EFBFBD> a<><61> operato<74><6F> enter<65> th<74> queu<65><75> nam<61><6D> followe<77><65> b<><62> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>comman<EFBFBD><EFBFBD> tai<61> a<> <20> console<6C><65> th<74> comman<61> tai<61> i<> writte<74> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>the queue.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD> orde<64><65> t<><74> mak<61> <20> queu<65> inaccessibl<62> b<><62> <20><> use<73><65> a<><61> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>console it must contain at least one lower case character.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mutua<EFBFBD><EFBFBD> exclusio<69><6F> queue<75> shoul<75> b<> name<6D> uppe<70><65> cas<61><73> 'MX<4D> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>followe<EFBFBD><EFBFBD> b<><62> <20> t<> <20> additiona<6E><61> ASCIɠ characters<72><73> Thes<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>queue<EFBFBD><EFBFBD> ar<61> treate<74> speciall<6C> i<> tha<68> the<68> mus<75> hav<61> <20><> tw<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>byt<EFBFBD> buffe<66> i<> whic<69> MP/<2F> place<63> th<74> addres<65> o<> th<74> proces<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>descripto<EFBFBD> ownin<69> th<74> mutua<75> exclusio<69> message.
|
||||
|
||||
|
||||
Page 52
|
||||
|
||||
Change: SCRATCH (13) BYTE )
|
||||
|
||||
To: DRVACT ADDRESS,
|
||||
REGISTERS (20) BYTE,
|
||||
SCRATCH (2) BYTE )
|
||||
|
||||
|
||||
Page 53
|
||||
|
||||
Change: DS 13 ; SCRATCH
|
||||
|
||||
To: DS 2 ; drives active
|
||||
DS 20 ; register save area
|
||||
DS 2 ; scratch
|
||||
|
||||
|
||||
Change: SCRATCH =13 bytes, system scratch bytes
|
||||
|
||||
To: DRVACT = 2 bytes, 16 bit vector of drives being
|
||||
accessed by the process
|
||||
REGISTERS =20 bytes, 8080 / Z80 register save area
|
||||
SCRATCH = 2 bytes, system scratch bytes
|
||||
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> Page 53, add to process descriptor element NAME definition
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> hig<69><67> orde<64><65> bi<62> o<> eac<61> byt<79> o<> th<74> proces<65><73> nam<61><6D> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>reserve<EFBFBD> fo<66> us<75> b<> th<74> system<65><6D> Th<54> hig<69> orde<64> bi<62> o<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>firs<EFBFBD> byt<79> (identifie<69> a<> NAME(0)'<27> "on<6F> indicate<74> tha<68> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>proces<EFBFBD><EFBFBD> i<><69> performin<69> direc<65> consol<6F> BIO<49> call<6C> an<61><6E> tha<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MP/<2F> i<> t<> ignor<6F> al<61> contro<72> characters<72><73> I<> i<> als<6C> use<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> suppres<65> th<74> norma<6D> consol<6F> statu<74> chec<65> don<6F> whe<68><65> BDO<44> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dis<EFBFBD> function<6F> ar<61> invoked.
|
||||
|
||||
|
||||
Page 53, add to the bottom of the page
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PROCESS NAMING CONVENTIONS
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> followin<69> convention<6F> shoul<75> b<> use<73> i<> th<74> namin<69><6E> o<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>processes<EFBFBD><EFBFBD> Processe<73><65> whic<69> wai<61> o<> queue<75> tha<68> ar<61> t<> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sen<EFBFBD><EFBFBD> comman<61><6E> tail<69> fro<72> th<74> TMP<4D> ar<61><72> give<76><65> th<74><68> consol<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>resourc<EFBFBD> i<> thei<65> nam<61> matche<68> tha<68> o<> th<74> queu<65> whic<69> the<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>are reading.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Processe<EFBFBD><EFBFBD> whic<69><63> ar<61> t<> b<> protecte<74> fro<72> abortio<69><6F> b<><62> a<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>operato<EFBFBD><EFBFBD> usin<69><6E> th<74> ABOR<4F> comman<61> mus<75> hav<61> a<><61> leas<61><73> on<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lower case character in the process name.
|
||||
|
||||
|
||||
Page 54, add to bottom of page
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Memory Descriptor Data Structure:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PL/M:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Declare memory$descriptor structure (
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> base byte,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> size byte,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> attributes byte,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bank byte );
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Assembly Language:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MEMDESCRIPT:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 1 ; base
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 1 ; size
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 1 ; attributes
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 1 ; bank
|
||||
|
||||
Page 57, add to FUNCTION 134: MAKE QUEUE
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Queue<EFBFBD><EFBFBD> ca<63> onl<6E> b<> create<74> eithe<68> i<> commo<6D> memor<6F><72> o<><6F> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>use<EFBFBD><EFBFBD> program<61> i<> non-banke<EFBFBD> systems<6D><73> Th<54> reaso<73> i<><69> tha<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>queue<EFBFBD><EFBFBD> ar<61><72> al<61> maintaine<6E> o<> <20> linke<6B> lis<69> whic<69> mus<75><73> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>accessibl<EFBFBD> a<> al<61> times<65><73> I.E.<2E> <20> queu<65> canno<6E> resid<69> i<> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memor<EFBFBD> segmen<65> whic<69> i<> ban<61> switched<65><64> However<65><72> <20><> queu<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>create<EFBFBD><EFBFBD> i<> commo<6D> memor<6F> ca<63> b<> accesse<73> b<> al<61> syste<74> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>use<EFBFBD> programs.
|
||||
<EFBFBD> Page 62, add to FUNCTION 143: TERMINATE PROCESS
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Entry Parameter, Register D: Conditional memory free
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD> <20> use<73> proces<65> i<> bein<69> terminate<74> an<61> Registe<74> <20> i<><69> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0FFH<EFBFBD><EFBFBD> th<74> memor<6F> segmen<65> i<> no<6E> released<65><64> Thu<68> <20> proces<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>whic<EFBFBD> i<> <20> chil<69> o<> <20> paren<65> proces<65> bot<6F> executin<69> i<><69> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sam<EFBFBD><EFBFBD> memor<6F><72> segmen<65><6E> ca<63> terminat<61><74> withou<6F><75> freein<69><6E> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memory segment which is also occupied by the parent.
|
||||
|
||||
Page 62, add to FUNCTION 144: CREATE PROCESS
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Processe<EFBFBD> ca<63> onl<6E> b<> create<74> eithe<68> i<> commo<6D> memor<6F> o<> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>use<EFBFBD><EFBFBD> program<61> i<> non-banke<EFBFBD> systems<6D><73> Th<54> reaso<73> i<><69> tha<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>proces<EFBFBD><EFBFBD> descriptor<6F><72> ar<61> al<61> maintaine<6E><65> o<><6F> linke<6B><65> list<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>whic<EFBFBD> mus<75> b<> accessibl<62> a<> al<61> times.
|
||||
|
||||
|
||||
Page 68, add to bottom of page
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***************************************
|
||||
* *
|
||||
* FUNCTION 156: RETURN PROCESS *
|
||||
* DESCRIPTOR ADDRESS *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 9CH *
|
||||
* *
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>* Returned Value: *
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>* Register HL: PD Address *
|
||||
***************************************
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54><68> RETURΠ PROCES<45> DESCRIPTO<54> ADDRES<45> functio<69> obtain<69><6E> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>addres<EFBFBD><EFBFBD> o<> callin<69> processe<73> proces<65><73> descriptor<6F><72> B<><42> definitio<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>this is the head of the ready list.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***************************************
|
||||
* *
|
||||
* FUNCTION 157: ABORT SPECIFIED *
|
||||
* PROCESS *
|
||||
***************************************
|
||||
* Entry Parameters: *
|
||||
* Register C: 9DH *
|
||||
* Register DE: APB Address *
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>* Returned Value: *
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>* Register A: Return Code *
|
||||
***************************************
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54><68> ABORԠ SPECIFIE<49> PROCES<45> functio<69> permit<69> <20><> proces<65><73> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>terminat<EFBFBD><EFBFBD> anothe<68> specifie<69> process<73><73> Th<54> passe<73> paramete<74> i<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>addres<EFBFBD><EFBFBD> o<><6F> a<><61> Abor<6F> Paramete<74> Bloc<6F><63> (APB<EFBFBD><EFBFBD> whic<69><63> contain<69><6E> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>following data structure:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PL/M:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Declare Abort$paramter$block structure (
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pdadr address,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> termination$code address,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> name (8) byte,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> console byte );
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Assembly Language:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> APB:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 2 ; process desciptor address
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 2 ; termination code
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 8 ; process name
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DS 1 ; console used by process
|
||||
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD> th<74> proces<65> descripto<74> addres<65> i<> know<6F> i<> ca<63> b<> fille<6C> i<> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD> proces<65> nam<61> an<61> consol<6F> ca<63> b<> omitted<65> Otherwis<69> th<74> proces<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>descripto<EFBFBD><EFBFBD> addres<65> fiel<65> shoul<75> b<> <20> zer<65> an<61> th<74> proces<65> nam<61> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>consol<EFBFBD><EFBFBD> mus<75> b<> specified<65><64> I<> eithe<68> cas<61> th<74><68> terminatio<69><6F> cod<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mus<EFBFBD><EFBFBD> b<><62> supplie<69> whic<69> i<> th<74> paramete<74> passe<73> t<><74> FUNCTIOΠ 143<34> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TERMINAT<EFBFBD> PROCESS.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Page 73, add to step (6)
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD> firs<72> LDRBIO<49> cal<61> mad<61> b<> th<74> MPMLD<4C> i<> SELDSK<53> selec<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>disk<EFBFBD><EFBFBD> I<> ther<65> ar<61> device<63> whic<69> requir<69> initializatio<69> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cal<EFBFBD> t<> th<74> LDRBIO<49> col<6F> star<61> o<> othe<68> initializatio<69> cod<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>should be placed at the beginning of the SELDSK handler.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Note<EFBFBD> Th<54> MPMLD<4C> use<73> 4000<30> - 6FFF<46> a<> <20> buffe<66> are<72><65> whe<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>loading and relocating the MPM.SYS file.
|
||||
|
||||
Page 74, add to procedure to prepare an XIOS.SPR file
|
||||
|
||||
*** Warning ***
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mak<EFBFBD><EFBFBD> certai<61><69> tha<68> you<6F> XIOS.AS<41> fil<69> contain<69><6E> <20><> define<6E> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>byt<EFBFBD><EFBFBD> o<> zer<65> a<> th<74> end<6E><64> Thi<68> i<> especiall<6C> critica<63><61> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>you<EFBFBD> XIOS.AS<41> fil<69> end<6E> wit<69> <20> define<6E> storage<67> Th<54> reaso<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fo<EFBFBD><EFBFBD> thi<68> requiremen<65> i<> tha<68> ther<65> ar<61> n<> HE<48> fil<69> record<72> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>produce<EFBFBD><EFBFBD> fo<66> define<6E> storg<72> (DS<44><53> statements<74><73> Thus<75><73> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>outpu<EFBFBD> HE<48> fil<69> i<> misleadin<69> becaus<75> i<> doe<6F> no<6E><6F> identif<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD><EFBFBD> tru<72><75> lent<6E><74> o<><6F> you<6F><75> XIOS<4F><53> Th<54><68> followin<69><6E> exampl<70> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>illustrates a properly terminated XIOS:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> begdat equ $
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dirbuf: ds 128
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> alv0: ds 31
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> csv0: ds 16
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> db 0 ; force out hex record at end
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> end
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Not<EFBFBD><EFBFBD> tha<68><61> thi<68><69> sam<61> techniqu<71> mus<75><73> b<><62> applie<69><65> t<><74> an<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>other PRL or RSP programs that you prepare.
|
||||
|
||||
|
||||
Page 83, add to end of SELDSK paragraph
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD> entr<74> t<> SELDS<44> i<> i<> possibl<62> t<> determin<69> whethe<68><65> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD> th<74><68> firs<72> tim<69> th<74> specifie<69> dis<69> ha<68><61> bee<65><65> selected<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Registe<EFBFBD> E<><45> bi<62> <20> (leas<EFBFBD> significan<61> bit<69> i<> <20> zer<65> i<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>driv<EFBFBD><EFBFBD> ha<68> no<6E> bee<65> previousl<73> selected<65><64> Thi<68> informatio<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD> o<><6F> interes<65> i<> system<65> whic<69> rea<65><61> dis<69><73> configuratio<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>informatio<EFBFBD><EFBFBD> fro<72><6F> th<74> driv<69> i<> orde<64> t<> se<73> u<><75> <20><> dynami<6D> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>disk definition table.
|
||||
|
||||
|
||||
Page 86, paragraph 3, add to jump vector list
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BIOS+48H JMP IDLE ; IDLE PROCEDURE (optional)
|
||||
|
||||
|
||||
Page 87, paragraph 8, add to SYSTEMINIT
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> SYSTEMINIԠ entr<74> poin<69> i<> calle<6C> prio<69> t<><74> an<61><6E> othe<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XIO<EFBFBD> call<6C><6C> Th<54> MPMLD<4C> disable<6C> interrupts<74> thu<68> i<> ca<63> b<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>assume<EFBFBD><EFBFBD> tha<68><61> interrupt<70> ar<61> stil<69> disable<6C> upo<70> entr<74><72> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SYSTEMINIT<EFBFBD><EFBFBD> Interrupt<70><74> ar<61> enable<6C> b<><62> MP/͠ immediatel<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>upo<EFBFBD> retur<75> fro<72> SYSTEMINIT.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD> system<65><6D> wit<69> ban<61> switche<68> memor<6F> i<> i<><69> necessar<61><72> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>setu<EFBFBD><EFBFBD> th<74><68> bas<61> pag<61> (0000<EFBFBD> - 00FFH<EFBFBD> withi<68> eac<61><63> ban<61><6E> o<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memory<EFBFBD><EFBFBD> Bot<6F><74> th<74> MPMLD<4C> an<61> MP/<EFBFBD> itsel<65> assum<75> tha<68><61> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bas<EFBFBD><EFBFBD> ban<61><6E> (ban<EFBFBD><EFBFBD> #0<EFBFBD> i<> switche<68> i<> whe<68><65> th<74><68> MPMLDҠ i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>executed<EFBFBD><EFBFBD> Th<54><68> bas<61> ban<61> i<> properl<72> initialize<7A> b<><62> MP/<EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>prio<EFBFBD> t<> enterin<69> SYSTEMINIT<49> Th<54> informatio<69> require<72> fo<66> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD><EFBFBD> initializatio<69> i<> provide<64> o<> entr<74> t<><74> SYSTEMINIԠ i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>the following registers:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Register C = MP/M Debugger restart #
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DE = MP/M entry point address for the debugger
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Place a jump at the proper debugger
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> restart location to the address contained
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> in DE.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HL = BIOS direct jump table address
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Place a jump instruction at location
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0000H in each banks base page to the
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> address contained in HL.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<EFBFBD> Page 88, add description of IDLE entry point subroutine
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IDLE Th<54><68> idl<64><6C> entr<74><72> poin<69><6E> i<><69> include<64><65> t<><74> permi<6D> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>optimizatio<EFBFBD> o<> syste<74> performanc<6E> whe<68> th<74><68> use<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ha<EFBFBD> a<> XIO<49> tha<68> i<> al<61> interrup<75> driven<65> I<> yo<79> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hav<EFBFBD><EFBFBD> polle<6C><65> device<63><65> i<><69> you<6F><75> XIOS<4F><53> th<74><68> IDL<44> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>procedur堠 ma<6D><61> b<><62> omitte<74><65> b<><62> placin<69><6E> <20><> NO<4E> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>instructio<EFBFBD> a<> th<74> BIOS+48<EFBFBD> locatio<69> wher<65><72> ther<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>woul<EFBFBD> otherwis<69> b<> <20> jum<75> t<> a<> idl<64> procedure.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> idl<64><6C> entr<74> poin<69> i<> calle<6C> repeatedl<64><6C> whe<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MP/<EFBFBD> i<> idling<6E> Tha<68> is<69> whe<68> ther<65> ar<61> n<> othe<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>processe<EFBFBD><EFBFBD> read<61><64> t<> run<75><6E> I<> system<65><6D> tha<68><61> ar<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>entirel<EFBFBD><EFBFBD> interrup<75><70> drive<76><65> th<74><68> idl<64><6C> procedur<75> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>should be as follows:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IDLE:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HLT
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RET
|
||||
|
||||
|
||||
Page 88, add to INTERRUPT SERVICE ROUTINES section
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> onl<6E><6C> XDO<44> o<> BDO<44> cal<61> whic<69> shoul<75> b<> mad<61><64> fro<72><6F> a<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>interrup<EFBFBD><EFBFBD> handle<6C><65> i<> FUNCTIO<49> 133<EFBFBD> FLA<4C> SET<45><54> An<41><6E> othe<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XDOӠ o<><6F> BDO<44> cal<61> wil<69> resul<75> i<> <20> dispatc<74><63> whic<69><63> woul<75> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>the<EFBFBD> enabl<62> interrupt<70> prio<69> t<> completin<69> executio<69> o<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>interrup<EFBFBD> handler.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD> i<><69> recommende<64><65> tha<68><61> interrupt<70><74> onl<6E><6C> b<><62> use䠠 fo<66> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>operation<EFBFBD> whic<69> ar<61> asynchronous<75> suc<75> a<> consol<6F> inpu<70> o<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dis<EFBFBD><EFBFBD> operatio<69> complete<74><65> I<> general<61><6C> operation<6F> suc<75> a<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>consol<EFBFBD> outpu<70> shoul<75> no<6E> b<> interrup<75> driven<65><6E> Th<54> reaso<73> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tha<EFBFBD><EFBFBD> interrupt<70><74> ar<61> no<6E> desirabl<62> fo<66> consol<6F><6C> outpu<70><75> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tha<EFBFBD><EFBFBD> th<74> syste<74> i<> afforde<64> som<6F> elasticit<69> b<><62> performin<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>polle<EFBFBD> consol<6F> output<75> whil<69> idling<6E><67> rathe<68> tha<68> incurrin<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD> dispatc<74> overhea<65> fo<66> eac<61> characte<74> transmitted<65> Thi<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>is particularily true at higher baud rates.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD> system<65> requirin<69> th<74> Z8<EFBFBD> retur<75> fro<72> interrup<75><70> (RETI<EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>instruction<EFBFBD><EFBFBD> th<74> jum<75> t<> PDIS<49> a<> th<74> en<65> o<> th<74> interrup<75> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>servicin<EFBFBD><EFBFBD> ca<63><61> b<> don<6F> b<> placin<69> th<74> addres<65> o<> PDISР o<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD> stac<61> an<61> the<68> executin<69> a<> RET<45> instruction.
|
||||
|
||||
|
||||
Page 89, paragraph 1
|
||||
|
||||
Add:<3A><><EFBFBD><EFBFBD>Th堠 recommende䠠 tim<69><6D> uni<6E><69><EFBFBD> i<><69><EFBFBD> 16.6<EFBFBD><EFBFBD><EFBFBD> milliseconds<64>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>correspondin<EFBFBD><EFBFBD> t<><74> 6<EFBFBD> Hz<48><7A> Whe<68> operatin<69> wit<69> 5<EFBFBD><EFBFBD> H<><48> th<74>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>recommended time unit is 20 milliseconds.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD> tic<69><63> frequenc<6E> i<> critica<63> i<> tha<68> i<> determine<6E><65> th<74>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dispatc<EFBFBD><EFBFBD> frequenc<6E> fo<66> comput<75> boun<75><6E> processes<65><73> I<><49> th<74>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>frequenc<EFBFBD><EFBFBD> i<><69> to<74><6F> high<67><68> <20> significan<61> amoun<75><6E> o<><6F> syste<74>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>overhea<EFBFBD><EFBFBD> i<><69> incurre<72> b<><62> excessiv<69><76> dispatches<65><73> I<><49> th<74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>frequenc<6E> i<> to<74> low<6F> comput<75> boun<75> processe<73> wil<69> kee<65> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CPU resource for accordingly longer periods.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Page 90, make the following table changes
|
||||
|
||||
004-004 Bank switched memory flag
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>005-005 Z80 CPU
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>006-006 Banked BDOS file manager
|
||||
|
||||
016-047 Initial memory segment table
|
||||
|
||||
112-122 Scratch area for memory segments
|
||||
123-127 Unassigned
|
||||
|
||||
144-255 Reserved
|
||||
|
||||
|
||||
Page 92, add the following question(s) during GENSYS
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z80 CPU (Y/N)?
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD> respons<6E> o<> 'Y<> wil<69> caus<75> MP/<EFBFBD> t<> sav<61> th<74> stat<61> o<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>complementary Z80 registers during dispatches.
|
||||
|
||||
Bank switched memory (Y/N)?
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-I<EFBFBD><EFBFBD> th<74> abov<6F> respons<6E> i<> 'Y<> the<68> th<74> followin<69><6E> questio<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>is displayed:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Banked BDOS file manager (Y/N)?
|
||||
|
||||
|
||||
|
||||
Page 93, paragraph 3
|
||||
|
||||
Change: I<><49> th<74> syste<74> ha<68> ban<61> switche<68> memor<6F> <20> comm<6D> an<61> <20><> ban<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>numbe<EFBFBD> shoul<75> follo<6C> th<74> bas<61> specification.
|
||||
|
||||
To: I<> th<74> syste<74> ha<68> ban<61> switche<68> memory<72><79> respon<6F> wit<69> <20> 'Y<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD> th<74><68> GENSY<53> questio<69> an<61> yo<79> wil<69> b<> prompte<74><65> fo<66><6F> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>base<EFBFBD> size<7A> attributes<65> an<61> ban<61> o<> eac<61> memor<6F> segment.
|
||||
|
||||
|
||||
Page 93, paragraph 4
|
||||
|
||||
Change: : 00,0
|
||||
: 00,1
|
||||
: 00,2
|
||||
: ff
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>To: Base,size,attribs,bank = 00,C0,00,0
|
||||
Base,size,attribs,bank = 00,C0,00,1
|
||||
Base,size,attribs,bank = 00,C0,00,2
|
||||
Base,size,attribs,bank = ff
|
||||
<EFBFBD> Add: Th<54> attribut<75> byt<79> i<> normall<6C> define<6E> a<> 00<EFBFBD><EFBFBD> However<65> i<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>yo<EFBFBD><EFBFBD> wis<69><73> t<> pre-allocat<EFBFBD> <20> memor<6F> segmen<65> <20> valu<6C> o<><6F> FF<46> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>shoul<EFBFBD><EFBFBD> b<><62> specified<65><64> Th<54> ban<61> byt<79><74> valu<6C><75> i<><69> hardwar<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dependen<EFBFBD><EFBFBD> an<61><6E> i<><69> usuall<6C><6C> th<74> valu<6C><75> sen<65><6E> t<><74> th<74><68> ban<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>switchin<EFBFBD> hardwar<61> t<> selec<65> th<74> specifie<69> bank.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD> <20> banke<6B> BDO<44> fil<69> manage<67> ha<68> bee<65> requested<65> th<74> firs<72> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memor<EFBFBD> segmen<65> specifie<69> shoul<75> b<> fo<66> ban<61> #0<EFBFBD><EFBFBD> Tha<68> wil<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD> th<74> ban<61> i<> whic<69> th<74> BNKBDO<44> wil<69> reside.
|
||||
|
||||
|
||||
Page 97
|
||||
|
||||
Change: 3 Reader Input
|
||||
4 Punch Output
|
||||
|
||||
7 Get I/O Byte
|
||||
8 Set I/O Byte
|
||||
|
||||
To: 3 Raw Unattached Console Input
|
||||
4 Raw Unattached Console Output
|
||||
|
||||
7 *** Not Supported ***
|
||||
8 *** Not Supported ***
|
||||
|
||||
|
||||
Page 99
|
||||
|
||||
Change: CP/M
|
||||
|
||||
To: MP/M
|
||||
|
||||
Change: 0000H - 0002H Contain<69><6E> <20><> jum<75> instructio<69> t<><74> th<74><68> war<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>star<EFBFBD> entr<74> poin<69> a<> locatio<69> 4A03H+b<EFBFBD> Thi<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>allow<EFBFBD><EFBFBD> <20><> simpl<70> programme<6D><65> restar<61><72> (JM<EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>000H<EFBFBD><EFBFBD> o<><6F> manua<75> restar<61><72> fro<72><6F> th<74><68> fron<6F> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>panel.
|
||||
To: 0000H - 0002H Contain<69><6E> <20> jum<75> instructio<69> t<> XDOӠ whic<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>terminate<EFBFBD> th<74> process<73> Thi<68> allow<6F> simpl<70> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>proces<EFBFBD><EFBFBD> terminatio<69><6F> b<><62> executin<69><6E> <20><> JM<4A> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0000H.
|
||||
Page 107
|
||||
|
||||
Change: ds 1 ; memseg
|
||||
|
||||
To: db 0ffh ; memseg, identifies an RSP
|
||||
|
||||
|
||||
Change: ds 2 ; scratch
|
||||
|
||||
To: ds 2 ; drives active
|
||||
ds 20 ; registers save area
|
||||
ds 2 ; scratch
|
||||
.pa
|
||||
<EFBFBD> APPENDIX J: MP/M DDT Enhancements
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54><68> followin<69> command<6E> hav<61> bee<65> adde<64> t<> th<74> MP/͠ debugge<67> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD> provid<69><64> <20><> functio<69><6F> simila<6C> t<> CP/M'<27><> SAVŠ comman<61><6E> an<61><6E> t<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>simplify the task of patching and debugging PRL programs.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W: WRITE DISK
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54><68> purpos<6F><73> o<><6F> th<74> WRIT<49> DIS<49> comman<61> i<><69> t<><74> provid<69><64> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>capabilit<EFBFBD> t<> writ<69> <20> patche<68> progra<72> t<> disk<73><6B> <20> singl<67> paramete<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>immediatel<EFBFBD><EFBFBD> follow<6F><77> th<74> 'W<> whic<69> i<> th<74> numbe<62> o<><6F> sector<6F><72> (12<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bytes/sector<EFBFBD><EFBFBD> t<> b<> written<65><6E> Thi<68> paramete<74> i<> entere<72> i<><69> hexa-
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>decimal.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V: VALUE
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54> purpos<6F> o<> th<74> VALU<4C> comman<61> i<> t<> facilitat<61> use o<> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WRIT<EFBFBD> DIS<49> comman<61> b<> computin<69> th<74> paramete<74> t<> follo<6C> th<74> 'W'<27> <20> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>singl<EFBFBD><EFBFBD> paramete<74><65> immediatel<65><6C> follow<6F> th<74> 'V<> whic<69> i<><69> th<74><68> NEX<45> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>location following the last byte to be written to disk.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Normall<6C> <20> use<73> woul<75> rea<65> i<> <20> file<6C> edi<64> it<69> an<61> the<68> writ<69> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD> bac<61> t<> disk<73> Th<54> rea<65> comman<61> produce<63> <20> valu<6C> fo<66> NEXT<58> Thi<68> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>valu<EFBFBD><EFBFBD> ca<63> b<> entere<72> a<> <20> paramete<74> followin<69> th<74> 'V<> comman<61><6E> an<61>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD> numbe<62> o<> sector<6F> t<> b<> writte<74> ou<6F> usin<69> th<74> 'W<> comman<61><6E> wil<69>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>be computed and displayed.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N: NORMALIZE
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54><68> purpos<6F><73> o<> th<74> NORMALIZ<49> comman<61> i<> t<> relocat<61> <20><> pag<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>relocatabl<EFBFBD><EFBFBD> fil<69> whic<69> ha<68> bee<65> rea<65> int<6E> memor<6F> b<> th<74><68> debugger<65> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><EFBFBD> debu<62><75> <20><> PR̠ progra<72> th<74> us<75>r woul<75> rea<65> i<> i<><69> wit<69><74> th<74><68>'R' <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>comman<EFBFBD><EFBFBD> an<61><6E> the<68> us<75> th<74> 'N<> comman<61> t<> relocat<61> i<><69> withi<68><69> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memor<EFBFBD> segmen<65> th<74> debugge<67> i<> executing.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B: BITMAP BIT SET/RESET
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Th<54> purpos<6F> o<> th<74> BITMA<4D> BI<42> SET/RESE<EFBFBD> comman<61> i<> t<><74> enabl<62> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD> use<73> t<> updat<61> th<74> bitma<6D> o<> <20> pag<61> relocatabl<62> file<6C><65> T<> edi<64> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PR̠ fil<69> th<74> use<73> woul<75> rea<65> th<74> fil<69> in<69><6E> mak<61> change<67> t<><74> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>code<EFBFBD><EFBFBD> an<61><6E> the<68> determin<69> th<74> byte<74> whic<69> neede<64> relocatio<69><6F> (E.G<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<EFBFBD><EFBFBD> hig<69><67> orde<64><65> addres<65> byte<74> o<><6F> jum<75><6D> instructions)<EFBFBD><EFBFBD> Th<54><68> 'B<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>comman<EFBFBD><EFBFBD> woul<75> the<68> b<> use<73> t<> updat<61> th<74> bi<62> map<61><70> Ther<65> ar<61><72> tw<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>parameter<EFBFBD> specified<65> th<74> addres<65> t<> b<> modifie<69> (0100<EFBFBD> i<> th<74> bas<61> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD> th<74> progra<72> segment)<EFBFBD><EFBFBD> followe<77> b<> <20> zer<65> o<> <20> one<6E><65> <20> valu<6C> o<> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>one specifies bit setting.
|
||||
.pa
|
||||
<EFBFBD> APPENDIX K: Page Relocatable (PRL) File Specification
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Pag<61><67> relocatabl<62><6C> file<6C><65> ar<61><72> store<72><65> o<><6F> diskett<74><74> i<><69> th<74> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>following format:
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Address: Contents:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------- --------
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0001-0002H Program size
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0004-0005H Minimum buffer requirements (additional memory)
|
||||
12
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugghd.tex
Normal file
12
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugghd.tex
Normal file
@@ -0,0 +1,12 @@
|
||||
.PO 3
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 122
|
||||
.HE MP/M User's Guide
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX G: Sample Page Relocatable Program
|
||||
.sp 2
|
||||
.li
|
||||
|
||||
12
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmughhd.tex
Normal file
12
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmughhd.tex
Normal file
@@ -0,0 +1,12 @@
|
||||
.PO 3
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 127
|
||||
.HE MP/M User's Guide
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX H: Sample Resident System Process
|
||||
.sp 2
|
||||
.li
|
||||
|
||||
203
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugidx.tex
Normal file
203
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugidx.tex
Normal file
@@ -0,0 +1,203 @@
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 150
|
||||
.HE MP/M User's Guide
|
||||
.FT(All Information Herein is Proprietary to Digital Research.)
|
||||
.CE 2
|
||||
INDEX
|
||||
_____
|
||||
.NA
|
||||
.li
|
||||
|
||||
Abort (^c), 5
|
||||
ABORT, 5, 16
|
||||
Abort Specified Process, 80
|
||||
Absolute Memory Request, 62
|
||||
ABTPB, Abort Parameter Block, 80
|
||||
Access Drive, 51
|
||||
APB, Assign Parameter Block, 74
|
||||
ASM, Assembler, 10
|
||||
Assign Console, 74
|
||||
ATTACH, 5
|
||||
Attach Console, 72
|
||||
|
||||
Bank Switched Memory, 102, 112
|
||||
BDOS, 29-52, 108, 118
|
||||
BIOS, 96-101
|
||||
BNKBDOS, 19, 109
|
||||
Boot, 97
|
||||
|
||||
Call Resident System Procedure, 76
|
||||
Calling Conventions, 21
|
||||
Circular Queue, 54
|
||||
CLI, Command Line Interpreter, 20
|
||||
CLICMD, CLI Command Parameter, 75
|
||||
Close File, 38
|
||||
Conditional Read Queue, 68
|
||||
Conditional Write Queue, 69
|
||||
Conin, 98
|
||||
Conout, 98
|
||||
CONSOLE, 8
|
||||
Console I/O Direct, 32
|
||||
Console Input, 29, 30
|
||||
Console Number, 78
|
||||
Console Output, 30, 31
|
||||
Console Status, 35
|
||||
CONSOLE.DAT, 19
|
||||
Const, 98
|
||||
Control Characters, 6
|
||||
CPB, Call Parameter Block, 76
|
||||
Create Process, 71
|
||||
|
||||
Date and Time, 15
|
||||
DDT, Dynamic Debugging Tool, 12, 148
|
||||
Delay, 70
|
||||
Delete File, 40
|
||||
Delete Queue, 67
|
||||
Detach (^d), 5
|
||||
Detach Console, 73
|
||||
DIR, File Directory, 10
|
||||
Direct Console I/O, 32
|
||||
Diskette Organization, 94
|
||||
Dispatch, 70
|
||||
DMA Address, 43
|
||||
DSKRESET, 8
|
||||
DUMP, 11, 122
|
||||
|
||||
ERA, ERAQ, Erase File(s), 9
|
||||
Exitregion, 103
|
||||
|
||||
FCB, File Control Block, 25, 26
|
||||
File Attributes, 45
|
||||
File Structure, 24
|
||||
Flag Assignments, 116
|
||||
Flag Wait, 65
|
||||
Flag Set, 65
|
||||
Free Drive, 52
|
||||
|
||||
GENHEX, 11
|
||||
GENMOD, 11
|
||||
GENSYS, 110
|
||||
Get Console Number, 78
|
||||
Get Date and Time, 79
|
||||
|
||||
Home, 98
|
||||
|
||||
Idle, 104
|
||||
Interrupt Service Routines, 105
|
||||
|
||||
LDRBIOS, 86
|
||||
Line editing, 6
|
||||
Linked Queue, 55
|
||||
List, 98
|
||||
List Output, 31
|
||||
Listst, 100
|
||||
LOAD, 11
|
||||
Login Vector, 42
|
||||
|
||||
Make File, 41
|
||||
Make Queue, 66
|
||||
Maxconsole, 103
|
||||
Memory Allocation, 15
|
||||
MD, Memory Descriptor, 62
|
||||
Memory Free, 64
|
||||
Memory Segment Base Page, 120
|
||||
Memory Structure, 18
|
||||
MPMLDR, 86, 114
|
||||
MPMSTAT, 13
|
||||
|
||||
ODOS, 108
|
||||
Open File, 37
|
||||
Open Queue, 67
|
||||
|
||||
Page Relocatable Programs, PRL, 81, 149
|
||||
Parse Filename, 77
|
||||
PFCB, Parse Filename Control Block, 77
|
||||
PIP, Peripheral Interchange Program, 10
|
||||
Poll, 64
|
||||
Polldevice, 102
|
||||
Print String, 33
|
||||
PD, Process Descriptor, 59
|
||||
Process Desciptor Address, 79
|
||||
Process Naming Conventions, 61
|
||||
Process Priority, 72, 117
|
||||
PRLCOM, 11
|
||||
|
||||
QCB, Queue Control Block, 54-57
|
||||
Queue, 53
|
||||
Queue Naming, 58
|
||||
|
||||
Raw Console Input, 30
|
||||
Raw Console Output, 31
|
||||
RDT, Relocatable DDT, 12
|
||||
Read, 100
|
||||
Read Console Buffer, 34
|
||||
Read File Random, 47
|
||||
Read File Sequential, 40
|
||||
Read Queue, 68
|
||||
Read/Only Vector, 45
|
||||
Relocatable Memory Request, 63
|
||||
REN, Rename File, 10, 42
|
||||
Reset Disk System, 8, 36
|
||||
Reset Drive, 51
|
||||
Resident System Procedure, 76, 83
|
||||
Return Process Descriptor Address, 79
|
||||
RSP, Resident System Process, 19, 83, 108
|
||||
|
||||
SCHED, Scheduler, 16
|
||||
Search for First, Next, 38, 39
|
||||
Sectran, 101
|
||||
Selmemory, 102
|
||||
Send CLI Command, 75
|
||||
Seldsk, 99
|
||||
Select Disk, 36
|
||||
Set Console, 73
|
||||
Set DMA Address, 43
|
||||
Set Priority, 72
|
||||
Set Random Record, 50
|
||||
Setdma, 100
|
||||
Setsec, 99
|
||||
Settrk, 99
|
||||
SPOOLer, 15
|
||||
Startclock, 102
|
||||
STAT, Status, 11
|
||||
Stopclock, 103
|
||||
STOPSPLR, 15
|
||||
SUBMIT, 10
|
||||
System Data, 107
|
||||
System Data Address, 78
|
||||
System File Components, 107
|
||||
System Generation, 110
|
||||
System Reset, 29
|
||||
SYSTEM.DAT, 19
|
||||
Systeminit, 103
|
||||
|
||||
Text Editing, ED, 10
|
||||
Terminate Process, 71
|
||||
Tick, 106
|
||||
Time, 15
|
||||
Time Base Management, 106
|
||||
TOD, Date and Time, 15, 79
|
||||
TPA, 20
|
||||
TYPE, 9
|
||||
|
||||
UQCB, User Queue Control Block, 57
|
||||
USER, get/set user code, 8, 46
|
||||
User Queue Control Block, 57
|
||||
USERSYS.STK, 19
|
||||
|
||||
Version Number, 35
|
||||
|
||||
Wboot, 98
|
||||
Write, 100
|
||||
Write File Random, 48, 52
|
||||
Write File Sequential, 41
|
||||
Write Protect Disk, 44
|
||||
Write Queue, 69
|
||||
|
||||
XDOS, 19, 108, 119
|
||||
XIOS, 19, 87
|
||||
XIOS External Jump Vector, 106
|
||||
.br
|
||||
|
||||
12
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugihd.tex
Normal file
12
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugihd.tex
Normal file
@@ -0,0 +1,12 @@
|
||||
.PO 3
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 131
|
||||
.HE MP/M User's Guide
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX I: Sample XIOS
|
||||
.sp 2
|
||||
.li
|
||||
|
||||
87
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugj-k.tex
Normal file
87
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/mpmugj-k.tex
Normal file
@@ -0,0 +1,87 @@
|
||||
.MB +5
|
||||
.MT -3
|
||||
.LL 65
|
||||
.PN 148
|
||||
.HE MP/M User's Guide
|
||||
.FT (All Information Herein is Proprietary to Digital Research.)
|
||||
.sp
|
||||
.ce
|
||||
APPENDIX J: MP/M DDT Enhancements
|
||||
.pp
|
||||
The following commands have been added to the MP/M debugger
|
||||
to provide a function similar to CP/M's SAVE command and to
|
||||
simplify the task of patching and debugging PRL programs.
|
||||
.sp 2
|
||||
W: WRITE DISK
|
||||
.pp
|
||||
The purpose of the WRITE DISK command is to provide the
|
||||
capability to write a patched program to disk. A single parameter
|
||||
immediately follows the 'W' which is the number of sectors (128
|
||||
bytes/sector) to be written. This parameter is entered in hexadecimal.
|
||||
.sp 2
|
||||
V: VALUE
|
||||
.pp
|
||||
The purpose of the VALUE command is to facilitate use of the
|
||||
WRITE DISK command by computing the parameter to follow the 'W'. A
|
||||
single parameter immediately follows the 'V' which is the NEXT
|
||||
location following the last byte to be written to disk.
|
||||
.pp
|
||||
Normally a user would read in a file, edit it, and then write
|
||||
it back to disk. The read command produces a value for NEXT. This
|
||||
value can be entered as a parameter following the 'V' command and
|
||||
the number of sectors to be written out using the 'W' command will
|
||||
be computed and displayed.
|
||||
.sp 2
|
||||
N: NORMALIZE
|
||||
.pp
|
||||
The purpose of the NORMALIZE command is to relocate a page
|
||||
relocatable file which has been read into memory by the debugger.
|
||||
To debug a PRL program the user would read it in with the 'R'
|
||||
command and then use the 'N' command to relocate it within the
|
||||
memory segment the debugger is executing.
|
||||
.sp 2
|
||||
B: BITMAP BIT SET/RESET
|
||||
.pp
|
||||
The purpose of the BITMAP BIT SET/RESET command is to enable
|
||||
the user to update the bitmap of a page relocatable file. To edit
|
||||
a PRL file the user would read the file in, make changes to the
|
||||
code, and then determine the bytes which needed relocation (E.G.
|
||||
the high order address bytes of jump instructions). The 'B'
|
||||
command would then be used to update the bit map. There are two
|
||||
parameters specified, the address to be modified (0100H is the base
|
||||
of the program segment), followed by a zero or a one. A value of
|
||||
one specifies bit setting.
|
||||
.AD
|
||||
.bp
|
||||
.sp 2
|
||||
.ce
|
||||
APPENDIX K: Page Relocatable (PRL) File Specification
|
||||
.sp
|
||||
.pp
|
||||
Page relocatable files are stored on diskette in the
|
||||
following format:
|
||||
.li
|
||||
|
||||
Address: Contents:
|
||||
------- --------
|
||||
|
||||
0001-0002H Program size
|
||||
|
||||
0004-0005H Minimum buffer requirements (additional memory)
|
||||
|
||||
0006-00FFH Currently unused, reserved for future allocation
|
||||
|
||||
|
||||
0100H + Program size = Start of bit map
|
||||
|
||||
.ad
|
||||
.pp
|
||||
The bit map is a string of bits identifying which bytes are
|
||||
to be relocated. There is one bit map byte per 8 bytes of program.
|
||||
The most significant bit (7) of the first byte of the bit map
|
||||
indicates whether or not the first byte of the program is to be
|
||||
relocated. A bit which is on indicates that relocation is
|
||||
required. The next bit, bit(6), of the first byte of the bit map
|
||||
corresponds to the second byte of the program.
|
||||
.br
|
||||
|
||||
49
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/patch04.tex
Normal file
49
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/patch04.tex
Normal file
@@ -0,0 +1,49 @@
|
||||
MP/M 1.0 *** Patch *** 10/17/79
|
||||
|
||||
Page Zero Initialization with Bank Switched Memory
|
||||
__________________________________________________
|
||||
|
||||
The following patch is required only if you have written
|
||||
an XIOS which supports bank switched memory. The nature of
|
||||
the problem is that the jump instruction at location 0000,
|
||||
at your interrupt entry points, and at the selected debugger
|
||||
breakpoint restart location must be initialized in each of
|
||||
your memory banks.
|
||||
|
||||
The patch is performed in the SYSINIT procedure of your
|
||||
XIOS as follows:
|
||||
|
||||
o Determine the BDOS base address by running GENSYS and
|
||||
then the MPMLDR. The MPMLDR will display the memory map
|
||||
showing the BDOS base address.
|
||||
|
||||
o Once the BDOS base address has been determined, place the
|
||||
following instructions into your SYSINIT procedure:
|
||||
|
||||
SYSINIT:
|
||||
...
|
||||
...
|
||||
|
||||
; Loop through all banks
|
||||
LOOP:
|
||||
; Switch in the next bank
|
||||
|
||||
MVI A,0C3H
|
||||
STA 0000H
|
||||
LXI H,BDOS+0091H
|
||||
SHLD 0001H
|
||||
|
||||
STA BRKPTRST*8
|
||||
LXI H,BDOS+0101H
|
||||
SHLD BRKPTRST*8+1
|
||||
|
||||
; Store appropriate jumps to your XIOS
|
||||
; for the interrupt entry points
|
||||
|
||||
...
|
||||
|
||||
JMP LOOP
|
||||
|
||||
o Note that this patch requires that you leave the BDOS
|
||||
at the established base.
|
||||
|
||||
43
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/updteltr.tex
Normal file
43
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/15/updteltr.tex
Normal file
@@ -0,0 +1,43 @@
|
||||
.mt 0
|
||||
.mb 0
|
||||
.op
|
||||
|
||||
|
||||
January, 1980
|
||||
|
||||
Dear MP/M 1.0 user:
|
||||
|
||||
|
||||
Thi<EFBFBD> shipmen<65> include<64> th<74> MP/<2F> 1.<2E> release<73> The secon<6F> releas<61> <20>
|
||||
o<EFBFBD><EFBFBD> MP/<2F> ha<68> bee<65> issue<75> a<> n<> charg<72> t<> al<61> registere<72> owner<65> o<> <20>
|
||||
MP/<2F> 1.<2E> an<61> i<> <20> diskett<74> leve<76> releas<61>.
|
||||
|
||||
W<EFBFBD> hav<61> appreciate<74> you<6F> support<72><74> criticism<73> an<61> suggestion<6F> fo<66> <20>
|
||||
MP/M and believe that this is reflected in the MP/M 1.1 release.
|
||||
|
||||
Th<EFBFBD><EFBFBD> mos<6F><73> significan<61> bug<75> correcte<74> i<> thi<68><69> releas<61><73> ar<61><72> wit<69> <20>
|
||||
regar䠠 t<><74> syste<74><65> initializatio<69><6F> an<61><6E> th<74><68> Z8<5A><38> complementar<61> <20>
|
||||
registe<EFBFBD><EFBFBD> set<65><74> Th<54><68> enclose<73> MP/<2F> User'<27> Guid<69> correction<6F><6E> an<61> <20>
|
||||
additions identify the impact of these changes on your XIOS.
|
||||
|
||||
Ne<EFBFBD><EFBFBD> addition<6F><6E> i<> thi<68> releas<61> includ<75> a<> optiona<6E><61> banke<6B><65> BDO<44> <20>
|
||||
dis<EFBFBD><EFBFBD> fil<69><6C> managemen<65><6E> modul<75> whic<69> ca<63> b<> use<73> t<><74> fre<72><65> u<><75> a<> <20>
|
||||
additiona<EFBFBD> 3<> byte<74> o<> commo<6D> are<72> memor<6F> requiremen<65> i<><69> system<65> <20>
|
||||
wit<EFBFBD><EFBFBD> banke<6B><65> memory<72><79> PR̠ version<6F> o<> th<74><68> SPOOLe<4C><65> hav<61><76> bee<65> <20>
|
||||
include<EFBFBD><EFBFBD> a<> wel<65> a<> th<74> additio<69> o<> <20> proces<65> abor<6F> PR<50> an<61><6E> RS<52> <20>
|
||||
program<EFBFBD><EFBFBD> Anothe<68><65> sampl<70><6C> XIOӠ sourc<72> fil<69> i<><69> provide<64><65> whic<69> <20>
|
||||
illustrate<EFBFBD><EFBFBD> interrup<75> drive<76> I/<2F> an<61> us<75> o<> XDOӠ t<><74> facilitat<61> <20>
|
||||
buffered console input.
|
||||
|
||||
Th<EFBFBD><EFBFBD> secon<6F><6E> printin<69> o<> th<74> MP/<2F> User'<27> Guid<69><64> incorporate<74><65> th<74> <20>
|
||||
enclose<EFBFBD> manua<75> correction<6F> an<61> additions.
|
||||
|
||||
|
||||
Digital Research
|
||||
Technical Support Staff
|
||||
|
||||
|
||||
Enclosures: MP/M User's Guide - Corrections and Additions
|
||||
MP/M 1.1 single density diskette
|
||||
|
||||
|
||||
Reference in New Issue
Block a user