mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,336 @@
|
||||
.bp odd
|
||||
.cs 5
|
||||
.he
|
||||
.mt 5
|
||||
.mb 6
|
||||
.pl 66
|
||||
.ll 65
|
||||
.po 10
|
||||
.hm 2
|
||||
.fm 2
|
||||
.ft All Information Presented Here is Proprietary to Digital Research
|
||||
.he
|
||||
.ce 2
|
||||
.tc 2 The CCP and Transient Programs
|
||||
.sh
|
||||
Section 2
|
||||
.sp
|
||||
.sh
|
||||
The CCP and Transient Programs
|
||||
.qs
|
||||
.sp 2
|
||||
.pp 5
|
||||
This section discusses the Console Command
|
||||
Processor (CCP), built-in and transient commands, loading and exiting
|
||||
transient programs, and CP/M-8000 memory models.
|
||||
.sp 2
|
||||
.he CP/M-8000 Programmer's Guide 2.1 Built-in and Transient Commands
|
||||
.tc 2.1 CCP Built-In and Transient Commands
|
||||
.sh
|
||||
2.1 CCP Built-in and Transient Commands
|
||||
.qs
|
||||
.pp
|
||||
After an initial cold start, CP/M-8000 displays a sign-on message
|
||||
at the console. Drive A, containing the system disk, is logged
|
||||
in automatically. The standard prompt (>), preceded by the letter
|
||||
A for the drive, is displayed on the console screen. This prompt
|
||||
informs the user that CP/M-8000 is ready to receive a command line
|
||||
from the console.
|
||||
.pp
|
||||
In response to the prompt, a user types the filename of a command
|
||||
file and a command tail, if required. CP/M-8000 supports two types
|
||||
of command files, built-in commands and transient commands.
|
||||
Built-in commands are configured and reside in memory with
|
||||
CP/M-8000. Transient commands are loaded in the TPA and do not
|
||||
reside in memory allocated to CP/M-8000. The list below contains
|
||||
the seven built-in commands that CP/M-8000 supports.
|
||||
.ix built-in commands
|
||||
.sp
|
||||
.in 8
|
||||
.nf
|
||||
DIR
|
||||
DIRS
|
||||
ERA
|
||||
REN
|
||||
TYPE
|
||||
USER
|
||||
SUBMIT
|
||||
.fi
|
||||
.in 0
|
||||
.ix transient command
|
||||
.pp
|
||||
A transient command is a machine-readable executable program file
|
||||
in memory. A transient command file is loaded from disk to memory.
|
||||
Section 3 describes the format of transient command files.
|
||||
.pp
|
||||
When the user enters a command line, the CCP parses it and tries to execute
|
||||
the file specified. The CCP assumes a file is a command file when it has
|
||||
any filetype other than .SUB. When the user specifies only the filename but
|
||||
not the filetype, the CCP searches for and tries to execute a file with a
|
||||
matching filename and a filetype of either 8000 or three blanks. The CCP
|
||||
searches the current user number and user number 0 for a matching file. If
|
||||
a command file is not found, but the CCP finds a matching file with a
|
||||
filetype of SUB, the CCP executes it as a submit file.
|
||||
.bp
|
||||
.he CP/M-8000 Programmer's Guide 2.2 Loading A Program In Memory
|
||||
.tc 2.2 Loading A Program In Memory
|
||||
.sh
|
||||
2.2 Loading A Program In Memory
|
||||
.qs
|
||||
.ix loading a program in memory
|
||||
.ix program segments
|
||||
.ix a user stack
|
||||
.ix base page
|
||||
.ix program, loading
|
||||
.pp
|
||||
Either the CCP or a transient program can load a program in
|
||||
memory with the BDOS Program Load Function (59) described in Section 4.5.
|
||||
After the program is loaded, the TPA contains, the program
|
||||
segments (text, data, and bss), a user stack, and a base page. A
|
||||
base page exists for each program loaded in memory. The base page
|
||||
is a 256-byte data structure that defines a program's operating
|
||||
environment. Unlike other CP/M systems, the base page in
|
||||
CP/M-8000 does not
|
||||
reside at a fixed absolute address prior to being loaded. The
|
||||
BDOS Program Load Function (59) determines the absolute address
|
||||
of the base page when the program is loaded into memory. The BDOS Program Load
|
||||
Function (59) and the CCP or the transient program initialize the
|
||||
contents of the base page and the program's stack as described
|
||||
below.
|
||||
.sp 2
|
||||
.he CP/M-8000 Programmer's Guide 2.2 Loading A Program in Memory
|
||||
.tc 2.2.1 Base Page Initialization By The CCP
|
||||
.sh
|
||||
2.2.1 Base Page Initialization By The CCP
|
||||
.qs
|
||||
.ix base page initialization
|
||||
.pp
|
||||
The CCP parses up to two filenames following the command in the input
|
||||
command line. The CCP places the properly formatted FCBs in the base page.
|
||||
The default DMA address is initialized at an offset of 0080H in the base
|
||||
page. The default DMA buffer occupies the second half of the base page. The
|
||||
CCP initializes the default DMA buffer to contain the command tail, as
|
||||
shown in Figure 2-1. The CCP invokes the BDOS Program Load Function (59) to
|
||||
load the transient program before the CCP parses the command line.
|
||||
.pp
|
||||
Program Load, Function 59, allocates space for the base page and
|
||||
initializes base page values at offsets 0000H through 0024H from the
|
||||
beginning of the base page (see Appendix C). Values at offsets 0025H
|
||||
through 0037H are not initialized; but the space is reserved. The CCP
|
||||
parses the command line and initializes values at offsets 0038H through
|
||||
00FFH. Before the CCP gives control to the loaded program, the CCP pushes
|
||||
the address of the transient program's base page and a return address
|
||||
within the CCP on the user stack. When the program is invoked, the top of
|
||||
the stack contains a return address within the CCP, which is pointed to by
|
||||
the stack pointer, register A7. The address of the program's base page is
|
||||
located at a 4-byte offset from the stack pointer.
|
||||
.sp 2
|
||||
.tc 2.2.2 Loading Multiple Programs
|
||||
.sh
|
||||
2.2.2 Loading Multiple Programs
|
||||
.qs
|
||||
.ix loading multiple programs
|
||||
.pp
|
||||
Multiple programs can reside in memory, but the CCP can load only
|
||||
one program at a time. However, a transient program, loaded by
|
||||
the CCP, can load one or more additional programs in memory. A
|
||||
program loads another program in memory by invoking the BDOS
|
||||
Program Load Function (59). Normally, the CCP supplies FCBs and
|
||||
the command tail to this function. The transient program must
|
||||
provide this information, if required, for any additional
|
||||
programs it loads when the CCP is not present.
|
||||
.ix file, loading
|
||||
.ix multiple programs, loading
|
||||
.bp
|
||||
.tc 2.2.3 Base Page Initialization By A Transient Program
|
||||
.sh
|
||||
2.2.3 Base Page Initialization By A Transient Program
|
||||
.qs
|
||||
.pp
|
||||
A transient program invokes the BDOS Program Load Function (59) to
|
||||
load an additional program. The BDOS Program Load Function allocates space
|
||||
and initializes base page values at offsets 0000H through 0024H for the
|
||||
program as described in
|
||||
Section 2.2.1. The transient program must initialize the base
|
||||
page values that the CCP normally supplies, such as FCBs, the DMA
|
||||
address, and the command tail, if the program being loaded requires these
|
||||
values. The command tail contains the command parameters but not
|
||||
the command. The format of the command tail in the base page
|
||||
consists of a 1-byte character count, followed by the characters
|
||||
in the command tail, and terminated by a null byte as shown in
|
||||
Figure 2-1. The command tail cannot contain more than 126 bytes
|
||||
plus the character count and the terminating null character.
|
||||
.ix command tail
|
||||
.sp 3
|
||||
Count Characters in the Command Tail 0
|
||||
|
||||
1 byte N bytes <\b_ 126 bytes
|
||||
.sp 2
|
||||
.ce
|
||||
.sh
|
||||
Figure 2-1. Format of the Command Tail in the DMA Buffer
|
||||
.qs
|
||||
.sp 2
|
||||
.pp
|
||||
.fi
|
||||
Unlike the CCP, a transient program does not necessarily push the address
|
||||
of its base page and a return address on the user stack before giving
|
||||
control to the program that it loads with the Program Load Function. The
|
||||
transient program can be designed to push these addresses on the user stack
|
||||
of the program it loads if the program uses the base page.
|
||||
.pp
|
||||
The address of the base page for the loaded program is not pushed on the
|
||||
user stack by the Program Load Function (59). Instead, it is returned in the
|
||||
load parameter block
|
||||
(LPB), which is used by the BDOS Program Load Function. Appendix
|
||||
C summarizes the offsets and contents of a base page. Appendix B
|
||||
contains two examples, an assembly language program and a
|
||||
C language program, which illustrate how a transient program
|
||||
loads another program with the BDOS Program Load Function (59),
|
||||
but without the CCP.
|
||||
.sp 2
|
||||
.he CP/M-8000 Programmer's Guide 2.3 Exiting Transient Programs
|
||||
.tc 2.3 Exiting Transient Programs
|
||||
.sh
|
||||
2.3 Exiting Transient Programs
|
||||
.qs
|
||||
.ix exiting transient programs
|
||||
.pp
|
||||
CP/M-8000 supports the two ways listed below to exit a transient
|
||||
program and return control to the CCP.
|
||||
.sp 2
|
||||
.in 5
|
||||
.ix transient programs, exiting
|
||||
.ti -2
|
||||
o Interactively, the user types CTRL-C at the console, the default I/O
|
||||
device
|
||||
.bp
|
||||
.sp
|
||||
.ti -2
|
||||
o Program a return to the CCP with:
|
||||
.sp
|
||||
.in 8
|
||||
1) the BDOS System Reset Function (0)
|
||||
.sp
|
||||
.qi
|
||||
.ne 10
|
||||
.pp
|
||||
A user typing CTRL-C from the console returns control to the CCP
|
||||
only if the program uses any of the BDOS functions listed below.
|
||||
.sp
|
||||
.in 3
|
||||
.nf
|
||||
o Console Output (2)
|
||||
o Print String (9)
|
||||
o Read Console Buffer (10)
|
||||
.fi
|
||||
.sp
|
||||
.in 0
|
||||
On input, CTRL-C must be the first character that the user types
|
||||
on the line. CTRL-C terminates execution of the main program and
|
||||
any additional programs loaded beyond the CCP level. For example, a user
|
||||
who types CTRL-C while debugging a program terminates
|
||||
execution of the program being debugged and DDT-8000 before the
|
||||
CCP regains control.
|
||||
.pp
|
||||
Typing CTRL-C in response to
|
||||
the system prompt resets the status of all disks to read-write.
|
||||
.pp
|
||||
To program a return to the CCP, specify
|
||||
the BDOS System Reset Function (0). (In programs written in C,
|
||||
a subroutine return from the main program to the run-time package will cause
|
||||
this function to be executed.)
|
||||
.pp
|
||||
Invoking the BDOS System Reset Function (0) described in Section 4.5 is
|
||||
equivalent to programming a return to the CCP. This function
|
||||
performs a warm boot, which terminates the execution of a program
|
||||
before it returns program control to the CCP.
|
||||
.ix BDOS System Reset Function (0)
|
||||
.sp 2
|
||||
.he CP/M-8000 Programmer's Guide 2.4 Transient Program Models
|
||||
.tc 2.4 Transient Program Execution Model
|
||||
.sh
|
||||
2.4 Transient Program Execution Model
|
||||
.qs
|
||||
.pp
|
||||
The memory model shown in Figure 2-2 illustrates the normal
|
||||
configuration of the CP/M-8000 operating system after the CCP
|
||||
loads a transient program. CP/M-8000 divides memory in two categories:
|
||||
System and the Transient Program Area (TPA).
|
||||
.mb 5
|
||||
.fm 1
|
||||
.pp
|
||||
CP/M-8000 System memory contains the Basic Disk Operating
|
||||
System (BDOS), the Basic I/O System (BIOS), the Console Command
|
||||
Processor (CCP), and Exception Vectors. The bootstrap program
|
||||
initializes the memory locations in which these
|
||||
components reside. These the remaining components can
|
||||
reside anywhere in a single memory segment, provided the BDOS and CCP are
|
||||
contiguous.
|
||||
.ix Basic Disk Operating System (BDOS)
|
||||
.ix Basic I/O System (BIOS)
|
||||
.ix Console Command Processor (CCP)
|
||||
.ix exception vectors
|
||||
.pp
|
||||
The TPA consists of memory segments that are not
|
||||
occupied by the CP/M-8000 operating system. A user stack, a base
|
||||
page, the three program segments: a text segment, an initialized
|
||||
data segment, and a block storage segment (bss) exist for each
|
||||
transient program loaded in the TPA. The BDOS Program Load
|
||||
Function (59) loads a transient program in the TPA. If memory
|
||||
locations are not specified when the transient program is linked,
|
||||
the program is loaded in the TPA as shown in Figure 2-2.
|
||||
.sp 3
|
||||
.in 5
|
||||
.mb 6
|
||||
.fm 2
|
||||
.nf
|
||||
======================= REPLACE WITH FIGURE FROM FRED'S TALK ===========
|
||||
High Memory
|
||||
|
||||
BIOS
|
||||
System CP/M-8000 BDOS
|
||||
CCP
|
||||
|
||||
|
||||
USER STACK
|
||||
|
||||
|
||||
Transient FREE MEMORY
|
||||
Program
|
||||
Area
|
||||
(TPA) BSS
|
||||
|
||||
DATA
|
||||
|
||||
TEXT
|
||||
|
||||
BASE PAGE
|
||||
|
||||
|
||||
System EXCEPTION VECTORS
|
||||
|
||||
|
||||
.fi
|
||||
.in 0
|
||||
.sp 2
|
||||
.ce
|
||||
.sh
|
||||
Figure 2-2. CP/M-8000 Default Memory Model
|
||||
.ix CP/M-8000 default memory model
|
||||
.qs
|
||||
.sp 2
|
||||
.pp
|
||||
Some systems can configure and load CP/M-8000 in such a manner that
|
||||
one or more portions of memory cannot be addressed by the
|
||||
CP/M-8000 operating system (see Figure 2-3). CP/M-8000 cannot
|
||||
access this memory. CP/M-8000 does not know the memory
|
||||
exists and cannot define or configure the memory in the BIOS.
|
||||
However, a transient program that knows this memory exists can
|
||||
access it. Also, note that CP/M-8000 does not support or require
|
||||
memory management.
|
||||
.sp 2
|
||||
.ce
|
||||
End of Section 2
|
||||
.nx three
|
||||
|
||||
Reference in New Issue
Block a user