TECHNICAL ARTICLES [ COMMUNICATOR 3000 XL, XL Release 1.1 (Core Software Release A.10.00) ] MPE/iX Communicators
COMMUNICATOR 3000 XL, XL Release 1.1 (Core Software Release A.10.00)
Chapter 6 TECHNICAL ARTICLES
Code Segment Table Expansion in MPE XL
by Michael Paivinen, Information Software Division
In XL Release 1.1 (A.10.00), the Code Segment Table (CST) has been
expanded to 2048 entries. In addition, a single process can now contain
up to 255 Compatibility Mode (CM) code segments in any combination of
program file segments and user segmented library (SL) segments. Several
changes have been made to accommodate the CST enhancements. These
changes are identical to the changes that were made in MPE V/E to support
CST Expansion.
CST CHANGES
The CST is now partitioned into two parts. The first part consists of
255 entries and is reserved for MPE segments. It is called the physical
domain CST. The second part of the CST is called the logical domain CST
and consists of 1792 entries, entry numbers 256 through 2047. Unlike MPE
V/E, the size of the CST cannot be configured on MPE XL.
PROGRAM LOADING MECHANISM
A CM program having n segments and referencing user SL segments is loaded
in the following manner. The n program segments are loaded into the Code
Segment Table Extension (CSTX). The SL segments are loaded into the
logical domain CST. Segmenter numbers for program segments start at 1.
Segment numbers for SL segments start at n+1; both are logical segments
to the particular process executing the program. The logical segment
numbers are found in external PLABELs and the Status Register word in
stack markers. The CM Loader creates a data segment for mapping these
logical segment numbers into physical numbers; it is accessed by the
operating system and the emulator.
PLABEL AND STACK MARKER CHANGES
A flag is needed to indicate whether a segment number in an external
PLABEL or a stack marker is a physical or a logical segment number. The
PLABEL and stack marker formats have been changed as follows:
Stack Marker
---------------------------------
| X Register |
---------------------------------
| |m| Delta P |
---------------------------------
| | Segment Number | => Status Register
---------------------------------
| Delta Q |
---------------------------------
0 1 15
External PLABEL
---------------------------------
|m| STT Number | Segment Number|
---------------------------------
0 15
The m is the mapping flag. If m=1, then the segment number is a physical
segment number. If m=0, then the segment number is a logical segment
number.
The Segment Transfer Table (STT) Descriptor has also been changed so that
the emulator/translator can distinguish the internal PLABEL entries of
the STT from the external entries.
STT Descriptor
-----------------------------------
|# Internal STTs | Total # of STTs|
-----------------------------------
0 7 8 15
MPE/iX Communicators