mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 08:54:17 +00:00
Upload
Digital Research
This commit is contained in:
806
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM2.HLP
Normal file
806
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM2.HLP
Normal file
@@ -0,0 +1,806 @@
|
||||
General Information on CP/M
|
||||
CP/M File References
|
||||
CP/M Line Editing and Output Control
|
||||
CP/M Built-In Commands
|
||||
CP/M Transient Commands
|
||||
Physical Device Assignments for ARIES-1
|
||||
CP/M STAT Command
|
||||
CP/M PIP Command
|
||||
CP/M ED Command
|
||||
CP/M ASM Command
|
||||
CP/M LOAD Command
|
||||
The UNLOAD Command
|
||||
CP/M DDT Command
|
||||
The ZDT Command
|
||||
CP/M SYSGEN Command
|
||||
CP/M SUBMIT and XSUB Commands
|
||||
CP/M BDOS -- Basic I/O Operations
|
||||
CP/M BDOS -- Basic Disk Operations
|
||||
CP/M File Types
|
||||
CP/M BIOS Jump Vector
|
||||
:General Information on CP/M
|
||||
CP/M is a monitor control program for microcomputer software
|
||||
development which uses IBM-compatible flexible disks (floppy disks) for
|
||||
mass storage. Using a microcomputer mainframe based on Intel's 8080 or
|
||||
Zilog's Z80 microprocessor, CP/M provides a general environment for program
|
||||
construction, storage, and editing, along with assembly and program debug
|
||||
facilities. An important feature of CP/M is that it can be easily altered
|
||||
to execute with any computer configuration which uses an Intel 8080 or
|
||||
Zilog Z80 Microprocessor and has at least 20K bytes of main memory with up
|
||||
to eight IBM-compatable diskette drives.
|
||||
The CP/M monitor provides access to programs through a comprehensive
|
||||
file management system. The file subsystem supports a named file
|
||||
structure, allowing dynamic allocation of file space as well as sequential
|
||||
and random file access. Using this file system, up to 128 distinct
|
||||
programs can be stored in both source and machine-executable form.
|
||||
Digital Research, the designer of CP/M, has provided a set of nine
|
||||
manuals which describe the use and operation of CP/M in detail.
|
||||
|
||||
These manuals are:
|
||||
1. An Introduction to CP/M Features and Facilities
|
||||
2. ED: A Context Editor for the CP/M Disk System
|
||||
3. ASM: CP/M Assembler User's Manual
|
||||
4. DDT: CP/M Dynamic Debugging Tool User's Manual
|
||||
5. CP/M 1.4 Interface Guide
|
||||
6. CP/M 1.4 System Alteration Guide
|
||||
7. CP/M 2.0 User's Guide
|
||||
8. CP/M 2.0 Interface Guide
|
||||
9. CP/M 2.0 System Alteration Guide
|
||||
As the reader can see, CP/M supports a context editor, an assembler
|
||||
(Intel-compatable), and a debugger system. These are available in the
|
||||
basic CP/M package. There is a large variety of other software available
|
||||
which can run under CP/M with little or no modification. Such software
|
||||
includes several assemblers (both 8080 and Z80), a symbolic debugger,
|
||||
several high-level languages (including FORTRAN IV {compiler}, BASIC-E
|
||||
{translator}, CBASIC {translator}, many interpretive BASICs, ALGOL, FOCAL,
|
||||
and C), and several special-purpose applications programs (such as text
|
||||
formatting systems and accounting systems).
|
||||
This HELP File addresses itself specifically to the CP/M 2.x Operating
|
||||
Systems.
|
||||
:CP/M File References
|
||||
|
||||
A file reference identifies a particular file or group of files on a
|
||||
particular disk attached to CP/M. These file references can be either
|
||||
unambiguous (ufn) or ambiguous (afn). An unambiguous file reference
|
||||
uniquely identifies a single file, while an ambiguous file reference may be
|
||||
satisfied by a number of different files.
|
||||
|
||||
An unambiguous file reference is an exact name of the specified file.
|
||||
It consists of up to eight characters in the file name and three characters
|
||||
in the file type. An unambiguous file reference is of the form --
|
||||
|
||||
pppppppp.sss
|
||||
|
||||
The characters used in specifying an unambiguous file reference may
|
||||
not contain any of --
|
||||
|
||||
< > . , ; : = ? * [ ]
|
||||
|
||||
An ambiguous file reference is used for directory search and pattern
|
||||
matching. The form of an ambiguous file reference is similar to an
|
||||
unambiguous reference, except the symbol '?' may be interspersed throughout
|
||||
the file reference. In various commands throughout CP/M, the '?' symbol
|
||||
matches any character of a file name in the '?' position. For example,
|
||||
X?Y.C?M will match XZY.COM and X3Y.CEM. The '*' symbol is used to match
|
||||
all characters of a file name or file type. For example, *.COM will match
|
||||
XZY.COM and HELP.COM, while HELP.* will match HELP.COM and HELP.HLP.
|
||||
:CP/M Line Editing and Output Control
|
||||
|
||||
The following are the line editing functions supported by CP/M --
|
||||
|
||||
rubout Delete and echo the last character typed at the
|
||||
console.
|
||||
Ctrl-H Delete the last character typed; Backspace one
|
||||
character; CRT-oriented
|
||||
Ctrl-U Delete the entire line typed at the console.
|
||||
Ctrl-X Delete the entire line typed at the console; Backspace
|
||||
to the beginning of the current line; CRT-oriented.
|
||||
Ctrl-R Retype current command line: types a "clean line"
|
||||
following character deletion with rubouts.
|
||||
Ctrl-E Physical end of line: carriage is returned, but
|
||||
line is not sent until the carriage return key is
|
||||
depressed.
|
||||
Ctrl-M Terminates input (carriage return).
|
||||
Ctrl-J Terminates current input (line feed); CRT-oriented
|
||||
Ctrl-C CP/M system reboot (warm start).
|
||||
Ctrl-Z End input from the console (used in PIP and ED).
|
||||
|
||||
Other control functions affect console output --
|
||||
|
||||
Ctrl-P Copy all subsequent console output to the currently-
|
||||
assigned list device (LST:). Output is sent to both
|
||||
the list device and the console device until the next
|
||||
Ctrl-P is typed.
|
||||
Ctrl-S Stop the console output temporarily. Program execution
|
||||
and output continue when the next character is typed
|
||||
at the console. Typing Ctrl-C returns control to CP/M.
|
||||
|
||||
Input lines can generally be up to 255 characters in length. They are
|
||||
not acted upon until the carriage return key is typed.
|
||||
:CP/M Built-In Commands
|
||||
ERA afn -- The ERA (erase) command removes files from the
|
||||
currently logged-in disk.
|
||||
DIR afn -- The DIR (directory) command causes the names of all
|
||||
files which satisfy the ambiguous file name afn to be listed
|
||||
on the console device. All files are listed if no afn is
|
||||
given.
|
||||
REN ufn1=ufn2 -- The REN (rename) command allows the user to
|
||||
change the names of files on disk. The file satisfying ufn2
|
||||
is changed to ufn1.
|
||||
SAVE n ufn -- The SAVE command places n pages (256-byte blocks)
|
||||
onto disk from the TPA and names this file ufn.
|
||||
TYPE ufn -- The TYPE command displays the contents of the ASCII
|
||||
source file ufn on the currently logged-in disk at the
|
||||
console device.
|
||||
USER n -- Upon cold boot, the user is automatically logged in to
|
||||
User Area 0, which is compatable with CP/M 1.4 directories.
|
||||
The USER command allows the user to move to another logical
|
||||
area within the same directory; areas are numbered 0-15.
|
||||
The ERA, DIR, REN, SAVE, and TYPE commands apply to the
|
||||
current User Area.
|
||||
:CP/M Transient Commands
|
||||
|
||||
The CP/M standard transient commands are --
|
||||
|
||||
STAT List the number of bytes of storage and data on the
|
||||
currently logged-in disk, provide statistical
|
||||
information about particular files, and display or
|
||||
alter device assignment.
|
||||
PIP Load the Peripheral Interchange Program for subsequent
|
||||
disk file and peripheral transfer operations.
|
||||
ED Load and execute the CP/M text editor program.
|
||||
SUBMIT Submit a file of commands for batch processing.
|
||||
XSUB Used in conjunction with SUBMIT, transfers all buffered
|
||||
console input from CON: to the SUBMIT File.
|
||||
|
||||
ASM Load the CP/M assembler and assemble the specified
|
||||
program from disk.
|
||||
LOAD Load the file in Intel "hex" machine code format and
|
||||
produce a file in machine executable form which can be
|
||||
loaded into the TPA (this loaded program becomes a new
|
||||
command under the CCP).
|
||||
|
||||
DDT Load the CP/M debugger into the TPA and execute it.
|
||||
DUMP Dump the contents of a file in hex.
|
||||
|
||||
SYSGEN Create a new CP/M system diskette.
|
||||
MOVCPM Regenerate the CP/M system for a particular memory
|
||||
size.
|
||||
:Physical Device Assignments for ARIES-1
|
||||
|
||||
Logical Device Physical Device
|
||||
|
||||
CON: TTY: Model 43 Teletype
|
||||
CRT: Hazeltine 1500 CRT
|
||||
BAT: CRT and Modem
|
||||
UC1: In=CRT, Out=CRT and Modem
|
||||
RDR: TTY: Model 43 Teletype
|
||||
PTR: Modem
|
||||
UR1: CRT and Modem w/CRT Output
|
||||
UR2: CRT and Modem
|
||||
PUN: TTY: Model 43 Teletype
|
||||
PTP: Modem
|
||||
UP1: CRT and Modem
|
||||
UP2: CRT and Modem
|
||||
LST: TTY: Model 43 Teletype
|
||||
CRT: Hazeltine 1500 CRT
|
||||
LPT: Modem
|
||||
UL1: CRT and Modem
|
||||
|
||||
:CP/M STAT Command
|
||||
|
||||
The STAT Command takes any of the following forms --
|
||||
|
||||
STAT Calculate the storage remaining on all active drives and print a
|
||||
message like
|
||||
x: R/W, SPACE: nnnK -- if disk is Read/Write
|
||||
x: R/O, SPACE: nnnK -- if disk is Read Only
|
||||
STAT x: Calculate the storage remaining on the specified drive and print
|
||||
BYTES REMAINING ON x: nnnK
|
||||
|
||||
STAT x:afn [$S]
|
||||
Scan the specified files on the specified drive (x: is optional),
|
||||
and list all files which satisfy the unambiguous reference in
|
||||
alphabetical order with storage requirements. A table like the
|
||||
following is generated --
|
||||
|
||||
Size Recs Bytes Ext Acc
|
||||
sssss rrrr nnnk ee a/b d:pppppppp.sss
|
||||
|
||||
where
|
||||
sssss -- number of virtual 128-byte records in file
|
||||
This field is display if the optional $S is given
|
||||
rrrr -- number of 128-byte records in each extent of the file
|
||||
nnnK -- number of bytes (in K, K=1024) allocated to the file
|
||||
ee -- number of 16K extensions
|
||||
a/b -- access mode of file; R/O or R/W
|
||||
d:pppppppp.sss -- drive name (d may be A, B, C, D) and file
|
||||
name
|
||||
|
||||
STAT x:=R/O
|
||||
Set the specified drive to Read Only. This is cleared by a warm
|
||||
boot. When a disk is Read Only, the message
|
||||
BDOS ERR ON x: READ ONLY
|
||||
will appear if there is an attempt to write to it.
|
||||
STAT VAL:
|
||||
Summarize the status commands. STAT VAL: will print the list --
|
||||
|
||||
Temp R/O Disk: d:=R/O
|
||||
Set Indicator: d:filename.typ $R/O $R/W $SYS $DIR
|
||||
Disk Status : DSK: d:DSK:
|
||||
User Status : USR:
|
||||
Iobyte Assign:
|
||||
CON: = TTY: CRT: BAT: UC1:
|
||||
RDR: = TTY: PTR: UR1: UR2:
|
||||
PUN: = TTY: PTP: UP1: UP2:
|
||||
LST: = TTY: CRT: LPT: UL1:
|
||||
|
||||
STAT DEV:
|
||||
Display the current logical to physical device mapping. For
|
||||
example, the list may appear as --
|
||||
|
||||
CON: = CRT: PUN: = PTP:
|
||||
RDR: = UR1: LST: = TTY:
|
||||
|
||||
STAT d:afn [$R/O or $R/W or $SYS or $DIR]
|
||||
Set the various permanent file indicators. R/O=Read/Only,
|
||||
R/W=Read/Write, SYS=System, DIR=Non-System
|
||||
|
||||
STAT ld1=pd1, ld2=pd2, ...
|
||||
Change the logical to physical device assignments. Logical
|
||||
device ld1 is assigned to physical device pd1, etc. The valid
|
||||
logical device names are --
|
||||
|
||||
CON: The system console device
|
||||
RDR: The paper tape reader device
|
||||
PUN: The paper tape punch device
|
||||
LST: The output list device
|
||||
|
||||
The valid physical device names are --
|
||||
|
||||
TTY: Slow speed output device (teletype)
|
||||
CRT: High speed output device (cathode ray tube)
|
||||
BAT: Batch processing (CON: input is RDR:, CON: output
|
||||
is LST:)
|
||||
UC1: User-defined console
|
||||
PTR: Paper tape reader
|
||||
PTP: Paper tape punch
|
||||
UR1: User-defined reader #1
|
||||
UR2: User-defined reader #2
|
||||
UP1: User-defined punch #1
|
||||
UP2: User-defined punch #2
|
||||
LPT: Line printer
|
||||
UL1: User-defined list device #1
|
||||
|
||||
|
||||
STAT d:DSK:
|
||||
List the characteristics of the disk named "d:"; if "d:" is not
|
||||
specified, list the characteristics of all active disks. A sample listing:
|
||||
|
||||
d: Drive Characteristics
|
||||
65536: 128 Byte Record Capacity
|
||||
8192: Kilobyte Drive Capacity
|
||||
128: 32 Byte Directory Entries
|
||||
0: Checked Directory Entries
|
||||
1024: Records/ Extent
|
||||
128: Records/ Block
|
||||
58: Sectors/ Track
|
||||
2: Reserved Tracks
|
||||
|
||||
STAT USR:
|
||||
List the User Number the user is currently in and the User
|
||||
Numbers which have files on the currently addressed disk. A sample
|
||||
listing:
|
||||
Active User : 0
|
||||
Active Files: 0 1 3
|
||||
:CP/M PIP Command
|
||||
|
||||
PIP (Peripheral Interchange Program) is the CP/M transient which
|
||||
implements the basic media conversion operations necessary to load, print,
|
||||
punch, copy, and combine disk files. PIP is initiated by one of the
|
||||
following forms --
|
||||
|
||||
PIP Engage PIP, prompt the user with '*', and read
|
||||
command lines directly from the console. PIP used
|
||||
in this way is exited by either typing an empty
|
||||
command line (just a carriage return) or a Ctrl-C
|
||||
as the first character of the line.
|
||||
PIP cmnd Engage PIP, execute the specified command, and
|
||||
return to CP/M.
|
||||
|
||||
The form of each command line in PIP is --
|
||||
|
||||
destination = source#1, source#2, source#3, ..., source#n
|
||||
|
||||
|
||||
The general forms of PIP command lines are --
|
||||
|
||||
x:=y:afn Copy all files satisfying afn from drive y to
|
||||
drive x. 'y' may be omitted, and, if so, the
|
||||
currently logged-in drive is selected.
|
||||
x:ufn=y: Copy the file given by ufn from y to x. 'x' may
|
||||
be omitted, and, if so, the currently logged-in
|
||||
drive is selected.
|
||||
x:afn=y:afn Like the above, but x and/or y may be omitted; the
|
||||
default drive is selected for the omitted
|
||||
drive(s).
|
||||
ld=pd Copy from the specified physical device to the
|
||||
specified logical device. Valid logical devices
|
||||
are --
|
||||
CON:, RDR:, PUN:, LST:
|
||||
Valid physical devices are --
|
||||
TTY:, CRT:, UC1:, PTR:, PTP:, UR1:, UR2:,
|
||||
UP1:, UP2:, LPT:, UL1:
|
||||
|
||||
|
||||
Additional device names which may be used in PIP commands are --
|
||||
|
||||
NUL: Send 40 Nulls (ASCII 0) to the device.
|
||||
EOF: Send a CP/M End of File character (ASCII Ctrl-Z).
|
||||
INP: Special PIP input source to be patched (see manual).
|
||||
OUT: Special PIP output destination to be patched (see
|
||||
manual).
|
||||
PRN: Same as LST:, but tabs are expanded at every eighth
|
||||
character position, lines are numbered, and page ejects
|
||||
are inserted every 60 lines with an initial eject.
|
||||
|
||||
|
||||
The user can also specify one or more PIP parameters enclosed in
|
||||
square brackets separated by zero or more blanks. These parameters are --
|
||||
|
||||
B Block mode transfer. Data is buffered by PIP until an ASCII X-
|
||||
Off character (Ctrl-S) is received from the source device.
|
||||
Dn Delete characters which extend past column n in the transfer of
|
||||
data to the destination from the character source.
|
||||
E Echo all transfer operations to the console.
|
||||
F Filter (remove) form feeds from the file.
|
||||
Gn Get File from User Number n (n in the range 0 - 15)
|
||||
H Hex data transfer. All data is checked for proper Intel hex file
|
||||
format.
|
||||
I Ignore ':00' records in the transfer of Intel hex format file.
|
||||
L Translate upper case to lower case alphabetics.
|
||||
N Add line numbers to each line transferred to the destination.
|
||||
O Object file (non-ASCII) transfer. Ignore End of File.
|
||||
|
||||
Pn Include page ejects at every n lines.
|
||||
Qs^Z Quit copying from the source device or file when the string s
|
||||
(terminated by Ctrl-Z) is encountered.
|
||||
R Read system files
|
||||
Ss^Z Start copying from the source file when the string s is seen.
|
||||
Tn Expand tabs to every nth column.
|
||||
U Translate lower case to upper case alphabetics.
|
||||
V Verify that data has been copied correctly.
|
||||
W Write over R/O files without console interrogation
|
||||
Z Zero the parity bit on input for each ASCII character.
|
||||
:CP/M ED Command
|
||||
|
||||
The ED Program is the CP/M system context editor, which allows
|
||||
creation and alteration of ASCII files. Complete details are given in the
|
||||
user's manual.
|
||||
|
||||
The following are the error indicators given by ED --
|
||||
|
||||
? Unrecognized Command
|
||||
> Memory buffer full
|
||||
# Cannot apply command the number of times specified
|
||||
O Cannot open LIB file in R command
|
||||
|
||||
|
||||
The following are the control characters recognized by ED --
|
||||
|
||||
^C System reboot
|
||||
^E Physical <CR> <LF> (not entered in command)
|
||||
^H Character delete (backspace)
|
||||
^I Logical tab
|
||||
^J New line (line feed)
|
||||
^L Logical <CR> <LF> in search and substitute strings
|
||||
^M New line (carriage return)
|
||||
^U Line delete
|
||||
^X Line delete and backspace
|
||||
^Z String terminator
|
||||
Rubout Character delete
|
||||
Break Discontinue command
|
||||
|
||||
|
||||
The following are the commands recognized by ED --
|
||||
|
||||
nA Append lines
|
||||
+/- B Beginning/Bottom of buffer
|
||||
+/- nC Move character positions
|
||||
+/- nD Delete characters
|
||||
E Exit
|
||||
nFs^Z Find string
|
||||
H End edit, close and reopen files
|
||||
Is^Z Insert characters
|
||||
nJ Place strings in juxtaposition
|
||||
+/- nK Kill (delete) lines
|
||||
+/- nL Move down/up lines
|
||||
nM Macro definition
|
||||
O Return to original file
|
||||
+/- nP Move and print pages
|
||||
Q Quit with no file changes
|
||||
R Read library file
|
||||
|
||||
nSs1^Zs2^Z
|
||||
Substitute s2 for s1
|
||||
+/- nT Type lines
|
||||
+/- U Translate lower to upper case if U; none if -U
|
||||
+/- V Engage/disengage line numbers (verify)
|
||||
0V Print memory buffer info (free/total usage)
|
||||
nW Write lines
|
||||
nX Transfer n lines to X$$$$$$$.LIB
|
||||
0X Empty X$$$$$$$.LIB
|
||||
nZ Sleep
|
||||
+/- n Move and type (+/- nLT)
|
||||
n: Move to absolute line (V engaged)
|
||||
:n Process from current line to specified line (V engaged)
|
||||
:CP/M ASM Command
|
||||
|
||||
The ASM Command loads and executes the CP/M 8080 assembler. It is of
|
||||
the form --
|
||||
|
||||
ASM filename.xyz
|
||||
|
||||
where
|
||||
|
||||
filename ... is the name of the file 'filename.ASM' to assemble
|
||||
x ... designates the disk name which contains the source
|
||||
y ... designates the disk name to contain the hex file
|
||||
(y=Z suppresses generation of the hex file)
|
||||
z ... designates the disk name to contain the print file
|
||||
(y=X lists on CON:, y=Z suppresses listing)
|
||||
|
||||
Refer to the ASM Manual for further details.
|
||||
:CP/M LOAD Command
|
||||
|
||||
The LOAD Command reads the file specified, which is assumed to contain
|
||||
Intel hex format machine code and produces a memory image file which can be
|
||||
subsequently executed (converts .HEX to .COM files). It is of the form --
|
||||
|
||||
LOAD filename
|
||||
|
||||
where filename is the name of the file 'filename.HEX'.
|
||||
:The UNLOAD Command
|
||||
|
||||
The UNLOAD Command does the reverse of the LOAD Command -- it converts
|
||||
COM files to HEX files. It is of the form --
|
||||
|
||||
UNLOAD filename
|
||||
|
||||
where filename is the name of the file 'filename.COM'.
|
||||
:CP/M DDT Command
|
||||
|
||||
The DDT Program allows dynamic interactive testing and debugging of
|
||||
programs generated in the CP/M environment. It is invoked by --
|
||||
|
||||
DDT
|
||||
DDT filename.HEX
|
||||
DDT filename.COM
|
||||
|
||||
where 'filename' is the name of the program to be loaded or tested.
|
||||
|
||||
DDT responds to the normal CP/M input line editing characters.
|
||||
|
||||
|
||||
DDT responds to the following commands --
|
||||
|
||||
As Perform inline assembly starting at the specified address s.
|
||||
D Display memory from the current address for 16 display lines.
|
||||
Ds Display memory from address s for 16 display lines.
|
||||
Ds,f Display memory from address s to address f.
|
||||
Fs,f,c
|
||||
Fill memory from start address s to final address f with byte c.
|
||||
|
||||
G Start execution at the current value of the PC.
|
||||
Gs Start execution at the specified address s.
|
||||
Gs,b Start execution at the specified address s and set a breakpoint
|
||||
at the address b.
|
||||
Gs,b,c
|
||||
Same as above with breakpoints at b and c.
|
||||
G,b Start execution at the current value of the PC with breakpoint b.
|
||||
G,b,c
|
||||
Same as above with breakpoints at b and c.
|
||||
|
||||
|
||||
If Insert a file name f into the default FCB.
|
||||
|
||||
L List 12 lines of disassembled code from the current address.
|
||||
Ls List 12 lines from the specified address s.
|
||||
Ls,f List lines of disassembled code from s to f.
|
||||
|
||||
Ms,f,d
|
||||
Move the block from address s to f to destination at address d.
|
||||
|
||||
R Read file in FCB into memory at 100H.
|
||||
Rb Read file in FCB into memory with offset b from 100H.
|
||||
|
||||
Ss Set (examine and alter) memory starting at address s.
|
||||
|
||||
|
||||
T Trace the next instruction.
|
||||
Tn Trace the next n instructions.
|
||||
|
||||
U Untrace -- like Trace, but intermediate steps are not displayed.
|
||||
|
||||
X Examine all registers and flags.
|
||||
Xr Examine specified registers or flag, where r may be --
|
||||
C Carry flag
|
||||
Z Zero flag
|
||||
M Minus (sign) flag
|
||||
I Interdigit Carry flag
|
||||
A Accumulator
|
||||
B BC Reg pair
|
||||
D DE Reg pair
|
||||
H HL Reg pair
|
||||
S Stack pointer
|
||||
P PC
|
||||
:The ZDT Command
|
||||
|
||||
ZDT is a Z80 version of DDT. It is invoked by typing --
|
||||
|
||||
ZDT
|
||||
|
||||
The commands recognized by ZDT are input in single-character input
|
||||
mode. No input line editing is done, and each command expects an exact
|
||||
input. All byte values are exactly two characters, and all addresses are
|
||||
exactly four characters.
|
||||
|
||||
|
||||
The commands recognized by ZDT are --
|
||||
|
||||
A bbbb
|
||||
Enter ASCII characters into memory from keyboard starting at
|
||||
address bbbb.
|
||||
B
|
||||
Warm Boot -- Return to CP/M.
|
||||
C bbbb eeee nnnn
|
||||
Compare memory from address bbbb to address eeee to block
|
||||
starting at nnnn.
|
||||
D bbbb eeee
|
||||
Dump memory from bbbb to eeee.
|
||||
E bbbb eeee <ASCII string>
|
||||
Search for ASCII string from bbbb to eeee. String is at
|
||||
most 16 characters. String is terminated by <CR>.
|
||||
F bbbb eeee <hex string>
|
||||
Search for hex string from bbbb to eeee. String is
|
||||
terminated by <CR>.
|
||||
|
||||
G
|
||||
Go to next breakpoint.
|
||||
H aaaa nnnn
|
||||
Hex add and subtract. Computes aaaa+nnnn and aaaa-nnnn.
|
||||
I nn
|
||||
Input. Prints value at port nn.
|
||||
J nnnn
|
||||
Jump to and execute at location nnnn.
|
||||
K
|
||||
Keyboard echo.
|
||||
L filename.typ nnnn
|
||||
Loads specified disk file into location nnnn.
|
||||
M bbbb eeee nnnn
|
||||
Move block from bbbb to eeee-1 to nnnn.
|
||||
N aaaa
|
||||
Enter offset aaaa for loading.
|
||||
O nn dd
|
||||
Output byte dd to port nn.
|
||||
|
||||
P bbbb
|
||||
Input hex into memory from keyboard starting at bbbb. <sp>
|
||||
advances pointer, <rub> or <del> backs pointer.
|
||||
Q bbbb eeee
|
||||
Dumps from bbbb to eeee in ASCII.
|
||||
R n ll tt ss bbbb
|
||||
Read block of data from disk n of length ll (256-byte pages)
|
||||
starting at track tt and sector ss placing the data at bbbb.
|
||||
S bbbb eeee
|
||||
Disassembly (symbolic dump) from bbbb to eeee.
|
||||
T bbbb eeee
|
||||
Destructive memory test from bbbb to eeee-1.
|
||||
U bbbb
|
||||
Set breakpoint at bbbb.
|
||||
V
|
||||
Display all currently-set breakpoints.
|
||||
|
||||
W n ll tt ss bbbb
|
||||
Write on disk n the data at bbbb for a length of ll starting
|
||||
at track tt, sector ss. ll is in 256-byte pages.
|
||||
X
|
||||
Display registers.
|
||||
Z bbbb eeee dd
|
||||
Zero or set memory from bbbb to eeee-1 with byte dd.
|
||||
:CP/M SYSGEN Command
|
||||
|
||||
The SYSGEN transient command allows generation of an initialized disk
|
||||
containing the CP/M Operating System.
|
||||
|
||||
It is invoked by typing
|
||||
|
||||
SYSGEN
|
||||
|
||||
Once invoked, the user is prompted through the session. Refer to the
|
||||
CP/M Manual for further details.
|
||||
:CP/M SUBMIT and XSUB Commands
|
||||
|
||||
The SUBMIT command allows CP/M commands to be batched together for
|
||||
automatic processing. The form of this command is
|
||||
|
||||
SUBMIT ufn parm1 parm2 ... parmn
|
||||
|
||||
The ufn given in the SUBMIT command must be the filename (not type) of
|
||||
a file which exists on the currently logged-in disk with an assumed file
|
||||
type of '.SUB'. Refer to the CP/M Manual for further details.
|
||||
The XSUB command extends the power of the SUBMIT facility. When
|
||||
specified as the first line of a SUBMIT File, it self-relocates directly
|
||||
below the CCP. All subsequent SUBMIT command lines are processed by XSUB,
|
||||
so that programs which read buffered console input (BDOS Function 10)
|
||||
receive input directly from the SUBMIT File. While XSUB is in memory, it
|
||||
prints the message "(xsub active)" on each warm boot. An example of the
|
||||
use of XSUB to display memory from 100H to 1FFH is --
|
||||
XSUB
|
||||
DDT
|
||||
D100,1FF
|
||||
G0
|
||||
:CP/M BDOS -- Basic I/O Operations
|
||||
Function and Number Input Parameters Output Parameters
|
||||
|
||||
System Reset 0 None None
|
||||
Read Console 1 None ASCII Char in A
|
||||
Write Console 2 ASCII Char in E None
|
||||
Read Reader 3 None ASCII Char in A
|
||||
Write Punch 4 ASCII Char in E None
|
||||
Write List 5 ASCII Char in E None
|
||||
Direct Con I/O 6 ASCII Char in E I/O Status in A if E=0FFH
|
||||
Get I/O Status 7 None I/O Status in A
|
||||
Put I/O Status 8 I/O Status in E None
|
||||
Print Buffer 9 Address of string None
|
||||
terminated by $
|
||||
in DE
|
||||
Read Buffer 10 Address of Read Read Buffer is filled
|
||||
Buffer in DE
|
||||
Console Ready 11 None LSB of A is 1 if char
|
||||
ready
|
||||
*All function numbers are passed in Reg C.
|
||||
|
||||
I/O Status Byte --
|
||||
|
||||
Value Bits 6&7 Bits 4&5 Bits 2&3 Bits 0&1
|
||||
|
||||
00 CON:=TTY: RDR:=TTY: PUN:=TTY: LST:=TTY:
|
||||
01 CRT: PTR: PTP: CRT:
|
||||
10 BAT: UR1: UP1: LPT:
|
||||
11 UC1: UR2: UP2: UL1:
|
||||
|
||||
Read Buffer --
|
||||
|
||||
Byte Function
|
||||
|
||||
1 Maximum Buffer Length
|
||||
2 Current Buffer Length (returned value)
|
||||
3-n Data (returned values)
|
||||
|
||||
|
||||
:CP/M BIOS -- Basic Disk Operations
|
||||
|
||||
Function and Number Input Parameters Output Parameters
|
||||
|
||||
Return Version # 12 None Version Info in HL
|
||||
H=0 CP/M, H=1 MP/M
|
||||
L=00 CP/M 1.x, 2x 2.x
|
||||
Init BDOS 13 None None
|
||||
Log-In Disk 14 Value in Reg E None
|
||||
A=0, B=1, C=2,
|
||||
D=3
|
||||
Open File 15 Address of FCB Byte address of FCB
|
||||
in DE if found or 0FFH if not
|
||||
Close File 16 Address of FCB Byte address of FCB
|
||||
in DE if found or 0FFH if not
|
||||
Search for File 17 Address of FCB Byte address of FCB (0-3)
|
||||
in DE if found or 0FFH if not
|
||||
Search for Next 18 Address of FCB Byte address of next FCB
|
||||
in DE if found or 0FFH if not
|
||||
Delete File 19 Address of FCB Byte address of FCB (0-3)
|
||||
in DE if found or 0FFH if not
|
||||
|
||||
Function and Number Input Parameters Output Parameters
|
||||
|
||||
Read Next Record 20 Address of FCB 0=successful read
|
||||
in DE 1=read past EOF
|
||||
2=reading random data
|
||||
Write Next Rec 21 Address of FCB 0=successful write
|
||||
in DE 1=error in extending
|
||||
2=end of disk data
|
||||
255=no more dir space
|
||||
Make File 22 Address of FCB Byte address of FCB or
|
||||
in DE 255 if no more dir space
|
||||
Rename FCB 23 Address of FCB Byte Address of Dir entry
|
||||
in DE or 255 if no match
|
||||
Return Log Code 24 None Login vector in HL
|
||||
Read Drive No 25 None Number of logged-in drive
|
||||
(A=0, B=1, C=2, D=3)
|
||||
Set DMA Address 26 Address of 128 None
|
||||
byte buffer in DE
|
||||
|
||||
Function and Number Input Parameters Output Parameters
|
||||
|
||||
Get Alloc Vect 27 None Allocation Vect Addr in
|
||||
HL
|
||||
Write Prot Disk 28 None None
|
||||
Get R/O Vect 29 None HL=R/O Vect Val
|
||||
Set File Attrib 30 Ptr to FCB in DE Dir code in A
|
||||
Get Disk Parms 31 None HL=DPB Address
|
||||
Set/Get Usr Code 32 E=0FFH (get)/Code A=Current code (get)/no
|
||||
(set) value (set)
|
||||
Read Random 33 DE=FCB addr A=return code
|
||||
1=reading unwritten data
|
||||
2=(not used)
|
||||
3=can't close curr ext
|
||||
4=seek to unwritten ext
|
||||
5=(not used)
|
||||
6=seek past end of disk
|
||||
|
||||
Function and Number Input Parameters Output Parameters
|
||||
|
||||
Write Random 34 DE=FCB addr A=return code
|
||||
1=reading unwritten data
|
||||
2=(not used)
|
||||
3=can't close curr ext
|
||||
4=seek to unwritten ext
|
||||
5=dir overflow
|
||||
6=seek past end of disk
|
||||
Compute File Siz 35 DE=FCB addr Random Rec Field set
|
||||
to file size
|
||||
Set Random Rec 36 DE=FCB addr Random Rec Field set
|
||||
|
||||
|
||||
*All function numbers are passed in Reg C
|
||||
|
||||
:CP/M File Types
|
||||
AIN ALGOL 60 Intermediate ALG ALGOL 60 Source File
|
||||
ASM Assembler Source File BAK Backup File
|
||||
BAS BASIC Source File C C Source File
|
||||
COB COBOL Source File COM "Command" File
|
||||
FOR FORTRAN IV Source File HEX Intel "hex" code file
|
||||
HLP HELP File INT BASIC Intermediate File
|
||||
LST Listing File MAC MACRO-80 Source File
|
||||
PAS PASCAL Source File PRN Assembler Listing File
|
||||
REL Relocatable Module SRC PASCAL/MT Source File
|
||||
SUB SUBMIT File SYM Symbol File
|
||||
TC Tiny-C Source File TFS TFS Source File
|
||||
TXT Text File $$$ Temporary File
|
||||
:CP/M BIOS Jump Vector
|
||||
|
||||
The following is a table representing the entry points into the CP/M
|
||||
BIOS of the major routines accessable to the user --
|
||||
|
||||
|
||||
Routine Relative Offset Comment
|
||||
|
||||
BOOT 00H Cold Start
|
||||
WBOOT 03H Warm Start
|
||||
CONST 06H Console Status
|
||||
Reg A = 00 if no char ready
|
||||
Reg A = FF if char ready
|
||||
CONIN 09H Console char in (Reg A)
|
||||
CONOUT 0CH Console char out (Reg C)
|
||||
LIST 0FH List out (Reg C)
|
||||
PUNCH 12H Punch out (Reg C)
|
||||
READER 15H Reader in (Reg A)
|
||||
|
||||
Routine Relative Offset Comment
|
||||
|
||||
HOME 18H Move to track 00
|
||||
SELDSK 1BH Select disk given by Reg C (A=0,B=1,...)
|
||||
SETTRK 1EH Set track address given by Reg C
|
||||
(0...76)
|
||||
SETSEC 21H Set sector address given by Reg C
|
||||
(1...26)
|
||||
SETDMA 24H Set subsequent DMA address (RP B&C)
|
||||
READ 27H Read track/sector (block)
|
||||
WRITE 2AH Write track/sector (block)
|
||||
LISTST 2DH List Device Status
|
||||
Reg A = 00 if no char ready
|
||||
Reg A = FF if char ready
|
||||
SECTRAN 30H Translate sector number in Reg C using
|
||||
table pointed to by DE; physical sector
|
||||
number returned in Reg L
|
||||
|
||||
40
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22.SPR
Normal file
40
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22.SPR
Normal file
@@ -0,0 +1,40 @@
|
||||
CP/M 2.2 SOFTWARE PERFORMANCE REPORT SUMMARY
|
||||
|
||||
KNOWN PROBLEMS IN CP/M 2.2
|
||||
|
||||
CP/M 2.2 IS A REGISTERED TRADEMARK OF DIGITAL RESEARCH
|
||||
|
||||
UTILITY VER PATCH SYMPTOM\PROBLEM DESCRIPTION
|
||||
------- --- ----- -------------------------------------------------------
|
||||
|
||||
ASM V 2 An erroneous phase error occurs when the identifier in
|
||||
a SET statement appears within an expression from
|
||||
another statement.
|
||||
|
||||
MOVCPM V 1 For systems that use the blocking and deblocking
|
||||
algorithms listed in the CP/M manual, when a file is
|
||||
updated, the last block of updated records is not
|
||||
written to the file.
|
||||
|
||||
PIP V 4 A problem occurs when the start and quit strings are
|
||||
of equal length.
|
||||
|
||||
V 5 A problem occurs with the PIP object file transfer
|
||||
options when copying file to file.
|
||||
|
||||
V 6 When you use PIP to copy to the PRN logical device, the
|
||||
LPT physical device is automatically selected.
|
||||
|
||||
SUBMIT V 3 IF drive A is not the default drive when you run the
|
||||
SUBMIT program, the $$$.SUB file is created on the
|
||||
currently logged-in disk.
|
||||
|
||||
|
||||
V - Problem has been verified by a Technical Support Analyst.
|
||||
U - Unofficial patch has been developed, but not yet published by DRI.
|
||||
N - No patch exists for this problem.
|
||||
|
||||
|
||||
|
||||
COPYRIGHT (C) 1984 by DIGITAL RESEARCH, Pacific Grove, CA.
|
||||
|
||||
117
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.01
Normal file
117
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.01
Normal file
@@ -0,0 +1,117 @@
|
||||
CP/M V2.2
|
||||
Application Note 01, 2/20/82
|
||||
The CCP Auto-Load Feature
|
||||
|
||||
Copyright 1982 by Digital Reserch
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
Applicable products and version numbers: CP/M V1.4, V2.0, V2.1,
|
||||
and V2.2
|
||||
|
||||
Program: CCP (Console Command Processor)
|
||||
|
||||
Usually, you interact with the CP/M CCP following the sign-on
|
||||
prompt. With the CCP Auto Load feature, CP/M executes an initial
|
||||
program immediately after loading the operating system.
|
||||
|
||||
Under usual operation, the CCP receives control from the BIOS
|
||||
upon a warm or cold boot. The beginning of the CCP module
|
||||
contains a two-element jump vector and a command line that takes
|
||||
the form:
|
||||
|
||||
|
||||
CCP: JMP CCPSTART ;START THE CONSOLE PROCESSOR
|
||||
JMP CCPCLEAR ;CLEAR THE INITIAL COMMAND
|
||||
DB 127 ;MAXIMUM COMMAND LENGTH
|
||||
CL: DB 0 ;COMMAND LENGTH
|
||||
DB ' ' ;8 BLANK CHARACTERS
|
||||
DB ' ' ; "
|
||||
DB 'COPYRIGHT...' ;COPYRIGHT NOTICE
|
||||
|
||||
|
||||
If control is transferred to location CCP (address 3400H in a
|
||||
20K CP/M), the console processor examines the command length at
|
||||
location CL (3407H in a 20K CP/M). If the command length byte is
|
||||
zero, then you receive the sign-on prompt and the CCP waits for
|
||||
console input. If the command length byte is not zero, the CCP
|
||||
assumes an initial command has already been entered. The CCP
|
||||
executes the command on each cold or warm boot if control is
|
||||
transferred to location CCP. However, if control is transferred
|
||||
to location CCP+3 (JMP CCPCLEAR), the initial command is cleared
|
||||
and the program enters the CCP at the command line level,
|
||||
displaying the default drive prompt.
|
||||
|
||||
Specify the length of the initial command using a nonzero CL
|
||||
byte. The command must be followed by a terminating zero. CP/M
|
||||
executes the command following that CL byte. Although only 16
|
||||
blank spaces are provided, you can move the Digital Research
|
||||
copyright notice for more spaces.
|
||||
|
||||
|
||||
|
||||
|
||||
You can initialize the command line of the CCP on the
|
||||
operating system tracks or in the relocatable image within the
|
||||
MOVCPM data area. The initial command executes in distributed or
|
||||
reconfigured CP/M systems.
|
||||
|
||||
Following SYSGEN and SAVE commands, save the CP/M memory
|
||||
image above the cold boot loader code starting at location (980H).
|
||||
If the system boot routines require more than 80H bytes, the CCP
|
||||
code begins at location 0A00H.
|
||||
|
||||
Modifying MOVCPM.COM is similar to modifying the CCP. The
|
||||
difference is that the CCP always begins at location 0A00H.
|
||||
|
||||
The following procedure uses DDT to modify the CCP,
|
||||
allowing execution of the initial command DIR after each warm or
|
||||
cold boot.
|
||||
|
||||
A>movcpm * *
|
||||
|
||||
CONSTRUCTING 64K CP/M Vers. 2.2
|
||||
READY FOR "SYSGEN" OR
|
||||
"SAVE 35 CPM64.COM
|
||||
A>save 35 cpm64.com
|
||||
|
||||
A>ddt cpm64.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
2400 0100
|
||||
-d980
|
||||
0980 C3 5C E7 C3 58 E7 7F 00 20 20 20 20 20 20 20 20 ...X...
|
||||
0990 20 20 20 20 20 20 20 20 43 4F 50 59 52 49 47 48 COPYRIGH
|
||||
09A0 54 20 28 43 29 20 31 39 37 39 2C 20 44 49 47 49 T (C) 1979, DIGI
|
||||
09B0 54 41 4C 20 52 45 53 45 41 52 43 48 20 20 00 00 TAL RESEARCH ..
|
||||
09C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
||||
-s987
|
||||
0987 00 3
|
||||
0988 20 44
|
||||
0989 20 49
|
||||
098A 20 52
|
||||
098B 20 0
|
||||
098C 20 .
|
||||
-d980
|
||||
0980 C3 5C E7 C3 58 E7 7F 03 44 49 52 00 20 20 20 20 ...X...DIR.
|
||||
0990 20 20 20 20 20 20 20 20 43 4F 50 59 52 49 47 48 COPYRIGH
|
||||
09A0 54 20 28 43 29 20 31 39 37 39 2C 20 44 49 47 49 T (C) 1979, DIGI
|
||||
09B0 54 41 4C 20 52 45 53 45 41 52 43 48 20 20 00 00 TAL RESEARCH ..
|
||||
09C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
||||
-g0
|
||||
A>save 35 cpm64.com
|
||||
A>sysgen cpm64.com
|
||||
|
||||
|
||||
|
||||
SYSGEN VER 2.0
|
||||
DESTINATION DRIVE NAME (OR RETURN TO REBOOT)b
|
||||
DESTINATION ON B, THEN TYPE RETURN
|
||||
FUNCTION COMPLETE
|
||||
DESTINATION DRIVE NAME (OR RETURN TO REBOOT)
|
||||
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M software.
|
||||
158
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.02
Normal file
158
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.02
Normal file
@@ -0,0 +1,158 @@
|
||||
CP/M V2.2
|
||||
Application Note 02, 2/20/82
|
||||
Reversing the BACKSPACE and RUBOUT Key Functions and
|
||||
Making RUBOUT Identical to BACKSPACE
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT and SID are trademarks of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
Applicable products and version numbers: CP/M V2.1 and V2.2
|
||||
|
||||
Program: BDOS
|
||||
|
||||
In the following code segment procedures, addresses given are
|
||||
hexadecimal offsets from the base of the CP/M system. The CCP is
|
||||
usually located at 980H but can be located at A00H if a two-sector
|
||||
boot is used.
|
||||
|
||||
You can assemble the patch for your size memory system. The
|
||||
cpmbase equals the BDOS entry point address at locations 6 and 7
|
||||
in the base page of memory minus 806H. You must change this entry
|
||||
point address when you load DDT or SID . Under DDT or SID,
|
||||
follow the jump at location 5 until an address is found with a
|
||||
least significant digit of 6. In the following example, the
|
||||
cpmbase would be E506H-806H or DD00H.
|
||||
|
||||
|
||||
0005 JMP CD00
|
||||
CD00 JMP D3A4
|
||||
D3A4 XTHL
|
||||
D3A5 SHLD E452
|
||||
D3A8 XTHL
|
||||
D3A9 JMP E506
|
||||
|
||||
|
||||
Procedure to reverse the BACKSPACE and RUBOUT key functions:
|
||||
|
||||
Patch into the SYSGEN or MOVCPM image exactly as you would
|
||||
patch in a new version of your BIOS, using the DDT i command
|
||||
followed by the DDT r command. You can use the same offset as
|
||||
your custom BIOS and install the following code:
|
||||
|
||||
|
||||
cpmbase equ ? ;subtrack 806h from address at location 6
|
||||
|
||||
org cpmbase + 0A02h
|
||||
|
||||
cpi 7fh ;was cpi 08h
|
||||
|
||||
org cpmbase + 0A16h
|
||||
|
||||
cpi 08h ;was cpi 7fh
|
||||
|
||||
Or, you can install the above procedure directly into MOVCPM
|
||||
if you have MOVCPM.COM on your system disk. The patch is applied
|
||||
automatically to any size system that you build using MOVCPM.
|
||||
Make a back-up copy of MOVCPM.COM before using DDT to make the
|
||||
following changes:
|
||||
|
||||
|
||||
A>ddt movcpm.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
2700 0100
|
||||
-l1402
|
||||
1402 CPI 08
|
||||
1404 JNZ 0A16
|
||||
1407 MOV A,B
|
||||
1408 ORA A
|
||||
1409 JZ 09EF
|
||||
140C DCR B
|
||||
140D LDA 0B0C
|
||||
1410 STA 0B0A
|
||||
1413 JMP 0A70
|
||||
1416 CPI 7F
|
||||
1418 JNZ 0A26
|
||||
-s1403
|
||||
1403 08 7f
|
||||
1404 C2 .
|
||||
-s1417
|
||||
1417 7f 8
|
||||
1418 C2 .
|
||||
-g0
|
||||
|
||||
A>save 38 movcpm1.com
|
||||
|
||||
|
||||
Use the new program MOVCPM1.COM in place of MOVCPM.COM. The
|
||||
BACKSPACE and RUBOUT key functions are reversed for any CP/M
|
||||
system generated with MOVCPM1.COM.
|
||||
|
||||
Procedure to make RUBOUT identical to BACKSPACE:
|
||||
|
||||
Before you install this patch, the code at cpmbase + 0A1Bh
|
||||
should read:
|
||||
|
||||
mov a,b
|
||||
ora a
|
||||
jz cpmbase + 09EFh
|
||||
mov a,m
|
||||
dcr b
|
||||
dcx h
|
||||
jmp cpmbase + 0AA9h
|
||||
|
||||
|
||||
|
||||
|
||||
Patch into the SYSGEN or MOVCPM image exactly as you would
|
||||
patch in a new version of your BIOS, using the DDT i command
|
||||
followed by the DDT r command. Use the same offset as your custom
|
||||
BIOS and install the following code:
|
||||
|
||||
|
||||
cpmbase equ ?
|
||||
;
|
||||
;
|
||||
org cpmbase + 0A1Bh
|
||||
;
|
||||
mvi a,8h
|
||||
jmp cpmbase + 0A07h
|
||||
end
|
||||
|
||||
|
||||
Or, you can install the above procedure directly into MOVCPM
|
||||
if you have MOVCPM.COM on your system disk. The patch is
|
||||
installed automatically in any size system that you build using
|
||||
MOVCPM. Make a back-up copy of MOVCPM.COM before using DDT to
|
||||
make the following changes.
|
||||
|
||||
A>ddt movcpm.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
2700 0100
|
||||
-l141b
|
||||
141B MOV A,B
|
||||
141C ORA A
|
||||
141D JZ 09EF
|
||||
1420 MOV A,M
|
||||
1421 DCR B
|
||||
. . .
|
||||
|
||||
-a141b
|
||||
141B mvi a,8
|
||||
141D jmp a07
|
||||
1420 .
|
||||
-g0
|
||||
|
||||
A>save 38 movcpm1.com
|
||||
|
||||
|
||||
Use the new program MOVCPM1.COM in place of MOVCPM.COM. The
|
||||
RUBOUT and BACKSPACE key functions are identical in any CP/M
|
||||
system generated with MOVCPM1.COM.
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M V2.2 software.
|
||||
50
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.03
Normal file
50
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.03
Normal file
@@ -0,0 +1,50 @@
|
||||
CP/M 2.2
|
||||
Application Note 03, 06/25/81
|
||||
Sample BIOS for a Serial Printer Device
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
|
||||
Applicable products and version numbers: CP/M V1.4, V2.0, V2.1,
|
||||
and V2.2
|
||||
|
||||
Program: BIOS
|
||||
|
||||
The following code fragment drives Diablo serial interface
|
||||
printers or other serial devices that use the X ON/X OFF protocol
|
||||
for synchronization. A device that uses this protocol receives data
|
||||
faster than it can print. The device transmits a CTRL-S character
|
||||
when its buffer becomes full, and a CTRL-Q to receive more data
|
||||
after the buffer is emptied.
|
||||
|
||||
|
||||
LIST$STAT EQU 00H
|
||||
LIST$DATA EQU 01H
|
||||
IN$MASK EQU 02H
|
||||
OUT$MASK EQU 01H
|
||||
|
||||
LIST:
|
||||
CALL LISTST ! JZ LIST
|
||||
MOV A,C ! OUT LIST$DATA
|
||||
RET
|
||||
LISTST
|
||||
;return list status (0 if not ready, FF if ready)
|
||||
LXI H,LST$FLAG
|
||||
IN LIST$STAT ! ANI INS$MASK ! JZ NO$INPUT
|
||||
IN LIST$DATA ! ANI 7FH ! CPI 'Q'-'@' ! JNZ S?
|
||||
MVI M OFFH
|
||||
S? CPI 'S'-'@' ! JNZ NO$INPUT
|
||||
MVI M,O
|
||||
NO$INPUT:
|
||||
IN LIST$STAT ! ANI OUT$MASK ! ANA M ! RZ
|
||||
ORI 255
|
||||
RET
|
||||
LST$FLAG:
|
||||
DB 255 ;must be 255 initially
|
||||
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M software.
|
||||
109
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.04
Normal file
109
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.04
Normal file
@@ -0,0 +1,109 @@
|
||||
CP/M V2.2
|
||||
Application Note 04, 2/20/82
|
||||
BIOS Error Return Code Options
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Trademark.
|
||||
DDT and SID are trademarks of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2
|
||||
|
||||
Program: BIOS
|
||||
|
||||
Usually, CP/M responds only to a zero or nonzero value as the
|
||||
return code from the BIOS READ and WRITE entry points. If the value
|
||||
in register A is zero, CP/M assumes that the disk operation was
|
||||
completed successfully. If a nonzero value is in register A, the
|
||||
BDOS returns the message BDOS ERR ON x: BAD SECTOR. You then have
|
||||
the option of pressing the RETURN key to ignore the error, or CTRL-C
|
||||
to abort.
|
||||
|
||||
This modification interjects three additional return codes for
|
||||
the BIOS READ and WRITE routines in register A as shown below.
|
||||
|
||||
|
||||
0 The disk Read or Write operation was successful.
|
||||
1 Bad Sector--indicates permanent disk error.
|
||||
2 Select Error--indicates the drive is not ready.
|
||||
3 R/O--the disk is Read-Only (used by WRITE).
|
||||
4 File R/O--not normally used.
|
||||
|
||||
|
||||
In the following code segment, addresses given are hexadecimal
|
||||
offsets from the base of the CP/M system. The CCP is usually located
|
||||
at 980H, but can be located at A00H if you use a two-sector boot.
|
||||
|
||||
After modifying your BIOS READ and WRITE routines to pass the
|
||||
extended error codes to the BDOS, you can assemble the BDOS patch for
|
||||
your size memory system. The cpmbase equals the BDOS entry point
|
||||
address at locations 6 and 7 in the base page of memory minus 806H.
|
||||
You must change this entry point address when you load DDT or
|
||||
SID . Under DDT or SID, follow the jump at location 5 until you
|
||||
find an address with a least significant digit of 6. In the
|
||||
following example, the cpmbase would be E506H-806H or DD00H.
|
||||
|
||||
|
||||
0005 JMP CD00
|
||||
CD00 JMP D3A4
|
||||
D3A4 XTHL
|
||||
D3A5 SHLD E452
|
||||
D3A8 XTHL
|
||||
D3A9 JMP E506
|
||||
1
|
||||
CP/M V2.2 Application Note 04
|
||||
|
||||
|
||||
Patch into the SYSGEN or MOVCPM image exactly as you would patch
|
||||
in a new version of your BIOS, using the DDT i command followed by
|
||||
the DDT r command. Use the same offset as your custom BIOS.
|
||||
|
||||
Before installing this patch, the code at the cpmbase + BBDh
|
||||
should read:
|
||||
|
||||
lxi h,cpmbase +809H
|
||||
jmp cpmbase + B4AH
|
||||
|
||||
Replace the preceding code with the following code:
|
||||
|
||||
cpmbase equ ?
|
||||
;
|
||||
;
|
||||
org cpmbase + BBDH
|
||||
;
|
||||
lxi h,cpmbase + 807H
|
||||
jmp cpmbase + 83AH
|
||||
end
|
||||
|
||||
Or, you can install this change directly into MOVCPM, if
|
||||
MOVCPM.COM is on your system disk. The patch is installed in any
|
||||
size system that you build using MOVCPM. Make a back-up copy of
|
||||
MOVCPM.COM before using DDT to install the following procedure:
|
||||
|
||||
A>ddt movcpm.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
2700 0100
|
||||
-l15bd
|
||||
15BD LXI H,0809
|
||||
15C0 JMP 0B4A
|
||||
15C3 LHLD 15EA
|
||||
. . .
|
||||
|
||||
-a15bd
|
||||
15BD lxi h,807
|
||||
15C0 jmp 83a
|
||||
15C3 .
|
||||
-g0
|
||||
|
||||
A>save 38 movcpm1.com
|
||||
|
||||
|
||||
Use the new program MOVCPM1.COM in place of MOVCPM.COM.
|
||||
Additional error return codes for the BIOS READ and WRITE routines
|
||||
are supported in any CP/M system generated with MOVCPM1.COM.
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M V2.2 software.
|
||||
90
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.05
Normal file
90
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.05
Normal file
@@ -0,0 +1,90 @@
|
||||
CP/M V2.2
|
||||
Application Note 05, 2/20/82
|
||||
Improving the CTRL-S Function
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT and SID are trademarks of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2
|
||||
|
||||
Program: BDOS
|
||||
|
||||
The CTRL-S function controls screen scrolling during CRT output.
|
||||
However, the system does not recognize CTRL-S if you type another
|
||||
character before it.
|
||||
|
||||
In the following code segment procedures, addresses given are
|
||||
hexadecimal offsets from the base of the CP/M system. The CCP is
|
||||
usually located at 980H, but can be located at A00H if a two-sector
|
||||
boot is used.
|
||||
|
||||
You can assemble the patch for your size memory system. The
|
||||
cpmbase equals the BDOS entry point address at locations 6 and 7 in
|
||||
the base page of memory minus 806H. You must change this entry point
|
||||
address when you load DDT or SID . Under DDT or SID, follow the
|
||||
jump at location 5 until you find an address with a least significant
|
||||
digit of 6. In the following example, the cpmbase is E506H-806H or
|
||||
DD00H.
|
||||
|
||||
0005 JMP CD00
|
||||
CD00 JMP D3A4
|
||||
D3A4 XTHL
|
||||
D3A5 SHLD E452
|
||||
D3A8 XTHL
|
||||
D3A9 JMP E506
|
||||
|
||||
Patch into the SYSGEN or MOVCPM image exactly as you would patch
|
||||
in a new version of your BIOS, using the DDT i command followed by
|
||||
the DDT r command. Use the same offset as your custom BIOS. The
|
||||
call at cpmbase + 950H should be cpmbase + 923H before installing the
|
||||
following code:
|
||||
|
||||
cpmbase equ ?
|
||||
;
|
||||
;
|
||||
org cpmbase + 950h
|
||||
;
|
||||
call cpmbase + 92Ah
|
||||
end
|
||||
|
||||
|
||||
1
|
||||
|
||||
|
||||
CP/M V2.2 Application Note 05
|
||||
|
||||
|
||||
Or, you can install the above procedure directly into MOVCPM, if
|
||||
MOVCPM.COM is on your system disk. The patch is applied
|
||||
automatically to any size system that you build using MOVCPM.
|
||||
|
||||
Make a back-up copy of MOVCPM.COM before using DDT to make the
|
||||
following changes:
|
||||
|
||||
|
||||
A>ddt movcpm.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
2700 0100
|
||||
-l1350
|
||||
1350 CALL 0923
|
||||
1353 POP B
|
||||
1354 PUSH B
|
||||
. . .
|
||||
|
||||
-a1350
|
||||
1350 call 92a
|
||||
1353 .
|
||||
-g0
|
||||
|
||||
A>save 38 movcpm1.com
|
||||
|
||||
|
||||
Use the new program MOVCPM1.COM in place of MOVCPM.COM. Any
|
||||
CP/M system generated with MOVCPM1.COM has the improved CTRL-S
|
||||
function.
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M V2.2 software.
|
||||
38
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.06
Normal file
38
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.06
Normal file
@@ -0,0 +1,38 @@
|
||||
CP/M V2.2
|
||||
Application Note 06, 2/20/82
|
||||
Changing the Lines Per Page
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2 and V2.2 4200H
|
||||
|
||||
Program: ED.COM
|
||||
|
||||
This modification changes the number of lines scrolled by the P
|
||||
command in ED.COM from 23 to 14. Add 4200H to each address shown
|
||||
below for 4200H-based systems. Make a back-up copy of ED.COM before
|
||||
you use DDT to make the following changes:
|
||||
|
||||
A>ddt ed.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
1B00 0100
|
||||
-l17da
|
||||
17DA LXI H,0017
|
||||
17DD SHLD 1D1C
|
||||
17E0 RET
|
||||
.
|
||||
.
|
||||
.
|
||||
|
||||
-s17db
|
||||
17DB 17 e
|
||||
17DC 00 .
|
||||
-^C
|
||||
A>save 26 ed.com
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M V2.2 and V2.2 4200H software.
|
||||
77
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.07
Normal file
77
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.07
Normal file
@@ -0,0 +1,77 @@
|
||||
CP/M V2.2
|
||||
Application Note 07, 2/20/82
|
||||
Changing the Restart Number in DDT
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V1.4, V2.0, V2.1,
|
||||
and V2.2
|
||||
|
||||
Program: DDT.COM
|
||||
|
||||
DDT uses RST 7 (machine instruction 0FFH) to set break points.
|
||||
To change the restart number, modify the three bytes indicated by ??
|
||||
in the following procedure for a new restart instruction and
|
||||
location. The restart instruction uses the bit pattern 11XXX111,
|
||||
where XXX is the restart number you use. (AFH is RST 1, B7H is RST
|
||||
2, and BFH is RST 3.) The restart location is usually the restart
|
||||
number times 8. Do not use RST 0 because it is reserved for CP/M.
|
||||
|
||||
The following procedure applies to DDT supplied with CP/M V2.1
|
||||
and V2.2. For V1.4 and V2.0, change the instructions at 19B and 19E
|
||||
to the following:
|
||||
|
||||
019B sta fe4
|
||||
019E sta 10ee
|
||||
|
||||
Make a back-up copy of DDT.COM before you use DDT to make the
|
||||
following changes:
|
||||
|
||||
A>ddt ddt.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
1400 0100
|
||||
-l103
|
||||
103 JMP 013D
|
||||
.
|
||||
.
|
||||
.
|
||||
-a103
|
||||
0103 jmp 18b
|
||||
-a18b
|
||||
018B lhld 1ec
|
||||
018E shld 8e7
|
||||
0191 inx h
|
||||
0192 shld 8ed
|
||||
0195 lda 1eb
|
||||
0198 sta ad5
|
||||
|
||||
|
||||
|
||||
1
|
||||
|
||||
CP/M V2.2 Application Note 07
|
||||
|
||||
|
||||
019B sta fea
|
||||
019E sta 10f4
|
||||
|
||||
|
||||
01A1 jmp 13d
|
||||
- s1ec
|
||||
01EB ?? f7
|
||||
01EC ?? 30
|
||||
01ED ?? 00
|
||||
01EE ?? .
|
||||
-g0
|
||||
A>save 19 ddt6.com
|
||||
|
||||
|
||||
To change the restart number for DDT in the future, modify only
|
||||
the 3 bytes 1EBH, 1ECH and 1EDH.
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M software.
|
||||
81
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.08
Normal file
81
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.08
Normal file
@@ -0,0 +1,81 @@
|
||||
CP/M V2.2
|
||||
Application Note 08, 2/20/82
|
||||
Nested SUBMIT Files
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.1 and V2.2
|
||||
|
||||
Program: SUBMIT.COM
|
||||
|
||||
The CP/M SUBMIT program allows you to embed another SUBMIT
|
||||
command within a submit file. However, control does not return to
|
||||
the original SUBMIT file after executing the nested SUBMIT command.
|
||||
To return control to the original SUBMIT command, use any standard
|
||||
editor to type the following procedure into a file named
|
||||
SUBPATCH.ASM:
|
||||
|
||||
;
|
||||
;
|
||||
subfcb: equ 5bbh
|
||||
bdos: equ 5
|
||||
open: equ 211h
|
||||
;
|
||||
org 22dh ;submit erase subroutine
|
||||
;
|
||||
opsl: lda subfcb+15 ;file open ok if ext not full
|
||||
ral
|
||||
rnc
|
||||
lxi h,subfcb+12 ;try next extent
|
||||
inr m
|
||||
ops: lxi d,subfcb ;open extent
|
||||
jmp create
|
||||
;
|
||||
org 25dh ;submit create subroutine
|
||||
create: call open
|
||||
inr a
|
||||
jnz opsl ;loop if open ok
|
||||
lxi d,subfcb
|
||||
mvi c,22
|
||||
call bdos
|
||||
adi 1
|
||||
ret
|
||||
;
|
||||
; the following code calls the above routines
|
||||
;
|
||||
org 4feh
|
||||
;
|
||||
call ops ;open the $$$.sub file
|
||||
jc 517h ;jump if not opened ok
|
||||
lda subfcb+15 ;set current record to end
|
||||
sta subfcb+32
|
||||
jmp 51dh ;jump if open ok
|
||||
;
|
||||
org subfcb
|
||||
db 1 ;force $$$.sub file to A:
|
||||
;
|
||||
end
|
||||
|
||||
|
||||
Assemble SUBPATCH ASM to create the file SUBPATCH.HEX. Then use
|
||||
DDT to insert SUBPATCH.HEX into the SUBMIT.COM program, as shown
|
||||
below.
|
||||
|
||||
A>ddt submit.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
0600 0100
|
||||
-isubpatch.hex
|
||||
-r
|
||||
-g0
|
||||
A>save 5 submit1.com
|
||||
|
||||
|
||||
In the new program SUBMIT1.COM, control returns to the original
|
||||
SUBMIT file after the system executes embedded SUBMIT commands.
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M V2.1 and V2.2 software.
|
||||
52
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.09
Normal file
52
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.09
Normal file
@@ -0,0 +1,52 @@
|
||||
CP/M V2.2
|
||||
Application Note 09, 2/02/82
|
||||
Configuring CP/M for Page Boundaries
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2
|
||||
|
||||
Program: MOVCPM.COM
|
||||
|
||||
You can modify MOVCPM.COM to configure CP/M V2.2 for page
|
||||
boundaries (256 bytes) instead of kilobyte boundaries.
|
||||
|
||||
Make a back-up copy of MOVCPM.COM before you use DDT to make
|
||||
the following changes. Save the changes in a new file named
|
||||
PGMOV.COM. The first argument designates the size of the system in
|
||||
pages that PGMOV is to construct. The first argument is optional,
|
||||
but must range between 64 and 255 (decimal) if used.
|
||||
|
||||
A>ddt movcpm.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
2700 0100
|
||||
-l165
|
||||
0165 CPI 10
|
||||
0167 JC 0172
|
||||
016A MVI L,00
|
||||
016C MOV H,A
|
||||
016D DAD H
|
||||
-s166
|
||||
0166 10 40
|
||||
0167 DA .
|
||||
-a16d
|
||||
016D nop
|
||||
016E nop
|
||||
016F .
|
||||
-l1a2
|
||||
01A2 ANI FC
|
||||
01A4 MOV H,A
|
||||
01A5 PUSH H
|
||||
01A6 LHLD 0006
|
||||
-ala2
|
||||
01A2 ani fe
|
||||
01A4 .
|
||||
-g0
|
||||
A>save 38 pgmov.com
|
||||
|
||||
Licensed users are granted the right to include these
|
||||
modifications in CP/M V2.2 software.
|
||||
57
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.10
Normal file
57
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.10
Normal file
@@ -0,0 +1,57 @@
|
||||
CP/M V2.2
|
||||
Application Note 10, BDOS, 03/12/82
|
||||
Booting CP/M on Drives Other Than Drive A
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2
|
||||
|
||||
Module: BDOS
|
||||
|
||||
Booting CP/M on a drive other than drive A changes the initial
|
||||
prompt displayed after a cold boot. Instead of A>, you must specify
|
||||
the drive intended to follow the cold boot in the following patch
|
||||
procedure. Also, your BIOS must pass the intended boot drive to
|
||||
register C in the CCP upon cold boots (see the CP/M Operating System
|
||||
Manual). The intended boot drive in this patch procedure and in your
|
||||
BIOS is indicated by a number relative to zero. (A=0, B=1, C=2, ...,
|
||||
P=15.) This procedure changes the drive selected by BDOS Function 13
|
||||
(Reset Disk System).
|
||||
|
||||
Use caution installing this patch because it requires
|
||||
modification to the CP/M submit processor (SUBMIT.COM). SUBMIT must
|
||||
write the $$$.SUB file to the boot drive you specify in this patch.
|
||||
The procedure to modify SUBMIT is described in CP/M V2.2, Patch 03,
|
||||
dated 1/21/82. Instead of setting the byte at 5BBH to 1, as
|
||||
described in Patch 03, set the byte to the specified boot drive plus
|
||||
1. For example, if the boot drive is 1 (the B drive), then set the
|
||||
byte in SUBMIT.COM at 5BBH to 2.
|
||||
|
||||
Place the following code in a file named CPMxx.COM (xx = memory
|
||||
size). Determine the CP/M base for your size memory and include it
|
||||
in the code. Assemble and insert CPMxx.COM into the SYSGEN or MOVCPM
|
||||
image exactly as you would patch in a new version of your BIOS. Use
|
||||
the DDT i command followed by the DDT r command. Use the same
|
||||
offset as your custom BIOS. Make a back-up copy of CPMxx.COM before
|
||||
you make the changes.
|
||||
|
||||
|
||||
cpmbase equ ?
|
||||
drive equ ? ;boot drive
|
||||
;0=A, 1=B, ..., 15=P
|
||||
|
||||
org cpmbase + 0148Ch
|
||||
|
||||
jmp cpmbase + 15EEh ;was "xra a"
|
||||
|
||||
org cpmbase + 15EEh
|
||||
mvi a,drive ;was "nop"
|
||||
sta cpmbase + 0B42h ;was "nop"
|
||||
jmp cpmbase + 1490h ;was "nop"
|
||||
|
||||
|
||||
Licensed users are granted the right to include these changes in
|
||||
CP/M V2.2 software.
|
||||
214
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.11
Normal file
214
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.11
Normal file
@@ -0,0 +1,214 @@
|
||||
CP/M V2.2
|
||||
Application Note 11 9/30/82
|
||||
Chaining Programs
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M and CP/NET are registered trademarks of Digital Research.
|
||||
MP/M II and PL/I-80 are trademarks of Digital Research.
|
||||
Compiled October 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2, CP/NET ,
|
||||
and MP/M II .
|
||||
|
||||
Program: CHAIN1.COM and CHAIN2.COM
|
||||
|
||||
Menu-driven applications can be written to run under CP/M.
|
||||
If you develop applications using PL/I-80 , you can write the
|
||||
programs as a set of overlays. Often, the programs are written in
|
||||
assembly language, or require too much memory to make the overlay
|
||||
feature of PL/I-80 appropriate. Without using overlays, there are
|
||||
only two effective methods of chaining under CP/M V2.2.
|
||||
|
||||
The first method uses the CP/M SUBMIT facility, in which the
|
||||
main menu program creates a SUBMIT file that lists the programs to
|
||||
be chained. The file must be written to drive A, and have the name
|
||||
$$$.SUB.
|
||||
|
||||
The SUBMIT file consists of compatible lines, exactly like
|
||||
those you type at the console, following the system prompt. The
|
||||
commands are placed in reverse order, so the last command in the
|
||||
file is the first to be executed. Each command is placed in a 128-
|
||||
byte record with the following format:
|
||||
|
||||
:n:C1:C2:...:cn:0:...:
|
||||
|
||||
The first byte of the record contains the number of
|
||||
characters in the command (n), followed by the characters (c1-cn),
|
||||
and terminated with a zero. The number of characters in the command
|
||||
is written as a binary number and each character is represented in
|
||||
ASCII format. It does not matter what follows the terminating zero
|
||||
in the record. For example, if the command was STAT*.*, the first
|
||||
byte would be a binary 8, followed by the letters STAT*.* and
|
||||
terminated with a zero.
|
||||
|
||||
The second method of program chaining is simpler. You
|
||||
include a procedure in the menu program that loads the next program
|
||||
and chains to it. Each program that might chain to another program
|
||||
must include a copy of the procedure. The procedure must first move
|
||||
itself out of the way so that it is not overwritten by the program
|
||||
it is loading.
|
||||
|
||||
The example assembly language procedure is written to link
|
||||
with PL/I-80 modules as an external procedure. It can also be used
|
||||
in an assembly language menu program. To link to a PL/I-80 program,
|
||||
the following entry declaration must be included in the PL/I-80
|
||||
program that does the chaining:
|
||||
<EFBFBD>
|
||||
dcl chain entry (char(12));
|
||||
|
||||
The character 12 variable consists of the standard CP/M File
|
||||
Control Block (FCB) format. The format can be created in the PL/I-
|
||||
80 program as a structure. A char(12) variable can then be based at
|
||||
the same address as the structure for interfacing to the chain
|
||||
procedure. (See the following PL/I-80 program.)
|
||||
|
||||
Note: the drive is not an ASCII character, but a binary number
|
||||
between 0 and 16, where 0 is the current default drive and 1 through
|
||||
16 represent the CP/M drives A through P, respectively.
|
||||
|
||||
chain 1: proc options(main);
|
||||
/* chain subroutine tester */
|
||||
dcl 1 fcb static
|
||||
2 drive fixed(7) init(0),
|
||||
2 name char(8) init('CHAIN2');
|
||||
2 type char(3) init('COM'),
|
||||
dummy char(12) based(db),
|
||||
dp pointer,
|
||||
chain entry(char(12));
|
||||
put skip list('Chain Text program 1');
|
||||
dp = addr(fcb);
|
||||
call chain(dummy);
|
||||
put skip(2) list('Shouldn''t be here!!);
|
||||
end chain 1;
|
||||
|
||||
This program prints the message Chain Test program 1, and
|
||||
chains to the program CHAIN2.COM on the default drive. CHAIN2 is a
|
||||
program identical to CHAIN1, except that it prints Chain Test
|
||||
Program 2 and chains to CHAIN1.COM. CHAIN1 and CHAIN2 then continue
|
||||
to chain back and forth to each other.
|
||||
|
||||
Note: any statements following the call to the chain procedure are
|
||||
not executed because the chain procedure never returns.
|
||||
|
||||
The chain procedure consists of two routines. An
|
||||
initialization routine initializes the FCB for the program to be
|
||||
loaded. Then, the initialization routine relocates the loader and
|
||||
FCB to the very top of the Transient Program Area (TPA), immediately
|
||||
below the BDOS, so it will not be overwritten by the loaded program.
|
||||
The loader begins at the label, code:, and ends at the end of the
|
||||
FCB, at the statement, codelen equ $-code.
|
||||
|
||||
The loader routine sets the DMA address, reads a sector,
|
||||
checks for an end-of-file, increments the DMA addresses by 128
|
||||
bytes, and repeats the process. When the end-of-file is detected,
|
||||
it jumps to the chained program. The code is as follows:
|
||||
|
||||
public chain char(12)
|
||||
extrn ?signal
|
||||
,/* loads another COM file, and
|
||||
executes it */
|
||||
bdos equ 5
|
||||
<EFBFBD> openf equ 15
|
||||
readf equ 20
|
||||
dmaf equ 26
|
||||
|
||||
cseq
|
||||
chain. mov e,m ! inx h ! mov d, m ! xchg ;get first arg address
|
||||
lxi d, fcb ! mvi c, 12 ! call move ;move string to FCB
|
||||
lxi d, fcb+12 ! mvi a, 0 ! mvi c, 21
|
||||
call fill ;zero rest of FCB
|
||||
lhld bdos+1 ! lxi b, -code$len
|
||||
dad b ;make space at
|
||||
;top of TPA
|
||||
shld jmpr + 1 ;jump address
|
||||
push h ;save code address
|
||||
;for RET
|
||||
xchg ! lxi h, fcb-code ! dad d ;make address of FCB
|
||||
shld FCBR+1 ;and fix LXI
|
||||
push h ;save FCB
|
||||
;destination address
|
||||
|
||||
lxi h, code ! mvi c, code$len
|
||||
call move ;dest in DE
|
||||
pop d ;recover address of FCB
|
||||
mvi c, openf ! call BDOS ;open file
|
||||
inr a ! jz sig ;if any error,
|
||||
;signal error
|
||||
pop h ! sphl ! push h ;point stack to top
|
||||
;of TPA
|
||||
;and save code addr
|
||||
lxi h, 100h ;point to start of
|
||||
;TPA
|
||||
ret ;to loader "code"
|
||||
|
||||
code: push h ! xchg ! mvi c, dmaf
|
||||
call BDOS ;set the DMA address
|
||||
|
||||
FCBR lxi d, $-$ ! mvi c, readf !
|
||||
call BDOS ;read the next record
|
||||
ora a ! jnz 100h ;EOF -| start TPA
|
||||
pop h ! lxi d, 128 ! dad D ;recover and bump DMA
|
||||
|
||||
jmpr jmp $-$ ;jump to code
|
||||
FCB: ds 1 ;drive code
|
||||
ds 8 ;filename
|
||||
ds 3 ;filetype
|
||||
ds 4 ;control info
|
||||
ds 16 ;disk map
|
||||
ds 1 ;rrec
|
||||
codelen equ $-code
|
||||
|
||||
move: ;c = # bytes, hi = source, de = desti-
|
||||
nation
|
||||
mov a,m ! stax d
|
||||
inx h ! inx d ! dcr c
|
||||
jnz move
|
||||
<EFBFBD> ret
|
||||
fill: ;a = byte to fill, c = # bytes, de = start ad-
|
||||
dress
|
||||
stax d ! inx d
|
||||
dcr c ! jnz fill
|
||||
ret
|
||||
sig: lxi h, siglist ! call ?signal ! jmp 0;signal error
|
||||
siglist: ;(fixed(6),
|
||||
;bit(8),ptr,ptr)
|
||||
dw sigcode, sigsub, sigfil, message
|
||||
sigcode db 6 ;undefined file
|
||||
;error
|
||||
sigsub db 2 ;arbitrary subcode
|
||||
;for id
|
||||
sigfil dw fpb ;ptr to file
|
||||
;parameter block
|
||||
message dw quack ;auxiliary
|
||||
;operator message
|
||||
fpb ;PL/I fuke
|
||||
;oaraneter bkicj
|
||||
fcbptr dw FCB-1 ;fcb-1
|
||||
fpblst dw 0 ;(unused)ptr
|
||||
column dw 0 ;current column
|
||||
;fixed(15)
|
||||
curline dw 0 ;current line
|
||||
;fixed(15)
|
||||
curpage dw 0 ;current page
|
||||
;fixed(15)
|
||||
currec dw 0 ;(unused)fixed(15)
|
||||
lookchr db 0 ;look ahead char
|
||||
;char(1)
|
||||
ioend dw 0 ;i/o end address
|
||||
iostk dw 0 ;user stack upon
|
||||
;sio entry
|
||||
spacer ds 4 ;spacer
|
||||
linesz dw 0 ;line size
|
||||
;fixed(15)
|
||||
pagesz dw 0 ;page size
|
||||
;fixed(15)
|
||||
fixedsz dw 0 ;fixed size
|
||||
;fixed(15)
|
||||
blocksz dw 0 ;block size
|
||||
;fixed(15)
|
||||
filedes dw 0 ;block size
|
||||
;fixed(15)
|
||||
dtitle db 0 ;default title
|
||||
;char(14)varying
|
||||
quack db 17,'Bad Chain Attempt',0 ;error message
|
||||
|
||||
49
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.12
Normal file
49
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.12
Normal file
@@ -0,0 +1,49 @@
|
||||
CP/M V2.2
|
||||
Application Note 12, 11/1/82
|
||||
Interpreting CTRL-Z in SUBMIT Files
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2
|
||||
|
||||
Program: SUBMIT.COM
|
||||
|
||||
SUBMIT does not accept control characters in SUB files. SUBMIT
|
||||
recognizes certain control characters when preceded by an up arrow.
|
||||
SUBMIT should interpret the two characters ^z as CTRL-Z.
|
||||
|
||||
Procedure:
|
||||
|
||||
Make a back-up copy of SUBMIT.COM before you use DDT to make
|
||||
the following changes.
|
||||
|
||||
|
||||
A>ddt submit.com
|
||||
DDT V2.2
|
||||
NEXT PC
|
||||
0600 0100
|
||||
-l0441
|
||||
0441 SUI 61
|
||||
0443 STA 0E7D
|
||||
0446 MOV C,A
|
||||
0447 MVI A,19
|
||||
0449 CMP C
|
||||
044A JNC 0456
|
||||
044D LXI B,019D
|
||||
0450 CALL 02A7
|
||||
045 JMP 045E
|
||||
0456 LDA 0E7D
|
||||
0459 INR A
|
||||
-s442
|
||||
0442 61 41
|
||||
0443 32 .
|
||||
-g0
|
||||
|
||||
A>save 5 submit.com
|
||||
|
||||
|
||||
Licensed users are granted the right to include these changes in
|
||||
CP/M V2.2 software.
|
||||
49
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.13
Normal file
49
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.13
Normal file
@@ -0,0 +1,49 @@
|
||||
CP/M V2.2
|
||||
Application Note 13, 01/21/82
|
||||
Exiting PIP When Using SUBMIT and XSUB
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2
|
||||
|
||||
Program: PIP.COM
|
||||
|
||||
When using the SUBMIT and XSUB utilities to execute multiple
|
||||
PIP commands from a SUBMIT file, it is not possible to exit from
|
||||
PIP automatically. The SUBMIT utility does not accept lines with
|
||||
only a carriage return.
|
||||
|
||||
This application note patch modifies PIP so a period can be
|
||||
used to exit from PIP instead of a carriage return. In the submit
|
||||
file, place a single period (.) on a line by itself after the last
|
||||
PIP command to be executed.
|
||||
|
||||
Procedure:
|
||||
|
||||
Make a back-up copy of PIP.COM before you make any changes.
|
||||
The program DDT is required to make the changes. Use the
|
||||
following sequence of commands.
|
||||
|
||||
0A>ddt pip.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
1E00 0100
|
||||
-l54f
|
||||
054F CPI 00
|
||||
0551 JNZ 055E
|
||||
0554 LHLD 1DFC
|
||||
. . .
|
||||
-a54f
|
||||
054F cpi 2
|
||||
0551 jnc 55e
|
||||
0554 .
|
||||
-g0
|
||||
|
||||
A>save 29 pip.com
|
||||
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M 2.2 software.
|
||||
113
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.14
Normal file
113
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.14
Normal file
@@ -0,0 +1,113 @@
|
||||
CP/M V2.2
|
||||
Application Note 14, 8/11/82
|
||||
Turning CTRL-P On and Off from within a CP/M V2.2 SUBMIT File
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Applicable products and version numbers: CP/M V2.2
|
||||
|
||||
You can use the SUBMIT facility for batching job streams to
|
||||
turn the CTRL-P toggle on and off from within that SUBMIT file.
|
||||
Although there is a patch to SUBMIT that forces it to accept control
|
||||
characters when preceded by an up-arrow, ^, SUBMIT does not act on a
|
||||
CTRL-C nor a CTRL-P.
|
||||
|
||||
The assembly-language program which follows turns CTRL-P on or
|
||||
off from within a SUBMIT file. The same assembly code can be used
|
||||
from within an applications program to turn CTRL-P on and off. This
|
||||
program must be executed before XSUB, if XSUB is to be active in the
|
||||
SUBMIT file. Although the CP/M V2.2 Operating System Manual states,
|
||||
"The XSUB command is included as the first line of your submit
|
||||
file...," this is not necessary. XSUB can be activated and
|
||||
deactivated within a SUBMIT file. An assembly-language program is
|
||||
listed that deactivates XSUB and also turns off CTRL-P if it is on.
|
||||
|
||||
Use this program from within a SUBMIT file to turn the ^P
|
||||
toggle on and off. This program can also be invoked from the
|
||||
console. If the CTRL-P toggle is off, this program turns it on; if
|
||||
on, the program turns it off. It issues an appropriate message to
|
||||
the console that is also echoed on the list device.
|
||||
|
||||
The program calculates the location of the ^P toggle in the
|
||||
BDOS by getting the BDOS address from the jump instruction located
|
||||
at 0005h in page zero and adding 307h to that address. It then does
|
||||
an exclusive on of the toggle byte to turn ^P on or off.
|
||||
|
||||
Note: if XSUB is to be active in the submit file, ^P must be turned
|
||||
on before executing XSUB. To turn off ^P in a submit file in which
|
||||
XSUB is active, execute a program that deactivates XSUB, such as the
|
||||
DEXSUB program which is listed following this program.
|
||||
|
||||
CntlP:
|
||||
org 100h ;start of TPA
|
||||
bdos equ 5h ;BDOS jump instruction
|
||||
bdosa equ bdos+1 ;BDOS entry address
|
||||
pstr equ 9 ;print string function
|
||||
testoff equ 2feh ;offset for verification
|
||||
listcp equ 0dh ;^P offset in page
|
||||
mvic equ 3eh ;MVI C,x instruction
|
||||
cr equ 0dh ;carriage return
|
||||
lf equ 0ah ;line feed
|
||||
|
||||
lhld bdosa ;pick up address of BDOS in HL
|
||||
lxi d,testoff ;offset of ^P page in DE for add
|
||||
dad d ;HL= compare area in BDOS
|
||||
lxi d,string ;DE= compare string
|
||||
compare:
|
||||
ldax d ;is character a 0?
|
||||
ora a ;
|
||||
jz ok ;yes, we're done
|
||||
cmp m ;is BDOS same as string?
|
||||
inx h ;next byte
|
||||
inx d ;
|
||||
jz compare ;BDOS = string keep looping
|
||||
error: mvi c,pstr ;else print error message
|
||||
lxi d,errormsg ;
|
||||
jmp bdos ;return to CCP from BDOS
|
||||
ok: mvi l,listcp ;listcp page offset
|
||||
mvi a,1 ;toggle ^P byte on or off
|
||||
sub m ;true = 1, false = 0
|
||||
mov m,a ;put results back in memory
|
||||
cpi 0h ;see if on or off
|
||||
jz othermsg ;to issue appropriate message
|
||||
lxi d,onmsg ;^P turned on
|
||||
jmp print ;go around
|
||||
othermsg:
|
||||
lxi d,offmsg ;^P turned off
|
||||
print mvi c,pstr ;print sign-on message
|
||||
jmp bdos ;return to CCP from BDOS
|
||||
onmsg: db cr,lf,'(^P turned on)$'
|
||||
offmsg db cr,lf,'(^P turned off)$'
|
||||
errormsg:
|
||||
db cr,lf,'Unable to find BDOS$'
|
||||
string db ret,mvic,1,jmp,0
|
||||
end
|
||||
|
||||
Dexsub:
|
||||
org 100h ;start of TPA
|
||||
bdos equ 0005h ;bdos location in base page
|
||||
mvi c,9 ;print string = function 9
|
||||
lxi d,msg ;
|
||||
call bdos ;
|
||||
mvi c,0 ;system reset = function 0
|
||||
jmp bdos ;exit bdos to ccp
|
||||
msg db 0dh,0ah,'(xsub deactivated; ^P turned off if on)$'
|
||||
end
|
||||
|
||||
|
||||
This application was developed and tested by Digital Research
|
||||
Technical Support using standard Digital Research products.
|
||||
Modifications required to assemble, compile, or execute under non-
|
||||
standard or non-Digital Research products are the responsibility of
|
||||
the user.
|
||||
|
||||
Digital Research specifically disclaims any express or implied
|
||||
warranty and shall not be liable for any loss of profits, loss of
|
||||
business, loss of use or of data, interruption of business, nor for
|
||||
indirect, special, incidental, or consequential damages of any kind
|
||||
caused by the use or adaptation of this application note.
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M software.
|
||||
89
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.15
Normal file
89
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.15
Normal file
@@ -0,0 +1,89 @@
|
||||
CP/M V2.2
|
||||
Aplication Note 15, 12/22/82
|
||||
Debugging a CP/M V2.2 BIOS
|
||||
|
||||
Copyright 1982, 1983 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT, MAC, and SID are trademarks of Digital Research.
|
||||
Compiled February 1983
|
||||
|
||||
|
||||
You can easily customize the CP/M V2.2 operating system for a
|
||||
particular machine if you use the following steps when it is
|
||||
necessary to debug a BIOS. You must have a system running under
|
||||
CP/M with a minimum of 48K to implement this scheme. CP/M V1.4 is
|
||||
all right, and the system need work only well enough to load DDT or
|
||||
SID . (SID is preferable and should be used if available.)
|
||||
|
||||
1) Carefully do a thorough code walk-through. This should take
|
||||
about eight hours. Pay particular attention to the Disk
|
||||
Parameter Blocks and Disk Parameter Headers, especially if
|
||||
you hand-coded these items to assemble your BIOS instead of
|
||||
using the DISKDEF.LIB and MAC . A slight miscalculation
|
||||
in a DPB or DPH can cause a BIOS to perform most functions
|
||||
correctly but fails under obscure circumstances; or, BIOS
|
||||
performs one function properly and fails to perform all
|
||||
others.
|
||||
|
||||
2) Using your old CP/M system, create your new system and
|
||||
configure it to 20K. Ensure that the old system does not
|
||||
use location 38H, which is DDT's Restart7 location.
|
||||
|
||||
3) Load the new 20K system underneath DDT in the old 48K
|
||||
system's TPA with the command DDT CPM20.COM. Figure 1-1
|
||||
illustrates this scheme.
|
||||
|
||||
|
||||
48K BIOS
|
||||
48K BDOS
|
||||
DDT or SID
|
||||
4A00 20K BIOS
|
||||
3C06 20K BDOS
|
||||
3400 20K CCP
|
||||
980
|
||||
900 BOOT
|
||||
SYSGEN or MOVCPM
|
||||
100 BASE PAGE
|
||||
|
||||
|
||||
Figure 1-1. Loading Your New System
|
||||
|
||||
|
||||
4) At location 980 (A00h in some systems), you should find the
|
||||
base of the CCP, recognized by two jumps followed by the
|
||||
copyright message. Move the 20K system into its correct
|
||||
memory location using the DDT M (move) command. If DDT
|
||||
<EFBFBD> lists a next address of 2300, then this command is
|
||||
M980,2300,3400.
|
||||
|
||||
5) In the 20K BIOS jump vector at 4A00h, insert breakpoints
|
||||
with Restart7s, or, if you are using SID, insert
|
||||
passpoints. This should be restricted to the disk entry
|
||||
points unless you have a problem with console I/O. If the
|
||||
problem occurs only under certain conditions, place a RST7
|
||||
initially only at the write entry point. When the
|
||||
conditions under which the problem occurs have been
|
||||
established, use a SAVE 1 xxx to return to the debugger you
|
||||
are using and to set additional breakpoints.
|
||||
|
||||
6) Run the 20K CP/M under the 48K CP/M's DDT. Issue the DDT
|
||||
command G4A00, which executes the new BIOS cold boot entry
|
||||
point. The cold boot initializes the base page for the 20K
|
||||
system and jumps to the CCP, which performs a BDOS Function
|
||||
13 disk reset. The disk reset reads the directory sectors
|
||||
until it encounters a sector containing 0E5h in every byte.
|
||||
|
||||
7) If the problem you experienced fails to reappear when you
|
||||
begin single-cycling, it might have been a timing problem.
|
||||
If not timing then it is a logic or coding error, and you
|
||||
must continue to single-cycle the machine, examining the
|
||||
contents of registers and memory locations as you go. Pay
|
||||
particular attention to the following parameters: Track,
|
||||
Sector, Dmaad, Diskno, and the contents of Dirbuf. If you
|
||||
are using blocking/deblocking, also observe the contents of
|
||||
Sekdsk, Hstdsk, Sektrk, Hsttrk, Rsflag, Erflag, and the
|
||||
contents of the host buffer(s).
|
||||
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M software.
|
||||
19
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.DIR
Normal file
19
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22APN.DIR
Normal file
@@ -0,0 +1,19 @@
|
||||
CP/M V2.2 Application Notes from Digital Research
|
||||
|
||||
Application Note 01, 02/20/82 The CCP Auto-Load Feature
|
||||
Application Note 02, 02/20/82 Reversing the BACKSPACE and RUBOUT Key Functions
|
||||
and Making RUBOUT Identical to BACKSPACE
|
||||
Application Note 03, 06/25/81 Sample BIOS for a Serial Printer Device
|
||||
Application Note 04, 02/20/82 BIOS Error Return Code Options
|
||||
Application Note 05, 02/20/82 Improving the CTRL-S Function
|
||||
Application Note 06, 02/20/82 Changing the Lines Per Page (ED.COM)
|
||||
Application Note 07, 02/20/82 Changing the Restart Number in DDT
|
||||
Application Note 08, 02/20/82 Nested SUBMIT Files
|
||||
Application Note 09, 02/02/82 Configuring CP/M for Page Boundaries
|
||||
Application Note 10, 03/12/82 BDOS, Booting CP/M on Drives Other Than Drive A
|
||||
Application Note 11, 09/30/82 Chaining Programs
|
||||
Application Note 12, 11/01/82 Interpreting CTRL-Z in SUBMIT Files
|
||||
Application Note 13, 01/21/82 Exiting PIP When Using SUBMIT and XSUB
|
||||
Application Note 14, 08/11/82 Turning CTRL-P On and Off from within
|
||||
a CP/M V2.2 SUBMIT File
|
||||
Application Note 15, 12/22/82 Debugging a CP/M V2.2 BIOS
|
||||
60
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.01
Normal file
60
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.01
Normal file
@@ -0,0 +1,60 @@
|
||||
CP/M V2.2
|
||||
Patch 01, MOVCPM, 1/21/82
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
Program: MOVCPM
|
||||
Products and Serial Numbers Affected: CP/M V2.2
|
||||
|
||||
Error Description:
|
||||
|
||||
The following modification affects only CP/M systems that use
|
||||
the optional blocking and deblocking algorithms listed in the CP/M
|
||||
Operating System Manual. When you update a file under systems
|
||||
using the algorithms with no data added to the file, the last block
|
||||
of updated records is not written to that file. Contact Digital
|
||||
Reserach or your CP/M distributor if you are not certain that this
|
||||
patch applies to your system.
|
||||
|
||||
Patch Procedure:
|
||||
|
||||
Make a back-up copy of MOVCPM.COM before you use DDT to make
|
||||
the following changes. Use the Assemble command (A) and the Set
|
||||
command (S). After you make the changes, return to the Console
|
||||
Command Processor using the G0 command and save the modified memory
|
||||
image on disk. Update the memory image on tracks 0 and 1 by
|
||||
executing the new MOVCPM program as described in the CP/M Operating
|
||||
System Manual and by integrating your customized I/O system.
|
||||
|
||||
|
||||
A>ddt movcpm.com
|
||||
DDT VERS 2.0
|
||||
NEXT PC
|
||||
2700 0100
|
||||
-alcd2
|
||||
1CD2 nop Old instructions were
|
||||
1CD3 nop DCR C
|
||||
1CD4 lxi h,0 DCR C
|
||||
1CD7 . JNZ 12DF
|
||||
|
||||
|
||||
-G0
|
||||
Number of pages to save
|
||||
is determined from value
|
||||
displayed under NEXT.
|
||||
A>save 38 movcpm.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Install this patch on all CP/M systems that use the
|
||||
blocking/deblocking algorithms listed in the CP/M Operating System
|
||||
Manual.
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M V2.2 software.
|
||||
54
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.02
Normal file
54
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.02
Normal file
@@ -0,0 +1,54 @@
|
||||
CP/M V2.2
|
||||
Patch 02, ASM, 1/21/82
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
Program: ASM
|
||||
Products and Serial Numbers Affected: CP/M V1.4 and V2.2
|
||||
|
||||
Error Description:
|
||||
|
||||
ASM occasionally generates an erroneous phase error when the
|
||||
identifier in a SET statement appears within an expression from
|
||||
another statement. For example,
|
||||
|
||||
X SET 1
|
||||
Y EQU X
|
||||
END
|
||||
|
||||
|
||||
Patch Procedure:
|
||||
|
||||
Make a back-up copy of ASM.COM before you use DDT to make the
|
||||
following changes.
|
||||
|
||||
A>ddt asm.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
2100 0100
|
||||
-l1dad
|
||||
1DAD CALL 1352
|
||||
1DB0 CPI 05
|
||||
1DB2 CNZ 20DD
|
||||
-a1dad
|
||||
1DAD call 1b8d
|
||||
1DB0 .
|
||||
-l1b8d
|
||||
1B8D NOP
|
||||
1B8E NOP
|
||||
1B8F NOP
|
||||
-a1b8d
|
||||
1B8D call 1352
|
||||
1B90 ora a
|
||||
1B91 jz 1db5
|
||||
1B94 ret
|
||||
1B95 .
|
||||
-^C
|
||||
A>save 32 asm.com
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M V2.2 software.
|
||||
45
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.03
Normal file
45
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.03
Normal file
@@ -0,0 +1,45 @@
|
||||
CP/M V2.2
|
||||
Patch 03, SUBMIT, 1/21/82
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
Program: SUBMIT.COM
|
||||
Products and Serial Numbers Affected: CP/M V2.2
|
||||
|
||||
Error Description:
|
||||
|
||||
If drive A is not the default drive when you run the SUBMIT
|
||||
program, the $$$.sub file is created on the currently logged-in
|
||||
disk. Therefore, you cannot run a SUBMIT job from any drive other
|
||||
than A. After you make the following changes, the system always
|
||||
creates the $$$.sub file on drive A.
|
||||
|
||||
|
||||
Patch Procedure:
|
||||
|
||||
Make a back-up copy of SUBMIT.COM before you use DDT to make
|
||||
the following changes.
|
||||
|
||||
|
||||
A>ddt submit.com
|
||||
DDT V2.2
|
||||
NEXT PC
|
||||
0600 0100
|
||||
-d5bb
|
||||
05BB 00 24 24 24 20 .$$$
|
||||
05C0 20 20 20 20 53 55 42 00 00 00 1A 1A 1A 1A 1A 1A SUB...
|
||||
05D0 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ........
|
||||
|
||||
-
|
||||
-s5bb
|
||||
05BB 00 1
|
||||
05BC 24 .
|
||||
-g0
|
||||
A>save 5 submit.com
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M V2.2 software.
|
||||
52
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.04
Normal file
52
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.04
Normal file
@@ -0,0 +1,52 @@
|
||||
CP/M V2.2
|
||||
Patch 04, PIP, 1/21/82
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
Program: PIP.COM
|
||||
Products and Serial Numbers Affected: CP/M V2.2
|
||||
|
||||
Error Description:
|
||||
|
||||
A problem occurs with the PIP Start and Quit options when the
|
||||
Start and Quit strings are the same length.
|
||||
|
||||
Patch Procedure:
|
||||
|
||||
Make a back-up copy of PIP.COM before you use DDT to make the
|
||||
following changes.
|
||||
|
||||
|
||||
A>ddt pip.com
|
||||
DDT V2.2
|
||||
NEXT PC
|
||||
1E000100
|
||||
-l1168
|
||||
1168 LDA 1F62
|
||||
116B STA 1DF7
|
||||
116E LXI H,1F62
|
||||
1171 MVI M,00
|
||||
1173 LDA 1DF9
|
||||
1176 INR A
|
||||
1177 STA 1DF8
|
||||
-a1168
|
||||
1168 lxi h,1f62
|
||||
116B mov a,m
|
||||
116C sta 1df7
|
||||
116F mvi m,0
|
||||
1171 lxi h,1df9
|
||||
1174 mov a,m
|
||||
1175 mvi m,0
|
||||
1177 inr a
|
||||
1178 dcx h
|
||||
1179 mov m,a
|
||||
117A .
|
||||
-g0
|
||||
A>save 29 pip.com
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M V2.2 software.
|
||||
53
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.05
Normal file
53
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.05
Normal file
@@ -0,0 +1,53 @@
|
||||
CP/M V2.2
|
||||
Patch 05, PIP, 1/21/82
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
Program: PIP.COM
|
||||
Products and Serial Numbers Affected: CP/M V2.2
|
||||
|
||||
Error Description:
|
||||
|
||||
A problem occurs with the PIP object file transfer options when
|
||||
copying file to file.
|
||||
|
||||
Patch Procedure:
|
||||
|
||||
Make a back-up copy of PIP.COM before you use DDT to make the
|
||||
following changes.
|
||||
|
||||
A>ddt pip.com
|
||||
DDT V2.2
|
||||
NEXT PC
|
||||
1E00 0100
|
||||
-l0713
|
||||
0713 LDA 1F5E
|
||||
0716 LXI H,1E04
|
||||
0719 ORA M
|
||||
-a0713
|
||||
0713 lda 1e04
|
||||
0716 lxi h,1f5e
|
||||
0719 .
|
||||
-l1099
|
||||
1099 LDA 1E04
|
||||
109C RAR
|
||||
109D JNC 10B2
|
||||
-a1099
|
||||
1099 lda 1f5e
|
||||
109C .
|
||||
-l1640
|
||||
1640 LDA 1E04
|
||||
1643 RAR
|
||||
1644 JNC 1652
|
||||
-a1640
|
||||
1640 lda 1f5e
|
||||
1643 .
|
||||
-g0
|
||||
A>save 29 pip.com
|
||||
|
||||
Licensed users are granted the right to include these changes
|
||||
in CP/M V2.2 software.
|
||||
46
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.06
Normal file
46
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.06
Normal file
@@ -0,0 +1,46 @@
|
||||
CP/M V2.2
|
||||
Patch 06, PIP, 01/21/82
|
||||
|
||||
Copyright 1982 by Digital Research
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
DDT is a trademark of Digital Research.
|
||||
Compiled November 1982
|
||||
|
||||
|
||||
Program: PIP.COM
|
||||
Products and Serial Numbers Affected: CP/M V2.2
|
||||
|
||||
Error Description:
|
||||
|
||||
When you use PIP to copy to the PRN logical device, the LPT
|
||||
physical device is automatically selected. This patch disables the
|
||||
selection of the LPT device and allows the PRN logical device to be
|
||||
used without affecting the current IOBYTE setting.
|
||||
|
||||
Patch Procedure:
|
||||
|
||||
Make a back-up copy of PIP.COM before you make any changes.The
|
||||
program DDT is required to make the changes. The changes are made
|
||||
by the following sequence of commands:
|
||||
|
||||
|
||||
0A>ddt pip.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
1E00 0100
|
||||
-lc66
|
||||
0C66 LXI H,0003
|
||||
0C69 MVI M,80
|
||||
0C6B JMP 0C71
|
||||
. . .
|
||||
-ac69
|
||||
0C69 nop
|
||||
0C6A nop
|
||||
0C6B .
|
||||
-g0
|
||||
|
||||
A>save 29 pip.com
|
||||
|
||||
|
||||
Licensed users are granted the right to include these changes in
|
||||
CP/M V2.2 software.
|
||||
49
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.09
Normal file
49
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.09
Normal file
@@ -0,0 +1,49 @@
|
||||
CP/M V2.2, Patch 09, DEBLOCK.ASM, 2/11/82
|
||||
|
||||
Copyright 1982 by Digital Research, Inc., Pacific Grove, CA 93950
|
||||
|
||||
|
||||
Program: DEBLOCK.ASM
|
||||
|
||||
Error Description:
|
||||
|
||||
The following modification affects only CP/M systems that use
|
||||
the optional blocking and deblocking algorithms listed in Appendix G
|
||||
of the CP/M Alteration Guide. The sector blocking and deblocking
|
||||
algorithms provided in the guide work improperly in certain
|
||||
circumstances.
|
||||
|
||||
Patch Procedure:
|
||||
|
||||
Use the CP/M text editor to insert the following changes:
|
||||
|
||||
|
||||
Following the comment on line 111 of Appendix G:
|
||||
|
||||
"read the selected CP/M sector"
|
||||
|
||||
Insert the following two lines:
|
||||
|
||||
xra a ;accum = 0
|
||||
sta unacnt ;unacnt = 0
|
||||
|
||||
The next source lines remain as shown:
|
||||
|
||||
mvi a,1
|
||||
sta readop ;read operation
|
||||
|
||||
Insert the following code in your BIOS Home routine:
|
||||
|
||||
home:
|
||||
lda hstwrt ;check for pending write
|
||||
ora a
|
||||
jnz homed
|
||||
sta hstact ;clear host active flag
|
||||
homed:
|
||||
|
||||
Continue with the rest of the home routine.
|
||||
|
||||
|
||||
|
||||
Licensed users are granted the right to include these changes in
|
||||
CP/M software. CP/M is a registered trademark of Digital Research.
|
||||
10
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.DIR
Normal file
10
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM22PAT.DIR
Normal file
@@ -0,0 +1,10 @@
|
||||
CP/M V2.2 Patches from Digital Research
|
||||
|
||||
Patch 01, MOVCPM, last block update patch 01/21/82
|
||||
Patch 02, ASM, erroneous SET phase error 01/21/82
|
||||
Patch 03, SUBMIT, a:$$$.sub file patch 01/21/82
|
||||
Patch 04, PIP, Start/Quit strings length patch 01/21/82
|
||||
Patch 05, PIP, object file transfer patch 01/21/82
|
||||
Patch 06, PIP, PRN/LPT select patch 01/21/82
|
||||
|
||||
Patch 09, DEBLOCK.ASM, blocking/deblocking patch 02/11/82
|
||||
25
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM80PAT.DIR
Normal file
25
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/CPM80PAT.DIR
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
CPM80 Patch Sources
|
||||
|
||||
|
||||
LINK.MOD .... ??? El Paso TX 10-29-83
|
||||
|
||||
MAC.FIX .... IRVIN M. HOFF 22 OCT 82
|
||||
|
||||
MANUAL80.ADD .... from Microsystems, May 1983, p.70
|
||||
|
||||
PIP-XSUB.PAT .... from ZDS BBS
|
||||
|
||||
RMAC.MOD .... LDIR author El Paso, TX, 10/18/83
|
||||
|
||||
RMACPAT.ASM .... by George Blat Blat, Research + Development Corp.
|
||||
|
||||
SUBMIT.001 .... from ZDS BBS
|
||||
|
||||
SUBMIT.002 .... from ZDS BBS
|
||||
|
||||
XMAC.ASM .... originally supplied with MAC manual
|
||||
|
||||
ZSID.BUG .... from DDJ, Oct. 1982, p. 7
|
||||
|
||||
ZSID14.PAT .... from DDJ, Dec. 1981, p. 4
|
||||
15
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/DEXSUB.ASM
Normal file
15
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/DEXSUB.ASM
Normal file
@@ -0,0 +1,15 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; This program is intended to be executed from a submit file to de-activate ;
|
||||
; xsub and allow input from the console. It has a side effect of turning off;
|
||||
; the ^P toggle if it is on. ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
org 100h ;stay above page 0
|
||||
bdos equ 0005h ;bdos location in base page
|
||||
mvi c,9 ;print string = function 9
|
||||
lxi d,msg ;
|
||||
call bdos ;
|
||||
mvi c,0 ;system reset = function 0
|
||||
jmp bdos ;exit bdos to ccp
|
||||
msg db 0dh,0ah,'(xsub deactivated; ^P turned off if on)$'
|
||||
end
|
||||
|
||||
12
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/DRI#UTIL.DOC
Normal file
12
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/DRI#UTIL.DOC
Normal file
@@ -0,0 +1,12 @@
|
||||
The two short utility programs in this library were sent to me
|
||||
by Digital Research, Inc. I have obtained their permission to
|
||||
place them on the rcpm networks since DRI has released them to
|
||||
the public domain. They are very useful to me, and I hope
|
||||
that they will prove the same to you.
|
||||
|
||||
SEEP.ASM is a utility to toggle ^P inside submit files.
|
||||
DEXSUB.ASM cancels xsub in a submit file to allow console entry.
|
||||
Both programs are well documented with comments.
|
||||
|
||||
Mike Blackwell 09/16/82
|
||||
|
||||
15
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/LINK.MOD
Normal file
15
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/LINK.MOD
Normal file
@@ -0,0 +1,15 @@
|
||||
El Paso TX 10-29-83
|
||||
|
||||
How often have you inadvertently struck a key while Digital Research's
|
||||
LINK was linking a file? If you've ever done it (especially where you
|
||||
had to type a long command line or the linking took a while) you know
|
||||
how frustrating it is when LINK aborts. It is a mystery to me why DRI
|
||||
would allow LINK to abort on ANY keyboard entry. Fortunately, the
|
||||
changes to prevent that are trivial. Simply use your favorite debugger,
|
||||
load LINK.COM and change location 368B from 0E to AF and 368C from 0B to C9.
|
||||
This causes the console status routine to always return "console not ready."
|
||||
|
||||
NOTE: platch is valid for LINK ver 1.31 only. The code to be changed is
|
||||
from 0E 0B C3 05 00 (MVI C,0B ! JMP BDOS)
|
||||
to AF C9 .. .. .. (XRA A ! RET)
|
||||
and can be found using DDTF or DU.
|
||||
68
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/MAC.FIX
Normal file
68
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/MAC.FIX
Normal file
@@ -0,0 +1,68 @@
|
||||
TOPIC : HOW TO MODIFY MAC.COM TO NOT CHANGE LOWER-CASE TO UPPER-CASE
|
||||
FROM : IRVIN M. HOFF
|
||||
DATE : 22 OCT 82
|
||||
|
||||
MAC.COM (by Digital Research) is one of the most popular assemblers
|
||||
used with CP/M. It has one feature that most people do not like -- when
|
||||
making a print file (FILENAME.PRN) it automatically converts any lower-
|
||||
case characters to upper-case.
|
||||
|
||||
Neither ASM.COM nor RMAC.COM by the same firm does that.
|
||||
|
||||
There are two ways to modify MAC.COM to approach this problem.
|
||||
Changing address 165C from C8 to D0 will convert any lower-case source
|
||||
code to upper, leaving DB strings and comments alone. (1st example
|
||||
below). Changing 1663 from E6 to 5F will leave all the lower case
|
||||
comments alone, will convert all DB strings to upper case, but will
|
||||
toss out any lower case code that does not agree with labels that
|
||||
are also lower case. (second example.)
|
||||
1st example: leaves all comments and DB strings alone
|
||||
===================================================
|
||||
|
||||
1655 47 MOV B,A
|
||||
1656 3A 05 30 LDA 3005
|
||||
1659 FE 03 CPI 03
|
||||
165B 78 MOV A,B
|
||||
165C C8 RZ
|
||||
|
||||
Change the RZ (C8) to a RNC (D0)
|
||||
|
||||
Using DDT or SID:
|
||||
|
||||
165C C8 D0
|
||||
|
||||
A>SAVE 46 MAC.COM
|
||||
|
||||
This will convert any source code not in a string from lower to
|
||||
upper, and not bother any comment areas or DB strings. It's as close
|
||||
as you can get easily, to leaving all lower case alone.
|
||||
|
||||
2nd example: leaves all comments alone, but throws out lower case
|
||||
source code including strings that do not match.
|
||||
===================================================
|
||||
1663 E6 5F (ANI 5FH)
|
||||
|
||||
Using DDT or SID, change to:
|
||||
|
||||
1663 E6 7F (ANI 7FH)
|
||||
|
||||
A>SAVE 46 MAC.COM (new, normal version)
|
||||
|
||||
|
||||
This prevents the lower-case from being changed to upper-case.
|
||||
For a complete disassembly of that area:
|
||||
|
||||
|
||||
1655 47 MOV B,A ;Put the char. into 'B' temporarily
|
||||
1656 3A 05 30 LDA ABORT ;See any request to quit
|
||||
1659 FE 03 CPI 03
|
||||
165B 78 MOV A,B ;Get the char. back again
|
||||
165C C8 RZ ;Exit with the char. if a 03
|
||||
165D FE 61 CPI 61H ;Less than lower-case alpha char.?
|
||||
165F D8 RC ;If less, ignore
|
||||
1660 FE 7B CPI 7AH+1 ;More than lower-case alpha char.?
|
||||
1662 D0 RNC ;If more, ignore
|
||||
1663 E6 5F ANI 5FH ;Otherwise change to upper-case
|
||||
1665 C9 RET ;Finished
|
||||
|
||||
--end--
|
||||
21
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/MANUAL80.ADD
Normal file
21
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/MANUAL80.ADD
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
UNDOCUMENTED CP/M FUNCTIONS cont.
|
||||
|
||||
From Microsystems, May 1983, p.70
|
||||
|
||||
CP/M issues a dummy call to the BIOS 'HOME' routine prior to a
|
||||
directory read.
|
||||
|
||||
|
||||
Early versions of the 'CP/M 2.2 Alteration Guide' did not include
|
||||
the following sentence in the description of the SELDSK function of
|
||||
the BIOS:
|
||||
|
||||
The least significant bit of register E is zero if
|
||||
this is the first occurrence of the drive select
|
||||
since the last cold or warm start.
|
||||
|
||||
This information can provide a clue to the BIOS that it may need to
|
||||
log-in a disk that has been changed.
|
||||
|
||||
|
||||
28
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/PIP-XSUB.PAT
Normal file
28
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/PIP-XSUB.PAT
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
Conflict with XSUB and MBASIC or PIP
|
||||
-----
|
||||
|
||||
Question: Why do I have problems using XSUB with some programs, in
|
||||
particular MBASIC and PIP?
|
||||
|
||||
Answer: Any program, like MBASIC, that uses single character input
|
||||
or direct console i/o cannot work with XSUB which only supplies console
|
||||
buffer input.
|
||||
|
||||
PIP commands can be given by XSUB but CON: input cannot. Another
|
||||
problem with PIP is that you cannot exit with just a RETURN since SUBMIT
|
||||
does not allow blank lines. The following patch will allow PIP to be exited
|
||||
with either a RETURN or any single character (usually a period) followed by
|
||||
a RETURN.
|
||||
|
||||
A>ddt pip.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
1E00 0100
|
||||
-a54f
|
||||
054f cpi 2
|
||||
0551 jnc 55e
|
||||
0554
|
||||
-g0
|
||||
A>save 29 pip.com
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Here is a large collection of patches, and application notes, for CP/M 2.2 and its utilities.
|
||||
32
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/RMAC.MOD
Normal file
32
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/RMAC.MOD
Normal file
@@ -0,0 +1,32 @@
|
||||
El Paso, TX, 10/18/83
|
||||
|
||||
When I wrote LDIR a few hours ago, I realized that RMAC was unable to
|
||||
handle the job, since it would wipe out DOLLAR-SIGNS in labels. Some
|
||||
SYSLIB routines, however, use them in external references...
|
||||
|
||||
EXTRN F$OPEN in RMAC is synonymous to
|
||||
EXTRN FOPEN
|
||||
|
||||
and LINK would complain about the missing symbol FOPEN!
|
||||
|
||||
Now, there just HADT TO BE a better way than M80, and after a lot of
|
||||
DU'ing and DDT'ing, I found it! In RMAC ver 1.1 you find the following
|
||||
code starting at address 1D76:
|
||||
|
||||
L1D76: CPI '$'
|
||||
RNZ
|
||||
XRA A
|
||||
MOV M,A
|
||||
RET
|
||||
|
||||
Now, to be able to use RMAC instead of M80 for *ALL* your SYSLIB work,
|
||||
make a NOP out of the MOV M,A instruction! Remember, the address is only
|
||||
good for my version of RMAC, as supplied with an early version of CP/M plus.
|
||||
Your RMAC may be a bit different, but the code should be in the general
|
||||
area.
|
||||
|
||||
With the availability of CP/M plus, more people will probably use RMAC
|
||||
than M80, and this easy patch (which seems to have NO ILL EFFECTS) allows
|
||||
use of SYSLIB with RMAC.
|
||||
|
||||
My recommendation: reformat SYSLIB into an IRL file for faster searching.
|
||||
126
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/RMACPAT.ASM
Normal file
126
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/RMACPAT.ASM
Normal file
@@ -0,0 +1,126 @@
|
||||
;****************************************************************
|
||||
;
|
||||
; Patches for MAC and RMAC
|
||||
; ------------------------
|
||||
;
|
||||
; by George Blat
|
||||
; Blat, Research + Development Corp.
|
||||
; 8016 188th SW
|
||||
; Edmonds, WA 98020
|
||||
;
|
||||
;
|
||||
;****************************************************************
|
||||
;
|
||||
;
|
||||
;The following changes are (c)1983 Blat R+D Corp. Permission is
|
||||
;granted to use these patches only in non-commercial applications.
|
||||
;MAC and RMAC are trademarks of Digital Research, Inc. which holds
|
||||
;ownership and all rights to the original programs.
|
||||
;
|
||||
;****************************************************************
|
||||
;
|
||||
;
|
||||
;Mac and Rmac are two reliable assemblers developed by Digital
|
||||
;Research which have a good number of useful features. It seems
|
||||
;natural to get the most out of them.
|
||||
;
|
||||
;Among the features that can be added to Mac and Rmac, are the
|
||||
;ability to use the period '.' and the underscore '_' as part of
|
||||
;symbol names such as labels, even as first character of the
|
||||
;symbol. The underscore, for instance, makes a much better word
|
||||
;separator than the dollar '$' sign when used in a multi-word
|
||||
;label. In a dense program listing, it's certainly easier to find
|
||||
;STAT_PORT than STAT$PORT, and @hl_to_de than @hl$to$de.
|
||||
;
|
||||
;By the same token, I don't agree with the decision of Digital
|
||||
;Research of making the dollar sign a don't care character. It
|
||||
;introduces confusion as it allows symbols that don't look the
|
||||
;same to be equivalent.
|
||||
;
|
||||
;In addition, RMAC can be easily patched to create .REL files
|
||||
;where the global (external) names have up to 7 active characters.
|
||||
;This helps by allowing you to create more meaningful symbol names
|
||||
;and therefore improve program legibility. This change is still
|
||||
;entirely compatible with the industry standard Microsoft format.
|
||||
;
|
||||
;The following patches should be assembled with MAC (not RMAC)
|
||||
;and the resulting hex file should be applied over the original
|
||||
;programs with DDT, SID or ZSID. KEEP AN ARCHIVE COPY OF THE
|
||||
;ORIGINAL MAC OR RMAC BEFORE PATCHING.
|
||||
|
||||
|
||||
FALSE EQU 0
|
||||
TRUE EQU NOT FALSE
|
||||
|
||||
RMAC EQU TRUE ;select one and only one of these
|
||||
MAC EQU FALSE ;true
|
||||
|
||||
IF RMAC
|
||||
GLOBAL7 EQU TRUE ;set to false if you don't want
|
||||
;7 char globals
|
||||
PATCHAREA EQU 13BH
|
||||
DOLLARCOUNTS EQU 1D7AH ;set this to false if you like to
|
||||
;keep the dollar as a don't care char
|
||||
CHECKALFA EQU 1D9CH
|
||||
TOUP EQU 2844H
|
||||
ENDIF
|
||||
|
||||
IF MAC
|
||||
COPYRITE EQU 103H ;shorten but keep the copyright notice
|
||||
DOLLARCOUNTS EQU 1834H
|
||||
CHECKALFA EQU 1853H
|
||||
ENDIF
|
||||
|
||||
IF MAC
|
||||
|
||||
ORG COPYRITE
|
||||
DB '(c)1977 DRI'
|
||||
PATCHAREA:
|
||||
ENDIF
|
||||
|
||||
IF RMAC
|
||||
ORG PATCHAREA
|
||||
ENDIF
|
||||
|
||||
CPI '.'
|
||||
RZ
|
||||
CPI '_'
|
||||
RZ
|
||||
CPI '?'
|
||||
RZ
|
||||
CPI '@'
|
||||
RZ
|
||||
IF RMAC
|
||||
CALL TOUP
|
||||
ENDIF
|
||||
SUI 'A'
|
||||
CPI 'Z'-'A'+1
|
||||
CMC
|
||||
RET
|
||||
|
||||
IF RMAC AND GLOBAL7
|
||||
|
||||
COMPARE EQU 12D6H
|
||||
SETIT7 EQU 12DBH
|
||||
|
||||
ORG COMPARE
|
||||
CPI 8 ;replaces cpi 7
|
||||
ORG SETIT7
|
||||
MVI A,7 ;replaces mvi a,6
|
||||
|
||||
ENDIF
|
||||
|
||||
IF DOLLARCOUNTS
|
||||
ORG DOLLARCOUNTS
|
||||
NOP ;replaces mov m,a
|
||||
ENDIF
|
||||
|
||||
ORG CHECKALFA
|
||||
CALL PATCHAREA ;replaces cpi 3f
|
||||
CMC ;jz 1db1
|
||||
SBB A ;cpi 40
|
||||
RET ;jz 1db1, etc.
|
||||
|
||||
|
||||
END
|
||||
|
||||
64
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/SEEP.ASM
Normal file
64
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/SEEP.ASM
Normal file
@@ -0,0 +1,64 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; This program is intended to be used from within a submit file to turn the ;
|
||||
;^P toggle on and off, although it may also be invoked from the console. If ;
|
||||
; the ^P toggle is off, this program turns it on; if on, it turns it off. In ;
|
||||
; either event, it issues an appropriate message to the console which is also;
|
||||
; echoed on the list device.
|
||||
;
|
||||
; The program calculates the location of the ^P toggle in the BDOS by getting;
|
||||
; the BDOS address from the jump instruction located at 0005h in page zero ;
|
||||
; and adding 307h to that address. It then does an exclusive or of the toggle;
|
||||
;byte to turn on or off ^P.
|
||||
|
||||
; NOTE: If xsub is to be active in the submit file, ^P must be turned on ;
|
||||
; BEFORE executing xsub. To turn off ^P in a submit file in which xsub is ;
|
||||
; active, execute a program that deactivates xsub, such as the DEXSUB program;
|
||||
; which is listed following this program. ;
|
||||
; Doug Huskey & Dave Brown II ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
org 0100h ;stay above base page
|
||||
bdos equ 5h ;BDOS jump instruction
|
||||
bdosa equ bdos+1 ;BDOS entry address
|
||||
pstr equ 9 ;print string function
|
||||
testoff equ 2feh ;offest for verification
|
||||
listcp equ 0dh ;^P offset in page
|
||||
mvic equ 3eh ;MVI C,x instruction
|
||||
cr equ 0dh ;carriage return
|
||||
lf equ 0ah ;line feed
|
||||
|
||||
lhld bdosa ;pick up address of BDOS
|
||||
lxi d,testoff ;offset of ^P page
|
||||
dad d ;HL = compare area in BDOS
|
||||
lxi d,string ;DE = compare string
|
||||
compare:
|
||||
ldax d ;is character a 0?
|
||||
ora a ;
|
||||
jz ok ;yes, we're done
|
||||
cmp m ;is BDOS same as string?
|
||||
inx h ;next byte
|
||||
inx d ;
|
||||
jz compare ;compare next byte if not finished
|
||||
;else loop for next byte
|
||||
error: mvi c,pstr ;print error message
|
||||
lxi d,errormsg ;
|
||||
jmp bdos ;return to CCP from BDOS
|
||||
ok: mvi l,listcp ;listcp page offset
|
||||
mvi a,1 ;toggle ^P byte on or off
|
||||
sub m ;true = 1, false = 0
|
||||
mov m,a ;put results back in memory
|
||||
cpi 0h ;see if on or off
|
||||
jz othermsg ;to issue appropriate message
|
||||
lxi d,onmsg ;^P turned on
|
||||
jmp print ;go around
|
||||
othermsg:
|
||||
lxi d,offmsg ;^P turned off
|
||||
print: mvi c,pstr ;print sign-on message
|
||||
jmp bdos
|
||||
|
||||
onmsg: db cr,lf,'(^P turned on)$'
|
||||
offmsg: db cr,lf,'(^P turned off)$'
|
||||
errormsg:
|
||||
db cr,lf,'Unable to find BDOS$'
|
||||
string: db ret,mvic,1,jmp,0
|
||||
end
|
||||
|
||||
50
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/SUBMIT.001
Normal file
50
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/SUBMIT.001
Normal file
@@ -0,0 +1,50 @@
|
||||
Using control characters in a SUBMIT file
|
||||
-----
|
||||
|
||||
Question: How do I enter control characters into a SUBMIT file?
|
||||
The instructions on page 28 of the CP/M manual do not seem to work.
|
||||
|
||||
Answer: SUBMIT requires you to enter '^z' to place a CTRL Z in the
|
||||
file. The problem comes in that SUBMIT also converts all characters to
|
||||
uppercase. The following patch suggested by Digital Research will modify
|
||||
SUBMIT to require '^Z'.
|
||||
|
||||
A>ddt submit.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
0600 0100
|
||||
-s442
|
||||
0442 61 41
|
||||
0443 32 .
|
||||
-g0
|
||||
A>save 5 submit.com
|
||||
|
||||
This alternate patch will allow lowercase characters to be entered
|
||||
which is also extremely helpful when using XSUB and ED with strings that
|
||||
require lowercase characters.
|
||||
|
||||
|
||||
A>ddt submit.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
0600 0100
|
||||
-s370
|
||||
0370 5F FF
|
||||
0371 32 .
|
||||
-g0
|
||||
A>save 5 submit.com
|
||||
|
||||
The following example submit file (using only the alternate patch)
|
||||
uses ED to search a file and replace all lowercase strings 'recieve' with
|
||||
'receive'.
|
||||
|
||||
xsub
|
||||
ed file.doc
|
||||
#a
|
||||
b#srecieve^zreceive
|
||||
e
|
||||
|
||||
It should be mentioned that in no case can the control characters
|
||||
'^P' or '^C' be used in a submit file to obtain the normal functions of
|
||||
console input for printer toggle or warm start.
|
||||
|
||||
46
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/SUBMIT.002
Normal file
46
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/SUBMIT.002
Normal file
@@ -0,0 +1,46 @@
|
||||
|
||||
CTRL P and CTRL C in a SUBMIT file
|
||||
-----
|
||||
|
||||
Question: Why can't I put "CTRL P" and "CTRL C" in a SUBMIT file
|
||||
using the instructions in the manual?
|
||||
|
||||
Answer: The usual processing of characters done by the BDOS on
|
||||
input is bypassed when using SUBMIT. The following programs can simulate
|
||||
these functions.
|
||||
|
||||
;
|
||||
; PRINT - turn printer echo on and off
|
||||
;
|
||||
; Usage:
|
||||
;
|
||||
; A>PRINT ?
|
||||
;(turn printer echo on with anything following PRINT)
|
||||
; A>PRINT
|
||||
;(turn printer echo off with nothing following PRINT)
|
||||
;
|
||||
0100 org 0100h
|
||||
0100 2A4E00 lhld 04eh ;address of bios
|
||||
0103 110DF5 lxi d,0f50dh ;offset of flag in bdos
|
||||
0106 19 dad d ;point to it
|
||||
0107 3A8000 lda 080h ;echo on or off?
|
||||
010A 77 mov m,a ;set the flag
|
||||
010B C9 ret ;return directly to ccp
|
||||
|
||||
; WBOOT - perform a warm boot
|
||||
;
|
||||
0100 org 0100h
|
||||
0100 C7 rst 0
|
||||
|
||||
;
|
||||
;PAUSE - suspend execution of a SUBMIT file until a character is typed
|
||||
;
|
||||
0100 org 0100h
|
||||
0100 0E09 mvi c,9
|
||||
0102 110D01 lxi d,prompt
|
||||
0105 CD0500 call 5
|
||||
0108 0E01 mvi c,1
|
||||
010A C30500 jmp 5
|
||||
010D 5479706520prompt db 'Type any key when ready to continue$'
|
||||
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
Using control characters in a SUBMIT file
|
||||
-----
|
||||
|
||||
Question: How do I enter control characters into a SUBMIT file?
|
||||
The instructions on page 28 of the CP/M manual do not seem to work.
|
||||
|
||||
Answer: SUBMIT requires you to enter '^z' to place a CTRL Z in the
|
||||
file. The problem comes in that SUBMIT also converts all characters to
|
||||
uppercase. The following patch suggested by Digital Research will modify
|
||||
SUBMIT to require '^Z'.
|
||||
|
||||
A>ddt submit.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
0600 0100
|
||||
-s442
|
||||
0442 61 41
|
||||
0443 32 .
|
||||
-g0
|
||||
A>save 5 submit.com
|
||||
|
||||
This alternate patch will allow lowercase characters to be entered
|
||||
which is also extremely helpful when using XSUB and ED with strings that
|
||||
require lowercase characters.
|
||||
|
||||
|
||||
A>ddt submit.com
|
||||
DDT VERS 2.2
|
||||
NEXT PC
|
||||
0600 0100
|
||||
-s370
|
||||
0370 5F FF
|
||||
0371 32 .
|
||||
-g0
|
||||
A>save 5 submit.com
|
||||
|
||||
The following example submit file (using only the alternate patch)
|
||||
uses ED to search a file and replace all lowercase strings 'recieve' with
|
||||
'receive'.
|
||||
|
||||
xsub
|
||||
ed file.doc
|
||||
#a
|
||||
b#srecieve^zreceive
|
||||
e
|
||||
|
||||
It should be mentioned that in no case can the control characters
|
||||
'^P' or '^C' be used in a submit file to obtain the normal functions of
|
||||
console input for printer toggle or warm start.
|
||||
|
||||
|
||||
CTRL P and CTRL C in a SUBMIT file
|
||||
-----
|
||||
|
||||
Question: Why can't I put "CTRL P" and "CTRL C" in a SUBMIT file
|
||||
using the instructions in the manual?
|
||||
|
||||
Answer: The usual processing of characters done by the BDOS on
|
||||
input is bypassed when using SUBMIT. The following programs can simulate
|
||||
these functions.
|
||||
|
||||
;
|
||||
; PRINT - turn printer echo on and off
|
||||
;
|
||||
; Usage:
|
||||
;
|
||||
; A>PRINT ?
|
||||
;(turn printer echo on with anything following PRINT)
|
||||
; A>PRINT
|
||||
;(turn printer echo off with nothing following PRINT)
|
||||
;
|
||||
0100 org 0100h
|
||||
0100 2A4E00 lhld 04eh ;address of bios
|
||||
0103 110DF5 lxi d,0f50dh ;offset of flag in bdos
|
||||
0106 19 dad d ;point to it
|
||||
0107 3A8000 lda 080h ;echo on or off?
|
||||
010A 77 mov m,a ;set the flag
|
||||
010B C9 ret ;return directly to ccp
|
||||
|
||||
; WBOOT - perform a warm boot
|
||||
;
|
||||
0100 org 0100h
|
||||
0100 C7 rst 0
|
||||
|
||||
;
|
||||
;PAUSE - suspend execution of a SUBMIT file until a character is typed
|
||||
;
|
||||
0100 org 0100h
|
||||
0100 0E09 mvi c,9
|
||||
0102 110D01 lxi d,prompt
|
||||
0105 CD0500 call 5
|
||||
0108 0E01 mvi c,1
|
||||
010A C30500 jmp 5
|
||||
010D 5479706520prompt db 'Type any key when ready to continue$'
|
||||
|
||||
|
||||
34
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/XMAC.ASM
Normal file
34
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/XMAC.ASM
Normal file
@@ -0,0 +1,34 @@
|
||||
;
|
||||
;XMAC --
|
||||
; MACRO ASSEMBLER "MAC" CHANGES TO DISABLE 8080 OPCODES FOR CROSS-ASSEMBLY
|
||||
; WORK
|
||||
; THIS PATCH WAS ORIGINALLY SUPPLIED WITH MY MAC MANUAL -- RLC
|
||||
; THIS IS TO BE PATCHED INTO MAC USING DDT. AFTER THE PATCH IS COMPLETE,
|
||||
; PERFORM A "SAVE 46 XMAC.COM" TO CREATE XMAC.COM.
|
||||
;
|
||||
|
||||
RT EQU 25 ; 8080 REGISTER NAME
|
||||
PT EQU 26 ; PSEUDO OPCODE TYPE
|
||||
TAREA EQU 2561H ; FREE AREA IN TOKEN MODULE
|
||||
|
||||
;
|
||||
ORG 2444H ; OVERLAY INXH - MOV B,M - RET
|
||||
JMP TAREA
|
||||
|
||||
;
|
||||
ORG TAREA
|
||||
|
||||
; TYPE IS IN THE ACCUMULATOR
|
||||
CPI RT ; BELOW RT IF ARITHMETIC OPERATOR
|
||||
JC TYPEOK
|
||||
CPI PT ; PSEUDO OP?
|
||||
RNZ ; RETURN WITH NON-ZERO FLAG
|
||||
|
||||
; OTHERWISE, PSEUDO-OP OR ARITHMETIC OP
|
||||
TYPEOK:
|
||||
INX H
|
||||
MOV B,M
|
||||
CMP A ; SET ZERO FLAG
|
||||
RET
|
||||
|
||||
END
|
||||
21
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/ZSID.BUG
Normal file
21
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/ZSID.BUG
Normal file
@@ -0,0 +1,21 @@
|
||||
ZSID BUGS
|
||||
|
||||
From DDJ, Oct. 1982, p. 7
|
||||
|
||||
ZSID doesn't interpret the LDIR instruction correctly when the
|
||||
operands (the two strings defined by the HL, DE and BC registers)
|
||||
overlap on each other. The LDIR (long move) instruction of the
|
||||
Z-80 copies a source string into a target string. When the target
|
||||
string overlaps on the source string (as when the source begins
|
||||
at 200h, the target at 201h and the length is 255 bytes) LDIR
|
||||
becomes a Replicate instruction, duplicating the leading byte
|
||||
of the source into the target over and over. ZSID doesn't handle
|
||||
it right, though; it stops after copying one byte.
|
||||
|
||||
Also, the disassembler in ZSID doesn't seem to handle the LD A,R
|
||||
and LD R,A instructions. Its List command won't display them and
|
||||
its Assemble command won't accept them.
|
||||
|
||||
The number -1 is not correctly interpreted. For example, LD HL,-1
|
||||
is interpreted as LD HL,00FF.
|
||||
|
||||
83
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/ZSID14.PAT
Normal file
83
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/PATCHES/ZSID14.PAT
Normal file
@@ -0,0 +1,83 @@
|
||||
A PATCH FOR ZSID
|
||||
|
||||
From DDJ, Dec. 1981, p. 4
|
||||
|
||||
There is a small hidden bug in ZSID version 1.4. It is easily
|
||||
demonstrated when trying the following: in the direct assembly
|
||||
mode, try to assemble three 16-bit loads with the values of (hex):
|
||||
|
||||
FF7F, FF80, FFFF
|
||||
|
||||
Afterwards list the product.
|
||||
|
||||
The false values are not only used in the assembler, but in the
|
||||
F(ill), M(ove) and D(ump) command as well. The cure is very simple:
|
||||
change the byte at 02AE (hex) in ZSID from "C2" to "C3".
|
||||
|
||||
SID version 1.4 does not have this "feature", so it may be that
|
||||
the routine starting at 02A1H is, at some place, necessary in the
|
||||
Z-80 specific parts, e.g. for error checking in relative jumps.
|
||||
|
||||
There are no apparent problems after this patch is installed but,
|
||||
even so, care should be taken if it is used.
|
||||
|
||||
The following demonstrates the bug and fix:
|
||||
|
||||
|
||||
A>ZSID
|
||||
ZSID VERS 1.4
|
||||
#A100
|
||||
0100 LD HL,0FF7F
|
||||
0103 LD HL,0FF80
|
||||
0106 LD HL,0FFFF
|
||||
0109 .
|
||||
#L100,108
|
||||
0100 LD HL,FF7F
|
||||
0103 LD HL,0080
|
||||
0106 LD HL,00FF
|
||||
0109
|
||||
#IZSID.COM
|
||||
#R
|
||||
NEXT PC END
|
||||
2900 0100 B9FF
|
||||
#L2A1,2BC
|
||||
02A1 PUSH DE
|
||||
02A2 CP 41
|
||||
02A4 JP NC,0BCF
|
||||
02A7 CALL 0EAA
|
||||
02AA LD B,D
|
||||
02AB LD A,B
|
||||
02AC CP FF
|
||||
02AE JP NZ,00B8
|
||||
02B1 LD A,E
|
||||
02B2 OR A
|
||||
02B3 JP P,00B8
|
||||
02B6 LD B,00
|
||||
02B8 LD A,E
|
||||
02B9 POP DE
|
||||
02BA DEC B
|
||||
02BB INC B
|
||||
02BC RET
|
||||
02BD
|
||||
#S2AE
|
||||
02AE C2 C3
|
||||
02AF B8 .
|
||||
#L2AE,2B0
|
||||
02AE JP 00B8
|
||||
02B1
|
||||
#G0
|
||||
|
||||
A>SAVE 40 ZSIDP.COM
|
||||
A>ZSIDP
|
||||
ZSID VERS 1.4
|
||||
#A100
|
||||
0100 LD HL,0FF7F
|
||||
0103 LD HL,0FF80
|
||||
0106 LD HL,0FFFF
|
||||
0109 .
|
||||
#L100,108
|
||||
0100 LD HL,FF7F
|
||||
0103 LD HL,FF80
|
||||
0106 LD HL,FFFF
|
||||
0109
|
||||
#G0
|
||||
Reference in New Issue
Block a user