901877B_System_Generation_Tech_Sep73 901877B System Generation Tech Sep73
901877B_System_Generation_Tech_Sep73 901877B_System_Generation_Tech_Sep73
User Manual: 901877B_System_Generation_Tech_Sep73
Open the PDF directly: View PDF
.
Page Count: 370
| Download | |
| Open PDF In Browser | View PDF |
Xerox BPM/BTM/UTS
Sigma 5-9 Computers
System Generation
Technical Manual
90 18778
Xerox Corpora:tion
701 South Aviation Boulevard
EI Segundo, California 90245
213 679-4511
XEROX
Xerox BPM/BTM/UTS
Sigma 5-9 Computers
System Generation
Technical Manual
90 18 77B
September 1973
Price: $13.00
Printed in U.S.A.
REVISION
The System Generation processors described in this manual operate under the 000 version of UTS and the HOO version
of BPM/BTM.
RELATED PUBLICATIONS
Title
Publication No.
Xerox Sigma 5 Computer/Reference Manual
900959
Xerox Sigma 6 Computer/Reference Manual
90 17 13
Xerox Sigma 7 Computer/Reference Manual
900950
Xerox Sigma 8 Computer/Reference Manua I
90 17 49
Xerox Sigma 9 Computer/Reference Manual
90 17 33
Xerox Batch Processing Monitor (BPM) and Batch Time-Sharing Monitor (BTM)/SM
Reference Manua I
90 17 41
Xerox Control Program-Five (CP-V)/SM Reference Manual
90 16 74
Xerox Batch Processing Monitor (BPM)/System Technical Manual
90 1528
Xerox BPM/BTM Subsystems and Utilities Technical Manual
90 3061
Xerox BPM/BTM/UTS/Overlay loader Technical Manual
90 1803
Xerox BPM/BTM/UTS Peripheral Conversion language (PCl) Technical Manual
90 19 32
Xerox Batch Time-Sharing Monitor (BTM)/Delta Subsystem Technical Manual
90 1879
Xerox Batch Time-Sharing Monitor (BTM)/Edit Subsystem Technical Manual
90 19 11
UTS Overview and Index Technical Manual
90 19 84
UTS Basic Control and Basic I/O Technical Manual
90 19 85
UTS System and Memory Management Technical Manual
90 19 86
UTS Symbiont and Job Management Technical Manual
90 19 87
UTS Operator Communication and Monitor Services Technical Manual
90 19 88
UTS File Management Technical Manual
90 19 89
UTS Reliability and Maintainability Technical Manual
90 19 90
UTS Initialization and Recovery Technical Manual
90 19 92
UTS Command Processors Technical Manual
90 19 93
UTS System Processors Technical Manual
90 19 94
UTS Data Bases Technical Manual
90 19 95
Manual Content Codes: BP - batch processing, IN - language, OPS - operations, RP - remote processing,
RT - real-time, SM - system management, TS - time-sharing, UT - utilities.
The specifications of the software system described in this publication are subject to change without notice. The availability or performance of some features
may depend on a specific configuration of equipment such as additional tape units or larger memory. Customers should consult their Xerox sales representative
for details.
ii
CONTENTS
PREFACE
1.0
SYSGEN OVERVIEW
1.1
1.2
1.3
1.4
2.0
vii
Introduction
Syntactical Requirements
The SYSGEN Processors _ _ _ _ _ _
1.3.1
PASS2
1.3.2
PASS3
1.3.3
LOCCT
1.3.4
DEF
Functional Flow of SYSGEN
2.2
2.3
2.4
1
1
1
1
3
4
5
6
2.6
10
PASS2
2.1
2.5
P2CCI
2.1.1
Purpose
2.1.2
Calling Sequence
2.1.3
Return
2.1.4
Input
2.1.5
Output
Subrouti nes Used
2.1.6
Base Registers
2.1.7
Description
2.1.8
2.1.9
P2CCI MESSAGES
2.1.10 Internal Subroutines
2.1.11 Flow Charts
UBCHAN
Purpose
2.2. 1
Usage _____
2.2.2
2.2.3
Input
2.2.4
Output
Subroutines Used _
2.2.5
Data Base ___
2.2.6
Description
2.2.7
Error and Informational
2.2.8
Messages
Major Internal Routines
2.2.9
2.2. 10 Flow Chart
SDEVICE
Purpose
2.3. 1
2.3.2
Usage
Input
2.3.3
Output ______
2.3.4
2.3.5
Subroutines Used
Other External References _ _
2.3.6
-2-.-J.7- -- (;)esGl"ipti..on
SDEVICE Messages
2.3.8
Internal Routines
2.3.9
2.3.10 Flow Chart ______
XMONITOR
2.4. 1
Purpose
2.4.2
Usage
2.4.3
Input
2.4.4
Output
Interaction
2.4.5
2.4.6
Data Bases
2.4.7
Subroutines
2.4.8
Description
10
10
10
10
10
10
2.7
10
10
10
13
13
16
23
23
23
23
23
30
30
39
2.8
43
49
51
85
85
85
85
85
87
87
B7
90
90
93
95
95
95
95
95
100
100
100
100
2.9
2.4.9
2.4.10
XLlMIT
2.5.1
2.5.2
2.5.3
2.5.4
2.5.5
2.5.6
2.5.7
2.5.8
ABS
2.6.1
2.6.2
2.6.3
2.6.4
2.6.5
2.6.6
2.6.7
2.6.8
2.6.9
BTM
2.7.1
2.7.2
2.7.3
2.7.4
2.7.5
2.7.6
2.7.7
2.7.8
2.7.9
P2COC
2.8.1
2.8.2
2.8.3
2.8.4
2.8.5
2.8.6
2.8.7
2.8.8
2.8.9
2.8.10
IMC
2.9.1
2.9.2
2.9.3
_2.J___4 _
2.9.5
2.9.6
2.9.7
2.9.8
2.9.9
2.10 SPROCS
2. 10. 1
2.10.2
2.10.3
2.10.4
2.10.5
2.10.6
iii
XMONITOR Messages
Flow Charts
Purpose
Usage
Input
Output
Interacti on
Data Bases
Description
Flow Chart
Purpose
Usage
Input
Output
Subroutines
Description
ABS Messages
Interna I Routines
Flow Chart
Purpose
Usage
Input
Output
Interaction
Data Bases
Description
BTM Messages
Flow Chart
Purpose
Usage
Input
Output
Interaction
Data Bases
Subroutines
Description
P2COC Messages
Flow Chart
Purpose
Usage
Input
9UJEut
Interaction
Data Bases
Description
IMC Messages
Flow Chart
Purpose
Usage
Input
Output
Interaction
Data Bases
101
102
106
106
106
106
106
107
107
108
109
112
112
112
112
112
113
113
115
116
118
120
120
120
120
120
124
124
124
125
126
128
128
128
128
128
131
131
131
131
132
133
137
137
137
137
137
140
140
140
141
142
146
146
146
146
146
148
148
2.10.7
2.10.8
2.10.9
2.10.10
2.11 FRGD
2.11.1
2.11.2
2.11.3
2. 11.4
2. 11.5
2. 11.6
2.11.7
2.11.8
2.11.9
2. 11. 10
2. 11. 11
2.12 XPART
2.12.1
2.12.2
2.12.3
2.12.4
2.12.5
2.12.6
2.12.7
2. 12.8
2.12.9
3.0
PASS3
182
Purpose
Calling Sequence
Input
Output
Base Registers
Subroutines Used
Description
Overview
3.7.1
Generation of ROOT
3.7.2
Load Module
3.8 PASS3 Messages
3.9 PASS3 Processor Flags
3.10 Interna I Routi nes
3.11 PASS3 Processor Flowcharts
182
182
182
182
183
183
183
183
DEF
205
3.1
3.2
3.3
3.4
3.5
3.6
3.7
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
5.0
.149
149
150
151
154
154
Purpose
154
Usage
154
Input
154
Output
158
Subroutines Used
158
Specia I Restriction
158
Description
162
FRGD Messages
163
Flags Used by FRGD
163
Internal Routines
167
Flow Chart
172
172
Purpose
172
Usage
173
Input
173
Output
Subroutines and Definitions_ 174
174
Data Base
174
Description
175
XPART Messages
177
Flow Chart
Subroutine
Description
SPROCS Messages
Flow Charts
Purpose
Calling Sequence
Input
Output
Data Base and Registers
Subroutines
Control Commands
Description
DEF Messages
Internal Routines
Flowcharts
6.0
LOCCT
225
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
225
225
225
225
225
225
225
226
229
229
230
Purpose
Calling Sequence
Input
Output
Base Registers
Subroutines
Description
LOCCT Messages
LOCC T Processor Flag
Internal Routines
LOCCT Flow Charts
TABLES, FILES, SUBROUTINES
234
SYSGEN Loader Overlay Control
234
Command Table (LOCCT)
6.2 SYSGEN Load Module Components _ _ 236
242
6.3 SPEC:HAND File Contents
6.4 SYSGEN MODIFY Subroutine
242
Parameter Lists (PLISTS)
248
6.5 Modify
248
6.5.1
Purpose
248
Ca II i ng Sequence
6.5.2
248
Input •
6.5.3
.248
Output
6.5.4
248
Subroutines
6.5.5
251
Description
6.5.6
253
Flowcharts
6.5.7
6.6 SYSGEN CHARACTER Routines
278
Parameter List (PLIST)
279
6.7 Character Routines
.279
NXACTCHR
6.7.1
283
6.7.2
NAMSCAN
284
6.7.3
CHARSCAN
6.7.4
285
HEXSCAN
287
6.7.5
QUOTSCAN
289
6.7.6
DECSCAN
291
6.7.7
CHSTSCAN
293
6.7.8
GETCHST
6.8 SYNTAX Routine in P2CCI (PASS2) __ 295
295
Purpose
6.8.1
Usage
295
6.8.2
295
Input-Output
6.8.3
Interaction
298
6.8.4
Errors
298
6.8.5
299
Description
6.8.6
Flow Chart
300
6.8.7
6.9 MODGEN Routine in P2CCI
(PASS2)
313
6.9.1
Purpose
313
.313
6.9.2
Usage
Input
314
6.9.3
Interaction
314
6.9.4
Errors
314
6.9.5
Description
314
6.9.6
315
Flow Charts
6.9.7
6.10 COREALLOC Routine in P2CCI
319
(PASS2)
319
6.10.1 Purpose
6.1
187
192
194
195
197
205
205
205
205
205
205
206
207
210
210
212
iv
6.10.2 Usage
319
6.10.3 Output
319
6. 10.4 Input
319
6.10.5 Interacti on
320
6.10.6 Errors
320
6.10.7 Description
320
.6.10.8 Flow Chart
321
6. 11 WRITELM Routine in P2CCI (PASS2) __ 324
6.11.1 Purpose
324
6. 11.2 Usage
324
324
6.11.3 Interaction
6.11.4 Description
324
6.11.5 Flow Chart
325
FIGURES
APPENDIXES
A.O
BPMBT - DEF OVERLAY
A.1
A.2
A.3
A.4
A.5
A.6
A.7
A.8
A.9
B.O
UTMBPMBT - DEF OVERLAY
B. 1
B.2
B.3
B.4
C.O
Purpose
Callin~
Sequence
Input
Output
DEF (HOO BPM/BTM VERSION)
C.1
C.2
C.3
C.4
C.5
C.6
C.7
C.8
C.9
C.lO
D.O
Purpose
Calling Sequence
Input __
Output
Core Usage
Overview
Description
A.6.1
Module OrganizationA.6.2
BPMPT
Description
BPMBT Subroutines
A.8.1
WRSEG
A.8.2
DISPSEG
WRITEMON Messages
Purpose
Calling Sequence
Input
Output
Data Base and Registers
Subrout i nes
Control Commands
Description
DEF Messages
Internal Routines __.
BPM/BTM MODULE NAMES
1-l.
Flow Diagram of SYSGEN
2-l.
Flow Diagram of P2CCI
16
2-2.
CHANTBL Entry
36
2-3.
Initial DEVICD1 Entry
37
2-4.
Fina I DEVICD1 Entry
37
2-5.
FINAL DCINTBL ENTRY
37
2-6.
Two Types of STDLCD1 Entry and
HANDTBL Entry
38
2-7.
Special CLISTS
41
2-8.
ALLOCATION TABLE FORMAT (HGP)
42
7
326
2-8.1. SGP Format and Contents by Type
44
326
326
326
326
326
326
326
2-9.
Flow Diagram of UBCHAN
51
2-10.
Flow Diagram of SDEVICE
93
2-11.
Flow Diagram of XMONITOR
102
2-12.
Flow Diagram of XLIMIT
109
326
327
327
327
328
329
2-13.
Flow Diagram of ABS
118
2-14.
Flow Diagram of BTM
126
2-15.
Flow Diagram of P2COC
133
2-16.
Flow Diagram of IMC
142
334
2-17.
Flow Diagram of SPROCS
151
334
334
334
334
2-18.
PROCDEF Table
159
2-19.
Flow Diagram of FRGD
167
2-20.
Flow Diagram of XPART
177
337
3-l.
Flow Diagram of PASS3
197
337
337
337
337
337
338
338
339
342
343
4-l.
Flow Diagram of DEF
212
5-l.
LOCCT Record Format
228
5-2.
Flow Diagram of LOCCT
230
6-l.
LOCCT Format
6-2.
TREE Entry Format
235
6-3.
ROM Table Entry
236
6-4.
HEAD Record Format
236
359
v
.234
TABLES
6-5.
TREE Record Format
237
6-6.
RFDFSTK Format
238
2-l.
PASS2 STACK ALLOCATION
10
6-7.
EXPRSTK Format
239
2-2.
PASS2 Control Commands
15
6-8.
RELDICT Format
241
2-3.
IOTA8LE Load Module
24
6-9.
SPEC:HAND File Format
242
2-4.
PASS2 Stack Allocation
30
6-10. MASTER PLlST Format
243
2-5.
STANDARD DEVICES
38
6-11. CHANGE DESCRIPTION TABLE
(SUBPLlST) Format for DEF
2-5.1
Swapper Table Constants by Type
43
244
2-6.
M:SDEV Load Module
86
2-7.
INTERMEDIATE NAME TABLE
89
2-8.
Contents of M:CPU Load Module
96
2-9.
Contents of M:SYMB Load Module
99
6-12.
CHANGE DESCRIPTION TABLE
(SUBPLlS T) Format for REF
6-13. Change Description Table (SUBPLlST)
Format for Sect. Modification
245
246
6-14. Change Description Table (SUBPLlST)
Format for RELDICT Modification
247
2-10. Contents of M:DLlMIT
6-15.
253
2-11. Contents of M:OLlMIT/M:BLIMIT/M:ELlMIT_107
6-16. Character String PLlST Format
279
2-12.
6-17.
Flow Diagram of NXACTCHR
281
2-13. ABS Work Area
114
6-18.
Flow Diagram of NAMSCAN
283
2-14.
114
6-19.
Flow Diagram of CHARSCAN
.284
6-20.
Flow Diagram of HEXSCAN
Flow Diagram of MODIFY
6-21. Quote Constant
M:ABS Load Module
ABSPROC Table
106
112
2-15. M:BTM Load Module Contents
120
286
2-16.
Contents of M:C OC
129
287
2-17.
M:IMC Load Module Contents
137
6-22.
Flow Diagram of QUOTSCAN
288
2-18.
M:SPROCS Load Module Contents
146
6-23.
Flow Diagram of DECSCAN
290
2-19.
M:FRGD Load Module Contents
154
6-24.
Flow Diagram of CHSTSCAN
292
2-20.
:INTLB INTERMEDIATE TABLES
161
6-25.
Flow Diagram of GETCHST
294
2-21.
INTS INTERMEDIATE TABLE
161
6-26.
Flow Diagram of SYNTAX
300
2-22.
M:PART Load Module
173
6-27.
Flow Diagram of MODGEN
315
3-l.
ROOT LOAD MODULE CONTENTS
183
6-28.
Flow Diagram of COREALLOC
.321
3-2.
BIAS RESULTS
184
6-29.
Flow Diagram of WRITE LM
325
3-3.
Table of SAVE Names
185
3-4.
PASS3 1I0LDSEGS TABLE FORMAT
188
4-l.
File Types
207
4-2.
Automatic INCLUDES
209
6-l.
Relocation Digit Interpretation
241
C-l.
File Types
339
C-2.
Automatic INCLUDEs
341
A-1.
Flow Diagram of BPMBT
330
8-l.
Output Tape Format
335
8-2.
System Information Format
336
C-l.
Flow Diagram of DEF
II
345
vi
PREFACE
This document describes the purpose and architecture of the System Generation processors that operate under BPM/
BTM/UTS. It is assumed that the user is familiar with information contained in other operating system manuals,
particularly those listed on the related publications page.
vii
1.0 SYSGEN OVERVIEW.
1. 1 INTRODUCTION.
SYSGEN comprises a series of processors capable of forming a UTS or BPM/BTM system tailored to a specified
installation.
These processors are PASS2, PASS3, DEF and lOCCT, each of which has various control commands
described in detail in the following chapters. Files are accessed from Xerox-supplied or user tapes or for BPM/BTM
private disc packs via the Peripheral Conversion language (PCl) processor. Discussion of this processor is not included in this manual.
1.2 SYNTACTICAL REQUIREMENTS
In general, the various SYSGEN processors have certain common syntactical rules and requirements that may be applied to their control commands. Any deviation for a given processor is noted under the detailed discussion of it.
1.
The legitimate characters that may be used in names are:
Alpha: A-Z, a-z
Numeric: 0-9, X' A'-X'F'
Special (alpha): $ -
I
:
#@
2.
All control commands to processors begin with a : in column 1.
3.
When the options for a particular control command do not all fit on a physical image (80 column), they
may be continued on one or more images.
4.
Continuation is indicated by the use of a semicolon and the continuation command must have a : in
column 1. A semicolon may be placed anywhere within a command as well as anywhere within a name o
If the semicolon is found within a name, the continuation command must contain the remainder of the
name, starting with the second character position so that the name may be reformed.
5.
There are three methods of incorporating comments with a processor control command sequence.
a.
Comments are accepted following a semicolon.
b.
If no semicolon is used, comments are accepted if preceeded by a period.
c.
If an entire command is a comment, the first character in the image must be an asterisk.
1.3 THE SYSGEN PROCESSORS.
1, 3. 1 PASS2.
This SYSGEN processor receives as input various parameters concerning a target system. PASS2 then generates the
library modules (nearly all of which are load modules) which identify the system variables.
These modules are
incorporated into the target system1s Monitor and any other processor which requires a knowledge of the target
system1s configuration.
The target system parameters include: peripheral definitions, operational label assign-
ments, real-time information, symbiont device information, core size, number of index and blocking buffers.
The following diagram shows what operational labels and corresponding peripherals are accessed during a PASS2.
SIGMA
CORE
TM
1.
51
1.
LL
PASS2 Control Commands.
Generated Li brary
Load Modules.
PRINTER
1.
Display control Information.
PASS2 is entered via the Monitor control command IPASS2 and terminates input from the 51 device when a Monitor
control command is encountered (i.e., a control with "1" in column 1).
...
I
I
I
I
I
I
i
The PASS2 generated Library Modules consist of:
_. ---
NAME
*GENERATED BY
MODULE TYPE
IOTABLE
CHAN, DEVICE, STDLB, and OSTDLB (UTS)
Load Module
SPEC:HAND
DEVICE
Data
M:HGP
CHAN, DEVICE
Load Module
M:SDEV
SDEVICE
Load Module
M:CPU
UTM (UTS)
MONITOR (BPM/BTM)
Load Module
MON::ORG
UTM (UTS)
MONITOR (BPM/BTM)
RelocatabIe
Object Module
M:SYMB
UTM (UTS)
Load Module
M:BIG9
UTM (UTS)
Load Module
M:BLlMIT
BLIMIT (UTS)
Load Module
M:OLlMIT
OLIMIT (UTS)
Load Module
M:ELIMIT
ELIMIT (UTS)
Load Module
M:DLlMIT
DLIMIT (BPM/BTM)
Load Module
M:ABS
ABS (BPM/BTM)
Load Module
M:BTM
BTM (BPM/BTM)
Load Module
M:FRGD
FRGD, INTLB (BPM/BTM)
Load Module
M:COC
COC (UTS)
Load Module
M:IMC
IMC (UTS)
Load Module
M:SPROCS
SPROCS (UTS)
Load Module
PARTITION (UTS)
Load Module
M:PART
*NOTE:
I
.... --
When a specific system type is specified (in parentheses), the preceding control command is the one
that generates or helps in generating the Module NAME. Otherwise, if no system is specified, the
assumption is BPM!BTM/UTS.
2
1. 3" 2 PASS3.
This SYSGEN processor communicates to the system LOADER the necessary information to load a specific
Monitor, processor or library.
Each PASS3 control command identifies a file which contains information for the
LOADER. Such a file is referred to as an LOCCT (see LOCCT processor overview 1. 3. 3). These LOCCT files
eliminate the maintaining of Monitor, processor or library LOAD/TREE control command structures. An LOCCT
conveys to the LOADER the information which the original LOAD/TREE control commands contained as parameters
(e.g., element file names, load parameters, tree structure).
The following diagram shows what operational labels and corresponding peripherals are accessed during a PASS3.
EI EO
SIGMA
CORE
.
:.-,
Get LOADER as
needed.
1.
2.
3.
LOCCT Files used by
PASS3 LOADER.
Element Files used by
LOADER.
Generate Load Module •
.....L!Monitor COMMANDS
/
()
,,,,.
SI
COMMANDS
LL
PRINTER
II
~
1.
PASS3 Control Commands.
1.
2.
Display Control Information.
Load Maps.
PASS3 fs entered via the Monitor control command !PASS3 and terminates input from the SI device when a Monitor
control command is encountered (i. e., a control command with II! II in column 1).
Processors and Libraries may also be loaded by the system LOADER and eventually included (through DEF processor)
in a target system without the use of the SYSGEN PASS3/LOCCT processors. This can be accomplished by using
the ! LOAD (! OVERLAy) and !TREE Monitor control commands.
3
The following diagram shows what operational labels and corresponding peripherals are accessed during this
procedure.
SIGMA
CORE
RANDOM
ACCESS
DEVICE
EF, LM
1.
20
Obtain element files.
Generated Load Module.
LL
PRINTER
1.
2.
Display Control Information
Load Maps.
c
1.
2.
Mon itor Control Commands.
!TREE Command is optional.
1.3.3 LOCCT.
This SYSGEN processor intercepts from the system1s Control Command Interpreter (CCI) the table of information
generated from LOAD (!LOCCT)/ !TREE control commands for the system LOADER o This table of information is
referred to as an LOCCT {Loader Control Command Table}. An LOCCT, when obtained from CCI, is converted
into a permanent file.
Therefore, such a file may be used by SYSGEN PASS3 for purposes of loading a Monitor,
processor or library.
4
The following diagram shows what operational labels and corresponding peripherals are accessed during a LOCCT
process.
TM
SIGMA
CORE
1.
PO
Generated LOCCT file.
CARD
PUNCH
1.
Generated LOCCT
C
t
Generate LOCCT from Control Commands.
2.
!TREE Command is optional.
1.
Display Control
Information.
1.3.4 DEF.
Currently, there are two versions of DEF; one for UTS (DOO version) and pre-HOO versions of BPM/BTM as described
in Chapter 4, and one for BPM/BTM (HOO release) as described in Appendix C.
This SYSGEN processor generates either a target system tape (a PO tape) or a BO Tape which may eventually be
used as a new BI tape for subsequent SYSGENs. DEF may create multiple tapes in any given run. In addition, for
BPM/BTM only, DEF generates either a BO disc pack or PO disc pack, which are functionally synonymous to BO/PO
tapes.
If the taptYdisc pack being created is a BO tape/disc pack, it contains a bootstrap, absolute monitor, the monitor
overlays and the load modules PCl, CCI, lOADER, PASS2, lOCCT, PASS3, DEF, FMGE, ERRMSG, M:MON:LIB:DIC containing the system DCBs. VOLINIT is also inclurlerl if a BO disc pack is being generated.
In addition, if
the system is a UTS system, then the following are also automatically included: XDELTA, LOGON, TEL, SUPER,
DEFCOM, SUPER, JITO, JITl, JIT2, JIT3, JIT6, ANLZ, GHOSTl, RECOVER, M:SPROCS (containing the overlays of
M:MON). For BO tapes the null fi Ie LASTLM terminates the load module portion of the tape. All of the named files
are obtained from the System account (:SYS). For BO disc packs, LASTLM contains the names of all the files on the
BO pack that are to go into the :SYS account. This is necessary because disc pack files are accessed through the
alphabetized fi Ie directory.
DEF then obtains all of the non-keyed files from the current account and any keyed files
that have been specifically identified via are :INCLUDE command and writes these on the tape or disc pack.
5
The following diagram shows what operational labels and corresponding peripherals are accessed during a DEF.
1.
20
SIGMA
CORE
LL
PRINTER
TM
Display Control
Informati on.
Display PO/BO
Tape/Disc Pack Summary.
1.
PO - Target System
BO - System from :SYS
Special element files (as requested)
PO - All keyed files.
Non-keyed as specified.
BO - all non-keyed fi les
keyed as specified.
20
3.
SI
:COMMANDS
1.
DEF control commands
~?sC
PACK
/e0
1.
2.
3.
4.
5.
6.
BO
PO
BOOTSTRAP
Absolute monitor (:SYS)
Monitor overlays (:SYS)
Special load modules (:SYS)
Non-keyed files (current account)
Specified keyed fi les (current account)
1.
2.
3.
4.
5.
BOOTSTRAP
Absolute monitor (current account)
Monitor overlays (current account)
Keyed files (current account)
Specified non-keyed files (current
account)
If the tape/disc pack being created is a PO tape/disc pack, it contains a bootstrap, or absolute monitor (for the
target system), the monitor overlays (for the target system), special element files if requested and all of the keyed
fi les (normally load module) from the current account unless certain of these are specifically identified to be
:IGNORED. The null file, LASTLM, terminates the PO tape/disc pack. Since all files on the tape/disc pack are
to go into the :SYS account, LASTLM is the same for PO tapes and disc packs.
DEF is entered via the MONITOR control command I DEF and terminates input from the SI device when a Monitor
control command is encountered (i.e., a control command with a ! in column 1). DEF requires assignments for PO
and/or BO.
1.4 FUNCTIONAL FLOW OF SYSGEN
The following diagram represents a functional flow of the SYSGEN operation. Note, the LOCCT process may not
be needed and the PASS3 function may be replaced or augmented by using the system LOAD control commands to
form a processor or library although PASS3 must be used to load M:MON.
6
Page 1
ENTER
8
TARGETJ SYSTEM
! PASS2 COMMAND
__u!.s _ _ _ _ _ _ _ _ B!M/BTM
PASS2
'----y-----
h
,,'r:p-ro-ce-ls'-S:--:::C:-:-:H-:""A-:-N:---::D:-='EVICE
, STDLB, OSTDLBb' SDEVICE,
I UTM, BLIMIT,l
LIMIT,
OC, IMCc.:>PROCS,
PART, ELIMIT
rocess:
N4- DEVICE,
STBLB SDEVlCc
:
MI NiTOR, DUMl T,
ABS, FRGD, INTLB,
I
BTM
-----6 --- --U
ENTER
/
!LOCCT COMMAND /
UTS
r----
LOCCT
BPM/BTM
----1
Process:
Process:
:LOCCT
:LOCCT
I
I
Get LOCCT Table
from COMMON
CORE.
I
Get LOCCT Table
from ABS Area
(disc)
_t __ _ _ _ _ _ _ _ _ ____ J
\
\
\
Generate
Permanent LOCCT
file.
\
pg.2
\
\
\
Figure 1-1. Flow Diagram of SYSGEN
7
I
--------
{NTER
/
/
/
/
/
I PASS3 COMMAN D
PASS3
Process:
PASS3 COMMAN""""~rral
:id
/
...------/
/
OBTAIN LOCCT'
FOR id
/
/
BASE SYSTEM
T~_ _ _ BP.M/]TM _ _
I
I
SAVE LOCCT
IN COMMON
CORE
I
SAVE LOCCT IN
ABS AREA OF
DISC
M:LINK TO LOAD R
IN :SYS ACCOUN
DELETE ELEMENT
FILES IF REQUESTE
I
pg. 3
I
I
1 __ -
Figure 1-1. Flow Diagram of SYSGEN (Cont)
8
Page 2
Pbge3
ENTER
UTS
illegal
null/or
Illegal =
PO
!DEF
COMt-MND
DEF
AUTOMATIC
INCLUDES FOR
AUTOMATIC
INCLUDES FOR
PO
BO
OTHER INCLUDES
(NON-KEYED)
OTHER INCLUDES
(KEYED ONLy)
PO
BO
GET/WRITE
KEYED FILES
CURRENT ACCOU T
LASTLM
GET/WRITE
NON-KEYED
FILES CURRENT
ACCOUNT
SYNONOMOUS
FILES CURRENT
ACCOUNT
LASTLM
1-
-----------
_
-
Figure 1-1. Flow Diagram of SYSGEN (Cant)
9
-
_
--_
r
2.0 PASS2
2. 1 P2CCI
2. 1. 1 Purpose
To read PASS2 control commands and call the appropriate processors to handle them. P2CCI is the root segment of
PASS2.
2. 1.2 Calling Sequence
P2CCI is ca lied by the monitor control command:
! PASS2 •••
which runs the load module PASS2 of which P2CCI is the initial part.
2. 1.3 Return
P2CCI exits when it encounters an end of data, that is, a card with a "!" in column 1 or an END command. It may
also make earlier error exits to the monitor if significant faults are found.
2. 1.4 Input
Register 0 contains the address of the pointer to PASS2's temp stack.
2. 1.5 Output
Display of PASS2 control information to the LL device.
2. 1.6 Subroutines Used
NAMSCAN (Used to get PASS2 IItypell field from IPASS2 control command.)
2. 1.7 Base Registers
Register 3 = Address of data in PASS2's temp stack.
Register 2 = PASS2 type index where:
0= BPM
2 = UTMBPM
Register 7 = Address of FETCHLST
2. 1.8 Description
P2CCI is entered when the monitor control command! PASS2 is encountered. Its first action is to move its
dynamic data to the temp stack. The resulting form of the stack is as shown in Table 2-1.
Table 2-1. PASS2 STACK ALLOCATION
BASESTAC
EaU
0
SSIZE
EaU
BASESTAC+1
DISC SECTOR SIZE (FROM :DEVICE)
CORE
EaU
BASESTAC+2
CORE SIZE (FROM :MONITOR)
SDGANSG
EaU
BASESTAC+3
#GRAN/PER, #SEC2/GRAN (FROM :DEVICE)
OPTNWD
EaU
BASESTAC+4
TEMP STORAGE
72FLAG
EaU
BAS ESTAC+5
#7202-04 RADS
REL"DISPLACEMENT TO STACK BASE
10
LASTSPEC
EaU
BASESTAC+6
CCBUFRS
EaU
LASTSPEC+l
BASE OF BUFFERS
BUFFADDR
EaU
CCBUFRS+O
POINTER TO CC BUFFER (=BUFFER)
BUFFER
EaU
CCBUFRS+1
CONTROL COMMAND BUFFER (20 WORDS)
FETCHLST
EaU
CCBUFRS+21
CC PROCESSOR PARAM. LIST (7 WORDS)
FETCHCCP
EaU
CCBUFRS+24
CURNT-CHAR-POS-PROCESSED IN CC
FETCHCSL
EaU
CCBUFRS+26
CHAR-STRING LENGTH OF FIELD IN CC
FETCHBUF
EaU
CCBUFRS+28
CC CHAR-STRING BUFFER (9 WORDS)
FETCHADR
EaU
CCBUFRS+37
POINTER TO FETCHLST (=FETCHLST)
XBUFADDR
EaU
CCBUFRS+38
POINTER TO XBUFFER (=XBUFFER)
XBUFFER
EaU
CCBUFRS+39
ERROR BUFFER FOR $ CHAR.
P2FLAGS
EaU
CCBUFRS+59
BASE OF PASS2 FLAGS
CCFLAGS
EaU
P2FLAGS+0
CC FLAGS FOR CC TYPE FOUND
< ALL CC
*
00000000000000000000000000000000
*
*
00000000000000000000000000000001
:CHAN
FOUND
(00000001)
00000000000000000000000000000010
:DEVICE
FOUND
(00000002)
*
00000000000000000000000000000100
:STDL B
FOUND
(00000004)
*
00000000000000000000000000001000
:SDEVICE
FOUND
(00000008)
*
*
00000000000000000000000000010000
:MONITOR
FOUND
(00000010)
00000000000000000000000000100000
:DLIMIT
FOUND
(00000020)
*
00000000000000000000000001000000
:ABS
FOUND
(00000040)
*
*
00000000000000000000000010000000
:BTM
FOUND
(00000080)
00000000000000000000000100000000
:FRGD
FOUND
(00000100)
*
00000000000000000000001000000000
:INTLB
FOUND
(00000200)
*
*
*
*
*
00000000000000000000010000000000
:COC
FOUND
(00000400)
00000000000000000000100000000000
:IMC
FOUND
(00000800)
00000000000000000001000000000000
:SPROCS
FOUND
(00001000)
00000000000000000010000000000000
:BLIMIT
FOUND
(00002000)
00000000000000000100000000000000
:0 LIMIT
FOUND
(00004000)
*
00000000000000001000000000000000
:UTM
FOUND
(00008000)
*
*
00000000000000010000000000000000
:OSTDLB
FOUND
(00010000)
00000000000000100000000000000000
:PART
FOUND
X 120000 1
*
00000000000001000000000000000000
:ELIMIT
FOUND
X 140000 1
*
00000000100000000000000000000000
BATCH HEADER FLAG
*
*
*
00000000001000000000000000000000
ON-LINE HEADER FLAG
TYPES MISSING>
01000000000000000000000000000000
: DEVICE CC JUST PROC
(40000000)
10000000000000000000000000000000
END OF CCs < EOF >
(80000000)
11
CHANFLG
EQU
P2FLAGS+1
CHAN CC ENCOUNTERED
STDFLG
EQU
P2FLAGS+2
STDLB CC BEl NG PROCESSED
P2TYPE
EQU
P2FLAGS+3
PASS2 TYPE (BPM, UTMBPM)
OSTD:STD
EQU
P2FLAGS+4
STDLB/OSTDLB FLAG
P2CNTRS
EQU
P2FLAGS+5
BASE OF PASS2 COUNTERS
RCHAN
EQU
P2CNTRS+O
II CHAN CCIS
SDEVFLG
EQU
P2CNTRS+1
II SYMBIONT DEVICES
P2CORE
EQU
P2CNTRS+2
BASE OF PASS2 CORE VALUES
DYSTORND
EQU
P2CORE+O
END OF AVAILABLE CORE FOR PASS2
SAVEPAGE
EQU
P2CORE+1
II PAGES OF CORE, 1ST PAGE ADDR.
DEVS
EQU
P2CORE+3
DP/7T/9T/O
COCS
EQU
P2CORE+4
COC ADDRESS NOD
SWAPBTM
EQU
P2CORE+8
SWAPPER FLAG FOR BTM
AVTBLGTH
EQU
P2CORE+9
AVRTAB LE SIZE
LORBIN
EQU
P2CORE+10
LOW RBT OCT INDEX
HIRBIN
EQU
P2CORE+11
HIGH RBT OCT INDEX
IIRBTS
EQU
P2CORE+ 12
II RBTs DEFINED
II PRDP
EQU
P2CORE+13
II PRIVATE PACKS DEFINED
DUALFLG
EQU
P2CORE+14
DUAL FLAG
SCYLPSA
EQU
P2CORE+15
II GRAN/PHYCYL; II PHYCYL
BIG9FLG
EQU
P2CORE+16
BIG9 FLAG FOR UTS
SWAPUTS
EQU
P2CORE+17
DPSWAPPER FOR UTS
P2DYNEND
EQU
P2CORE+18
END BASIC PASS2 STACK
The stack data area is pointed to by R3. That is, to obtain the contents of the word "BUFFER" one executes:
LW, REG
BUFFER, R3
This area is initialized to all zeros except that XBUFFER is filled with blanks and a seven word PLIST is moved to
FETCHLST.
Once the data area has been initial ized P2CCI reads the "type" field from the! PASS2 card and tests it for validity.
If it is not valid P2CCI prints an error message and does an ERROR exit to the monitor, otherwise the type is stored
in P2TYPE and P2CCI begins to read cards.
When P2CCI reads a card, a check is first made to determine whether the card was an end of data. If it was, actions
discussed below are taken. Otherwise the card is checked to see if it is out of order. A :CHAN card must precede
any :DEVICE card; and all :CHAN, :DEVICE, :STDLB, and :OSTDLB cards must precede :SDEVICE, and :MONITOR
or :UTM cards. In addition, :UTM must precede :SPROCS and :IMC. Also, most cards may appear only once. If
a card is illegal or out of order, it is listed with appropriate error information and P2CCI continues.
If the card is found acceptable it is used to obtain an index to the table of PASS2 processor overlays. This index and
the PASS2 type index are used to decide the name of the required overlay which is segloaded and entered. Illegal
control commands for the type of PASS2 being performed are detected at this stage. (See Table 2-2.) When the
processor overlay completes itls operations it returns to P2CCI which reads another card and calls another processor
overlay. Some processor overlays read cards internally for themselves.
12
When an end of data is found P2CCI prints a I ist of PASS2 commands that have not been encountered and
exits to the monitor.
2. 1 .9 P2CCI MESSAGES
. • • PASS2 eCI IN CONTROL. •.
***U NKNOWN TYPE
a !PASS2 command has called P2CCI •
the type field of the ! PASS2 command was not BP(M) or UT(MBPM).
***U NKNOWN OR MISPLACED CC
the conditions for a CC discussed above were not met.
***CC IGNORED, PREVIOUS CC OF THIS TYPE ENCOUNTERED
a CC which can appear only once
has been dupl icated.
***CC'S NOT ENCOUNTERED, BUT POSSIBLY NEEDED
heading for a list of control commands legal
for this type PASS2 that were not processed. This list is printed just before P2CCI exits.
•• . END OF PASS2 .•.
P2CCI has completed its task and exits .
***CANNOT READ CONTINUATION RECORD-PASS2 ABORTED
***UTM MUST PRECEDE SPROCS/IMC--CC IGNORED
self-explanatory
:SPROCS or :IMC has just been read but :UTM
has not yet been processed.
2. 1. 10 Internal Subroutines
Several subroutines internal to P2CCI and used by it and/or the PASS2 processors are discussed below.
CCLOAD
CCLOAD is used by P2CCI to load processors. It is called by the following sequence:
BAL, SR4
CCLOAD
TEXTC
"Segname
II
CCLOAD does a segload CAL on the name addressed by SR4 then converts the byte count of the "segname" to
words, adds this to SR4 and exits through SR4.
LISTIT
LISTIT is called to list the current control command by:
BAL, SR4
LISTIT
It checks to see if the CC has already been listed and exits if so.
a print CAL through M.:LL.
PRINTMSG
PRINTMSG is usually called in the following form:
A
BAL, SR4
A
BAL, SR3
PRINTMSG
TEXTC
'MESSAGE'
Effectively it is:
PRINTMSG M:PRINT
B
(MESg, *SR3)
*SR4
13
If not, it marks the CC as listed and does
READCC
READCC is ca lied by:
BAL, SR4
READCC
It BAL IS to LISnT to I ist the last CC if it has not been listed. Then it reads the next card. If the card begins
with a colon, READCC exits. If the first character is a "_" it is listed (LISTIT) and the next card read. If
neither, the first character of the card is printed (LISnT) with error information and the next card is read. The
process continues until a
I: I
card has been found.
RDINCFCH
RDINCFCH is called by :
BAL, R4
It BAL
IS
RDINCFCH
to READCC to read a card then to NAMSCAN to get the first field. If the field is not a legal name
it prints the card (LISTIT) with error information and branches to the beginning of P2CClis card checking
routine.
Otherwise RDINCFCH moves the first 4 bytes of the name to R1 and exits.
OUTLLERR
OUTLLERR is ca lied by:
BAL, SR4
OUTLLERR
It lists the current control command (LISnT) then obtains the current character position of the scan routines.
It then builds a line for printing that is blank except for a 1$1 at that character position, prints it, and exits.
ABNRETUR
ABNRETUR is entered when an error or abnormal condition is encountered on a read from the C device. If the
card being read is the !PASS2 command it error exits. Otherwise it assumes the abnormal was an end of file and
sets a flag to this effect. AB\NRETUR then determines which processor was doing the read and returns control to
that processorls end of data handl ing routine.
SYNTAX, COREALLOC, MODGEN and WRITELM are used by PASS2 overlays to process their control
commands, allocate core for building a load module, creating DEFs and REFs, and writing the load module.
A detailed discussion is found in Chapter 6.8 - 6. 11.
14
Table 2-2.
PASS2 Control Commands
PROCESSOR CALLED
CONTROL COMMAND
:STDLB
BPM
UBCHAN
UTS
UBCHAN
:CHAN
UBCHAN
UBCHAN
:DEVICE
*ILLEGAL*
*ILLEGAL*
:SDEVICE
SDEVICE
SDEVICE
:MONITOR
XMONITOR
*ILLEGAL*
:DLIMIT
XLIMIT
*ILLEGAL*
:ABS
ABS
*ILLEGAL*
:FRGD
FRGD
*ILLEGAL *
:INTLB
*ILLEGAL*
*ILLEGAL*
:BTM
BTM
*ILLEGAL*
:COC
*ILLEGAL*
P2COC
:IMC
*ILLEGAL*
IMC
:SPROCS
*ILLEGAL*
SPROCS
:BLIMIT
*ILLEGAL*
XLIMIT
:OLIMIT
*ILLEGAL*
XLIMIT
:ELlMIT
*ILLEGAL*
X LIMIT
:UTM
*ILLEGAL *
XMONITOR
:OSTDLB
*ILLEGAL *
UBCHAN
:PARTITION
*ILLEGAL *
XPART
NOTES
-
15
READ BY UBCHAN
READ BY FRGD
2. 1. 11 Flow Charts
Page 1
Move data
area to
temp stack
Fill in fetch
PLIST and blank
buffers
' ••••• PASS2
CCI in
control ••••
Read IPASS2
"type II
command
NAMSCAN
Get "typell
field
Get type index
BPM= 0
UTS = 2
(LISTIT Pg. 5)
fRINTMSG Pg. 6)
(OUTLLERR Pg. 8)
Figure 2-1. Flow Diagram of P2CCI
16
Pg. 2
Read a card
Pg. 7
yes
(PRINTMSG Pg. 6)
Pg. 4
(USTIT Pg. 5)
********
:GARBAGE
***Unknown
yes
Get overlay
name for
this CC
Get overlay name
for this
PASS2 TYPE2
no
Figure 2. 1. Flow Diagram of P2CCI (cont.)
17
Pg. 3
Test and
set flag for
this CC found
no
yes
Reads
Cards
:XXX ***CC
$
ignored previous
of this type
ncountered.
Pg. 2
Figure 2-1 Flow Diagram of P2CCI (Cont.)
18
Pg. 4
yes
(PRINTMSG Pg. 6)
*** CCIS not
encountered but
possibly needed.
(PRINTMSG Pg.6)
.----~
Search I ist of
CC IS for th is
type PASS2
End of
List
••••• End of
PASS2 ••••
yes
no
Release
Stack area
:CCNAME
(PRINTMSG Pg. 6)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _ . _ - - - - - -
Figure 2-1. Flow Diagram of P2CCI (Cont.)
19
-<
Pg. 5
Segload name
addressed by
SR4
convert ~yte
count to words
Add count
to SR4
Print image of
current CC and set
as listed
Figure 2-1
Flow Diagram of P2CCI (Cont.)
20
Pg.6
M:PRINT
(MESS, *SR3)
List last CC
Pg. 5
r - - - -.......- -....
OUTLLERR
Read a Card
Display error
information
Pg. 7
Set
current character
position
no
Figure
2-1
Flow Diagram of P2CCI
21
(Cont.)
I
Pg. 7
Read a Card
g. 6
LIST CC
NAMSCAN
Check first
field for
legal name
Ie al
I--..:..=.o::~-w
Get current
character
position
First 4
dcracters of
field to R1
(PRINTMSG Pg. 6)
(OUTLLERR Pg. 7)
Build blank line
with
:XfX
$
at CCP
***
unknown or
misplaced CC
Print it
Set EOF
found flag
Processor 's
EOF Routine
Figure 2-1
Flow Diagram of P2CCI
22
(Cont.)
2.2 UBCHAN
2.2. 1 Purpose
To process the PASS2 commands: :CHAN, :DEVICE, :STDLB and :OSTDLB (UTS) and build the load module lOT ABLE
containing the I/O tables for the monitor being generated. M:HGP load module is also generated containing the
HGPs. The keyed file SPEC:HAND containing the device handler names is also built.
2.2.2 Usage
B
CHAN (BPM/BTM)
B
UBCHAN (UTS)
with R1
= Type of control
command
1 for :CHAN
= 4 for
:STDLB
= X 11 0000 1 for :OSTD LB
:DEVICE cards require a preceding :CHAN and are aJways read by UBCHAN itself
= address of temp stack pointer
R3 = base address of data in temp stack
R7 = address of contro I card P LIST
RO
2.2.3 Input
Control card images (:CHAN, :DEVICE, :STDLB, :OSTDLB)
2.2.4 Output
Display of control information to LL device
IOTABLE load module (See Table 2-3)
M:HGP load module contains all the HGPs
SPEC:HAN D keyed fi Ie (see Chapter 6.3 for detai Is).
23'
1
Table 2-3. 10TABLE Load Module
Entry Size (Words)
Length
Contents or Value
Target System
10TABLE
(CLIST)
Variable
Variable
CLISTS for device Handlers
(l/device)
Both
DCTl
1/2
#DEVICES+l
Device address (X'ndd ' )
Both
DCT2
1/4
#DEVICES+l
CIT index
Both
DCT3
1/4
#DEVICES+l
Bits 0-1 I/O operation
Bits 6-7 access control key
Both
DCT4
1/4
#DEVICES+l
Device type index
Both
DCT5
1/4
#DEVICES+l
0
Both
DCT6
1/4
#DEVICES+l
0
Both
DCT7
1/2
#OEVICES+l
OW address of CLIST for devi ce
Both
DCT8
1
#OECIVES+l
REF to Hand lerl name
Both
DCT9
1
#OEVICES+l
REF to Handler2 name
Both
DCT10
1/2
#OEVICES+l
0
Both
DCT11
1
#OEVICES+l
0
Both
DCT12
1
#0 EVIC ES+l
0
Both
DCT13
2
#OEVICES+l
0
Both
DCT14
1/4
#OEVICES+l
o or
DCT15
1/4
#OEVICES+l
0
Both
DCT16
2
#OEVICES+l
TAB VYNDD
for Remote Batch de vi ces
N/L * RBndd
UTS
N/L !!VYNDD
BPM/BTM
Label
1. Tables
i
1 if dedicate
Both
DCT17
1/2
#OEVICES+l
0
Both
DCT18
1/4
#OEVICES+l
0
Both
DCT19
1/4
#OEVICES+l
0
Both
DCT20
1/4
#OEVICES+l
0
Both
DCT21
1/2
#OEVICES+l
0
Both
DCT22
1/4
#OEVICES+l
contai ns di sk type index
0= not disk device
1 = 7204, 2 = 7232, 3 = 7212
4 = 7242, 5 = 7260, 6 = 7265
UTS
24
I
,
Table 2-3. IOTABLE Load Module (cant.)
Labe'l
Entry Size (Words)
Length
Contents or Value
Target System
DCT23
1/2
#DEVICES+l
o if entry not disk type device
otherwise, contains displacement in words from HGP (DEF)
to the in core HGP for the specific device.
UTS
OCT lPt
1/2
#DEVICES+l
X 'ndd I from OCT 1
Both
OCT lA t
1/2
#DEVICES+l
If pooled devi ce X 'ndd I where
Both
X'nd' specifies the secondary
lOP/controller field from DUAL
option; if devi ce not pooled
X'ndd' from DCTL
CITl
1/4
#CHAN+l
0
Both
CIT2
1/4
#CHAN+l
0
Both
CIT3
1/4
#CHAN+l
0
Bit 4 = 1 if DUAL for given
entry
Both
CIT4
1
#CHAN+l
0
Both
CIT5
1/4
#CHAN+1
0
Both
tt
1/4
#CHAN+l
0
Both
OPLBTBL 1
1/2
#OPLABELS+1
Text of OPLABEL
Both
OPLBTBL2
1/4
#OPLABELS+1
OCT index
Both
OPLBTBL3
1/4
#OPLABELS+1
OCT index
Both
OPLBTBL4
1/4
#OPLABELS+1
Bits 0-1 similar to DCT3
I/O flags
Both
OPLBTBL5
1/4
#OPLABELS+1
OCT index for OSTDLB
UTS
TYPMNE
1/2
#Device type
mnemonics+l
Text of Mnemonic
Both
AVRTBL
2
#r ape de vi ces
+DP
o for TAPE; for DP second word
Both
AVRID
1/2
# of tape devices+DP
0
UTS
SOL ICIT
1/2
# of tape devices+DP
0
UTS
AVRNOU
1/2
# of tape devices+DP
0
UTS
CIT6
Bit 0 = Public;Private
Bits 16-31 HGP displacement
tThese tables generated only if DUAL specified on any :CHAN command, if not then labels equated to DCTL
ttCIT6 generated only if DUAL specified on any :CHAN command, if not, CIT6 is equated to CITS.
25
Table 2-3. 10TABLE Load Module (cont.)
Label
Entry Size (\Nords)
Length
Contents or Va lue
Target System
AVRSIO
1
#tape devi ces
0
UTS
HGP
variable
variable
HGPS (see Figure 2-8)
Headers of public HGPs and
HGPs for private dp
BPM/BTM
UTS
ABSFOLL
1
1
ABSF disk address lower limit
BPM/BTM
ABSFOC
1
1
ABSF next disk address
available
BPM/BTM
ABSFOUL
1
1
ABSF disk address upper limit
BPM/BTM
ABSFOISC
S
S
Word O=OCT index of ABSF di sk
Word 1 = 55 of ABSF disk
Word 2 = NSPT of ABSF disk
Word 3 = Max bytes perl/O call
Word 4 = Max sectors per
I/O call
BPM/BTM
BCHKLl
1
1
BCHK disk address lower limit
BPM/BTM
BCHKUL
1
1
BCH K disk address upper limit
BPM/BTM
BCHKOISC
S
S
Word 0= OCT index of BCH Kdisk
Word 1 = SS of BCHK disk
Word 2 = NSPT or BCHK disk
Word 3 = Max bytes per I/O ca II
Word 4 = Max sectors per
I/O call
BPM/BTM
BCHKSIZ
1
1
Si ze (words) of BCH K area
BPM/BTM
BCHKFLG
1
1
0
BPM/BTM
BCHKCNT
1
1
0
BPM/BTM
10CTQ
variable
#OEVICES+
#T ape+#OP+3
Word 0-1 stack pointer OW
remainder is stack
Both
MB:GAM 1t
1/4
#of disks with
PSA
Granule address mask
UTS
1/4
#of disks with
PSA
(SGP words/granu Ie position)-l
UTS
1/4
#of disks with
PSA
Shift for GSP index to granule
position
UTS
1/4
#of disks with
PSA
Shift for track to granule
address
UTS
1/4
#of disks with
PSA
Shift for disk address to
track #
UTS
MB:GAM2
t
t
MB:GAM3
MB:GAM4
MB:GAMS
t
t
tEntries for these tables are determined by the disk type and number of tracks defined on the given disk. If
the swapping device is a disk pack pseudo - 7232 type entries are made. See 2.2.7. 1 for complete discussion.
26
Table 2-3. IOTABLE Load Module (cont.)
Label
Entry Size (Words)
Length
Contents or Value
Target System
MB:GAM6t
1/4
#of disks with
PSA
Sector address mask
UTS
1/4
#of disks with
PSA
Granules/rrack
UTS
1/4
#of disks wi'th
PSA
Shift for granu Ie position
SGP index
UTS
MB:DWTt
1/4
#of disks with
PSA
DW size of SGP
UTS
MB:SPACEJITt
1/4
#of disks with
PSA
Increment for spacing users
around disk
UTS
MB:SDI
1/4
#of disks with
PSA
Disk DCT index
UTS
1
#of disks with
PSA
Highest valid track
UTS
1
#of disks with
PSA
Highest sector position
UTS
M:ADRINCRt
1
#of disks with
PSA
Increment to get from last
Sector/Band to first sector
next Band
UTS
M:S'vVPEND
1
#of di sks with
PSA
Address of the fi rst sector on '
the next BAND /r RAC K/CYLI
following the PSA area data is
in the format returned by a
sense command
UTS
M:FREE#GRAN
1
#of di sks with
PSA
# of unused granu les on swappi ng devi ce, the fi rst devi ce
entry = 0
UTS
M:SWAPD
1
#of disks with
PSA
Disk device address
UTS
M:SNSDA
1
#of disks with
PSA
0
UTS
M:HLTIC
1
# of disks with
PSA
TIC to sense CDW
UTS
M:SGP
1
#of disks with
WA of granule pools (see Figure 2-8. 1 for format of granule
pools)
UTS
M:SBAND
1
#of disks with
PSA
0
UTS
MB:GPT
t
MB:SWAPS
t
M:GATLIM
t
M:GASLIM
t
t Entries for these tables are determined by the disk type and number of tracks defined on the given disk. If
the swapping device is a disk pack pseudo - 7232 type entries are made. See 2.2.7.1 for complete discussion.
27
Table 2-3. IOTABLE Load Module (cont.)
Label
Entry Size (Words)
Length
Contents or Va lue
Target System
M:JITPAGE
1
#of discs with
PSA
0
UTS
M:CLBGN
1
#of discs with
PSA
0
UTS
M:WCKBCL
1
#of discs with
PSA
0
UTS
M:WCKECL
1
#of discs with
PSA
0
UTS
MH:CLEND
1/2
#of discs with
PSA
0
UTS
MH:LDA
1/2
#of discs with
PSA
0
UTS
MB:#RTRY
1/4
#of discs with
PSA
0
UTS
MB:SFC
1/4
#of discs with
PSA
0
UTS
S:DP
1
1
1 if disc pack is swapping devi ce, 0 if RAD is swapping
device
UTS
S:CYLSZ t
1
1
The number of granules/physical
cylinder
UTS
RBLIMS
2
2
If Remote Batch devices defined:
word 0 = Lowest RB DCT index
word 1 = Highest RB DCT index
Both
If no Remote Batch devi ces
defined:
word 0 = DCTSIZ+l
word 1 = DCTSIZ
RB:FLAG tt
WARBFLAG
RBH:ACK
tt
RBB:SPC tt
t
tt
1
Highest RBT
DCTl index
Each RBT entry = 0 if HALF duplex Keyword, =X '8000' if FULL
dup lex Keyword, defau It is HA LF
Both
1
1
Address of table points to first
s,ignificant word of RB:FLAG
BPM/BTM
1/2
Highest RBT
DCT 1 index
Each RBT entry
=0
Both
1/4
Highest RBT
DCTl index
Each RBT entry
=0
Both
Generated only when swapping device is disc pack.
ttGenerated only if Remote Batch devices defined.
RBT DCTl indices.
Significant entries in tables only in the range of
28
Table 2-3. lOT ABLE Load Module (cont.)
Entry Size (Words)
Length
Contents or Value
Target System
1/4
Highest RBT
DCT1 index
Each RBT entry = 0
Both
1/4
Highest RBT
DCll index
Each RBT entry = X'50'
UTS
1/4
Highest RBT
DCll index
Each RBT entry WIDTH
parameter on PAPER
Keyword option or default of X'80'
UTS
-
Total words of HG Ps
BPM/TBM
DCN
-
-
DCTX of first disk
UTS
DCTSIZ
-
-
#of entries in DCT tables
Both
CITSIZ
-
-
#of entries in CIT tables
Both
NTYPMNE
-
-
#of type mnemon ics
Both
BATAPE
-
-
DCTX of first tape or disk
pack (BPM)
Both
NBATAPE
-
-
- BATAPE
Both
PSA
-
-
PSA size in tracks
BPM/BTM
OPLBTSIZ
-
-
#of entries in op label table
Both
AVRTBLSIZ
-
-
#of tape entries in AVRTBL
Both
AVRTBLNE
-
-
#of entries in AVRTBL (includes
tape+DP)
Both
LSWAP
-
-
#of devices with PSA-1
UTS
-
-
#granules/logical cylinder
BPt·II/BTM
If CDP:NGC =30, value is 399
((12000/CDP:NSC) -1)
BPM/BTM
Label
RBB:SFC
t
RBB:CPZ t
RBB:LPZ
t
2. Absolute DEFs
HGPSIZE
CDP:NGC
CDP:NCYL
If CDP:NGC =2, value is5998
(( 12000/CDP:NGC)-2)
BCRBFLAG t
-
-
Length in bytes of significant
words of RB: FLAG
BPM/BTM
NUMRBTS
-
-
#RBTs defined
BPM/BTM
SC2SK tt
-
-
((#granules per physical
cylin-2)/4) * 10
UTS
tGenerated only if Remote Batch devices defined. Significant entries in tables on Iy in the range of RBT DCT 1 indices.
ttGenerated only when swapping device is disk pack.
29
2.2.5 Subroutines Used
NAMSCAN}
CHARSCAN
CHSTSCAN Character scanning routines
HEXSCAN
ABNRETUR
CLEARDYN
OUTLLERR
Card reading and message printing routines
PRINTMSG
RDINCFCH
MODIFY
MODGEN
l
.
Load module mampulator
2.2.6 Data Base
2.2.6.1 Temp Stack
When UBCHAN is called it allocates temp stack area as in Table 2-4. PLISTS are moved into position and
pointers and addresses initialized via R3. The area from BASESTAC to P2DYNEND has already been initialized
by P2CCI. See discussion of P2CCI for descripti on of this part of data base (Table 2-1).
Table 2-4. PASS2 Stack Allocation
#TYPMNE
EQU
64
TYPMNLNG
EQU
#TYPMNE
#TYPMNE entries
TYPMNEAD
EQU
P2DYNEND+1
Pointer to TYPMNE Table (=TYPMNE)
TYPMNESZ
EQU
P2DYNEND+2
#Entries in TYPMNE Table (CURRENT)
TYPMNE
EQU
P2DYNEND+3
TYPMNE Table (1/2 word/entry)
TYPMNEND
EQU
P2DYNEND+3+
(#TYPMNE/2)
******#Entries in TYPMNE Table (Max)
*******
#STDLB
End of TYPMNE Table
****
EQU
128
******#Entries in STDLB Table (Max)
*
* This table contains both STDLB & OSTDLB Info.
STDLCDPT
EQU
TYPMNEND+O
STDLADDR
STDLeDl
EQU
EQU
TYPMNEND+1
TYPMNEND+2
30
Pointer to next STDLB Table entry
Pointer to STDLB Table (=-STDLCD 1)
STDLB Table (2 word/entry)
Table 2-4. PASS2 Stack Allocation (cont.)
STDLEND
EQU
TYPMNEND+2
+ (#STDLB*2)
End of STDLB Table
****
******
#CHAN
EQU
32
CHANPTR
EQU
STDLEND+O
Pointer to next CHAN Table entry
CHANADDR
EQU
STDLEND+1
Pointer to CHAN Table (=CHANTBL)
CHANTBL
EQU
STDLEND+2
CHAN Table (5 wrds/entry)
CHANEND
EQU
STDLEND+2
+ (#CHAN*5)
******#Entries in CHAN Table (Max)
End of CHAN Table
#DEVICE
EQU
96
DEVICDPT
EQU
CHANEND+O
Pointer to next DEVICE Table entry
DEVIADDR
EQU
CHANEND+-1
Pointer to DEVICE Table (=OEVICD1)
DEVICD1
EQU
CHANEND+2
DEVICE TABLE (4 wrd/entry)
DEVIEND
EQU
CHANEND+2
+ (#DEVICE*4)
DEVIXTRA
EQU
******#Entries in DEVICE Table (f.Aax)
End of DEVICE Table
< Extra
22
*******
work area
>
****
#HANDLER
EQU
96
HANDTADR
EQU
DEVIEND +
DEVIXTRA+O
Pointer to HANDLER Table
(=HANDTABL)
HANDTABL
EQU
HANDTADR+1
HANDLER Table (4 wrds/entry)
HANDEND
EQU
HANDTADR+1
+ (#HANDLER*4)
******#Entries in HANDLER Table (Max)
End of HANDLER Table
****
*******
#OPLB
EQU
128
OPLBADDR
EQU
HANDEND+O
Pointer to OPLB Table (=OPLBTAB1)
OPLBSIZE
EQU
HANDEND+l
#Entries in OPLB Table (current)
OPLBTAB1
EQU
HANDEND+2
OPLB Table (1/2 word/entry)
OPLBEND
EQU
HANDEND+2
+ (#OPLB/2)
******#Entries in OPLB Table (Max)
End of OPLB Table
****
*******
#DCDP
EQU
32
DCINPNTR
EQU
OPLBENDtO
Pointer to next DC/DP/CM Table entry
DCINADDR
EQU
OPLBEND+l
Pointer to DC/DP/CM TBL
(=OCINTAB)
DCINTABL
EQU
OPLBEND+2
DC/DP/CM Table (21 words/entry)
DCINEND
EQU
OPLBEND+2
+ (#DCDP*21)
******#Entries in DC/DP/CM Table (Max)
*******
End of DC/DP/CM Table
****
DCTlPTR
EQU
DCINEND+O
Pointer to DCTl Table
DCT2PTR
EQU
DCINEND+l
Pointer to DCT2 Table
31
Table 2-4. PASS2 Stack Allocation (cont.)
DCT3PTR
EQU
DCINEND+2
Pointer to DCT3 Table
DCT4PTR
EQU
DCINEND+3
Pointer to DCT4 Table
DCT5PTR
EQU
DCINEND+4
Pointer to DCT5 Table
DCT6PTR
EQU
DCINEND+5
Pointer to DCT6 Table
DCT7PTR
EQU
DCINEND+6
Pointer to DCT7 Table
DCT8PT R
EQU
DCINEND+7
Pointer to DCT8 Table
DCT9PTR
EQU
DCINEND+8
Pointer to DCT9 Table
DCT10PTR
EQU
DCINEND+9
Pointer to DCT10 Table
DCTllPTR
EQU
DCINEND+l0
Pointer to OCT 11 Table
DCT12PTR
EQU
DCINEND+11
Pointer to OCT 12 Table
DCT13PTR
EQU
DCINEND+12
Pointer to DCT13 Table
DCT14PTR
EQU
DCINEND+13
Pointer to OCT 14 Table
DCT15PTR
EQU
DCINEND+14
Pointer to DCT15 Table
DCT16PTR
EQU
DCINEND+15
Pointer to OCT 16 Table
DCT17PTR
EQU
DCINEND+16
Pointer to OCT 17 Table
DCT18PTR
EQU
DCINEND+17
Pointer to DCT18 Table
DCT19PTR
EQU
DCINEND+18
Pointer to DCT19 Table
DCT20PTR
EQU
DCINEND+19
Pointer to DCT20 Table
DCT21PTR
EQU
DCINEND+20
Pointer to DCT21 Table
DCT22PTR
EQU
DCINEND+21
Pointer to DCT22 Table
DCT23PTR
EQU
DCINEND+22
Pointer to DCT23 Table
DCT1PTR
EQU
DCINEND+23
Pointer to OCT lP Table
DCT1APTR
EQU
DCINEND+24
Pointer to OCT lA Table
DCTLAST
EQU
DCINEND+25
End OCT Tables
NDCTS
EQU
DCTLAST - DCT1PTR
*******
H OCT Tables
****
CIT1PTR
EQU
DCTLAST+l
Pointer to CIT 1 Table
CIT2PTR
EQU
DCTLAST+2
Pointer to CIT2 Table
CIT3PTR
EQU
DCTLAST+3
Pointer to CIT3 Table
CIT4PTR
EQU
DCTLAST+4
Pointer to CIT4 Table
CIT5PTR
EQU
DCTLAST+5
Pointer to CIT5 Table
CIT6PTR
EQU
OCT LAST +6
Pointer to CIT6 Table
CIT LAST
EQU
DCTLAST+7
NCITS
EQU
CITLAST - CIT lPTR
End of CIT Tables
*******
HeIT Tables
****
TYPINDX
DCTSIZE
EQU
EQU
CITLAST+2
Type Index to Reorder DCTs
H Entries in OCT Table
CLISTPTR
EQU
CITLAST+3
Pointer to CLIST Table
PACKRPTR
EQU
CLISTPTR
CITLAST+l
End of Tables to be packed
*******
****
32
Table 2-4.
PASS2 Stack Allocation (cont.)
HEADADDR
EQU
PACKRPTR+l
Pointer to HEADER
TREEADDR
EQU
PACKRPTR+2
Pointer to TREE
RDEFADDR
EQU
PACKRPTR+3
Pointer to REF ;OEF Stack
EXPRADDR
EQU
PACKRPTR+4
Pointer to Expr. Stack
RDICADDR
EQU
PACKRPTR+5
Pointer to REL' DICT' 0
CLISTADR
EQU
PACKRPTR+6
Pointer to SECT' 0
HEADLNG
EQU
PACKRPTR+7
HEADER
SIZE
TREELNG
EQU
PACKRPTR+8
TREE
SIZE
RDEFLNG
EQU
PACKRPTR+9
REF ;nEF Stack size
EXPRLNG
EQU
PACKRPTR+lO
Expr' Stack SIZE
RDICLNG
EQU
PACKRPTR+ 11
REL' DICT' 0
SIZE
SECTOLNG
EQU
PACKRPTR+12
SECT' 0
SIZE
*******
****
CLISWDCT
EQU
SECTOLNG+1
lIwords in all command lists
HGP1PTR
EQU
SECTOLNG+2
Pointer to next HGP Table entry
HGP1ADDR
EQU
SECTOLNG+3
Pointer to HGP Table Base
LASTHGP1
EQU
SECTOLNG+4
Pointer to base of last HGP Table
OPLBT lAD
EQU
LASTHGP1+1
Pointer to OPLBT1 Table
OPLBT2AD
EQU
LASTHGP1+2
Pointer to OPLBT2 Table
OPLBT3AD
EQU
LASTHGP1+3
Pointer to OPLBT3 Table
OPLBT4AD
EQU
LASTHGP1+4
Pointer to OPLBT 4 Table
OPLBT5AD
EQU
LASTHGP1+5
Pointer to OPLBT5 Table
TYPMNPNT
EQU
LASTHGP1+6
Pointer to TYPMNE Table
AVRTBLAD
EQU
LASTHGP1+7
Pointer to AVR Table
AVRTBLSZ
EQU
LASTHGP1-tB
AVF Table SIZE
FDABCHAD
EQU
LASTHGP1+9
Pointer BCH K/ABSF Info.
FDABCHSZ
EQU
18
ABSFDLL
EQU
FDABCHAD+1
ABSF disk address lower limit
ABSFDC
EQU
FDABCHAD+2
ABSF Current disk address
ABSFDUL
EQU
FDABCHAD+3
ABSF disk address upper limit
ABSFDISC
EQU
FDABCHAD+4
ABSF DCT 1 Index
BCHKLL
EQU
FDABCHAD+9
BCHKUL
EQU
FDABCHAD+l0
BCHKDISC
EQU
FDABCHAD+ll
BCHKSIZ
EQU
FDABCHAD+16
#SWAPDEVS
EQU
BCHKSIZ+1
Number of disks with PSA
SWAPPTR
EQU
BCHKSIZ+2
Pointer to SWAPPER Table area
SOLICIT
EQU
BCHKSIZ+3
Pointer to SOLICIT Table area
***
33
Table 2-4. PASS2 Stack Allocation (cont.)
AVRIDARA
EQU
BCHKSIZ-t4
Pointer to AVRID Table area
AVRSID
EQU
BCHKSIZ+5
Pointer to AVRSID table
DCN
EQU
AVRSID+l
Index into DCTl of l-ST DC;t>P/CM
BAT APE
EQU
DCN+l
Index into OCT 1 of l-ST 9T/lT
or DP (BPM)
NBATAPE
EQU
DCN+2
Compliment of BAT APE
PSA
EQU
DCN+3
Perm Storage Size (T racks)
****
******
LMODPLIS
EQU
PSA+l
Master PLIST
EXPRCALL
EQU
PSA+9
Expression (and MODGEN) PLIST
HEAD
EQU
PSA+19
Load Modu Ie HEAD
TREE
EQU
PSA+31
Load Module TREE
MAXOO
EQU
PSA+43
End of SECT 00
RDEFCALL
EQU
PSA+44
REF PUST
DEFCALL
EQU
RDEFCALL
DEF PUST
DICTCALL
EQU
PSA+52
Relocation Dictionary PUST
TREETOP
EQU
PSA+57
End of PLISTS
****
*******
RBLIMSPTR
EQU
TREETOP+l
Pointer to RBLIMS Table
RBFLAGPTR
EQU
TREETOP+2
Pointer to RB:FLAG
RBHACKPTR
EQU
TREETOP+3
Pointer to RBH:ACK
RBBSPCPTR
EQU
TREETOP+4
Pointer to RBB:SPC
RBBSFCPTR
EQU
TREETOP+5
Pointer to RBB:SFC
RBBCPZPTR
EQU
TREETOP+6
Pointer to RBB:CPZ
RBBLPZPTR
EQU
TREETOP+7
Pointer to RBB:LPZ
****
******
STACKEND
EQU
TREETOP+8
End of Stack
*******
****
SDBEGIN
EQU
PACKRPTR
Base of avai lable stack for SDEVICE
SDVEND
EQU
DYSTORND
End of avai lable stack for SDEVICE
******************** "*********** ********************* **************************************
34
2.2.6.2 Preliminary Tables
The WBCHAN processor contains several tables necessary to its operation. They are described below:
TYPCHARS - This is a list of the type mnemonics (YY or YYNDD) for standard devices. It is moved to the
temp stack at TYPMNE before UBCHAN processing starts, and may be extended during processing as new types
of devices are defined. The index into this table is used to index other tables and is referred to as the
IIdevice index ll •
HANDNAME - This table, ihdexed by device index, is a list of default handler names for standard
devices.
IOFLOWACT - This table, indexed by device index, contains a code for the standard I/O flow of standard
devices. INPUT = X 140 ' OUTPUT = X '80 ' I/O = X1C0 1•
CLISTDAT - This table, indexed by device index, contains the standard CLIST length for standard devices.
DCDPCM - This table is a list of disc types.
DEFAULTS - This table, parallel to DCDPCM, contains the defaults of SIZE, SS, and NSPT for each disc
type.
OPLBCHAR - This table is a list of the standard oplabels. It is moved to temp stack at OPLBTAB1 before
UBCHAN processing begins and may be expanded as oplabels are defined during processing.
OPFLOWACT - This table, parallel to OPLBCHAR, contains the flow codes (as in IOFLOWACT above)
for each oplabel.
STANDARD - This table contains the default assignment for all standard labels, both batch and on-I ine.
ABSFX1 and ABSFX2 - These are parallel tables containing values representing maximum bytes per I/O call
to NEWQ used in generating words 3 and 4 in the table ABSFDISC and BCHKDISC.
2.2.6.3 Intermediate Tables
As control commands are processed UBCHAN stores its information in intermediate tables in the temp stack.
This is required because in many cases final tables cannot be built until all the commands have been read.
The intermediate tables are described below.
CHANTBl - The 5 word entries in this table contain device information for dual channel access and the start
and end address for the DEVICD1 entries for the devices on this channel.
(Described in Figure 2-2).
DEVICD1 - The entries in this table begin as 9 words and contain device information (Figure 2-3). later the
size of each entry is reduced to 3 words. (Figure 2-4). The rest of the information is moved to the
DCINTBl entry if this device was a disc. One DEVICD1 entry is built for each :DEVICE command processed.
DCINTBL - The 21 word entries (only 5 of which are used) in this table contain disc information. It is moved
to this table from the DEVICD1 table entry. One DCINTBL entry is formed for each :DEVICE command that
defines a disc system (DC, DP, CM). (Described in Figure 2-5).
35
OPLBTABl - This table contains a list of monitor operational labels in text. It initially contains the
standard oplabels and others are added as they are defined with :STDLB and :OSTDLB commands.
STDLCD1 - This table contains information defining operational labels derived from :STDLB and OSTDLB
commands. The oplabel index is the index of the defined oplabel into OPLBTABl. There are two formats
since an oplabel may be assigned to a device or to another oplabel. (Described in Figure 2-6).
TYPMNE - This table oontains a list of all device type mnemonics in text. Initially it contains the
standard types from TYPCHARS, and more are added if they are defined with device cards.
HANDTBL - This table is a list of handler names for devices. As :DEVICE commands are read the handlers
required for the devices defined have their names placed here. The names are in pairs, initial handler
first then clean up handler, in TEXTC format.
Housekeeping is done so that each pair of names appears
only once. (Table 2-6).
o
I
X'ND 1 '
I
X'ND 2 '
I
Bit 0=1 if Ns are different
X'ND ' X'ND 'from dual
1'
3
4
2
option on :CHAN
2
DEVICD1START ADDRESS
DEVICEDl
END ADDRESS
Figure 2-2. CHANTBL Entry
36
o
2
I
Paper
Size
NOD
Txpe
+1
Paper
Width
*Flags
Handler
Index
X'NDD '
FLOW
Fldgs if set
Iyyl Temporary
3
rIf I
1
4
DEVICD1 Index
5
SS
NSPT
6
SIZE
PSA
7
PFA
PER
8
BCHK
ABSF
Flow
NGC
Type
DE
Disk
> Devices
Only
DP
= 1 INPUT
= 2 OUTPUT
= 3 INPUT/OUTPUT
= DEDICATE
Bit 0::1: 1
Bit3
Figure 2-3.Initial DEVICDl Entry
TYPMNE
Index
Device Address
Paper Width
Y
Handler Index
***Flags
, Paper Size
D
D
N
l
Figure 2-4. Final DEVICD1 Entry
o
OEVICDllndex
~\I !
1
I I
FLINK
Type
SS
NSPT
2
SIZE
PSA
3
PFA
PER
4
BCHK
ABSF
Figure 2-5. FINAL DCINTBL ENTRY
37
y
= 1 if FULL DUPLEX
DOUBLEWORD
o
BOUNDARY
o
1
OPLABEL
INDEX
OPe LABEL
DEF. IVY I
DEV. MNEMONIC
DEVICE
ADDR.
IVY I
1 = OSTDLB
0= STDLB
o
0
1
0 0
OPe LBL.
OPe LABEL
INDEX
DEF. IVY I
~
~
0 0
EQUIV. OPe
LABEL IYY'
HANDTBL ENTRY
o
1
2
COUNT
I
NAME OF HANDLER
INITIALIZATION ROUTINE
COUNT I
NAME OF HANDLER
CLEANUP ROUTINE
3
Figure 2-6. Two Types of STDLeDl Entry and HANDTBL Entry
Table 2-5. STANDARD DEVICES
DEVICE
TYPCHARS
10 FLOWACT
HANDNAME
NO DEVICE
NO
*****ILLEGAL DEVICE DEFINITION *****
OPERAT OR CONS OLE
TY
I/O
KBTIO, KBTCU
8
PAPERTAPE READER
PR
I
PTAP,PTAPCU
8
PAPERTAPE PUNCH
PP
0
PTAP,PTAPCU
8
CARD READER
CR
I
CRDIN, CRDINCU
2
CARD PUNCH
CP
0
CRDOUT, CRDDCU
74
LINE PRINTER
LP
0
PRTOUT, PRTCU
6
LINE PRINTER (7450) 1
LINE PRINTER (7446) 1
RAD 3
LP
0
PRTOUTL, PRTCU
6
LP
0
744610, 7446CU
6
DC
I/O
DISCIO, DISCCU
6
CLISTDAT
6
9 TRACK TAPE 2
7 TRACK TAPE 2
9T
I/O
MT AP, MT APCU
8
7T
I/O
7T AP, 7T APCU
8
ANY TAPE
MT
*****ILLEGAL DEVICE DEFINITION*****
DISC PACK (7242)3
DP
I/O
DPAK, DPAKCU
12
DISC PAC K (7260/7265)3
DP
I/O
DISKAB, DSKABCU
12
REMOTE BATCH CONTROLLER
RB
I/O
DSCIO, DSCCU
10
38
~LISTDAT
DEVICE
TYPCHARS
10 FLOWACT
I:JANDNAME
,
COC CONTROLLER
(BPM/BTM) 1
CO
I/O
COC,COC
6
COC CONTROLLER fBATCH
SWAPPING BTM)
CO
I/O
COCBS, COCBS
6
COC CONTROLLER (UTS)
ME
I/O
COC,COC
6
1.
User must specify handler names.
2.
Inclusion of either tape handler causes additional module MAGTAPE to be added.
3.
For UTS - if swapping device is RAD then module TSIO also included.
then module DPSIO also included.
If swapping device is Disk Pack
2.2.7 Description
UBCHAN is segloaded and entered from P2CCI when a :CHAN, :STDLB, or :OSTDLB (UTS only) control command
is encountered. If P2CCI encounters a :DEVICE command, it is considered an error. An image of the command
is passed in the read buffer to UBCHAN and a flag is set according to the type of command. From this point
on UBCHAN reads its own input, a process which continues until a command which is neither :CHAN, :DEVICE,
:STDLB, nor :OSTDLB is encountered. Upon entry UBCHAN first initial izes its temp stack.
When UBCHAN reads a :CHAN command, it sets a CHAN encountered flag and calls CHANNEL to process the
card. It then reads the next command.
When a :DEVICE command is encountered, UBCHAN checks to see if it was preceeded {not necessarily
immediately} by a valid :CHAN. If it was not, an error message is printed and the command is ignored.
Otherwise, the type mnemonic is checked. If it is IINO" or IIMT" the command is in error. If it is a standard
type mnemonic the index into the TVPMNE table is obtained. Otherwise, the new mnemonic is added to the
TYPMNE table and the new index is noted.
Whenever any table is expanded, it is checked for overflow and
when this occurs error messages are printed.
Once the index ofthe type mnemonic has been obtained, it is used to bui Id a DEVICD ltable entry for this device and all
avai lable defau It parameters are placed in it. A count is kept ofthe number of Remote batch devices. The rest of the
command is then scanned for options, and as they are found, their values replacethedefaults in DEVICD1. If the device was a disc, thedisc options are also processed and when this is completed, the extra words ofDEVICDlare moved
to DCINTBL. All options are checked for syntax and for legal values.
When the DEVICD 1 and DCINTBL entries
are completed, the next card is read.
When a control command is a :STDLB or :OSTDLB command, an entry is added to STDLCDl for each
assignment on the card.
In BPM/BTM, :OSTDLB cards are illegal while in UTS the high order bit of the
first word of each entry is set to one for these assignments. The oplabels are checked to see if they are
standard and if not, are added to the OPLBTAB 1 table. When all assignments have been processed, the
next card is read.
39
When UBCHAN reads a command that is not :CHAN, :DEVICE, :STDLB, or :OSTDLB or when an EOF is
encountered during UBCHAN processing, the reading of control commands is stopped and UBCHAN begins
to build its files. A check is made to determ ine whether CHAN/DEVICE information was read and if not
UBCHAN exits. Otherwise, pages are obtained and allocated among the tables to be built. In allocating
the OCT and CIT tables a check is made to determine if the DUAL flag is set (i.e., DUAL option was
specified on any :.cHAN command).
If so, DeT1A, DCT1P and CIT6 are allocated space.
If not, then the labels DCTlA and DCTlP are equated to DCT1, and CIT6 equated to eIT5.
The first CHANTBL entry is examined and the information in it and the DEVICD1 entries to which it points
are used to begin building the DCT and CIT tables. When this CHANTBL entry is exhausted, the next
is fetched and this process continues through all of CHANTBL. The CLIST area is also built at this time.
Most devices have CLlSTs of all zero and length dictated by CLISTDAT, although some devices have special
CLlSTs (See Figure 2-7).
Whi Ie processing DEVICD 1 entries when a remote batch devi ce is first encountered, space is allocated for
those RBT-dependent tables. Since table entries are significant only in the area of RBT indices, the pointers
to the several tables are bumped back, overlapping other areas.
When the DCT and CIT tables (except for DCT22 and DCT23, - UTS only) have been bui It, RBLIMS table entries
are defined. Then the DCINTBL is searched for a disk with PSA defined on it. The DCT 22 entry for the disk
device is determined and stored in the appropriate location. Then if the swapping device (Le., has PSA defined on it) for UTS is a disk pack, the #tracks of PSA is converted to #physical cylinders. If the #tracks does
not equal a physical cylinder(s) the PFA and PER (if necessary) is decremented. The maximum number of PSA
tracks that may be specified is X'3FC' for a 7242 and X'21C' for a 7260/1265.
The HGP for this device is generated and if the device is a disk pack, then an entry is made in the AVRTBL
table. After the PSA discs are processed, DCINTBL is searched for other entries and the HGPs for them are
generated (Figure 2-8).
UBCHAN then proceeds to bui Id OPLBT 1-4. For each operational label in OPLBTAB1 an entry is made in each
OPLBTeitherfrom STDLCD1 or from STANDARD. Op labels assigned to "NO" are assigned to device
NOAOO (DCTX=O). If this is for UTS, OPLBT5 is bui It in the same manner. When the oplabel tables are complete, TYPMNE is moved to its allocated area in the working pages. Then the area for the control task and
temp stack are allocated. If the system is BPM/BT M, a copy of the HGPs are then written out as the load module M:HGP even though they are also included in the load module lOT ABLE. UBCHAN then enters the completion routines to generate IOTABLE.
If the system is UTS, the swap tables are generated (see 2.2.7. 1) and then
an area is allocated for the load module M:HGP which is created and written out to the disk. This load module
contains the HGPs for all devices. In addition, the HGPs for private devices remain a part of IOTABLE as well
as the 7 word headers of the HGPs for public devices. When M:HGP has been created, in a UTS system, the
headers of the HGPs and the swap tables are squeezed into the area from where the full HGPs had been written.
DCT23 entries are then computed and space is allocated for the AVRID and SOLICIT tables.
At this point the data (SECT 00) area of the load module IOTABLE is completed. Using MODIFY UBCHAN builds
the head, tree, expression stack and REF/DEF stack for the module. MODGEN is used to generate the swapper
40
tables. Finally RDICLIST is used to make final modifications to the relocation di ctionary, and lOT ABLE is written
out via M:TM. Following this the handler names are written out into the SPEC:HAND file and UBCHAN exits.
If UBCHAN is unable to bui Id IOTABLE, SPEC:HAND, or M:HGP, appropriate, definitive error messages are produced and PASS2 (being unable to continue without these vital tables) aborts.
CP CLIST
o
0
1
X'13'
2
2
X'09000000'+BA($+6)
3
3
X '2E 000078 '
Paper Size
4
4
X '08000000'+DA($-2)
Paper Width
5
5
0
LP or TY CLIST
X '080000000'
6
o
2
3
LINES
4
WIDTH
5
16161616
6
01000200
7
8
0
38
X'09000000+BA($+6)
39
X '2E 000078'
40
X '08000000'+DA($-2)
41
0
42
X '8000000'
0
73
0
9
RB CLIST
Figure 2-7. Special CLISTS
41
o
FLINK
0
I
DCT INDEX
It If I
2
No SECTORSITRACK
3
NO. SECTORS/GRANULE
PER MAPWL
NVAT
4
~
- - - - -- - - - - - -
PFA
NGC
PFA MAPWL
PER MAPWD
6
I
TYPE
-- -
- -
-- -
- - -
PER 1st SECT NO.
MAPWD
PFA 1st SECT NO.
7
PFA BIT MAP
(1 = AVAILABLE)
PER BIT MAP
(1 = AVAILABLE)
N
o
78
15 16 17
2324
31
where
CYL
indicates whether device is allocated by cylinder (bit 16=1)
or granule (bit 16=0).
PRIV
indicates whether device is private (bit 17=1) or
public (bit 17=0)0
NGC
number of granules/logical cylinder, has meaning only if CYL set.
The # granules/logical cylinder is a SYSGEN definable parameter. For
UTS this may be 1:n:255. For RBM this value may be either 2 or 30.
TYPE
contains devi ce type (7=disk; B=disk pack).
PER/MAPWL/PFA/MAPWL
contain the number of words in the bit map
area for PER/PFA.
PER/MAPWD/PFA/MAPWD
contain the word displacement from the start
of this allocation table to the first word of the bit map for PER/PFA.
NVAT
contai ns the next volumes cylinder 0 allocation table if PRIV is set.
Figure 2-8. ALLOCATION TABLE FORMAT (HGP)
42
2.2.7.1 Generation of SwapperTables (UTS only)
Upon e{ltry into the routine (ALLOSWAP) to generate the swap per tables, space is allocated first for each table.
Then for the type of the given swapping" device (of which there may be only one if it is defined on a disk pack) is
determined. The type controls the values to be generated for the various tables. See Table 2.5. 1 for the types and
i
values being used. If the swapping device is a disk pack then pseudo-7232 values are used, that is the number of
tracks of PSA specified for the 7242/7260/7265 is compared to the numbers of tracks for 7232 devices to determine
the type. After building the tables, the granule pools or SGPs are generated. The starting address of each pool is
generated as an entry in the M:SGP table. The SGP for the first swapping device has all bits set to
o.
All sub-
sequent pools have the bits set according to the type, See Figure 2.8. 1 for the vari ous types.
2.2.8 Error and Informational Messages
All messages are output on the LL device.
***STDLB ENTRY TABLE FULL
The STDLB control command information has overflowed the allocated area. Up to 128 standard label definitions
or up to 32 unique operational labels are allowed. UBCHAN tries to continue.
***DEVICE ENTRY TABLE FULL
The DEVICE control commands have overflowed the allocated core area. Up to 96 devices may be defined.
UBCHAN tries to continue
***TYPMNE ENTRY TABLE FULL
A maximum of 64 unique type mnemonics are accepted from DEVICE control commands, and more have been specified.
UBCHAN tries to continue.
Table 2-5.1. Swapper Table Constants by Type
Table Name
7212 RAD
Type 0
MB:GAM1
X ' 3F'
MB:GAM2
7232 RAD or 7242/7260/7265 Disk Pack
Type 2 (81-100)
Type 3 (101-200
7
7
7
1
3
7
15
MB:GAM3
-1
-2
-3
-4
MB:GAM4
6
3
3
3
MB:GAM5
-7
-4
-4
-4
MB:GAM6
X ' 7F'
XIF'
X'F '
X'F '
41
6
6
6
0
1
2
3
41
12
24
48
7
1
1
1
X ' 7F '
X'FF '
MB:GPT
MB:SWAPS
MB:DWT
MB:SPACEJIT
Type 1 (0-80)
X ' 1FF '
M:GATLIM
X' 3F '
M:GASLIM
80
10
10
10
X ' 2E'
4
4
4
M:ADRINCR
43
Type
Device
--
0
7212
1
PSA (Hex Tracks)
1
0-40
0-80
2
f232
7242/7260
81-100
3
7265
101-200
or
..
WORDS 2
04
GRANULE 40
r
- --
Words 41
I
----~
Type 0
~
GRANULE 0
•
..
WORDS 4
GRANULE 5
1
Words 6
Type 1
I
GRANULE 0
~
l
WORDS 8 '
..
GRANULE 5
Type 2
Words 6
1
GRANULE 0
•
WORDS 16
•
GRANULE 5
r
Type 3
Words 6
1
GRANULE 0
Figure 2-8. 1 SGP Format and Contents by Type
44
Contents
Location
Every
Every
Every
Every
4th
4th
4th
4th
OW
OW
OW
OW
from
from
from
from
0 to
1 to
2 to
3 to
X ' l111111111111111 1
X 18888888888888888 1
40 t
37
38
39
X14444444444444444 1
X122222222222222221
X18888888808888888
tDoubleword 37 is
1
Type (Value in Doublewords)
0-1
8-9
4-5
2-3
6-7
10-11
2
3
Contents
0-3
0-7
X15555555555555555
X15555555555555555
8-11
32-39
16-23tt
4-7
12-15
20-23
8-15
24-31
40-47
16-19
1
1
XI AAAAAAAAAAAAAAAA I
o
o
o
ttDoubleword 23 is
X 'AAAAAAAA2AAAAAAA 1
Figure 2-8.1
SGP Format and Contents by Type (Cont.)
***DISC ENTRY TABLE FULL
The DEVICE control commands defining disc units
o. e.,
YVNDD is of DCndd, DPndd, and CMndd types) have over-
flowed the allocated core area. Up to 32 discs may be defined. UBCHAN tries to continue.
***HANDLER CLIST FULL
When generating the CLIST (peripheral command list area) tables, the core area allocated is not large enough.
to 64 handler definitions are allowed.
Up
UBCHAN aborts.
***DCT TABLE FULL
When generating the OCT tables (peripheral device information tables), the core area allocated is not large enough.
UBCHAN aborts.
***HGP TABLE FULL
When generating the HGP tables for disc, disc pack or cram devi ces, the allocated core area is not large enough.
UBCHAN aborts.
***OPLB XX EQUIVALENT YY MISSING
STDLB control command specifies that an operational label (XX) standard assignment is to another operational label
(YY) that has not been defined. UBCHAN tries to continue.
***UN KNOWN DEVICE YYNDD (for LL)
The YVNDD field of a DEVICE control command is invalid, {i.e., bad syntax) or for the STDLB control command, the
YVNDD referenced has not been defined by a DEVICE control command.
45
UBCHAN tries to continue.
***INSUFFICIENT PAGES AVAILABLE
When core is being allocated for the generation of the load modu Ie, the avai lable core is not large enough for the
required allocation.
UBCHAN aborts.
***ONLY XXX X PAGES OBTAINED
This message appears immediately after the preceding message. XXXX is the number of pages that was available to
bui Id the load module. UBCHAN aborts.
***LOAD MODULE CANNOT BE GENERATED
This message is produced in conjunction with the two preceding messages.
UBCHAN aborts.
***SPEC:HAND CANNOT BE GENERATED
An inconsistency has occurred in building the HANDLERS record of the SPEC:HAND file. UBCHAN aborts.
***PASS2 UNABLE TO CONTINUE
This message is produced after any of the messages in which the explanation indi cates that UBCHAN aborts.
***NO DISC DEFINED
This message is the result of no disc being defined by a DEVICE control command.
message.
This is only an informational
***NO HANDLER NAME GIVEN
When a device is being defined whose type mnemonic is unknown to PASS2, the HANDLER option must be present.
UBCHAN continues to next control command.
***DEVICE TYPE YY ILLEGAL
A DEVICE control command YVNDD field contains "NO II or IIMT II as its YY.
UBCHAN tries to continue.
***PSA/PER INVALID ON CYLIN ALLOCATED DEVICE - PSA/PER IGNORED
An attempt has been made to define PSA!PER on a device that is allocated in logical cylinders. The options are
ignored.
UBCHAN continues.
***NO PSA DEFINED
***NO PER DEFINED
No PSA;PER has been defined on any disc.
UBCHAN tries to continue.
***SYNTAX ERROR DUAL OPTIONS USED
The closing double parenthesis on the DUAL option of the CHAN command are in error. However, the preceeding
option has been correctly processed and is used.
UBCHAN continues.
***ONLY PFA VALID ON PRIVATE DEVICES
An attempt has been made to define otherthanPFAon a private device. All other allocations are zeroed out. UBCHAN
continues.
46
SS AND NSPT MUST BE NONZERO - SET TO XXXX DEFAULTS
The options SS and/or NSPT have not been specified nor has the device type been specified (i.e., 7204, 7212,
7232, 7242, 7260, and 7265).
The default (XXXX) for the parti cular type of target system (UTS-7232, BPM/
BTM - 7204) is substituted. UBCHAN continues.
***VALID 'CHAN ' CC MUST PRECEDE 'DEVICE' CC
A DEVICE control command is encountered without being preceded by a valid CHAN control command.
UBCHAN
continues to the next control command.
***'NAME I OR SYNTAX INVALID
A CHAN control command option field has a syntax error or the DEVICE control command contains a syntax error or
invalid name for HANDLER option. UBCHAN tries to continue.
***CHAN TABLE FULL
The CHAN control command has overflowed the allocated core area.
Up to 32 :CHAN commands are allowed.
UBCHAN tri es to continue.
***NO CHAN,/1)EVICE INFO
No CHAN and DEVICE control commands have been encountered, although STDLB control commands have been processed.
UBCHAN aborts.
***NO DEVICE FOR CHAN
A CHAN control command has been encountered without having any DEVICE definitions for this channel. UBCHAN
tries to continue.
***'ABSF '/,BCHK ' PREVIOUSLY DEFINED
A DEVICE control command has defined ABSF and/or BCHK and they have also been defined previously.
UBCHAN
continues to the next control command.
***SUM OF PSA+PER+PFA+BCHK+ABSF>SIZE
This warning message appears if there is a conflict in the summation of the given list of variables and the defined
disc size. The message may appear several times for a given disc, i.e., if the conflict is determined after the summation of PSA+PER, then the message appears for this summation and once for each of the remaining summations,
the overflowing value is replaced with the reamining SIZE and the processor continues.
***THIS DISC ALREADY DEFINED
A DEVICE control command is defining a disc, cram or disc pack device (i .e., YVNDD) which has already been
defined.
UBCHAN will try to continue.
***SYNTAX ERROR
A syntax error has been encountered on a control command. UBCHAN continues.
47
***NO DEVICE FOR TYPMNE YY (OPLBL=LL)
A operational label is assigned (or defaulted) to a device that has not been defined. In UTS, these messages have
the headi ngs:
---BATCH (STDLB)---for batch and
---ON LINE (OSTDLB)---for on-line.
They are printed at the end of UBCHAN processing.
***HGP CANNOT BE FORMED FOR YYNDD
The DEVICE control command defining this disc did not provide enough information to generate an HGP.
UBCHAN
continues.
***CYLIN VALUE INVALID--VALUE IGNORED
For BPM/BTM only, the value for number of granules per logical cylinder on the CYLIN option was not 2 or X'lE'.
The value is ignored and UBCHAN continues.
***NGC=2 FOR ALL PRIVATE PACKS
***NGC=30 FOR ALL PRIVATE PACKS
For BPM/BTM only, one of the above messages always generated after the first, and only the first, command defining
a private pack. All subsequent private packs are allocated in terms of the first defined pack regardless of what value
is used on the subsequent commands. UBCHAN continues.
***NGC=30 FOR ALL PUBLIC PACKS
For BPM/BTM only, an attempt has been made to define public packs in terms of two granules;1ogical cylinder.
The correct value is substituted and UBCHAN continues. This message is produced only once even if several publi c
device CYLIN options are in error.
***PSA VALUE TOO LARGE - MAX VALUE USED - PFA INCREMENTED
For UTS only, in an attempt to define PSA on a disc pack, the number of tracks specified exceeded X ' 3FC' for a
7242 or X ' 21C' for a 7260/7265.
of PFA tracks defined.
The correct value is substituted and the extra tracks added to the total number
UBCHAN continues.
***PSA INCREMENTED FOR DP SWAPPER - PFA'/pER DECREMENTED
For UTS only, the number of tracks defined for PSA on a disc pack is not equal to a physical cylinder(s) i.e., evenly
divisible by 20 (#tracks/physical cylinder). The number of tracks of PSA is incremented and PFA and PER, if necessary, are decremented.
UBCHAN continues.
***PSA MUST BE 7212/7232/bISC PACK - PSA IGNORED
For UTS only, an attempt was made to define PSA on other than the above devices. The option is ignored.
UBCHAN
continues.
***PSA PREVIOUSLY DEFINED ON DP - PSA IGNORED
For UTS only, if PSA is defined on a disc pack it may not also be defined on a RAD or more than one disc pack. An
attempt to do so has been detected. The option is ignored and UBCHAN continues.
48
***PSA DEFINED ON RAD, NOT ALLOWED ON DP
For
urs only a
RAD has previously been defined with PSA on it. Therefore, it may not also be defined on a disc
pack. The option is ignored and UBCHAN continues.
***NGC>255-- 55 USED FOR 7260/7265
***NGC>255 -- 30 USED FOR 7242
For
urs only,
the value specified for the number of granules per logical cylinder option on the CYLIN parameter
is >255, the appropriate default is used and one of the above messages is generated.
UBCHAN continues.
2.2.9 Major Internal Routines
UBCHANjCHAN
Main entry, initialization, control
CHANNEL
Processes :CHAN command, bui Ids CHANTBL entry
IODEFRD
Sets flag and reads next card and branches to
appropriate routine.
IODDEVIC
Processes :DEVICE command gets VYNDD and finds
type mnemonic
TYPFOUND
Gets type mnemonic index, puts default entries in
DEVICDl
DEVOPTPA
Processes other options on :DEVICE command, stores
valid options in DEVICD1.
DEVCDOUT
Completes building of DEVICDl entry. If tape, increments
AVRTBL size.
Checks options if disc for validity and
moves correct va lues to DCINTBL.
IOSTDLBjIOSTDLBO
Process :STDLB, :OSTDLB command. Gets options
and stores in STDLCD 1.
UBENDITALLjENDITALL
Entry po int when all commands for UBCHAN read.
Allocates space for OCT, CIT, OPLBT, TYPMNE, andAVRTBL
GNDCTCIT
Generates DCT and CIT tables.
SETDCTl
Generates CLISTs for devices.
CPCLIST
Generates special CP and RB CLISTs.
GENCIT
Generate special setting in CIT3 if DUAL option on
:CHAN command.
SRCHPSA
Searches for disk with PSA defined on it.
SRCHNXT
Checks for end of disk information. If not, then
Iinks to next DCINTBL when all PSA disks completed.
HGPENSET
Initial setting of HGP values. Makes entry in AVRTBL
if disk pack.
NOAVRENT
If ABSF, BCHK areas defined, generates appropriate
values.
FORMHGP
Gets number of tracks of PER, PFA BALs to SETGRANO
and stores displacements in HGP.
49
For UTS systems in which PSA defined on a disc pack. First,
CNVTCYL
checks that PSA ~ X'BFC' for 7242 or ~ X'21C' for 7260/
7265. Then converts 'tracks to , of physical cylinders.
Bui Ids HGP bit maps for PFA, PER upon entry
SETGRANO
R6
=,
sectors/track
R7 = , sectors/granu Ie
= DCINTBL WD8 addr,
R12 = PSA, PSA+PFA addr.
Rll
R15
= PFA,
WD7 addr.
PER addr.
This routine entered twice. In the above, the value preceeding the comma is the first entry value and that after
the comma the second.
Main entry to bui Iding OPLBT 1-5. Initialize pointers
OPLBTYPM
and check if any :STDLB or :OSTDLB commands.
DOSTAND
Checks STANDARD table for default Op label.
CHKSTDL
Searches STDLCD 1 for Op label •.
CHKASGN
Determines type of Op label assignment if it is to Oplabel
then searches table for YY assignment.
Entered when oplabel assigned to device. Stores Op label
OPLBNDD
in OPLBTl and searches DCTl for device address.
Put DCTX of device for Op label in OPLBT2 and OPLBT3.
SETOPLBN
Stores flow in OPLBT4.
SETOPLB5
Generates value for OPLBT5 for UTS system only.
OPLBENDX
Finishes generating OPLBT 1-5 by storing 'NO' in OPLBT 1
entry 1 and sets DCT3 entry to 'NO I •
XFERTYPM
Transfers TYPMNE to SECT 00 area.
XFERFDAB
Transfers ABSF, BCHK values to SECT 00 area for BPM/BTM.
ALLTMP
A"ocates area for controltaskandtempstack. If BPM/BTM at
end sets up toHGPs as load module and branches toWRTHGP.
SWAPSET
Bui Ids Swap tables for UTS system.
HGPSTAK;WRTHGP
Bui Id, write M:HGP load module via M:TM.
HMOVIT
Packs headers of HGPs and Swap tables into area from which
full HGPs were written (UTS only).
Sets up IOTABLE load module.
LOADMODL
GETMODFY
l
These routines change the MODIFY.
EQUMODFY~
PLIST before entering SETMODFY.
SETMODFY
This routine calls MODIFY to manipulate the load module
bei ng created.
GENEXP
Sets up the name pointed to for a call to SETMODFY placing
the name in IOTABLE's expression stack and REFing it. The
routine is used for handler names.
RDICLIST
Changes the relocation di ctionaryfor special card punch CLIST
words.
50
RDEF5'NAP
Using MODGEN to set up changes to PLIST and call
MODIFY, generates the Swap tables and remote batch
tables.
NOSWAP
Final set up for IOTABLE includes opening file.
WRITELM
Writes IOTABLE file using M:TM then closes and saves file.
Writes out SPEC:HAND file and returns to READOK in
P2CCI.
OurOFIT
Prints unable to continue message and does an error exit
from PASS2.
2.2. 10 Flow Chart
Page 1
Initialize temp
stack area
Move standard
Oplabels from
OPLBCHAR to
OPLBTBL1
Move standard
type mnemonics
from TYPCHARS
to TYPMNE
CHANce
CHANNEL
Process:CHAN
CC
Figure 2-9. Flow Diagram of UBCHAN
51
Pg. 2
IODEFRD
Set CC
Flags
~--",,----.....
RDINCFCH
Read Next
CC
Complete
last channel
entry
Pg. 9
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
52
Pg. 3
:DEVICE
$
***VALID 'CHAN'
CC must preceedt
'DEVICE'CC' I + - - -no
--""
Set up
Flags
Pg. 4
:DErICE
***DEVICE
entry table full
no
evice VYNDD
Get
$
'VY'
Syntax Error
:DEVICE VYND
$
***DEVICE Ty
VY Illegal
Yes
DVCYNXT
Search TYPMNE
Pg. 4
for this YY
TYPFO,UND
yes
. Pg. 4
TYPMNE
>--_y_e_s~ Table
Full
Put new type
mnemonic in
TYPMNE
DVCYNXT
Pg. 4
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
53
Pg. 4
Get
TYPMNE
Index
DVCYNXT
Get CLISTDAT
indexed by
TYPMNE and add
to CLIST count
***Unknown
Device YVNDD
Bad
Get
NOD
and Save
Scan to
end of
card
IODEFRD
DVCYNXT
Pg. 2
Convert NOD to
Device
Address
Put device address
paper wdth.,
defau It TYPMNE
Index in DEVICD 1
If RBT defau It
paper width,
keep count of
# RBTs here.
Put text NOD and
paper size default
into
DEVICDl
Put YY
into DEVICD 1
OUTOFIT
Pg. 27
***Handler
CLIST Full
Put Disc
defaults into
DEVICDl
DEVOPTPA
Pg. 5
No Room
Put defau It handler
name in
HANDTBL, Index
in DEVICDl
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
54
DEVOPTPA
DVCDFINI
Pg. 5
no
No, try again
Get
Option Name
Pg. 6
no
Check for
Disc options
'--9+
:DEVICE YVNDD OPT
$
*** Syntax Error
Check Device
Options
no
Get value
of name
fields
Bad
1-----..-.,;;;.-......
Store over
default in
DEVICDl
DEVOPTPA
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
55
:DEVICE YVND9
(OPT, N) *** Ina"lel or
$ Syntax invalid
Put new handler
names in
HANDTBL
Pg. 6
*** No Handler
Name Given
no
Merge words
3 and 4 to
Pg. 2
Increment
AVRTBL
Size
yes
no
BPMCYL
For BPM check
for CYLIN alloc.
and VALIDATE
options for
validity
Move correct
values to
DCINTBL
Increment
DCTSIZE
Pg. 2
Figure 2-9.
Flow Diagram of UBCHAN (Cont.)
56
pg.30
SIZECHK
Is sum
> size
pg.30
Pg. 7
IOSTDLBO
Set Flag
Set Flag
Bit 0 = 0
Bit 0 = 1
Set up
Flags
IODSTDLl
:STDLB (,),(,),
$
no
Get first
field (...!)
Pg. 8
Or with
Flag
:STDLB (, VYNDD)
$
***Syntax error
I
&
Bad
Return
Convert
VYNDD to
VY and device
OK
yes
Store in
STDLCDl
Pg. 8
Figure 2-9. Flow Diagram of UBCHAN (Cant.)
57
Pg. 8
Search
OPLBTABl
For Oplabel
Store new
OPLABEL into
OPLBTABl
Put index in
OPLBTABl
into STDLCDl
IODSTDLl
Pg. 2
Figure 2-9. Flow Diagram of UBCHAN
58
(Cont.)
Pg. 9
P2CCI Reads
EOF while
UBCHAN in
con
No PSA
Per
Defined
control entry
.J
Get Max pages
of work area
A I locate for
CLIST data
DCT,CITS
DCTl PPTR=DCTLAST
DCll PTR=DCTlAPTR
DCTlPPTR
CIT6PTR=C IT LAST
CIT5PTR=CIT6PTR
Allocate space for
TYPMNE, AVRTBL,
AVRID(UTS) RBLIM
Foregl1 und ntries
no
GNDCTCIT
Insufficient
Space
OUTOFIT
Pg. 27
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
59
Pg. 10
OCT index = 1
Increment type
index
GENEXT
Get
OEVIC01
CIT index = 1
GENCIT
Pg. 15
Increment CIT
index and get
next entry
GEN2
Get
OEVCO 1 Entry
Store NOD in
DCT1
R7= 0
Used for DCT3
Bits 6-7
0----.......
DCT3GEN
Pg. 11
Pg. 11
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
60
Pg. 11
Store ndd
in OCTlP
no
1st ND of
CHANTBL
=NO of
device
Store NOD
in DCTlA
Store NOO in
>-_no
_____~ DCTlA
R7 = 0
(bits 6-7=00) Non
pooled device
Merge NO of
CHANTBL with
D of Device
store in DCT1A
R7 = 1
(Bits 6-7 = 01)
Non pooled
device
R7 = 2
(Bits 6-7 = 10)
Non pooled
device
R7 = 3
(Bits 6-7 = 11)
DCT3GEN
R7 = 0
(B i ts 6-7=00)
Non pooled
device
Store R7 in
OCT3
~
Pg. 12
Figure 2-9.
Flow Diagram of UBCHAN (Cont.)
61
pg. 12
Store CIT index in
DCT2 - GET
TYPMNE Index.
yes
yes
Store X'ndd ' in
COC, R3 for use
by P2COC.
no
GENON2
If 1st defined then
save DCT index as
LO RBT index, save
also as possible
HIRBT index.
Compute start of
tab les for RBTs
(only 2 for BPM)
allocate area for
tables.
Significant entries
_ _ _ _ only in range of
RBT i ndi ces •
Store TYPMNE
index in DCT 4.
Get flow
default.
Get flow
from DEVICD 1.
Pg. 13
Figure 2-9. Flow Diagram of UBCHAN (cont.)
62
Pg. 13
Merge flow
code into
DCT3
no
Store 1 in
OCT14
Store UTS - TAB
YVNOD BPM-N/L
llYVNDD in
OCT16
-
Store Handler
NAME1 index
in DCT8
Store Hand ler
NAME2 in
OCT9
Set up BAT APE,
yes
NBATAPE
no
Increment DEVS,
R3 for DP,7T, 9T
for over lays use
1
Figure 2-9.
Flow Diagram of UBCHAN (Cont.)
63
-
For RBT UTS
TAB *YYNDD
Pg. 14
CLIST
Size = 6
no
Get CLIST Size
from CLISTDAT
Store CLIST
doubleword
address in DCT7
*** Handler
I ist full
No room
Bump pointer
to CLISTs by
CLIST Size
es
Move CP
to CLIST to
CLIST area
Pg. 27
Set up Special
CLIST (includes
Paper Wi dth and
Size
Made addresses
in CLIST
Relative
yes
For UT S stores
Width in
RBB:LPZ
For Both if Full
Duplex X '8000'- If
Half Duplex 0 In
RB:F LAG
Figure 2-9.
Increment DCT
Index and
I DEVICD1
Pg. 10
Flow Diagram of UBCHAN (Cont.)
Put paper size
and width in
CLIST
Pg. 15
GENCIT
Set CIT3
Bit 4 = 1
no
Set Up RBLIMS
DCTSIZE+1 word 0
DCTSIZE word 1
Set up RBLIMS
low RBT index
word 0, High RBT
index word 1.
SRCHNXT
OPlBTYPM
pg. 18
Set up storti ng
DCINTBl to do
other disc HGP
16
Figure 2-9. Flow Diagram of UBCHAN (cont.)
65
Pg. 16
Set up
Linking
no
HGP
Table Full
OUTOFIT
Pg. 27
Put OCT X , NSPT
For UTS Set up
DCT22 for
DISC TYPE
NSG and 53
Change to
Number GRAN&
CYL N
Save NS PT for
check if last RAD
is 720X BTM
Make entry
in AVRTBL
Set PUBLICI
PRIVATE bit in
AVRTBL
NOAVRENT
Pg. 17
Save # tapes in
AVRTBL
Figure 2-9.
Flow Diagram of UBCHAN (Cont.)
66
NOAVRENT
Pg. 17
Pg. 17
NOAVRENT
FORMHGP
Set OCT Index
SS, NSPT.
Convert TRK/CYL
to STD Disc
Address.
Store inABSFDUL,
ABSFDLL,
ABSFDC.
Set DCT Index
SS, NSPT.
Convert TRK/CYL
to STO Disc
Address.
Store in BCHKLL,
BCHKUL.
. Computations for
>-ye-s--~ # physi ca I
cylinders.
yes
Pg. 33
Use # Tracks
as PSA.
Return tota I tracks
in PSA as multiple
of # physical
c linders.
# Granu les and
NSG for
symbionts.
Set up PFA map
Set up PER map.
Figure 2-9. Flow Diagram of UBCHAN (cont.)
67
For UTS save
tracks PSA for swap
tables-LF. HW
WD3 of HGP.
Pg e 18
*** No disc
Defined
i
\
I
possible
BTM
Swapper
/
Set
SWAPBTM
= 1
Put zero link
in last HGP
Set Flag for
STDLB
Set OPLABEL
Index to one
GETOPLB
Get next
OPLABEL from
OPLBTABI
DOSTAND
Pg. 19
Pg. 19
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
68
Pg. 19
Search
STDLCD 1 for this
yes
CHKASGN
Pg. 20
for this OPlABEL
with right flag
yes
NXTOPLB
GETOPLB
yes
Pg. 23
yes
Set Flag
OPLBTYP
= OSTDLB
Pg. 18
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
69
Pg. 20
CHKASGN
OPLBNDD
Make assign
to DEVICE
NO
Search
TYPMNE for
YY Ass ignment
FNDTYPMN
Label assigned to
another label.
Search for it in
STDLCD1
yes
Make old
label's assign
new one's
Search standard
for new
label assignment
NXTOPLB
Pg. 19
***OPLB
equivalent
no
yes
~---------------------------------------------------------------------------------------~'
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
70
Pg. 21
OPLBNDD
no
Put Op Label
in OPLBTl
Set DCTX
=Zero
Device Address
, *** Unknown
Device XXNDD
for LL
no
NXTOPLB
Pg. 19
SETOPLBN
Pg. 22
Pg. 22
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
71
SETOPLBN
Put DCTX in
OPLBT2 and
OPLBT3
Flow
= I/O
from OPFlOWACT
Put flow
in OBlBT4
Pg. 19
SETOPLB5
Put OPLABEl
in OPlBTl
Put DCTX in
OPlBT5
Pg. 19
Figure 2-9. Flow Diagran of UBCHAN (Cont.)
72
Pg. 22
Pg. 23
FNDTYPMN
*** no device
Search DCT4
for TYPMNE YY
(OPLB=LL)
for this type
yes
yes ---Batch (STDLB
---on line
(OSTDLB)
SETOPLB5
Put OPLABEL
in
Pg. 22
OPLBENDX
Put no
in OPLBTl
Merge X'CO'
in first byte of
DCT3
Move TYPMNE,
ABSF, and BCH K
tables to working
area
Figure 2-9.
Flow Diagram of UBCHAN (Cant.)
7.3
Pg.24
Allocate area
for Contro I Task
Tempstack.
no
Bui Id UTS specific
tables in lOT ABLE
(Swap Tab les).
Allocate, Bui Id
M:HGP Load
Module.
Set up REF EF
Stack to W ri te
M:HGP.
OPEN, WRITE,
CLOSE M:HGP
load module.
no
Squeeze HG Ps (head
ersonly)and Swap
tab les into area wher
full HGPs were.
Set up DCT23 with
disp'lcmt.from HGP
stait incore HGPfor
gi ven di sc de vi ce or
o if not disc.
Allocate space for
AVRID and
SO LICIT table.
Pg. 25
Figure 2-9. Flow Diagram of UBCHAN (cont.)
74
Pg. 25
LOADMODL _/
Build HEAD and
TREE, initialize
REF/DEF and
express ion stac ks
Set relocation
dictionary to
al\ X'E'
and values
pg. 32
no
Generate express.
and REFs for Handlers
no
Finalize REF/DEF
a nd express io n
stacks
pg.26
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
75
Pg. 26
Pg. 34
r-----------t
Make re I.dict.
changes for
HGPS.
MODGEN
Gen. DEFs
for Swap
tables AVRID
SO LCIT,
AVRNOU
Gen. Remote
Batch Tables.
Write lOT ABLE
to TM Device.
Move handler
names to working
area from handler.
If inconsistency
go to
OUTOFIT PS27
yes
Figure 2-9. Flow Diagram of UBCHAN (cont.)
76
Add DPSIO
to
SPEC:HAND
Pg. 27
OUTOFIT
Other messages
concerning
specific reason
for abort have
been pri nted
Restore current
character for
CC reads
PASS2
Unable to
Continue
no
Release Dynamic
Data
Figure 2-9. Flow Diagram of UBCHAN (cont.)
77
Pg. 28
Scan the rest
control
command
yes
no
Syntax
Error
r-----'---....,
8HANNG 1
Set CHAN CC
Error Flag
Put end DEVICD 1
in previous
CHANTBL entry
Pg. 29
yes
Adjust
CHANPTR
Put end
DEVICDl in
previous CHANTBL
entry
(+5)
Increment CHAN
counter Set new
CHANTBL entry
(start DEVICD 1)
Pg.4
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
. 78
Pg. 29
CHAN Table
Full
Get NO
Convert to
Binary
Store in position
in WORDO of
CHANTBl
no
Increment
DUAlFlG
yes
Set Bit 0 of
WORD 0 to 1
Figure 2-9. Flow Diagram of UBCHAN (Cont.)
79
~l
-~9.28
Pg. 30
BPMCYL
SIZECHK
Save registers and
get NGC
from
DEVICD entry
Get
Option
Value
Set NGC = 30 and
print message if not
previously done
Compare with
Remaining
"SIZE"
Set NGC = 30and
print message if not
previously done
***Sum of PSA+
PER+PFA+BCH K
+ABSF
> SIZE
Set NGC = 30and
print message if not
previously done
Subtract opti on
. value from
"SIZE"
Set NGC = 2
and print message
if not previously
done
Restore
Registers
Figure 2-9. Flow Diagram of UBCHAN (cont.)
80
Replace option
value witli
remaining
"SIZE"
Pg. 31
SETGRANO
Get # of tracks
for this map and
save
Build # granules
32 words of - 1
in HGP
Get # of
granules from
NSG and NSPT
no
Get # Wds. in
this map
Bu iI d word of
(-1 )**(32-R)
at end of map
yes
Save
remainder
Set 1st track
into HGP
Figure 2-9.
Flow Diagram of UBCHAN (Cont~
81
Pg. 32
GETMODFY
'( GENEXP
)
J
Store relative
addr. In Load
modu les into
MODIFY PLIST
Get Handler
Index from
DCT8,9
t
Make address by
adding base
Store name one
into MODIFY
PLIST
t
Put name into
MODIFY PLIST
for expression call
•
Set up rest of
expression call
PLIST
Set up pointer
to load modu Ie
area
J
MODIFY
SETMODFY
Make ad justments
to Load Modu Ie
Make call to
MODIFY
(
Figure 2-9. Flow Diagram of UBCHAN (cont.)
82
J
RETURN
)
Pg. 33
Save Reg i ste rs
For 7242 Max
=X'3FC',
For 7260/7265
= X'21C'
# Tracks PSA
# Tracks Physical
Cylinder.
FNHCYl
no
Increment phys.
cylins., compute #
trac ks of PSA based
on # h • c linders.
-- --
Round up
PSA tracks.
Decrement PFA
tracks by number
required for PSA.
----
If not enough
check PER and
use them.
Print message
indicating action
taken.
Co Icu late granules per physical
cylinder, save for
later use.
Figure 2-9. Flow Diagram of UBCHAN (cont.)
83
Pg. 34
RDICLIST
.)
Set up MODIFY
PLIST for changes
to Relocation
Dictionary
Get first word
from C LIST area
Save and zero
bits 8-11
no
RETURN
yes
Get next word
from CLIST
area
Use bits to set
PLIST to correct
Relocation val ue
SETMODIFY
Make Relocation
Dictionary
change
Pg. 32
L - - -_ _ _ _ _ _
Figure 2-9.
Flow Diagram of UBCHAN (Cont.)
84
J
2 3 SDEVICE
0
2.3. 1 Purpose
To process the PASS2 :SDEVICE command and generate the load module M:SDEV. This load module defines
the devices controlled by the symbionts.
2.3.2 Usage
B
SDEVICE
With
R7 pointing to the control card PLIST
RO pointing to the temp stack pointer
R3 pointing to PASS2 stack data
R3 and R7 are saved
Return is to SDVRETRN in P2CCI
Error return is to the Monitor.
2.3.3 Input
Control card (:SDEVICE) image
2.3.4 Output
R6 contains the number of symbiont devices defined on the :SDEVICE command
M:SDEV load module (Table 2-6)
85
Table 2-6. M:SDEV load Module
~
Entr~
SODV
VALUE
-
SSTAT
1/4
N+3
0
BOTH
SRET
1
N+2
0
BOTH
SNDDX
1/4
N+3
1st entry
Size
(Wds)
jength_ t
N= Entries
-- r------ -
SSIG
~------
-~--.--
1-- -
SCNTXT
SQHD
I
-
Contents or Value
Target Slstem
# of OSSEG YYNDDs plus 2
for each remote batch device
-----.-r-
Others
-
BOTH
= N+2
-----
BOTH
= DCT 1 Index
BOTH
--------------------- ._---------_.-
N+3
0
1/4
_._----_.-. r'----'- .-.-.---. ----- r------N+3
0
1/2
---
--------_.-
..
---.-..--
~---.
-. -
BOTH
-_
-.- ---_ ..
..
1
1
0
BOTH
1
1
0
BOTH
I
SQUE
!
1/4
N+3
0
BOTH
SCDA
I
1
N+2
0
BPM/BTM only
SSDA
1
N+2
0
BPM/BTM only
SYMX
1/4
N+3
See Insert
BOTH
last entry-1
last entry
For BPM/BTM
=0
= 1 if ISSEG
2 if OSSEG
=3
=2
---
--
--~
where
For UTS
Entry 0
Entry 1 through N
-
_.......-....- _ _ _ _ ... _...&.....-.--0
t#Entries includes devices defined on :SDEVICE command plus 2 entries for each Remote Batch device
(RBndd) defined via :DEVICE commands.
SYMX contains:
_---_.
BOTH
SQTl
I
~-.
Entry 0
Entry 1 through N
last Entry - 1
last Entry
=
=
=
=
0
REF ISSEG or OSSEG
REF SFSEG
REF OSSEG
all entires for remote batch devices are set to 1 (UTS) or a REF to ISSEG (BPM/BTM)
2.3.5 Subrouti nes Used
CHARSCAN
(Used to check a specific character for legal syntax)
NAMSCAN
(Used to scan a field containing a name)
QUOTSCAN
(Used to scan a field containing a keyword)
MODIFY
(Used to generate M:SDEV load module)
PRINTMSG}
(display error information)
OUTLLERR
2.3.6 Other External References
SDVRETRN
return point from SDEVICE processor.
SDVBEGIN
base of work area in PASS2 stack
SDVEND
end of work area in PASS2 stack
DCTSIZE
length of DCT tables
DCTlPTR
pointer to DCTl Table
DCT4PTR
pointer to DCT4 Table
TYPMNPNT -
pointer to type mnemonic table
SDEVFLG
number of Symbiont devices (set by SDEVICE)
URBTS
number of Remote batch devices defined via :DEVICE commands
LORBIN
DCT1 index of the first Remote batch device defined
2.3.7 Description
The SDEVICE processor is entered when P2CCI encounters a :SDEVICE command which must have been preceeded
by valid :CHAN/:DEVICE commands. The work area available for generating M:SDEV is allocated by UBCHAN
and its boundaries are located in PASS2's temp stack and referenced by the labels SDVBEGIN and SDVEND.
SDEVICE first determines via URBTS if any Rembot batch devices have been defined. If there are any on the target
system, LORBIN is used as an index into DCn table to obtain the conned X'ndd' which is mt::igt"!
J \",~Lh
'RB' and
stored in the intermediate table with the symbiont name ISSEG. A count symbiont devices is incremented for
each entry.
The syntax for the :SDEVICE command is:
:SDEVICE (LMN, MANE, YYNDD, YYNDD ••• ), (LMN, ••• )
SDEVICE begins processing a parenthetical expression by requiring the keyword IILMN II.
The name which follows
is that of a symbiont which controls the input or output of the device{s) identified by YYNDD. The symbiont names
are ISSEG (input) and OSSEG (output).
The IINAMEII is obtained and syntactically checked (l to 7 alphanumeric
characters, one of which is alpha) and if legal, is saved in an intermediate table (See Table 2-7). The next field
IIYYNDD" is obtained and is validated by checking certain tables in the
~rk
area built by UBCHAN.
Note if
YY=RB, it is not processed as it is already in the table. The DCT1 table (pointed to by DCn PTR) is searched for
the value IINDD ".
If none is found, the "VYNDD II is invalid and SDEVICE skips to the closing parenthesis and
then continues processing. However, if found, the index to the value in DCT1 is used as an index to the DCT4
table (pointed to by DCT4 PTR) where a value is obtained which in turn is an index into TYPMNE (pointed to by
TYPMNPNT).
87
The value "YY" is then checked against the indexed value in the TYPMNE. If not equal, SDEVICE continues
the search of the DCTl table for another "NDD" equivalent. If the !lYY" val ue is found, the "YYNDD" is
saved in the intermediate table and the number of entries in the table is incremented by one.
SDEVICE then obtains the next "YYNDD". If there is none, the current parenthetical field is terminated and the
syntax scan begins with the next parenthetical field. If there is another "YYNDD" in the current field,
the "name" (ISSEG/OSSEG) is obtained from the previous "YYNDD" and is entered into the intermediate table.
Processing continues as previously described.
To complete processing SDEVICE, it sets up PLlSTs and allocates and initializes the load module areas in the
working storage area, and proceeds to generate SECT. 00 using the information from the intermediate table and
DCTl, DCT4, and TYPMNE tables.
The tables generated for M:SDEV are listed in the OUTPUT section of this chapter.
Note that in creating SNDDX,
the entries in the intermediate table are processed in the order of occurrence and, therefore, the SNDDX table
is ordered accordingly. As each entry is generated, a count of the number of "OSSEG" references is maintained.
The contents of the byte table SYMX depend on whether a BPM/BTM or UTS system is being generated. For
both the first and last two entries are null. For a UTS system, the entries are set to 1 for an "ISSEG II name
and to 2 for an "OSSEG" name, and the first null entry at the end of the table is set to 3 and the second null
entry to 2.
For a BPM/BTM system, the entries in SYMX are referenced by the REFs ISSEG and OSSEG as
encountered in the intermediate table. Therefore, the destination of each REF is a specific byte in SYMX
The first null entry at the end of the table is the destination for the REF SFSEG and the second null entry
for the REF OSSEG.
When the generation of the tables is completed, the load module M:SDEV is written. SDEVICE then puts the
number of symbionts in Register 6 and checks for error conditions having been detected (ABORTFLG"I 0). If
errors have occurred, SDEVICE prints message and exits back to the monitor. If error-free, SDEVICE exits
back to SDVRETRN in P2CCI and PASS2 continues processing.
88
Table 2-7. INTERMEDIATE NAME TABLE
LOW CORE
contains
DCTl,DCT4
TYPMNE
BA
N
NO
C1
II
C2
Y
C1
Y
C2
J~
II
II
Cn
NDD
II
SDEVICE
WORK
AREA
Cn
RA
EA
NDD
Y
Y
\I
~
v
I
~--------------------------------------~I
where
"
HIGH CORE
N = number of entries in intermediate table (3 words/entry)
characters in name (i.e., ISSEG,OSSEG)
C C2•• Cn =
1
YY=
EBCDIC "yv" from YVNDD value
ndd =
hexadecimal equivalent of IINDDII from YVNDD value
BA =
base address of work area pointed to by SDVBEGIN
EA =
end address plus 1 work area pointed to by SDVEND
RA =
base address of remainder of work area which is used in
generating M:SDEVand is forced to a doubleword boundary.
NO=
number of OSSEG name references
89
2.3.8 SDEVICE Messages
INVALID SYMBIONT NAME
The "name" field is either non-alphanumeric or is
greater than seven characters long. SDEVICE sk ips
to end of parenthetical field and continues processing.
INVALID KEYWORD
The keyword "LMN" is expected but not found.
SDEVICE skips to end of parenthetical field and
continues processing.
SYNTAX ERROR
A open parenthesis, a closing parenthesis, a comma
after "LMN II or "name" is expected but not found;
end of command cannot be found;or a "YVNDD II
is encountered where YY = 9T, 7T, or DC and "00 II
is less than X I80 1 or YV is not equal to 9T, 7T, or DC
and liDO II is greater than or equal to X 180 1• SDEVICE
skips to end of parenthetical field and continues
processing.
INVALID IYVNDD I
The "YVNDD" is not alphanumeric, is greater than
five characters long, is not defined in DCll table, the
value "N" is not from A through H, or the value "00"
is not hexadecimal. SDEVICE skips to end of
parenthetical field and continues processing.
NO ROOM LEFT FOR :SDEVICE
There is no work area left for generating the
intermediate table. SDEVICE displays abort message
and exits back to the Monitor.
REMAINDER OF CC IGNORED
This message appears with previously described
messages if SDEVICE cannot find end of current
parenthetical field.
SDEVICE continues by
attempting to generate load module.
MODIFY ERROR
There is not enough work area available to generate
load module. SDEVICE displays abort message and
exits back to the Monitor.
ISDEVICE I ABORTED
Message is displayed in previously described error
conditions.
2.3.9 Internal Routines
SDEVICE
Main entry, initialize and control.
90
SDEVICEO
Process next parenthetical field.
SDEVO
Process next "YVNDD".
WRTMSDEV
Load module generation completed, write it to
"M:SDEV" file.
WRITEF
Perform actual write of load module.
Register 1 = buffer address.
Register 2
= buffer size
(bytes).
Register 3 = key address of load module record.
VALID
Check current "VYNDD II against available devices
as specified by DCTlPTR, DCT4PTR, and
TYPMNPNT and respective tables DCTl, DCT4,
and TYPMNE.
Register 1 = "YVNDD", with "NDD" converted
from EBCDIC to hexadecimal.
ROOM
Check if any work area remains for intermediate table.
Register 5 = address of next available entry.
Register 6 = address of last available entry
plus one.
DEFX
Set up DEF PLIST for MODIFY routine for generation
of an external definition.
EXPRX
Register 1 = address of NAME 1•
Register 13 = VALUE •
2
Set up EXPR PLIST for MODIFY routine for generation
of an externa I reference.
Register 1 = address of NAME 2
Register 13 = VALUE
1
Ca II MODIFY to perform the function DEF or EXPR.
0
0
STADDR
Register 4 = address of PUST needed by
Master PLIST.
STREGS
Save contents of registers 12 through 14, and 1 through 4 o
BUILDCDT
Set up Master PUST with address supplied.
Register 13 = relative word address to be stored
in Master PLIST.
Register 12
= double
word address to be stored in
Master PUST.
91
Register 2 = half word address of Master PLIST entry
where final address is to be set.
Reg ister 5
Special error routines include:
= word address of base of work area.
ERR 1, ERRCOMON, ERR 1X, ERR2, ERR3, ERR3A,
ERRX, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9,
ERRA 1, ERRA 11, ERRA2, ERRZZ, RECOVER, MOD ERR,
ERR12.
92
2.3.10 Flow Chart
Pg. 1
ENTER
From SDEVEND
Get work
& SDVBEGIN
area limits
in Temp Stack
>----l~
yes
New parenthetica I
field, Get
keyword "LMN"
merge IRBI and
add from connect
DCTI entry
Store in
Interim Table
Get Name
Get previous
name & put in
Interim Table
Put name in
interim table
SDEVICEO
\J
convert "NDD"
from EBCDIC to
Hexadecimal
Validate VYNDD
as valid
Device
Thru DCT1,
DCT4, & TYPMNE
Tables
Put VYNDD in
Interim Table
Update "N"
counter in
interim table
Figure 2-10. Flow Diagram of SDEVICE
93
Pg. 2
Set up PLISTS &
a Ilocate load modu I
areas in work area
Initial ize
work area
Generate
M:SDEV Load
Module
WRTMSDEV
I
Write load modu Ie
to "M:SDEV" File
no
Exit to
SDVRETRN
Exit to
Monitor
EXIT
in P2CCI
Figure 2-10.
Flow Diagram of SDEVICE (Cont.)
94
2.4 XMONITOR
2.4. 1 Purpose
To process MON ITOR or UTM PASS2 control com:-n::mJs, creating the M:CPU and (For UTS) M:SYMB, and M: BIG9
load modules, the MON::ORG object module, and an updated SPEC:HAND file if SJG9 and or ANS specified on
the UT M command.
2.4.2 Usage
B
MONITOR (MONITO.~ command)
B
UBMONITOR (UTM command)
with:
R7 pointing to control card PLIST
RO pointing to temp stack pointer
R3 pointing to PASS2 stack data
R6 containing the number of symbiont devices
(BPM/BTM only)
RO and R3 are saved
Return is to READSTRG in P2CCI
2.4.3 Input
Control card (:MONITOR or :UTM)
SDGANSG - to create SDGA value
#RBTS - number of remote batch devices defined via :DEVICE commands
LORBIN - DCT 1 index of first remote batch device defined
#pRDP - number of private disc packs defined
DEVS - contains # private pack, #7 track and #9 track tapes
BIG9FLG - Set by XMONITOR for UTS systems if BIG9 option specified
2.4.4 Output
M:CPU load module (Table 2-8)
MON:ORG object module - is of length 2*((ORG+l)/2) reserved words with the last one equated to MONORG
label.
ORG is the keyword parameter on :UTM or :MONITOR
M:SYMB Module (Table 2-9) UTS only
SPEC:HAND file - If SIG9 is present on :UTM command, the handler name S9TRAPS and 1 or if ANS is specified
on :UTM command the name ANSTP is added to the HANDLERS record of this file.
M:BIG9 module UTS only - contains an absolute DEF :9 only - This DEF is 1 if BIG9 option specified on UTM
command, otherwise :9
= O.
95
Table 2-8. Contents of M:CPU Load Module
---Entry
Size (words)
Label
Length
-
Contents/Value (in terms of Keywords)
Target System
MPOOL-FMPOOL(if > 0)
BPM/BTM
CFU
BPM/BTM
CFU-FCFU (if> 0)
BPM/BTM
QUEUE - FQUEUE (if> 0)
BPM/BTM
QUEUE
UTS
# Granules PER defined
BOTH
1. Absolute DEFs
MAXBM
Value
MAXCFU
Value
MAXBKGDCFU
Value
MAXBQ
Value
-
SDGA
Value
-
CORE
Value
-
CORE in words
BOTH
BCRBID 1
Value
-
length in bytes of significant words
of RBB'ID table
BPM/BTM
SSSIZE
Value
Sector Size
UTS
SBSECTS
Value
number of buffers/sector
UTS
SGSIZE
Value
-
number of sectors/granule
UTS
ANS
Value
-
1 if ANS specified
not specified
UTS
number of entries in AVRFNMT table
UTS
o if no Remote batch devices on system
else is highest RBT DCn index +1
UTS
Value
LAVRFMT
2
LCLX
RBLIMSZ
1
RBLIMSIX1
o if ANS
Value
-
Value
-
number of RBTs defined
UTS
Value
-
DCll index of first RBT defined
UTS
Value
2. Tables
i
TSTACK
1
TSTACK+2
Stack pointer followed by TSTAC K
words containing 0
BPM/BTM
ABSBASE
1
1
0
BPM/BTM
ABSEND
1
1
0
BPM/BTM
MPOOL
1
{34*MPOOL)+2
For both systems, 1st word on DW
boundary contains address of 1st
MPOOL buffer (also starting on DW
boundary) and the 1st word of each
buffer contains address of next buffer or
o if last buffer
UTS
(34*MPOOL-2)+2
BPM/BTM
SPOOL
1
(256*SPOOL)+2
Same as MPOOL except for buffer size
BPM/BTM
CPOOL
..
1
{40*C POOL)+2
Same as MPOOL except for buffer size
BOTH
CPOOLEND
1
1
represents address of end of C POOL tabl e BOTH
1. Generated only if remote batch devices is defined for the Target System.
2. Generated only if ANS is specified.
96
Table 2-S. Contents of M:CPU Load Module (cont.)
Label
Entry
Size (words)
Length
Contents/Value (in terms of Keywords)
Target System
SYMFILE
1
SFIL+1
o except first word contains SFIL
BPM/BTM
SYMFSDA
1
SFIL +1
0
BPM/BTM
RBSYMFID
1/4
SFIL+1
0
BPM/BTM
IOQl
1/4
QUEUE+1
0
BOTH
IO Q2 1
QFREEJ
1/4
QUEUE+1
each entry= (Byte displacement from
IOQ2)+ 1 except last entry = 0
BOTH
IOQ3
1/4
QUEUE+l
0
BOTH
IOQ4
1/4
QUEUE+l
0
BOTH
IOQ5
1/4
QUEUE+l
0
BOTH
IOQ6
1
QUEUE+1
0
BOTH
IOQ7
1/4
QUEUE+1
0
BOTH
IOQS
1
QUEUE;!" 1
0
BOTH
IOQ9
1/2
QUEUE+1
0
BOTH
IOQ10
1/4
QUEUE+1
0
BOTH
IOQl1
1/4
QUEUE+ 1
0
BOTH
IOQ12
1
QUEUE+1
0
BOTH
IOQ13
2
QUEUE+l
0
BOTH
IOQ14
1/4
QUEUE+1
0
BOTH
IOQ15
1/4
QUEUE+1
0
UTS
ACNCFU
1
19
0
BOTH
FILCFU
1
19
0
BOTH
BGRCFU
1
19*(CFU-l )
0
BOTH
LASTCFU
1
19
0
MPATCH
1
MPATCH
O(if MPATCH
boundary
153 + CORE {in
SK units}
All 0 except word 71 contains $+4
words 72-73 - M:OC (TEXTC)
word 72 contains $+2 words 76-77
{M:OC DCB} contains X'200003 1 ,
X60002 1 word lOS contains XI F0404040'
words 153 to END contain all 1 bits
BPM/BTM
-
JIT
BOTH
> 0) starts on
DW
BOTH
MX:PPUT
1/4 or 1/2
CORE (in pages)
+ S or 16 words
(overleid)
The fi rst 32 entries (S or 16 words)
overlay MPATCH or LASTCFU Remaining bytes on hal fwords are forward
linked same as IOQ2
UTS
RB:XFLG 1
1
1
0
BOTH
RBB:ID
1
1
o if no RBTs on system
BOTH
1/4
highest RBT DCT1
index highest RBT
DCn index +
Significant entries (containing 0) only
in the RBT DCn index range (plus 1
for UTS)
BPM
UTS
1
1
Address of table points to word containing first significant entry of RBB:ID
BPM/BTM
WARBBID 1
l. Generated only if remote batch devices defined on tprget system.
97
Table 2-8. Contents of M:CPU Load Module
Label
Entry
Size (words)
RBD:WSN1
Length
Contents/Value (in terms of Keywords)
Target System
2
Highest RBT DCTl
index
Significent entries (containing 0)
only in the DCTl index range of RBTs
UTS
SITEID
2
2
name identified by SITE Keyword or
blank
UTS
AVRFNMT2
6
#tapes defined
on system
0
UTS
ANSFLGS2
1/4
#tapes defined on
system
0
UTS
ANSPRT2
1
1
1 if ANSPROT 0 if keyword not
specified
UTS
M: FPPH3j
1
1
1
1
1
1
X'20' (first linked entry in MX:PPUT)
CORE (in pages)-l
CORE (in pages)-X'20'
UTS
M:FPPT
M:FPPC
BW:CHG
1
1
0
UTS
BL:IFS }
BL:OFS
1
1
1
1
(INFILE-1
OUTFILE-1
UTS
UTS
LSERIAL
1/4
«(AVGSER*16)
+3)/4)+17
(Byte displacement from LSERIAL)+ 1
except last entry = 0
UTS
TSERIAL
1
«(AVGSER*16)
+3)/4)+17
entry 0 = # entries in LSERIAL
a II other entri es = 0
UTS
PARPSD4
1
1
DW boundary PARXXXX (PREF)
UTS
PARITYCC4
PARERPS04
1
1
0
UTS
2
4
words 0-1 = 0
word 2 = PARITYER (PREF)
word 3 = X'17000000'
UTS
BUSER104
2
2
word 0 = X'00400000'+ BUSER 1(PREF)
UTS
PSDTEMp4
2
2
0
UTS
BUSTEMp4
2
2
0
UTS
IETPS04
2
2
word 0 = IETXXXX(PREF)
word 1 = 0
UTS
INSTXPS04
2
4
words 0-1 = 0
word 2 = INSTXCPT (PREF)
word 3 = X'17000000'
UTS
MEMFTPSD4
2
4
words 0-1 = 0
word 2 = MEMFAUL T (PREF)
word 3 = X'17000000'
UTS
PARXPS04
2
2
word 0 = PARXX 1 (PREF)
word 1 = X'07000000'
UTS
l. Generated only if remote batch devices defined on target system
2. Generated only if ANS specified ANSPROT. Keyword ignored if AN S not specifi ed also
3. These words are order dependent
4. Generated only if SIG9 or BIG9 option specified
98
Table 2-9. Contents of M:SYMB Load Module
Label
Entry Size
(words)
Length
Contents/Value in terms of Keywords
1. Absolute DEF~
MFS
Value
2 + 2 * #RBTs defined on system
OUTFIL
Value
OUTFILE + MFS
INFIL
Value
INFILE
1. Tables
BD:ACCT
2
INFIL+l
BW:RES
1
INFIL+l
o
o
BH:TIME
1/2
INFIL+ 1
o
BH:PART
1/4
INFIL +1
BH:SLNK
1/2
INFIL+l
BH:XLNK
1/2
INFIL +1
o
o
o
BH:HPRI I}
1/2
X'23' (HW)
all entries 0 except X'22' = 1 X'23' = INFIL+l
BH:TPRI
1/2
X'23' (HW)
all entries 0 except X'22'
BW:SDA
1
INFIL+OUTFIL+l
BH:SID
BB:PI }
BB:DEV
BH:LlNK
1/2
INFIL+OUTFIL+l
1/4
INFIL +OUTFIL +1
o
o
o
1/2
INFIL+OUTFIL+ 1
Entry 0 = 0
Entry 1 through INFIL -1 are (1+ displacement from
BH:LlNK)
Entries IN FIL + 1 through IN FIL + OUTFIL -1 are (1 +
displacement from BH:LlNK)
Entries INFIL and IN FIL + OUTFIL are 0
BB:RID
1/4
INFIL+OUTFIL+l
S#H:LNK
1/2
(((INFIL *AVGSER)
+3)/4)+1
o
o
S#W:SER
(((INFIL *AVGSER)
+3)/4)+1
RB:SPMF
1
# of RBTs + 1
o if no
RB:MFAD
1
# of RBTs + 1
o if no
= INFIL X'23' = OUTFIL+INFIL
RBTs defined significant entries (contianing 0)
in range of DCll index for first RBT through LCLX
RBTs defined significent entries (containing 0)
in range of DCll index for first RB T through LCLX
RBB:MFC 2
1/4
#RBTs+1
Significent entries (containing 0) only in range of
DCll index for first RBT through LCLX
RBB:MXp2
1/4
#RBTs=l
Significent entries (containing 0) only in range of
DCll index for first RBT through LCLX
SYMND
address is that of test cell in M:SYMB
1. Tables are order dependent
2. Generated only if Remote batch devices defined for target system
99
2.4.5 Interaction
M:OPEN, M:READ, M:WRITE, M:CLOSE are used to write MON ::ORG and to update SPEC:HAND.
SYNTAX
is used to interpret input control card.
COREALLOC
is used to allocate memory for M:CPU and M:SYMB.
MODGEN
is used to manipulate REFDEF stacks, EXPRESSION stacks, and RELOCATION DICTIONARIES.
WRITELM
is used to write M:CPU,M:SYMB and M:BIG9.
READSTRG
is exit location.
2.4.6 Data Bases
is a two-part input table for SYNTAX. The first part is a set of SYNTAX control halfwords that
KWDTBLO
prints SYNTAX to process the non-standard format of SITE option on the UTM command as well as
the standard format for the rest of the UTM options and all of the MONITOR standard options.
The
second part of the table is the normal SYNTAX keyword table.
DYNAM
is the MONITOR virgin stack data block.
It contains entries for UTM-specific keywords,
but they are zeroed to cause SYNTAX to reject them.
UDYNAM
is the UTM virgin stack data block contain ing one doubleword table pointer for the SITE option
in addition to the normal keyword entries. It causes SYNTAX to reject MONITOR-specific
keywords.
ORGROM
is a MON ::ORG module with ORG set to O.
2.4.7 Subroutines
BUFGEN
generates linked buffers (MPOOL, SPOOL,CPOOL).
It is entered via a branch to BUFGEN
while under MODGEN control and exits by restoring R10 (MODGEN's controlling register).
2.4.8 Description
If entered at MONITOR and R6 (number of symbiont devices) is non-zero, the default values in DYNAM for SPOOL,
CPOOL, and TSTACK are adjusted appropriately.
Then, or otherwise, SYNTAX is used to decode the control card.
COREALLOC is used to set up the M:CPU module in memory for generation and MODGEN interaction. The M:CPU
module is generated using MODGEN, checking where necessary to omit those items not belonging to the particular
target system being generated (See Table 2-8). WRITELM creates the M:CPU file.
If the BIG9 option has been used,
XMONITOR sets BIG9FLG in the stack for subsequent use by the SPROCS and IMC overlays.
Then theORG input value is inserted into ORGROM, the checksum is adjusted and ORGROM is written as the
MON::ORG file.
Then if the target system is BPM/BTM, XMONITOR returns to P2CCI.
Otherwise, COREALLOC again sets up a module generation environment, and MODGEN is used to generate the
M:SYMB module which is then written by WRITELM.
If the SIG9 (BIG9) and/or ANS options have been specified
the SPEC:HAND file is read into core and the names S9TRAPS and/or ANSTP are added to the HANDLERS record
of the file which is then written out to disc.
COREALLOC is then used to allocate a module generation enviornment
in which only REFDEF entry space is defined and MODGEN is used to define the absolute DEF:9, which is equal to 1
if the BIG9 option has been used on the :UTM command.
load module M:BIG9 out to disc.
Otherwise,:9 is set equal to O. WRIT ELM then writes the
XMONITOR then returns to P2CCI at READSTRG.
100
2.4.9 XMONITOR Messages
***TROUBLE WITH SPEC:HAND-
In attempting to open SPEC:HAND file to add the name
S9TRAPS AND/OR ANSTP NOT
S9TRAPS and/or ANSTP, an error or abnormal con-
INCLUDED
dition was encountered. XMONITOR continues.
***FQUEUE >
= QUEUE
- FQUEUE
The value specified for FQUEUE is equal or greater than
IGNORED
specified for QUEUE. XMONITOR continues.
***FMPOOL > = MPOOL- FMPOOL
The value for FMPOOL is equal or greater than
IGNORED
that of MPOOL + XMONITOR continues.
***FCFU>
=
CFU - BKGD HAS NO
The value for FCFU was equal or greater than that
CFU
specified for CFU. XMONITOR continues.
***ANS NOT SPECIFIED-ANSPROT
The keyword ANSPORT was specified but not ANS.
IGNORED
XMONITOR continues.
***AVGSER OUT OF RANGE-
The value specified for AVGSER is invalid and the
DEFAULT (l) USED
default is used. The legal range is 1 to 63 unless no
private packs are defined on the system in which
instance the minimum may be O. XMONITOR continues.
***BIG9 SPECIFIED - SIG9 ALSO
The option BIG9 has been specified but not SIG9.
INCLUDED
SIG9 is also included. XMON ITOR continues.
101
2.4. 10 Flow Charts
Page 1
(
UBMONITOR
MONITOR)
Set flag for
MONITOR command
(=0)
Set flag for UTM
command (= 1)
Adjust defaults for
symbionts if any
defined
SYNTAX
Decode
command
yes
Process ANS, SIG9,
BIG9 and AUGSER
options
COREALLOC
Set up core for
M:CPU
MODGEN
yes
Generate DEFs for
TSTACK MAXBM
ABS
Generate DEFs for
MAXBQ MPOOLs
BUFGEN
Generate buffers and
links for MPOOLS
A
pg.2
Figure 2-11. Flow Diagram of XMONITOR
102
Page 2
MODGEN
Generate DEFs for
>----+1 symbionts and
yes
SPOOLS
Generate DEFs
CPOOLS, IOQ Tables, ....- - - - - - - - - '
CFUs, MPATCH
MODGEN
yes
Generate JIT and
RBT tables if
required
Generate other UTS
tables, ANS tables
if required
MODGEN
yes
Generate RBT
tables
General single entry
RBT tables
MODGEN
yes
Generate SIG9
tables and data
area
Write M:CPU load
module
pg.3
Figure 2-11.
Flow Diagram of XMONITOR (cont.)
103
Page 3
Set up ORGROM
yes
pg.4
COREALLOC
Set up CORE for
M:SYMB
Generate M:SYMB
tables
MODGEN
special
... Generate
RBT tables
/----~
yes
Generate single entry
RBT tables
WRITELM
Write M:SYMB load
module
Figure 2-11. Flow Diagram of XMONITOR (cont.)
104
)
Page 4
c~c
yes
Update SPEC:HAND
fi Ie adding S9TRAPS
yes
Update SPEC:HAND
file adding ANSTP
COREALLOC
Allocate space
for M:BIG9
MODGEN
Generate :9 DEF
WRITELM
Write M:BIG9
Clean up stack
EXIT
Figure 2-11. Flow Diagram of XMONITOR (cont.)
105
2.5 XLIMIT
2.5. 1 Purpose
To process DLIMIT, BLIM IT, OLIMIT or ELIMIT PASS2 control commands, creating the M:DLIMIT, M:BLIMIT,
M:OLIMIT or M:ELIMIT load module.
2.5.2 Usage
B
DLIMIT
(DlIMIT command)
B
UBBLIMIT
(BLIMIT command)
B
B
UBOLIMIT
(OLIMIT command)
UBELIMIT
(ELIMIT command)
2.5.3 Input
Control card (:DLIMIT, :BLIMIT, : o LIM IT, or :ELIMIT) image.
2.5 4 Output
0
M:DLIMIT load module - BPM/BTM (Table 2-10)
M:OLIMIT/M:BlIMIT/M:ELIMIT load modules - UTS (Table 2-11)
Table 2-10. Contents of M:DLlMIT
label
ContentstYalue (in terms of Keywords)
Ent!:l Size .Size
(Wds)
-
DLIMTBl
'-
TIME LIM
1
16
TIME
lOLIM
1
16
lO
POLIM
1
16
PO
DOlM
1
16
DO
UOLIM
1
16
UO
SCTLIM
1
16
SCRATCH
Default limit table,
FPOOLIM 1
1
16
FPOOl
indexed by pri ority
PSTLIM
1
16
PSTORE
TSTLIM
1
16
TSTORE
IPOOLIM 2
1
16
IPOOLIM
- #l.
Base address of M:DLIMIT
...,
>
~
left half of each FPOOLIM entry contains buffer size (512 words)
#2. left half of each IPOOLIM entry contains buffer size (256 words)
106
Table 2-11. Contents of M:OLIMIT/M:BLIMIT/M:ELIMIT
Labell.
Size
Contents (i n terms of Keywords)
SL:XTIME
1
2
TIME •
SL:XLO
1
LO
SL:XPO
1
PO
SL:XDO
1
DO
SL:XUO
SL:XT3•
1
UO
1
TAPES
SL:XFp3.
1
FPOOL
SL:XPS
1
PSTORE
SL:XTS
SL:XIp 3.
1
TSTORE
1
IPOOL
SL:XC 3.
1
CORE
SL:XF 3•
1
FILES
SL:XSp3.
1
SP
1. X in label is replaced by 10 1 or IBI or lEI
2. SL:OTIME is always zero.
3. Not generated in M:ELIMIT
2.5.5 Interaction
SYNTAX
is used to convert control card to stack data blocks.
COREALLOC
is used to allocate dynamic data pages.
MODGEN
is used to generate DEFs.
WRITELM
is used to write the output module.
READSTRG
is exit location.
2.5.6 Data Bases
Initially:
UKWD and DKWD are overlapping keyword tables for SYNTAX. UKWD is used for BLIMIT and
OLIMIT and ELIM1T; DKWD for DLIMIT.
DSYS
is the DLIMIT virgin stack data block for SYNTAX (containing default values).
OSYS
is the OLIMIT virgin stack data block.
BSYS
is the BLIMIT virgin stack data block.
ESYS
is the ELIMIT virgin stack data block.
DNAMES, ONAMES, BNAMES and ENAMES are the portions of code (interlaced with TEXTCs) which are fed to
MODGEN to generate the corresponding load modules.
107
After SYNTAX:
Stack data block (now in the stack and pointed to by R5) for OLIMIT, BLIMIT and ELIMIT contains an image of
the output module data record.
For DLIMIT, R5 points to a number of data blocks equal to one more than the number of PRTY options
encountered in the :DLIMIT command.
Each block contains a word for each kind of limit (UO, PO,
etc.), and a word for the PRTY value (priority).
PRTY is a type 4 keyword with a default of -1, so
the first block has a PRTY value of -1 and positive values (either default or command - specified) for all
limits.
Every other block has positive values only for those limits command - specified for the block1s
PRTY value.
If the PRTY value in the block is negative, it is less than -1 and indicates that the command -
specified value was too large or had been previously specified.
2.5.7 Description
Each entry point sets a flag (0, 1 or 2) in R4 and branches to LIMIT.
BALs to it.
LIMIT sets input pointers for SYI'~TAX and
Upon return, the values specified for SCRATCH and SP (UTS only) are examined to determine if they
are equal to or less than the total number of tapes units and private disc packs specified via :DEVICE commands.
If not, error routines are entered that change the value to the maximum number specified and print an appropriate
message and return. For the :ELIMIT command, all parameters are checked to determine that no va lue specified
exceeds the maximum permissible value. Any error detected causes a message to be generated and the default
value substituted. A BAL to COREALLOC allocates core.
The address of the proper name table (DNAMES,
ONAMES, BNAMES or ENAMES) is put in R10 and a branch to MODGEN generates the required DEFs.
for BLIMIT
o LIM IT and
Then,
ELIMIT a branch to BUILD moves the stack data block to the output module data record
and drops into WRITE, which points R14 to the proper fi lename, BALs to WRITELM, cleans data block(s) out of the
stack, and exits to READSTRG. For DLIMIT, BUILD is replaced by a routine which moves values from the first
data block to the module data record for all priorities, and then for every other data block with non-negative PRTY
values, moves non-negative limit values to the data record only for that priority. Then, a branch to WRITE
finishes up and exits.
**SCRATCH TAPES> TOTAL ON SYSTEM --
For the designated priority 1 the number of tapes specified
*XXXX*USED FOR XXXXXXXPRIORITY
for SCRATCH exceeds the total numbers of tape drives
(9T and 7T) defined via :DEVICE commands. XLIMIT
substitutes the *XXXX* value and continues. (BPM/
BTM only)
**TAPES > TOTAL ON SYSTEM -*XXXX* USED
**DISC PAC KS > TOTAL ON SYSTEM -*XXXX* USED
The number of Tapes/Disc Pack (SP) specified exceeds the
total number of tape drives (9T and 7T) disc packs defined
via :DEVICE commands. XLIMIT substitutes the *XXXX*
value and continues.
(UTS only)
**XXXXXXXX INVALID-
The parameter (XXXXXXXX) on the :ELIMIT canmand
XXX X USED
is in error and the value (XXXX) has been substituted
108
2.5.8 Flow Chart
ENTER
DLIMIT
UBBLIMIT
UBOLIMIT
UBELIMIT
Pg. 1
DLIMIT R4 = 0
UBBLIMIT R4 = 1
UBOLIMIT R4 = 2
UBE LIMIT R4 = 3
Set flag for
type of entry
Get Max Tapes
units and disk
packs specified via
:DEVICE Command
SYNTAX
Get :commands
in tabular form
Validate
parameters
yes
Check SCRATCH
against max
tapes
ERRT PES
Process error
condition
Error
Pg. 3
Check SCRATCH
for each
priority
yes
Check SP against
Max private disk
packs
ER
Process
Error Condition
rror
COREA LOC
Get Dynamic
data pages
Pg. 2
Figure 2-12. Flow Diagram of XLIMIT
109
Pg. 3
Pg. 2
Get table of
names to be
generated
DLIMIT - DNAMES
BLIMIT - BNAMES
OLIMIT - ONAMES
ELIMIT - ENAMES
I
I
!
MODGEN
To generate
DEFs
S
Generate
Table DEFs
(16 words each)
Generate Table
DEFs (1 word
each)
Get priority
from DYNAM
Store value
in Table
yes
Store val ues from
default DYNAM
in all priorities
of one table
no
Search DYNAM fo
changed value
Write
Load Module
Store in table
indexed by
priority
Clean up
Stack
no
no
Figure 2-12.
Flow Diagram of XLIMIT (Cont.)
110
Pg. 3
Store Max
value in
DYNAM
Convert value to
EBCDIC put in
error message
Print
Error
Message
ERRSP
Store Max
value in
DYNAM
Convert value
to EBCDIC put
in error message
PRINT
Figure 2-12.
Flow Diagram of XLIMIT (Cont.)
111
RETURN
2.6 ABS
2. 6. 1 Purpose
To process the PASS2 :ABS command and generate the load module M:ABS. This load module defines which
processor root segments are to be located in the absolute area on the system random access device for a
BPM/BTM target system only.
2.6.2 Usage
B
ABS
With
R7 pointing to the control card PLIST
RO pointing to the temp stack pointer
R3 pointing to PASS2 stack data
R3 and R7 are saved
Return is to READSTRG in P2CCI
2.6.3 Input
Control card (:ABS) image
2.6.4 Output
M:ABS load module (Table 2-12)
Table 2-12. M:ABS Load Module
Label
Size
--
Contents or Value
ABSGOSZ
Value DEF
SIZE option on :ABS
ABSPROC
4*(number of
:L file and names of
processors+ 1)+
processors specified
entri es for names
and space for control
of processors in
information.
TEXTC
112
2.6.5 Subroutines
CHARSCAN
(used to check a specific character for legal syntax)
DECSCAN
(used to scan a field containing a decimal value)
NAMSCAN
(used to scan a field containing a name)
QUOTSCAN
(used to scan a field containing a keyword)
MODIFY
(used to generate the M:ABS load module)
PRINTMSG}
(display error information)
OUTLLERR
2.6.6 Description
The ABS processor is entered when the PASS2 type is BPM (i. e., BPM/BTM target system) and :ABS is
encountered by P2CCI. When entered, ABS obtains and initializes four pages of core work area (Table
2-13) to be used in generating the M:ABS load module.
:ABS [, size
J
[(processor[,
The syntax for the :ABS control command is:
S]~ ~
(processor [,
S]~
..
The IIsize ll field is obtained and identifies, in decimal, the number of words desired for the absolute
read/write scratch area on the system random access device for the target system. This scratch area will
be used by CCI, LOADER, LOCCT, PASS3 for transmitting the loader overlay control command tables
(LOCCTs) between processors in a BPM/BTM base system. This area is also usable by any other processor
or user if so desired. If the II sizell parameter is null or less than 1024, the value 1024 is used.
ABS then obtains the parenthetical expression. If the processor "name" is syntactically legal (1-15
alphanumeric characters 1 of which must be alpha), it is checked to see if it has already been encountered
or is ":LII, if so, it is ignored and ABS continues processing the command. If the name is unique, it is
entered into an intermediate table (Table 2-14) and the next field is scanned. If no character exists, then
ABS continues with the next parenthetical expression. If the field contains information, the contents is
checked for the letter "5 11 and if it is not, it is assumed to be. Therefore, a flag is set in the intermediate
table indicating the presence of the "S" field. ABS then continues processing the command.
When this processing is completed ABS generates the M:ABS load module. The RELDICT.OO· (Table 2-13)
is initial ized to all Es.
The contents of SECT. 00 (See Table 2-14) is complete once the syntax analysis
is accomplished. The intermediate table thus generated becomes SECT. 00. The ABS processor continues
by generating an externa I definition (ABSPROC) defining the base address of SECT. 00. The value obtained
from the IIsize" option is used to generate the value DEF ABSGOSZ.
When completed, the generated load module (M:ABS) is written and ABS releases its work area and temp
stack area and returns to P2CCI at READSTRG.
113
Table 2-13 ABS Work Area
Low Core
~~
SECT.OO
{Intermediate Table}
RELDICT.OO
1/8 Size of SECT. 00
~
~
RFDFSTK
1/2 of Remaining Work Area
,~
g
c
C
t-
.-
'0
E~
EXPRSTK
Q)
~
1/2 of Remaining Work Area
,
High Cor.e
Table 2-14.
ABSPR OC Table
Word 0
02
..
1
00
00
00
00
2
00
00
00
00
3
00
00
00
00
4
00
5
HC
1101 0 1
I
I
01
C1
1
,
I
L
0
00
C2
J
---
---
nl
PO
SECTODA
n2
Pl
SECTlDA
SECTOSZ
P2
n4
SILITI
1
0
I
~~
....
"'5
.EQ)
0
"
~,
J
---
>...
t-
....c
w
..c:
....
I
c
SECT1SZ
STRTAD
.....
--c
V
v
m
Table va lues set by ABS processor: '
where
=number of characters (C n) in name (TEXTC type name).
= characters in name.
114
~
~
~
---
n3
---
00
n
Cn
Q)
«
',
~'~
~i:
"
~
Save load modules of "name" after it has been made absolute, (i. e.,
S= 1
the parenthetical field on the ABS command specified "S").
S=0
Release load module of "name" after it has been made absolute unless
it contains an overlay structure.
L= 1
Last item in ABSPROC table.
L= 0
Not last item in ABSPROC table.
Table values not set by ABS processor but eventually set by the bootstrap
procedure
PO
=page address of SECT. 00 (protection type 0) when loaded into core.
P1
=page address of SECT.01 (protection type 1) when loaded into core.
P2
=page address of SECT. 10 (protection type 2) which indicates the page
address plus one of the end of SECT. 01.
SECTODA
=disc address of the SECT. 00 information.
SECTl DA
=disc address of the SECT .01 information.
SECTOSZ
=size of SECT. 00 (words).
SECTlSZ
=size of SECT.01 (words).
STRTAD
=start address of the absolute processor.
T
= 0 absolute processor contains a task control block (TCB).
T
= 1 absolute processor does not contain a task control block (TCB).
2.6.7 ABS Messages
":L II NAME ILLEGAL OR NAME
A field has specified a processor name which is either
ALREADY DEFINED
":L II or has already been specified. The ABS
processor skips to next field and continues
processing.
NO PAGES AVAILABLE
Not enough core avai lable for work area. The abort
message is displayed and the ABS processor returns
to the Monitor.
'ABS' ABORTED
Displayed in conjunction with other catastrophic
error messages. ABS returns to the Monitor.
'(I EXPECTED BUT NOT FOUND
A parenthetical field is expected but not found.
Also could imply no absolute processors are desired.
ABS continues by generating the load module
"M:ABS".
NO FIELDS ON CC
For information purposes only. Implies no size field
was specified. ABS continues by displaying
EXPECTED BUT NOT FOUND" message.
115
II
'('
The processor name is not alphanumeric. ABS
INVALID PROCESSOR NAME
skips to next field and continues processing.
's' EXPECTED
This message appears if there is a field specification
BUT NOT FOUND
**'S' ASSUMED
following the processor name which should be the
key value "S", but instead is an unknown character
string. The value "S" is assumed and ABS continues.
~.
EXPECTED BUT NOT FOUND
The syntax requires a ") ", and the character found is
unknown. ABS continues to next parenthetical field.
SYNTAX ERR OR
A terminator is encountered and is unknown or
misplaced. ABS continues to next parenthetical
field.
PROCESSOR NAME> 11
Self-explanatory ABS continues to next
CHARACTERS
parenthetical field.
INVALID SIZE OR SIZE MISSING,
DEFAULT TAKEN
The size option is either <1024 or is not specified.
The va lue 1024 is used and ABS conti nues.
LOAD MODULE GEN.
The number of processor names spec ified causes the
UNSUCCESSFUL
intermediate table to overflow the available work
area. ABS displays abort messages and returns to
the Monitor.
2.6.8 Internal Routines
ABS
main entry, initia lizer and controls
Register 3
= address
in PASS2 temp stack of information.
Register 7 = address in PASS2 temp stack of PLISTs for processing
control command.
ABSO
process next parenthetical field.
CHEKNAME
check processor name against previous names.
Name cannot be defined
more than once and cannot be ":L ".
Register 1 = length of new name.
Register 15 = address of new name.
Register 6 = address of end of absolute processor name table.
FINDEOC
search for end of control command.
FINDRPAR
search for ")" and start processing with next "(".
ABSOUT
Control command processing finished, now generate "M:ABS" load module.
Register 6 = address of next available entry in work area.
Register 9 = base address of work area.
WRITE
Write load module to "M:ABS" file.
Register 12 = buffer address.
Register 13 = buffer size (bytes).
Register 14 = key address (load module elements key).
116
DECCNV
convert decimal size to hexadecimal equivalent.
Input: Register 2 = number of characters.
Register 1 = address of character string.
Output: Register 3
= converted value.
= 0 = converted value.
CC 1 = 1 = conversion cannot be completed.
CCl
117
2.6.9 Flow Chart
Pg. 1
Get 4
pages work
area
Initialize
work area
_J
I-Putdefaul-t- I
":L" entry
I into interim
I tab~ _ _
I
I
Get Size
field
Set size to
default
(1024)
hexadecimal
4-----------l~
Get processor
name from
next field
yes
yes
no
":L name
i1lega I or name
already
defined II
Put name in
interim
table
Find end
of field
no
Set to next
interim
entry
w------~
yes
Figure 2-13. Flow Diagram of ABS
118
Set 5=1
in interim
table entry
Pg. 2
Set L=1 in
Write load
module to
"M:ABS II file
Release work
area & Temp
Stack
Figure 2-13. Flow Diagram of ABS (Cont.)
119
2.7 BTM
2.7.1 Purpose
To process BTM PASS2 control command, creating M:BTM load module for BTM systems, and to include the
name BTMSTAT in SPEC:HAND if the BTM performance monitor routine is to be included in the target
system.
2.7.2 Usage
B
= temp stack pointer
R3 = PASS2 stack data pointer
BTM with RO
R7 = control card PLIST
Return is to READSTRG with RO and R3 intact.
2.7.3 Input
:BTM control command image
2.7.4 Output
M:BTM load module (Table 2-15).
Table 2-15. M:BTM Load Module Contents
Label
-
Entry
Size (Wds)
Length
Contents or value (in terms
of BTM Keyword values)
NUMUSERS
Value
NUMUSERS
USERSIZE
Value
NUMSYSTS
Value
-
BPMQTM
Value
-
BPMQTM/2
(i. e., converted to clock
ticks)
BTMQTM
Value
-
BTMQTM/2
(i.e., converted to clock ticks)
BTMQTM2
Value
-
BTMQTM2/2
USERSIZE
NUMSYSTS
(i. e., converted to clock ticks)
IBUFSIZE
Value
OBUFSIZE
Value
COCIINTl
Value
COCIGRP1
Value
-
COCIIBTl
Value
-
Write direct bit setting for lINT
COCOINT1
Value
OINT
COCOGRP1
Value
120
IBUFSIZE
OBUFSIZE
lINT
Interrupt group of liNT
Interrupt group of OINT
Table 2-15. M:BTM load Module Contents (Cont. )
- - - - - - - - - - - - - . , . - - - - - - . . . , - - - - - - - - - - - - ---.
1
label
Entry
Size (Wds)
length
Contents or Val ue (in terms of
BTM Keyword values)
I--C-O-C-O-B-IT-1-----~-V-al-u-e-~-------+-W-ri-te-d-i-re-c-t-bi-t-se-tt-i-ng-f-o-r-O-I-N--T
li
ClK3INT
Value-
BTMINIT
BTMGl
Value-
Interrupt group for BTMINIT
BTMIBIT
Value-
Write direct bit setting for BTMINIT
BTMPM
Value-
=0 if BTMPM Keyword not present
=1 if BTMPM Keyword present
USERPGS 1
Value
# of pages computed from USERSIZE .
-
+1
PMNQINTS 1
Value
-
26
PMMISC 1
Value
-
58
ACTFLAG
1/4
NUMUSERS
ACTPASSD
1/4
NUMUSERS
ACTTYPE
1/4
NUMUSERS
o
o
o
TTYFLAG
1/4
NUMUSERS
o
INCOUNT
1/4
NUMUSERS
OUTCOUNT
1/4
NUMUSERS
LITNEXT
1/4
NUMUSERS
RDROFF
1/4
NUMUSERS
ITABPSN
1/4
NUM USERS
OTABPSN
1/4
NUMUSERS
INBUF
1/4
NUMUSERS*
IBUFSIZE
o
o
o
o
o
o
o
OUTBUF
1/4
NUMUSERS*
OBUFSIZE
o
COCBUF1
1/2
NUMUSERS*2
+2
o
INPNTI
1
NUMUSERS
INPNTR
1
NUMUSERS
INBFEND
1
NUMUSERS+1
OUTPNTI
1
NUMUSERS
OUTPNTR
1
NUMUSERS
OUTBFEND
1
NUMUSERS+1
o
o
o
o
o
o
TABSTOPS
2
NUMUSERS
XI FFOOOOOOI, XIOOOOOOOOI
ACTCOND
1/4
NUMUSERS
HASITBYT
1/4
NUMUSERS
o
o
OOSIZ
1/4
NUMUSERS*2
01SIZ
1/4
NUMUSERS*2
DYPG
1/4
NUMUSERS*2
UNUSD
1/4
NUMUSERS*2
1.
If BTMPM=l
o
o
o
' - -__ .__ ...... _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--1.._ _ _ _ _ _ _ _ _ _ __
121
Table 2-15. M:BTM Load Module Contents (Cont.)
Label
-
~
Length
Contents or Value (in terms of
~TM Keyword values).
COMPG
1/4
NUMUSERS*2
0
PROGLEVL
1/4
NUMUSERS
0
BREAKC
1/4
NUMUSERS
0
USRTABLE
1
NUMUSERS
0
LOG NAME
2
NUMUSERS
0
PSDLEVOP
2
NUMUSERS
0
PSDLEVOC
2
NUMUSERS
0
PSDLEV1P
2
NUMUSERS
0
PSDLEV1C
2
NUMUSERS
0
PSDLEV2P
2
NUMUSERS
0
PSDLEV2C
2
NUMUSERS
0
RESTCMND
2
N UMSYSTEMS+8
See Insert Following
CMNDOBEY
1
NUMSYSTEMS+8
II
II
II
COMMANDS
1/2
NUMSYSTEMS+8
II
II
II
SYSBEG
1/2
NUMSYSTEMS
0
SYSCOUNT
1/4
NUMSYSTEMS
0
SYSTABLE
1
NUMSYSTEMS
0
SWPLST
2
120 if SWAPPER
0
Size (Wds)
= 720X
15 if SWAPPER=
7232/7212/7242
(Swapping device
passed from
UBCHAN)
QFREQ
1
1
PMNQINTS (26)
0
RSPFR 1
1
PMNQINTS (26)
0
DATPGS4 1
1
USERPGS
0
QUANTBGN 1
1
NUMUSERS
0
PPPGS 1
1
USERPGS
0
1
NUMUSERS
0
QTMSAV 1
SUBSQTM 1
1
NUMUSERS
0
1
NUMSYSTEMS
0
SUBSTSK 1
1
SUBSESQ
1
PMREQS
1
NUMSYSTEMS
0
2
NUMSYSTEMS
0
2
PMMISC (58)
0
LASTIM
1.
1
If BTMPM=l
122
Insert:
RESTCMND - contents
First N entries (Doubleword) where N=NUMSYSTS are O.
Last eight entries (Doubleword) in TEXTC format are
SIGN
E
SSAGE
OCEED
STORE
VE
BS
EKATMEM
COMMANDS
I"'
contents
First N entries (halfword) where N=NUMSYSTS are O.
Last eight entries (halfword) in TEXTC format are
AS
BY
ME
PR
RE
SA
TA
PE
CMNDOBEY - contents
First N entries (word) where N=NUMSYSTS are
X'680000OQ' + STSUBSYS (REFed)
Last eight entries (word) are
X'68000000'+STASSIGN (REFed)
X'68000000'+STEXIT (REFed)
X'68000000'+STMESS (REFed)
X'68000000 '+STPR OCED (RE Fed)
X'68000000'+RESTEXC (REFed)
X'68000000 I+SA VEXC (REFed)
X'68000000 '+TABEXC (REFed)
X '68000000 '+STLOOK (REFed)
SPEC:HAND Data File
If BTMPM=l
Then BTMSTAT name is added to SPEC:HAND data file so that PASS3 will include the module
in the HANDLERS file in M:MON.
123
2.7.5 Interaction
SYNTAX to convert command to stack data block
COREALLOC to allocate dynamic memory
MODGEN to generate DEFs, REFs
WRITELM to write M:BTM load module
2.7.6 Data Bases
KWD is the Keyword table for SYNTAX
DYNAM is the virgin stack data block for SYNTAX, containing the defaults for each Keyword.
CMNTBL 1 is the table used in generating the COMMANDS entry in M:BTM.
CMNTBL2 is the table used in generating the RESTCMND entry in M:BTM.
RANGE is the table used to verify that the values specified with the Keywords are within a valid range.
This is required as the defaults are greater than the minimum permissible values and SYNTAX
cannot do both limit checking and default setting under these conditions.
VALERR - a table of error message addresses and default values used in conjunction with RANGE. The
index value of the parameter in RANGE isused to obtain the appropriate default and error
message.
2.7.7 Description
After determination of the type of swapping device to be used on the target system, a BAL to SYNTAX puts
command information and defaults (except for USERSIZE) from DYNAM into the stack, pointed to by R5
and returns. The parameter USERSIZE is defaulted if the Keyword has not been specified. All parameters are
then checked against the permissible values in RANGE. If any is out of range an error routine is entered that
stores the appropriate default in the stack and prints a message indicating the parameter in error and the value
used and then returns.
Upon completion of this checking, a BAL to COREALLOC causes memory to be allocated. A BAL to
MODGEN begins the generation of the value DEFs, followed by the location DEFs and where applicoble the
REFs. The value DEFs and location DEFs for the BTM Performance Monitor are by-passed if the module is not
to be inc Iuded in the target system.
Upon completion of this generation, a BAL to WRITELM causes M:BTM load module to be written. Then, if the
BTM Performance Monitor is required, the SPEC:HAND data file is read into that area of core previously
occupied by the Data Base whi ch is no longer needed. The name BTMSTAT is added to the file, and the
number of entries in SPEC:HAND incremented by 1. Then the file is written and closed. Any difficulty
encountered causes BTMSTAT not to be included and an error message is printed indicating this has
occurred.
The stack generated by SYNTAX is then c leaned up and BTM exits to READSTRG in P2CCI.
124
2.7.8 BTM Messages
***TROUBLE WITH SPEC:HAND-
In attempting to open the file SPEC:HAND
BTMSTAT NOT INCLUDED
to add the name of the file BTMSTAT an error
or abnormal condition was encountered. BTM
continues.
***NUMUSERS ERROR - DEFAULT (8) USED
The values used for the specified parameter
***USERSIZE ERROR - DEFAULT (16384) USED
is in error. The given default is used.
***NUMSYSTS ERROR - DEFAULT (12) USED
BTM continues.
***BPMQTM ERROR - DEFAULT (200) USED
***BTMQTM ERROR - DEFAULT (800) USED
***BTMQTM2 ERROR - DEFAULT (800) USED
***IBUFSIZE ERROR - DEFAULT (100) USED
***OBUFSIZE ERROR - DEFAULT (100) USED
***IINT ERR OR - DEFAULT (60) USED
***OINT ERROR - DEFAULT (61) USED
***BTMINIT ERROR - DEFAULT (5A) USED
125
2.7.9 Flow Chart
Pg. 1
ENTER
Determine
Swapping Device
SYNTAX
CC in tabular
form
Default if
necessary
i
!
r--_~=US=E=RS~I_ZwE___.J
no
>-_---j~
ERR
Rl=Index value
of parameter in
error
Pg. 2
no
Figure 2-14. Flow Diagram of 8TM
126
Pg. 2
WRITELM
Access ERRMSG
name and
default using
index parameter
in error
Write
M:BTM
j
no
appropriate position
in stack table
I
Read
/ SPEC:HAND
/
I
I
I
J
---E--'
i
Add
BTMSTAT
Name
---....
RETURN
I
'-----r---,
Figure 2-14.
Flow Diagram of BTM (Cont.)
127
2.8 P2COC
2. 8. 1 Purpose
To process the
:coe PASS2 control command generating the M:COC
load module and updating the
SPEC:HAND file to include requested translate tables.
2.8.2 Usage
COC
B
With:
R7 pointing to control card PLIST
RO pointing to temp stack pointer
R3 pointing to PASS2 stack data
RO and R3 saved
Return is to READSTRG in P2CCI.
2.8.3 Input
Control card (:COC)
eocs - the relative address in PASS2 Stack where a
halfword table of coe device addresses begins if any
have. been defined via :DEVICE commands.
2.8.4 Output
SPEC:HAND
The names of any standard requested translate tables are added.
M:COC (Table 2-16).
128
Table 2-16.
Contents of M:COC
Label
-
Entry
Size 0Nds)
Length
Contents/Value (In terms of Keywords)
LCOC
Value
-
Number of COC-1
COD:LPC
2
COC
1st entry word 0=0, word 1= LINES-1 for each
subsequent entry. Word 0 = 1 more than previ ous
entry's word 1. Word 1 = LINES-1 (for the corresponding COC) added to previous entry's
word 1
{COC)-6
First entry-4 words only 0,0 COCIP {PRE F),
X' 10000000' . All other entries -10 words 0,0,
$+2, X' 11000000', STW,5 $+5 LI,5 COCO
Interrupt mask bit WD,5 X'1700'+COCO group
level LW,5 $+2 LPSD,l1 $+8 DATA 0
:
:
I
CO:INO
10
I
i
!
Note: Each entry is pointed to by CO:XPSDI
Out Interrupt
(no name)
6
Each 6 word entry is
COC
0,0 $+2,
entry
LI,3
B
X'170000NO' where N is the
number
N-1
COCOP (PREF) 1st entry only all
other entries here branch to this
location
Note: Each entry is pointed to by CO:OUT
and CO:XPSDO
4
I/O Command
COC
Each entry has I/o command
(no name)
Read; DATA CHAIN into RING buffer,
4* RING bytes; TIC DA{$-2),0
I
Note: Each entry pointed to by CO:CMND
COH:DN
1/2
COC
DEVICE address
COH:II
1/2
COC
INput interrupt address
COH:ILI
1/2
COC
INput interrupt level bit
1
COC
Each entry
1/2
COC
OUT put interrupt address
COH:ILO
1/2
COC
OUT put interrupt level bit
CO:WDAEO
1
COC
Each entry=WD,5 X'1200'+ OUT level group
CO:STAT
1
COC
WD,O X'30NO'
CO:OUTRS
1
COC
RD,7 X'30NO'
CO:RCVON
1
COC
WD,7 X'30N1'
CO:RCVDOFF
1
cae
WD,7 X'30N3'
CO:TRNDOFF
1
COC
WD,7 X'30N7'
CO:XDATA
1
cac
WD,6 X'30N5'
CO:XSTOP
1
COC
WD,7 X'30NE'
CO:WDAEI
I
COH:IO
I
129
= WD, 5 X' 1200 + IN leve I group
where n =
index in table
Table 2-16. Contents of M:COC (Cont.)
Label
Entry
Size (Wds)
Length
Contents/Value (In terms of Keywords)
CO:RINGE
1
COC
Each entry contains word address of end
of RING buffer
CO:LST
1
COC
Each entry= 4*RING n buffer size
CO:OUT
1
COC
Each entry= word address of OUT interrupt
routine
CO:CMND
1
COC
Each entry= Doubleword address of I/O
command
CO:XPSDI
1
COC
Each entry= XPSD,8 CO:INO entry
CO:XPSDO
1
COC
Each entry= XPSD, 8 Out interrupt routine
COB:RBS
1/4
COC
Each entry=4*RING n buffer size
LNOL
Value
-
Total LI NES for all COCs
COCOC
1/4
LNOL
0
LB:UN
1/4
LNOL
0
RSZ
1/4
LNOL
0
MODE2
1/4
LNOL
For 2741 model type entry
= X'30 1
For other model
MODE
1/4
LNOL
types entry=X '20 '
For 2741 model type entry = X I 08 1
For other mode I types entry=X 188 '
COCTERM
1/4
LNOL
For 2741 mode I type entry
For other mode I types
=0
=3
MODE3
1/4
LNOL
0
ARSZ
1/4
LNOL
0
CPOS
1/4
LNOL
1
CPI
1/4
LNOL
0
BUFCNT
1/4
LNOL
0
TL
1/2
LNOL
X '8000 ,
COCOI
1/2
LNOL
0
COCOR
1/2
LNOL
0
COCII
1/2
LNOL
0
COCIR
1/2
LNOL
0
EOMTIME
1/2
LNOL
0
COD:HWL
2
COC
For each doubleword entry - given the
total # of lines defined in a COC, rightjustified, those lines that are HARDWIREd
have the corresponding bit set. All other
bits are O. Ex tota I lines = 8,
HARDWIRE = 0, 1,2
Entry
= 00000000,
OOOOOOEO
Each buffer has all bits set and is RING
words long.
Ring buffers
(no name)
130
Table 2-16. Contents of M:COC (Cont.)
Label
Entry
Size (Wds)
COCBUF
4
Length
Contents,Nalue (In terms of Keywords)
Each buffer's first word has the word
displacement of the next from COCBUF
except the last, which has O.
COCNB
Value
-
number of 4 word buffers
HRBA
Value
-
displacement of the last buffer from COCBUF
COCHPB
1
1
4 (head of buffer poo I)
2.8.5 Interaction
M:OPEN, M:READ, M:WRITE, M:CLOSE are used to update SPEC:HAND
SYNTAX is used to decode the contro I command.
COREALLOC is used to allocate dynamic memory
MODGEN is used to generate M:COC
WRITELM is used to write M:COC
2.8.6 Data Bases
KWDTBL is the Keyword table for SYNTAX
DYNAM is the virgin stack data block
2.8.7 Subroutines
ERR LIST outputs an error message after inserting the COC number into it. (BAL, R11 with
coe number in R15,
message address in R14).
WDLG
returns in R12 an interrupt group number, in R13 the interrupt level bit for the interrupt at the
address in R12 on entry. (BAL, R14)
COCGEN is similar to MODGEN in that if interpretively executes code, but its link register is Rl1.
All MODGEN-type code encountered is skipped except relocation dictionary changes, for
wh ich MODG EN is used to effect the changes.
2. 8. 8 Descri pti on
SYNTAX decodes the control card, producing a number of stack data blocks equal to the requested number of
COCs.
P2COC first checks that IN and OUT have be.en specified for every COC and that every IN is less than
the corresponding OUT, and that no IN or OUT is the same as any other IN or OUT. If not, P2COC returns.
All the LINES options are added up, all BUFFERS options are added, and all RING, BUFFERS, and LINES options
are validated.
All DEVICE options are checked for presence and correspondence with some :DEVICE MENDD (from COCS).
131
Then if translate tables were requested, the SPEC:HAND file is updated appropriately. The total size of
the data record is calculated and COREALLOC is called to set it up.
Then MODGEN is entered and the value DEF for LCOC and all tables of COC length are generated. The
same code (from LGEN to L1NETBLS) is then executed under the control of the COCGEN routine. This
causes changes to be made to the relocation dictionary but bypasses the generation of the DEFs. The
different link register also allows selective branches to take place. When the COC tables are completed,
MODGEN is reentered to generate the line tables. WRITELM then creates the M:COC file and P2COC
exits to READSTRG.
2.8.9 P2COC Messages
***COCX -- INTERRUPT LEVEL CONFLICT -
The IN, or OUT parameter for coex were
coe ABORTED
in conflict with either previously defined
levels or IN was greater than OUT or IN
or OUT was undefined.
P2COC restores
the temp stack and exits.
***COCX -- LINES> 64 - DEFAULT TAKEN
Greater than 64 LINES were specified per
COC device.
P2COC defaults the value
and continues.
***COCX -- WARNING: BUFFERS< 3XLINES
The va lue specified for BUFFER was less
than 3 lines the number of LINES specified.
P2eOe issues this warning and continues.
***COCX -- RING INADEQUATE -
The value specified for RING was too small
DEFAULT TAKEN
for the number of LINES specified.
P2COC
defau I ts the va I ue (2 bytes / line for the fi rst
30 lines and 1 byte/line above 30, divided
by 4) and continues.
***COCX -- DEVICE OPTION MISSING -
For the given COC, no DEVICE was
coe ABORTED
specified.
P2COC restores the temp stack
and exits.
***COCX -- DEVICE NOT DEFINED -
For the given COC, the DEVICE option
cae ABORTED
specifies a device (NDD) that was not
defined via :DEVICE commands.
restores the temp stack and exi ts.
132
P2COC
2.8.10 Flow Chart
r-----/:::====~------------------
Pg. 1
Decode
Control
Command
Check interrupts
for all COCs
Bad
Print Error
Message
Default and
print error
message if too
many
Defau It if not
specified, print
warning message
if < 3 X lines
/ ' uffer';
ecified and
valid
/- No
~
?
,/
~~__________________J
/Ring -'.
/specified a~,- . ___ Default and print
~,=~id
0(
error message
//'No
Yes
I
._ _ _~-=--=--=--_-_-J....,.---_--J
Print error
message
-€
Print error
message
B
.
'-----ol
Pg. 3
Figure 2-15.
Flow Diagram of P2COC
133
Pg. 2
Colle:t XLATE
table flags
~r----..!
Update
SPEC:HAND
File
module size
COREALLOC
Set up core
to generate
loadmodule
MODGEN
Generate first
COC tables
LGEN
In interrupt RTN,
out interrupt RTN,
I/O Command
and other tables
---
-
WDLG
- Calculate
group level bit
of interrupt
Generate Tables
for next
cac
Figure 2-15. Flow Diagram of P2COC (Cont.)
134
Under control
of MODGEN
using WDLG
9.
Pg. 3
MOD GEN
Generate
Line Tables
+
Store va lues in
MODE, MODE2
COCTERM Tables
~
MOD GEN
Generate
More line
Tables
.
Form COD:HWL
table - bit=l if
corresponding line
is HARDWIREd
l
MODGE N
Generate ring
buffers and links
in COCBUF
t
I
WRITELM
WRITE
M:COC load
Module
•+
Restore Stack
•
EXIT
Figure 2-15. Flow Diagram of P2COC (Cont.)
135
Shifted right
to reflect
- -' toto I # lines
defined
Pg. 4
R11 = address of
location to
be processed
Execute instruc.
increment
Yes
Yes
Rll
Increment R11
beyond TEXTC
word(s)
Set up dictionary
modification
MODGEN
Modify reloc o
dictionary
Increment
Rll
Figure 2-15.
Exit from COCGEN
is effected by cod
it executes.
Flow Diagram of P2COC (Cont.)
136
2.9 IMC
2.9. 1 Purpose
To generate the M:IMC SYSGEN load module for UTS systems only.
2.9.2 Usage
B
IMC with RO
R3
= temp stack pointer
= PASS2 stack data pointer
R7 = Contro I card PLIST po inter
Return is to READSTRG in P2CCI with RO and R3 intact.
2.9.3 Input
:IMC control command image.
BIG9FLG
flag set by XMONITOR if target system> 128K (i. e., BIG9 option specified, see 2.4.8).
2.9.4 Output
M:IMC load module (Table 2-17)
Tab Ie 2-17. M:IMC Load Modu Ie Contents
~
I
Length
ContentslYalue (in terms of IMC
Keyword va lues)
MAXG+MAXB+MAXOL-1
Value
-
MAXG
5MBUIS
Value
-
MAXB
SL:THRS
Value
-
THRESHOLD
SL:BKUP
Value
-
1 if BACKUPALL specified
Label
-
Size {wds}
SMUIS
Value
MING
Value
MAXG
4
o if
not
Value
-
MAXEXPIRE (converted to hours)
S:GUAIS
1
1
MAXG
S:BUAIS
1
1
MAXB
SL:TB
1
1
BLOCK
SL:UB
1
1
UNBLOCK
SL:QUAN
1
1
QUANTA/2
SL:QMIN
1
1
MINQUAN/2
SL:SQUAN
1
1
MINTIME/2
SL:BB
1
1
PERCENT
SL:IOC
1
1
IOCORE
SL:IOPC
1
1
IOPASSCOUNT
SL:EX
Value
SL:MEX
EXPIRE (converted to hours)
137
Table 2-17. M:IMC Load Module Contents (Cont.)
I
Label
--
Length
Entry
Size (w( s)
Contents;Value {in terms of IMC
Keyword va lues)
SL:OLTO
1
1
LOGTIME
SL:OITO
1
1
INTIME
S:QUAIS
1
1
MAXOL
SL:PI
1
1
PI
SL:9T
1
7
Word 0 = T9TAPE
1= 0
2 = B9TAPE
3=0
4 = 09TAPE
5=0
6=0
SL:n
1
7
Word 0 = T7TAPE
1=0
2 = B7TAPE
3=0
4 = OnAPE
5=0
6=0
SL:SP
1
7
Word 0 = TOISC
1= 0
2 = BOIC
3=0
4 = OOISC
5=0
6=0
SL:C
1
Word 0 = X' 7FFFFFFF'
1= 0
7
2 = TBCORE
3=0
4= TOCORE
5=0
6=X ',C '
SL:ONCB
1
1
COCBUF
SL:CORE
1
1
0
SL:OXMF
1
1
6
138
Table 2-17. M:IMC Load Module Contents (Cont. )
Label
-
Entry
I Length
Size (wds)
Contents/Value (in terms of IMC
Keyword values)
_ ..__ .. _-- ---- - - - " - - - ._---
SL:BXMF
1
1
6
SL:OIMF
1
1
3
SL:BIMF
1
1
3
U:MISC
1
SMUIS+1
0
UH:FLG
1/2
SMUIS+1
0
UH:JIT
1/2
SMUIS+1
0
UH:AJIT
1/2
SMUIS+1
0
UH:FLG2
1/2
SMUIS+1
0
UH:TS
U:JIT 1
1/2
SMUIS+1
0
1/4
or 1/2
SMUIS+1
0
UB:PCT
1/4
SMUIS+1
0
UB:SWAPI
1/4
SMUIS+1
0
UB:MF
1/4
SMUIS+1
0
UB:US
1/4
SMUIS+1
0
UB:FL
1/4
SMUIS+1
Beginning with UB:FL+MING entry each
:
I
byte has 1+ its byte index from UB:FL
except the last, which is 0
UB:BL
1/4
SMUIS+1
Beginningwith UB:BL+MIG+1 entry, each
byte has -1 + its byte index from UB:BL
UB:APR
1/4
SMUIS+1
0
UB:APO
1/4
SMUIS+1
0
UB:ASP
1/4
SMUIS+1
0
UB:ACP
1/4
SMUIS+1
0
UB:DB
1/4
SMUIS+1
0
UB:OV
1/4
SMUIS+1
0
S:UCYL 2
1
1
UCYL
UB:C#2
1/4
SMUIS+1
Entry 0
t
=0
Entry 1 = highest
Entry 2 = 0
Entry 3 = highest
Entry 4 to MING
1Entry size is 1/2 word when target system> 128K on Sigma 9.
1/4 word.
2
PSA cylin. #
PSA cylin. # - UCYL
= UCYL
less than
preceding entry
Otherwise, entry size is
Determining factor is BIG9 option on UTM command (see 2.4).
Generated on Iy for no-RAD target systems.
139
Table 2-17. M:IMC Load Module Contents (Cont.)
I
--
Label
Entry
Length
Size (wds)
Contents/Value (in terms of IMC
Keyword va lues)
S:GJOBTBL
2
MAXG+5
=0
Entry 1 = KEYIN (fEXTC)
2 = ALLOCAT (TEXTC)
3 = RBBA T (fEXTC)
4 = GHOSTl (fEXTC)
5 = MAXG = 0
SB:GJOBUN
1/4
MAXG+5
0
Entry 0
2.9.5 Interaction
SYNTAX
to convert command to stack data block.
COREALLOC
to allocate dynamic memory.
MODGE N
to generate DEFs.
WRITELM
to write output module.
READSTRG
EXIT
2. 9. 6 Data Bases
KWDTBL
is the keyword table for SYNTAX.
OYNAM
is the virgin stack data block for SYNTAX, containing default or limits for each keyword.
2. 9. 7 Oescri pti on
,Upon entry, the total number of DP, 7T, and 9T units defined via :DEVICE is obtained (DEVS, R3) and the
defaults for total, batch and on line values are computed and stored in DYNAM.
A BAL to SYNTAX puts command information and defaults from DYNAM into the stack, pointed to by R5.
If
the option UCYl has been used and the target system is not a no-RAD system, the option is ignored and an
error message produced.
If the option is used for a no-RAO system, then it must be 1 or 2 or the default 1 is
used and an error message generated.
used.
If the command specified UNBLOCK greater than BLOCK, BLOCK is
QUANTA and MINQUAN are converted from milliseconds to clock pulses.
MINTIME is converted from milliseconds to clock pulses and compared to the QUANTA value. If MINTIME
is less than QUANTA, an error message is produced and the value set equal to QUANTA. MAXG value is
compared with 3 and if less, is defaulted to 8 and produces an error message.
If MAXG+MAXB+MAXOL is
greater than 255, a message is generated indicating IMC processing has been terminated and control returned
to P2CCI.
COCBUF value is then compared with 255 and if greater is set to 255 and an error message is generated. The
values for EXPIRE and MAXEXPIRE are converted to hours and compared (EXPIRE must be ~ MAXEXPIRE) unless
-1 specified indicating never for expiration or retentio!" period. The values specified for DP, 7T, and 9T in
terms of total, batch and online are compared with the total defined via :DEVICE commands.
Should any
value exceed the total, an appropriate message is produced indicating the parameter in error and the value
to be used.
Then, COREALlOC is used to allocate memory. A BAl to MOOGEN begins generation of DEFs
140
after the data have been moved from the stack to the data record. A short loop to generate UB:BL and UB:FL
exits from MODGEN with its BDRs, so another BAL to MODGEN is necessary to finish generating DEFs. Then,
a BAL to WRITELM writes the output module and IMC exits to READSTRG in P2CCI.
2. 9. 8 IMC Messages
***UNBLOCK> BLOCK - SET EQUAL TO BLOCK
***MINTIME > QUANTA -- QUANTA VALUE USED
The value used for the specified
***LOGTIME OUT OF RANGE -- DEFAULT (3) USED
parameter is in error.
***INTIME OUT OF RANGE -- DEFAULT (15) USED
The
designated value is used. IMC
***EXPIRE OR MAXEXPIRE OUT OF RANGE --
continues.
999 DAYS, 23 HOURS USED
***UCYL VALUE INVALID -- DEFAULT (1) USED
***MAXEXPIRE
< EXPIRE
}
***COC BUFFERS> 255 -- 255 USED
***MAXG
< 3 --
The value used for the specified
-- EXPIRE VALUE USED
DEFAULT (8) USED
***MAXG > 255 -- DEFAULT (8) USED
parameter is in error.
The
designated value is used. IMC
continues.
The 9T, 7T or disc pack value for online
***XXXXONLINE EXCEEDS TOTAL ON SYSTEM --
batch or tota I parameter exceeds the
*XXXX*USED
total number of device units specified
***XXXXBATCH EXCEEDS TOTAL ON SYSTEM --
via :DEVICE commands. The *XXXX*
*XXXX*USED
value is used.
***XXXXTOTAL EXCEEDS TOTAL ON SYSTEM --
IMC continues.
The sum of MAXG + MAXOL+MAXB
*XXXX*USED
exceeds 255. IMC restores the temp
***USERS > 255 - IMC ABORTED
stack and exits to READSTRG in P2CCI.
UCYL has been specified for a target
***SWAPPER NOT DP -- UCYL IGNORED
141
}
system in which the PSA is not defined
on a disc pack. IMC ignores the option
and continues processing.
2.9.9 Flow Chart
Pg. 1
From DEVS,R3
Total=Total defined
Batch=ToIjal
-1
or 0
On" =
options in
tabular form
no
Error
message
Set
default
Set default
produce error
message
Set default
produce error
message
...
"_~
Set Unblock
Block
Convert QUANTA
and MINQUAN
to clock pulses
Pg. 2
Figure 2-16. Flow Diagram of IMC
142
:
=
Q
Pg. 2
MINTIME
no
--=n-~
~XG
< 3'~
255
Produce error
message
---+-
Default
MINTIME to
QUANTA
Set default and--I
error
message
~=----l~produce
no
". . . ?
!Produce
~AXG+
~"j MAXOL+
MAXB < 255
T
>--~
error
message
1_--
_. ___
~!
IVEUP
._.J
Pg. 4
OCBUF",
Set default
"'~' 2?55/'~n-o-~produce error
I
", o/.' es
message__ . __ ~
yes
no
Convert value
to hours
~-.---
~~~PIRE,.~.
G
~no-"""~.
~. '
Pg. 3
Pg. 3
_____________________________________________ J
Figure 2-16. Flow Diagram of IMC (Cont.)
143
Pg. 3
Convert va I ue
to hours
Set MAXEXPIRE
to EXPIRE
produce error
message
Default =
total on system
Default=
total -lor
o
CONVERT
Convert value
for message
convert va lue
for message
P
Default = 1
nO
- - --1
Move data
to SECT 0
area
MODGEN
Generate
DEfs, REFs
1
Figure 2-16. Flow Diagram of IMC (Cont.)
144
Convert
value for
message
Produce
error
message
Produce
error message
.~
Produce
error message
Pg. 4
WRITE
M:IMC
Load Module
Restore stack
Convert value
inD1 from
hex to
EBCDIC
'-- RETURN)
Figure 2-16. Flow Diagram of IMC (Cont.)
145
2. 10 SPROCS
2. 10. 1 Purpose
To process SPROCS PASS2 control commands, creating the M:SPROCS load module for UTS systems only.
2. 10.2 Usage
B
SPROCS
with: R7 pointing to control card PLIST
RO pointing to temp stack pointer
RO and R3 saved
Return is to REAOSTRG in P2CCI.
2. 10.3 Input
Control card (:SPROCS)
TREEOO is the word in the TREE built by COREALLOC containing the size and address of the SECT 00.
BIG9FLG
flag set by XMONITOR if target system >128K (i.e., BIG9 option specified; see 2.4.8).
2. 10.4 Output
M:SPROCS module (Table 2-18).
Table 2-18. M:SPROCS Load Module Contents
Label
Entry
Size
(Wds)
Length
PPROCS
Value
-
ContentsNalue
= 1 + # of Mon itor overlays required
(UTM Keyword and defaults) +
#of shared processors required
(NAMES + default)+- MOSPACE+
PSPACE+POSPACE+number of
processors overlays required
(decimaloptions+defaults)
MAXOVLY
Value
-
1 + # of Monitor overlays +
MOSPACE+first processor index
PTEL
Value
-
Index of TEL (first default processor)
(PTEL=MAXOVL y)
PCCI
Value
POEL
Value
-
Index of CCI (second default processor)
Index of DELTA (seventh default
processor)
146
Table 2-18. M:SPROCS Load Module Contents (cont.)
----------...,r-------t-------r-------.-~
Contents/Va lue
BGNPMPRC
Value
PDEL-1
ENDPMPRC
Value
10
PNAMEND
Value
PPROCS less processor overlays and POSPACE
SPSIZE
Value
Second PSPACE option. This value, in No-RAD
Label
Size
(Wrds)
systems must be ~ # of granules per physical
cylinder or the latter value is substituted.
P:NAME
2
PPROCS
First doubleword=O. Others
= TEXTC
names for
monitor overlays, MOSPACE entries with TEXTC
M:DUMLM, TEXTC names for shared processors,
PSPACE entries with TEXTC M:DUMLM, and the
rest
P:NAMEND
1
1
= O.
Names are ordered with defaults first.
Is the address of last non zero entry+2 (i .e.,
address of 1st zero entry).
NXTPOVLY
1
1
o
PH:PDA
1/2
PPROCS
o
PB:LNK
t
PX:HPp
t
PX:TPp
1/4
PPROCS
1/4 or 1/2
PPROCS
1/4 or 1/2
PPROCS
PB:PSZ
1/4
PPROCS
o
o
o
o
PB:REP
1/4
PPROCS
o
PB:UC
1/4
PPROCS
PB:PVA
tt
PB:CU
1/4
PPROCS
1/4
PPROCS
1/4
PPROCS
o
o
o
o
1
PNAMEND
Bits 8 to 31 of each word
PB:DCl
P:SA
t
= O.
Bits 0 - 7 represent the flag options associated
with the processor whose name is in the corresponding entry in P:NAME. Monitor overlays
and M:DUMLM have zero flags
Bit 0
=J
Bit 1
= S flag
flag
Bit 2 = D flag (implies S)
t Entry size is 1/2 word when target system> 128K on Sigma 9. Otherwise, entry size is 1/4 word.
Determining factor is BIG9 keyword on :UTM command (see 2.4).
tt
These tables are generated only for No-RAD systems.
147
Table 2-18. M:SPROCS Load Module Contents (cont.)
Label
-
Entry
Size
(Wrds)
Length
Contents/Va lue
Bit 3 = P flag (implies S)
Bit 4 = M flag
Bit 5 = T flag
Bit 6 = B flag
Bit 7 = G flag
Bits 5,6,7 = C flag
P:AC
2
PNAMEND
First entry = X'7FFFFFFF', -1; other entry = 0
P:TCB
1
PNAMEND
0
PH:DDA
1/2
PNAMEND
0
PB:DSZ
1/4
PNAMEND
0
PB:DCBSZ
1/4
PNAMEND
0
PB:HVA
1/4
PNAMEND
0
PBT:LOCK
Bits
PNAMEND
0
2. 10.5 Interaction
COREALLOC
is used to set up memory for load module generation
SYNTAX
is used to decode the control command
MODGEN
is used to generate DEFs
WRITELM
is used to write the M:SPROCS module
READSTRG
is exit location
2. 10.6 Data Bases
KWDTBLO
is a two part input table for SYNTAX. The first part is a set of SYNTAX control halfwords
that permits SYNTAX to process the non-standard format of the :SPROCS card (see
SYNTAX Chapter 6.8). The second part is a normal SYNTAX Keyword table.
DYNAM
is the virgin stack data block for SYNTAX, containing two doubleword table
pointers and four normal keyword entries.
FLGS
is a byte table of valid flag characters
FLAGS
is a word table corresponding .to FLGS containing an internal representation of each flag.
STDOLY
is a two-word-entry table of default monitor overlay names in TEXTC form.
STDPROC
is a two-plus-n-word-entry table of default processor names. Each entry has the
name in TEXTC fonnat in the first two words, followed variously by any number of words
containing either a binary number (indicating a number of overlays) or up to four TEXT
flag characters (left-adjusted, blank-filled).
148
2. 10.7 Subroutine
SQUEEZE
moves a string of words in memory from one location (starting at the address in R2) to another
(starting at the address in R12). As each word in moved, its old location is zeroed and
R2 and R12 are incremented. If a single zero word is encountered, it is not moved (R2 is
incremented, but R12 is not). When two consecutive zero words are encountered,
SQUEEZE returns *R 11 with R2 pointing to the first zero word, R12 pointing to where it
was moved to, and R13 zero.
2.10.8 Description
SPROCS begins, unconventionally, by using COREALLOC to obtain some work space. 400 words are
reserved for REFDEF stack and EXPRESSION stack, and the remainder of available core for the data record
and its relocation dictionary.
Then preparation is made to use SYNTAX to decode the control command.
The data record (from TREEOO is divided in half.
The end address of each half is put in the table upper
limit word of the corresponding table pointer in DYNAM. STDOL Y is moved to the first half, and the
address of the word after the last word moved is put in the table pointer in DYNAM. STDPROC is
moved to the second half, and its table pointer set up similarly. Then SYNTAX decodes the card image.
The result in memory is the same as before except that more entries may have been added to the two tables
and the table pointers updated accordingly (now in the copy of DYNAM in the stack).
New entries are
in the same format as the default entries (see DATA BASES). (Section 2. 10 .6) If a no-RAD system is being generated,
SPROCS, upon return from SYNTAX, validates the second value specified on the PSPACE option. This value representing the size reserved for one space processor, must be less than or equal to the number of granules per physical
cylinder on the dis~ pack containing the PSA area. See 2.2.7 for definition of this number. Should the PSPACE
value be invalid, the previously computed number is substituted and an error message produced. The term S:CYLSZ
in the message refers to this completed value. SPROCS then adds MOSPACE M:DUMLM entries to the first table.
The SQU EEZE subroutine is used to attach the second table to the end d the first one and remove any extraneous
zero words from it. If SQU EEZE did not reach the end of the second table (because of two consecutive zero words
in the middle of it) it is reentered at the skip-zero-words point unti I it finishes the table. Then PSPACE M:DUMLM
entries are appended to the end of the (now only one) table. The table now contains no zero words.
Every word in the table is one of four types:
1.
First word of a TEXTC name (byte 0 between 1 and 7).
2.
Second word of a TEXTC name (follows first word always).
3.
Binary number representing number of overlays (byte 0
4.
Flag word in TEXT form (byte 0 greater than 7).
= 0).
The name count is now initialized to one, the overlay count to POSPACE and the NAME loop is entered.
NAME looks at all but type 2 words in the table.
Name count is incremented for each type 1 word. The
next word (type 2 ) is skipped and an internal flag word is initialized to zero. Words are then examined
until the next type 1 is encountered. Type 3 words are added to the overlay count. Each byte of a type word is
converted via FLGS and FLAGS to an internal representation and OR led into the internal flag word (R 15)
unless it is not valid or is P when the name is not :PO through :P9, in which case it is ignored with an
explanatory message. If the P flag is validly encountered, the name (previous type 1 and 2 words) is changed
from :Pn to :Pnn. The internal flag word is stored in the word following the previous type 2 word. When
the next type 1 word or zero is encountered, SQUEEZE is ca lied to slide it and what follows down to the
149
internol flag word, unless no flags were encountered, in which case the SQUEEZE is to the type 2 word.
When NAME is finished with the table, it consists of only two- or three-word entries. The first two words are
TEXTC name, and the third, if it exists, is a flag word, in internal form. Name count has PNAMEND in it, and
overlay count has PPROCS-PNAMEND. At this point MODGEN is entered and the tables P:NAME through P:SA
are DEFied. The entry size of two tables, PX:HPP and PX:TPP depends on whether or not the BIG9 option was
specified on the :UTM command. This information is passed via a DEFied location in P2CCI stack. If BIG9 has
been specified, the entry size is 1/2 word, otherwise, these tables have byte size entries. Tables, PB:C# and
PB:DC# are only generated if the target system is to be of the NO-RAD type.
Now that the core location of P:SA
is determined, the flag words are converted to P:SA form and put in corresponding entries to P:SA. As they are
moved, SQUEEZE squeezes them out of P:NAME, resulting in a doubleword table of TEXTC names. There can
be no overlays of the end of the two or three word entry and P:SA because there are at least 4 byte tables between
P:NAME and P:SA.
Then the rest of the module is generated, WRITELM writes it to the M:SPROCS file, and SPROCS exits.
2.10.9 SPROCS Messages
r
There is insufficient room in the table area for pro-
***INSUFFICIENT SPACE -- SPROCS ABORTED
cessor overlays. SPROCS restores the tempstack and
exits.
The flag "f" is not an S, J, P, 0, M, T, B, G or C
***ILLEGAL FLAG f FOR XXXXXXXX FLAG IG NORED
or is a P when XXXXXXXX is not Pi. Only "f" is
ignored, even when it occurs in a multiflag option
field. SPROCS continues.
****PSPACE SIZE >S:CYLSZ--S:CYLSZ USED
For a no-RAD target system, the second value on
the PSPACE option is not ~ to the number of granu les
per physical cylinder (S:CYLSZ) for the disc pack on
which the PSA area has been defined. SPROCS substitutes the correct value and continues.
150
2. 10. 10 Flow Charts
Pg. 1
C:TER~
COREALLOC
Get work
area
Divide data record
area for overlay
table and PROC
table
Store upper limits
of overlay +
PROC tables in
DYNAM
ove e au ts
(STDPROC and
STDOL Y) to table
and set pointers
to end
-~-----~-- !
value store
M:DUMLM'in
~rlay table
1 at end
....
1
SQUEEZE
Move PR OCS table
to end of over lay
table delete zeros
I
I
'------ ________.1
Pg. 3
For each PSPACE
value store
'M:DUMLM' i n l
PRO~:
J
P902
Figure 2-17. Flow Diagram of SPROCS
151
Pg. 2
Check locations
in table
Entry is name
skip second
word
Entry is not namereduce to max of
one word
Entry is flag
validate flags
store. in next location
Generate
P:NAME to
P:SA
Check for flags
in table-store
flags in P:SA
P:NAME now
doubleword
tables
Write
M:SPROCS
Restore stack
Figure 2-17. Flow Diagram of SPROCS (Cont.)
152
~
EXIT
)
Pg. 3
SQUEEZE
R2 =
./ Starting Addr.
RETURN
yes
no
Move to new
location
(R 12 address)
Increment
starting
address (R2)
'-----------------------------------------------------------------------------------Figure 2-17. Flow Diagram of SPROCS (Cont.)
153
2. 11 FRGD
2. 11. 1 Purpose
To process the :FRGD and :INTLB commands and to generate the load module M:FRGD which defines the
foreground characteristics for BPM/BTM systems only.
2. 11.2 Usage
B
FRGD
With
R7 pointing to the control card PLIST
RO pointing to the temp stack pointer
R3 pointing to the PASS2 stack data
Return is to READSTRG (if :INTLB was processed)
READOK (if no :INTLB encountered)
R3 and R7 are equ iva lent to that upon entry.
2. 11. 3 Input
Control Cards (:FRGD and optional :INTLB) images
2. 11. 4 Output
M:FRGD load module (Table 2-19).
N. B:
The column entitled "Internal Control" refers to the FRGD processor internal control routine that generates
the tables or values and apply to all subsequent tables up to the next entry in the column.
Table 2-19. M:FRGD Load Module Contents
Label
-
~
ize (Wrds)
Length
Contents or Va lue
Internal Control
NFRGD
Value
-
NFRGD
DNFRGD
FPDESIZE
Value
FPDTLINK
Value
FPDTCF
Value
FPDTNAME
Value
FPDTP1
Value
BAFPDTP1
Value
FPDTSA
Value
FPDTP2
Value
-
-
-
-
-
-
-
-
12
II
0
"
1
"
2
"
4
"
16
II
4
II
5
154
.
Table 2-19. M:FRGD Load Module Contents (cont.)
Label
-
~
ize (Wrds)
Length
BAFPDTP2
Value
-
20
FPDTTCB
Value
-
5
II
FPDTTF
Value
6
II
BAFPDTTF
Value
24
II
FPDTTA
Value
-
6
II
FPDTDA1
Value
7
II
FPDTDA2
Value
8
II
FPDTCSSO
Value
FPDTCSS1
-
Contents or Value
Internal Control
DNFRGD
9
II
Value
-
10
II
FPDTCSS2
Value
-
11
II
FPDTH1
1
1
Address of FPD T
II
FPDTH2
1
1
0
II
FPDTT
1
1
0
II
FPDTIAC
1
1
0
II
12
NFRGD
1st word=FLIN K to next entry
II
FPDT
other words = 0
FPDTEND
1
1
(is end of FPDT +1)
NINT
Value
-
NINT
FIDTLINK
Value
FIDTPDA
II
DNINT
0
II
Value
-
0
II
FIDTCF
Value
-
1
II
FIDTIL
Value
-
2
II
BAFIDTIL
Value
8
II
FIDTGL
Value
-
2
II
FIDTWD
Value
-
3
II
FIDTPSM
Value
-
4
II
FIDTBAL
Value
5
II
FIDTLPSD
Value
6
II
FIDTXPSD
Value
8
II
FIDTMCLK
Value
3
II
FIDTMCSA
Value
4
II
FIDESIZE
Value
-
12
II
MCLKH
1
1
0
II
MCLKT
1
1
0
II
FIDTH
1
1
address of FIDT
II
-
-
-
-
i
i
----
155
Table 2-19.
M:FRGO Load Module Contents (cont.)
Label
--
~
Length
Contents of Va lue
FIOTIAC
1
1
0
NINT
1st word = FLINK to next entry
FIDT
Interna I Contro I
Size (Wrds)
12
ONINT'
II
Other words = 0
FIOTEND
1
1
(is end of FIDT+1)
CLOCKS
2
3
0
NCTQE
Value
CTOESIZE
Value
CTOLINK
Value
0
CTOINT
Value
CTONAME
Value
-
CTOH1
1
1
address of CTO
CTOH2
1
1
0
CTOT
1
1
0
..
CTO
4
CTO
1st word = FLINK to next entry
..
CTO
4
1
2
II
.
OCT a
..
..
.
II
..
II
Other words = 0
INTSPGMT
4
INTS
See table 2-21 for contents
INTSPGMTENO
1
1
(is end of INTSPGMT+l)
RJIT
-
164
FCOMLL
1
1
0
II
FCOMUL
1
1
0
II
RESDFLL
1
1
0
II
RESDFUL
1
1
0
FBUFLL
1
1
0
CTINT
Value
-
CT
FDFRSIZE
Value
-
Interrupt group of CT
CTWDA
1
1
X'6D201200 '+level of CT interrupt
See Insert Below
INTS
..
DRJIT
..
II
DCT
..
II
(i .e., write direct to arm, enable
CT)
CTIDE
1
2
0
II
CTGL
1
1
Group level indicator of CT
II
CTWD
1
5
1st word = X'6D201700 ' level of CT
..
interrupt (i .e., write direct to
trigger CT) other words = 0
CTPSD
1
6
Words 0 - 1 = 0
Words 2 =X '4QOOOOOO'+CNTASK (REF)
156
.
Table 2-19. M:FRGD Load Module Contents (cont.)
·Label
Length
Entry
Size
(Wrds)
--
Contents of Value
Internal Control
Word 3 = X 107000000 1
Word 4-5
=0
CTXPSD
1
1
XPSD,8 CTPSO
CTINTENV
1
1
X 180000000 I+CTI DE
II
CURPDA
1
1
0
II
CURl NT
1
1
0
II
BKPSD
1
2
0
II
CTQHC
1
1
0
II
CTQTD
1
1
0
II
CTDFRFLG
1
1
0
II
FOFRFLAG
1
1
0
II
FOFRINTS
1
FDFRSIZ
+1
0
II
NFIPOOL
Value
NFFPOOL
Value
FIBUFSIZE
OCT
FFPOOL
II
Value
-
256
II
FFBUFSIZE
Value
-
512
II
FCOMSIZ
1
1
FCOM*512
II
RESDFSIZ
1
1
RESDF*512
II
RESDFSIZP
1
1
RESDF*512
II
IBUFTBL
1
2*FIPOOL
0
II
FBUFTBL
1
2*FFPOOL
0
II
STOPTBL
1/4
#tape defined on
system
0
II
INTLBSIZ
Value
-
# of INTLB Entries
INTLB1
1/2
# of INTLB
See Tab Ie 2-20 for contents
II
INTLB2
1/2
# of INTLB
See Table 2-20 for contents
II
FIPOOL
RJIT Contents
Word 0 =0
Words 1-2
= :SVSRT
Words 3-70
(TEXT)
=0
Words 71 = $+4
Words 72-73 = M:OC (TEXTC)
Word 74 = $+2
Word 75 =0
Word 76 = X 100200003 1
Word 71 = X 100060002 1
Words 78 - 163
=0
157
DOTHERS
DINTLB
2. 11.5 Subroutines Used
CHARSCAN
(used to check a specific character for syntax)
DECSCANt
(used to obtain a field whose value is decimal/hexadecimal).
HEXSCANj
QUOTSCAN
{used to scan a field containing a Keyword}
NAMSCAN
{used to scan a field containing a name}
MODIFY}
(used to generate the load module)
PRINTMSG
{display error information}
2. 11.6 Special Restriction
The option INTS must be contained wholly on one physical card image.
2. 11. 7 Description
2. 11. 7. 1 Overview
The FRGD processor is entered when P2CCI encountersthe :FRGD command. The processor initializes its
temp stack area by moving the DYNAM table into the stack. It then obtains 100 pages of core for use as
its work area to generate the load module M:FRGD.
The initial syntax analysis of the :FRGD command is performed in the GETKEY routine which processes a
parenthetical expression up to the first comma and then determines what the Keyword is and enters an
appropriate routine which in turn processes the remainder of the expression and returns. This continues
until the entire command is processed. Then the FRGD portion of the load module is generated. When completed,
the next control command is read and if it is :INTLB it is processed by the GETOPlB and OPlBENT routines.
GETOPlB syntactically checks the parenthetical expression and OPLBENT saves the Ilabel" and "loc" in
intermediate tables (See Table 2-20). The load module is then written and FRGD releases its work area
restores the temp stack and returns to P2CCI at READSTRG.
When the FRGD processor obtains the next control command and it is not :INTLB, the load module M:FRGD
is written, and the work area released, the stack restored and control is returned to P2CCI at READOK.
When FRG D requests the next control command and it is a Monitor control command, P2CCI will enter
FRGD at FRGDlMX and the remainderof the FRGD procedure is as described for no :INTLB encountered.
2. 11. 7.2 Details
When the GETKEY routine is entered, it obtains a Keyword and determines through the FRGDOPT table which
subroutine to enter for further processing. For all Keywords except "INTS" the subroutine obtains the value
(i. e., value, address, or size in the parenthetical expression), converts it to binary and checks if the va lue
is within range. The value is saved in the temp stack for use in generating the load module. If the
158
KeyV(ord is INTS, the subroutine entered generates an intermediate table (see Table 2-20) containing the
infonnation from a II expressions within the INTS option. When the complete parenthetical expression has
been processed, GETKEY returns and the next expression is analyzed.
The LMFRGD routine allocates the work area for the M:FRGD load module and generates the data. The
procedure used when generating the necessary SECT. 00 information is controlled by various tables within
the FRGD processor. The routine PROCDEF interrogates a given table and performs the necessary function
according to Figure 2-18:
Word 0
NAME
(TEXTC F~MAT)
CODE
o
I
VALUE
78
31
where
NAME
a TEXTC formatted name of a value, table or data word which is to be externally
defined.
CODE
=0
=1
NAME is to be equated to VALUE
NAME is to be equated to the address of a data word or table where VALUE
is the number of words in table
=2
NAME is to be equated to the value found in the temp stack pointed to by
the displacement VALUE.
=3
NAME is to be equated to the address of a table or series of tables to be
generated. This code indicates that each table or series of tables will be
generated according to pre-described algorithms
CODE = 4
NAME is to be equated to the value pointed to by VALUE multiplied by 4.
Figure 2-18.
PROCDEF Table
The internal tables controlling the generation of the ":FRGD" command's portion of the "M:FRGD" load module
consist of:
DNFRGD
for the NFRGD option
DNINT
DCTQ
-I 0
if CTQ -I 0
DINTS
if the INTS option was spec ified
DRJIT
always used
DCT
for the CT option, where (X'60'~CT~X '13f1)
DOTHERS
a Iways used.
if NINT
When an internal controlling table is being processed, each entry's code is interrogated. An appropriate
routine is _then entered to generate the necessary load module information.
159
When the code is 0, the routine GENTO, is entered and it sets up the PLIST required by the MODIFY
routine for the generation of an external definition whose valwe is a constant.
When the code is 1, the routine GENTl is entered and it sets up the PLIST required by the MODIFY
routine for the generation of an external definition whose value is the address in the load module of a data
word. The data word may be a one-word table or it may be the first word of a multi-word table. Each
word is set to zero.
When the code is 2, the routine GENT2 is entered and it sets up the PLIST required by the MODIFY
routine for the generation of an external definition whose value is an constant.
When the code is 3, the routine GENT3 is entered. The address of the current internal table IS entry is used
to search another internal table (vix., INVECT), for a match. When found, the relative position of the
match in the INVECT table is used as an index into the OUTVECT table. The OUTVECT entry identifies
the entry point to a special subroutine which generates the desired data, tables, external definitions or references
for a given parameter. These special subroutines are referred to as "Special Compile Processors".
When the code is 4, the routine GENT4 is entered and it sets up the PLIST required by
th~
MODIFY
routine for the generation of an external definition whose value is an expression which is evaluated
into a constant. The expression is a constant or value multiplied by four (e. g., a byte displacement into
a table).
FRGD proceeds to finish creation of SECT. 00 by generating the information concerning :INTLB command.
The internal table controlling this portion of the load module generation is DINTLB.
160
Table 2-20. :INTLB INTERMEDIATE TABLES
OP
OPL1
0
0
- -- -
OPL2
-----
LC
0
OPLn
LOC 1
0
LOC?
----
----
LOC n
where
OP is the op-Iabel table pointed to by INTLBOP
LC is the location table pointed to by INTLBLOC
Table 2-21.
INTS INTERMEDIATE TABLE
- - - - - - - - - - - - - - - - - - - - - - - - - -.. _ - - - - ,
#E
IN
NAV
Word 0
UNUSED
(INTSPGMT)
#C
Cj
C?
C3
2
---
--
--
--
3
--
Cn
-
4
FIMAX
PAGES
SIZE
where
IN = the INTS table pointed to by INTSAREA
#E=number of entries in table
NAV = next available address in table
#C = number of characters in name
Ci' C2, ••• C n = characters in name
161
5
FIMAX = FIMAX value from ,INTS expression
PAGES = Pages value from INTS expression
SIZE = Size value from INTS expression
INTSPGMT
= Starting address of the table
DEF for M:FRGD
2. 11.8 FRG D Messages
***DELIMITER ERROR
Invalid delimiter encountered. FRGD continues at next
parenthetical expression.
***UNKNOWN KEYWORD
The keyword in a parenthetical expression is unknown.
FRGD continues at next parenthetical expression.
***DELIMITER ERROR, PROCESSOR
ABORTED
The end of ":FRGD" or ":INTLB" command cannot be
found.
FRGD returns to PASS2 control.
***INVALID DECIMAL VALUE
The value field is expected to be either decimal or
***INVALID HEXADECIMAL VALUE
hexadecimal.
***VALUE ERROR, DEFAULT TAKEN
The value specified is less than the default or is less
FRGD continues at next parenthetical expression.
than a previously defined value of the same type.
FRGD continues at next parenthetical expression.
***NAME INVALID or > 11 CHAR.
OR> 2 CHAR.
The name is not alphanumeric (at least one alpha),
is greater than 11 characters in "INTS" option, or is
greater than two characters in INTLB command's options.
FRGD continues at next parenthetical expression.
***SIZE/PAG ES/FIMAX VALUE
INVALID
The size, page, or fimax value after the INTS option is
not a valid decimal number. FRGD continues at next
parenthetical expression.
***NOT ENOUGH CORE AVAILABLE
TO GEN LM, PROC. ABORTED
***GEN. OF LM UNSUCCESSFUL
The work area for FRG D has been used and no more
is available. FRGD returns to PASS2 control.
There is not enough work area available. FRGD returns
to PASS2 control.
***CT FIELD NOT = >60 OR
=<
13F, PROC. ABORTED
The address field for the CT option is too small or too
large, or there is no CT option specified FRGD returns to
PASS2 control.
***NFRGD FIELD MISSING OR
INVALID, PROC. ABORTED
The value field for the NFRGD option is invalid or
missing. FRGD returns to PASS2 control.
162
2. 11.9 Flags Used by FRGD
VNFRGD
NFRGD field's value
VCT
CT field's value (address)
VFCOM
FCOM field's value (size)
VRESDF
=
RESDF field's value (size)
VFIPOOL
FIPOOL field's va lue
VFFPOOL
FFPOOL field's value
VNINT
=
NINT field's value
VCTO
=
CTO field's value
LMAREA
=
base address in work area (foHowing INTS option's information).
WORKSIZE
number of pages in work area.
INTSAREA
base address of INTS option's information and also entire work area.
SAVER 1
control command type which foHows II:FRGD" command:
= first four characters of next command if not ":INTLB II command.
= -1 if next command is a Monitor system command (i.e., end of file
to PASS2).
= 0 if ":INTLB" command was found; Initially,
#INTLB
SAVER1=-1
number of entries in intermediate table generated as a result of the ":INTLB"
command
INTLBOP
=
address of LC tab Ie
INTLBLOC
#AVTENT
address of OP table
=
obtained from the REF AVRTBLGTH # tapes drives defined on system
2. 11.10 Internal Routines
FRGD
main entry, initializer, and controller
Register 3 = address of PASS2 information in temp stack
Register 7 = address in temp stack of command processing PLISTs.
FRGDOP
process FRGD command's parenthetical expressions.
INTLBOPC
process INTLB command s parenthetical expressions.
FRGDLMX
there is no INTLB command, but instead, there is a Monitor system control command
(i.e., end of file to PASS2).
GETKEY
check for "(", get keyword, and check for
PNFRGD
set conditions for processing value for NFRGD option.
PCT
set conditions for processing value for CT option.
PFCOM
set conditions for processing value for FCOM option.
PRESDF
set conditions for processing value for RESDF option.
PFIPOOL
set conditions for processing value for FIPOOL option.
163
11,11
in next parenthetical expression.
PFFPOOL
set conditions for processing value for FFPOOL option.
PNINT
set conditions for processing value for NINT option.
PCTa
set conditions for processing value for CTa option.
COMRET
set conditions for value in decimal. All other values, above, are hexadecimal.
COMRETA
obtain value.
PINTS
process INTS option.
GETVAL
obtain value, convert it to binary, check if value is va.lid.
(i. e., use default or use value), and check for ") ".
Register 13 = 0 value in hexadecimal
= 1 value in decimal
Register 14 = address in temp stack where value is to be saved.
GETOPLB
check for "(", get oplabel, check for ",
II
get location value, and validate it,
and check for ") II in :INTLB command's next parenthetical expression.
Register 2 = address in work area of next avai lable word for interim
tables.
OPLBENT
saves oplabel and location value in next available entry in interim tables for
: I NT LB command.
Register 12 = hexadecimal location
Register 13 = oplabel in TEXT format
Register 2 = address of next available word in work area
LMINT
this routine takes the interim tables generated by OPLBENT and adds them to
SECT .00 portion of the M:FRGD
CNVDEC
load module.
convert EBCDIC decimal to hexadecimal.
exit: Register 12 = converted value
CNVHEX
convert EBCDIC hexadecimal to hexadecimal
exit: Register 12 = converted value.
LMFRGD
allocate work area for the M:FRG D load module. Request the generation of load
module information according to the internal control tables.
Register 3 = address in temp stack of PASS2 information
Register 6 = address in temp stack of FRG 0 processor information
Register 7
= address in temp stack of PLIST
used in processing control command
Register 15 = Register 3 = temporary save of Register 3.
WRITLM
write M:FRGD load module to
WRITETM
do actua I write for M:FRGD load module parts.
Register 8
M:FRGD
file.
= buffer address
Register 9 = buffer size (.bytes)
Register 10 = address of key (load module elements key)
PROCDEF
interrogate each internal control table's entry, and give control to appropriate
processor according to entry's code.
164
= address in work area to generate tables.
Register 5 = address of next entry in internal control table.
Register 15 = address of end of current internal control table.
Register 2
GENTO
GENTl
processes Code = 0 type internal control table entries.
Register 2
= address
Register 5
= address of current
Register 7
= address of MASTER
processes Code
Register 2
=
in work area of next available word.
internal control table entry.
PUST for MODIFY.
1 type internal control table entries.
= address
in work area of next avai lable word.
= address of current internal control table entry.
Register 7 = address of MASTER PUST for MODIFY.
Register 5
GENT2
processes Code = 2 type internal control table entries.
Register 2 = address in work area of next avai lable word.
Register 5
= address of current
internal control table entry.
Register 7 = address of MASTER PUST for MODIFY.
GENT3
processes Code
=3
type internal control table entries by
searching INVECT table for a corresponding address equivalent to the
current i nterna I contro I table entry, and then enter appropriate routine
as indicated by the same relative entry in OUTVECT table.
Register 2
= address
in work area of next avai lable word.
Register 5 = address of current internal control table entry
Register 7 = address of MASTER PUST for MODIFY
GENT4
VALU
processes Code
=4
type internal control table entries.
Register 2
= address
Register 5
= address of current
Register 7
= address of MASTER
in work area of next available word.
internal control table entry
PUST for MODIFY
obtain the value from the internal control table entry whose code
is 0, 1, or 2.
Register 13
=0
and code = 0 value is in current entry
and code
=2
value in current entry is index
in temp stack where value is found.
Register 1310
exit:
MODF
value is relative to the base address of SECT. 00 in load module.
Register 14
= actual
value.
set up MASTER PUST and sub-PLISTs with desired information (DEF, EXPR, or DICT)
and then go to MODIFY routine.
= VALUE 1, if applicable
Register 5 = address of NAME1
Register 7 = address of MASTER PUST for MODIFY
Register 12 = relative address in temp stack of desired
Register 4
165
sub-PUST (DEF, EXPR, or DICT).
Register 13 = for DEF, DICT
for EXPR
= NAME2
= address of NAME2
Register 14 = VALUE 2
Register 15
= RELDICT. 00 code, if applicable
The following is a list of the routines that generate the DEF,RELDICT.OO changes and the data in SECT.
for the appropriate tables.
CFPDTH 1
CCTPSD
CFPDT
CCTXPSD
CFIDTH
CCINTENV
CFIDT
CBKPSD
CCLOCKS
CFCOMSIZ
CCTQH1
CRESDFSIZ
CCTQ
CRESDFSIZP
CINTSPGMT
CINTLB 1
CRJIT
CINTLBSIZ
CCTWDA
CINTLB2
CCTIDE
DOIBTB
CCTGL
DOFBTB
CCTWD
DOSPTB
CFDFR
Special error routines include: DELY, DEL, COMERR, KEY, FINDRPAR, DELX, FRGDEXIT, EOCCSCAN,
DEC, HEX, DEFAULT, NAMY, NAM, SIZPAG, NOROOM, NOROOMX,
COMABORT, MOD, CTERR, NFRGDERR
166
2. 11.11
Flow Chart
Pg. 1
ENTER
Initialize FRGD
Temp Stack
Get work area &
Initialize
~f-----4t'
.~\
'-.J
V
t
Get keyword from
next parenthetical
expression
NFRGD CT
PNFRGQ
FCOM
RESDF
PFCOM
Get value &
put in
~NFRGD
FIPOOL
PNINT
Get value &
put in
VFIPOOL
PRESDF
Get value &
put in
VCT
FFPOOL NINT
~OO~
Get value &
put in
VFCOM
PCT
Distribute onl
table FRGDOP~
Pr=C,-,-lQ-=--L-_ _ ,
Get value &
put in
VFFPOOL
,
~
Get value &
put in
VNINT
PFFPOOI
Get value &
put in
VRESDF
CTQ
Get value &
put in
VCTQ
'~----~-----+----~
FRGDOp,
!; --INTS
End of Options
-
"--./
- -~
~P9.2
(
\
LMFRGD
'-----/ Pg. 3
Figure 2-19. Flow Diagram of FRG D
167
Pg. 2
yes
Initialize
internal table
pointers
Get name & put
into interim
table entry
Get size &
convert & put
in table
Get page &
convert & put in
table
Get FIMAX
convert put
in table
7
More
INTS
Update interim
table pointers
no
Update necessary
interim table
pointers
Figure 2-19. Flow Diagram of FRGD (Cont.)
168
Pg. 3
no
module areas in
work area
Process
DNINT
Control Table
no
?
Set up necessary
PLISTS
Process
DCTQ
Control Table
Initial ize load
module information
?
Process
DINTS
Control Table
Process
DNFRGD
control table
Process
DRJIT
Control Table
Process
DCT
Contro I Table
Process
DOTHERS
Control Table
Figure 2-19.
Flow Diagram of FRGD (Cont.)
169
Pg. 4
Read next
control
command
--A
Read O. K.
End of File
f=RGDLMX
no
r--\
FRGDLM
INTLBOPE:"---i~
"---/
~
\J
GETOPLB
Get op-Iabel from
in parenthetical
expression
End of Options
Next
Option
Get LOC
from
expression
Process
DINTLB
control table
yes
/"\
t-+---FRGDLM
A Ilocate work
Put Op-Iabel &
LOC in respective
interim table
\J
area &
initialize
inters
Set
SAVER 1
Flag
f
\
FRG
DLM-------'l~
Update
Pointers
"---/
INTLBOPC
"--/
Figure 2-19.
Flow Diagram of FRGD (Cont.)
170
Pg.5
.~
WRITLM
Write load
module to
M:FRGD File
FRGDEXIT
Release
work
area
Restore
PASS2 Temp
Stack
yes
Exit to
READSTRG in
P2CCI
no
EXIT
EXIT
Figure 2-19. Flow Diagram of FRGD (Cont.)
171
Exit to
---.JREADOK in
P2CCI
2. 12 XPART
2. 12. 1 Purpose
To process the :PARTllnON]command and generate the load module M:PART in which is defined the permissible
number of partitions and the resources ovai lable for each for UTS systems only.
2. 12.2 Usage
B
UTXPART
With:
R3 pointing to PASS2 stack data
R7 pointing to control card PLIST
RO pointing to temp stack pointer
R3 and R7 are saved
Return is to READSTRG in P2CCI
172
2. 12.3 Input
Control card (:PART) image
2. 12.4 Output
Display of PASS2 control information to LL device
M:PART load module (Table 2-22)
Table 2-22 M:PART Load Module
Label
-
Entry
Size (Wrds)
Length
Contents or Value in terms of
PART Keywords
LPART
Value
-
#pART defined
PL:LK
1
1
0
PL:CHG
1
1
0
PLD:ACT
2
LPART+1
0
PLB:USR
1/4
LPART+1
0
PLH:CUR
1/2
LPART+1
0
PLH:SID
1/2
LPART+1
0
PLH:TOL
1/2
LPART+1
0
PLH:FLG
1/2
LPART+1
Bit 0 of each entry for HOLD/SWAP
if SWAP = 0 if HOLD = 1
Bit 15 of each entry for LOCK/UNLOCK
if LOCK=1 if UNLOCK = 0
PLH:TL
1/2
LPART+1
Lower TIME limit
PLH:TU
1/2
LPART+1
Upper TIME limit
PLH:QN
1/2
LPART+1
QUAN
PL:MIN
1
LPART+1
Lower limits
Bits 0 - 7 = DP
Bits 8 - 15 =7T
Bits 16 - 23 = 9T
Bits 24 - 31 = CORE
PL:MAX
1
LPART+1
Upper limits
Bits 0 - 7 = DP
Bits 8 - 15 = 7T
Bits 16 - 23 = 9T
Bits 24 - 31 = CORE
173
2.12.5 Subroutines and Definitions
1.
2.
Subroutines
SYNTAX
used to convert control card to stack data blocks
COREALLOC
used to allocate dynamic data pages
MODGEN
used to generate DEFs
WRITELM
used to write output module
Definitions
DEVS,R3
A core location in P2CCI basic dynamic data area containing
the total number of private disk packs, 7- Track tape drives and
9- Track tape drives defined via :DEVICE commands.
o
I
78
15 16
23
#DP
2. 12.6 Data Base
The XPART module contains two tables for use by the SYNTAX routine.
1.
KEYWORD TABLE
Contains an entry for each val id keyword on the :PART card. This entry consists of the
TEXT form of the keyword followed by a word containing an operation identifier and the
displacement into the temp stack table.
2.
SKELETON TEMP STACK TABLE
Each entry in the table is a sing Ie word in length and contains the default value
assoc iated with the parameter.
Note, the entries are order dependent because of the method subsequently used to error
check the parameters.
2. 12.7 Description
Upon entry the processor accesses the DEVS, R3 cell and stores the total DP, 7T, and 9T on the system
permissible in a table of maximum value.
This method is required in order to allow zero to be a
legal maximum value for peripheral parameters, (i. e., 7T, 9T, DP).
The processor then BALS to the SYNTAX routine which converts the control command image into managable
tempstack tables. All keywords encountered by SYNTAX prior to the first (PART, value) are incorporated
into the first table to be used for all partitions as their default parameters. The first PART options causes
SYNTAX to set the system defaults for all unchanged parameters in the first table and initiate a new table.
Subsequent PARTs only cause new tables to be started. Upon return R5 contains the starting address of the
generated tables which is saved for subsequent cleanup.
174
The p'rocessor then BALS to COREALLOC, specifying an unknown word size for the REF/DEF stack
and data record.
Upon return R7 contains the address of the MODIFY PLISTi SR 1 contains the first
address of the allocated data record area; SR2, the address of the REF/DEF stack area.
The highest partition number specified (providing that ~ 3 or ~ 16) is used as the total number of
partitions desired (LPART) and all tables are LPART + 1 in length.
If the highest PART specified
is less than 3, then 3 is used as the default.
The processor then BALs to MODGEN and causes the value DEFs, location DEFs, and requisite
tables to be generated for M:PART. Prior to storing val ues into the tables, the registers are saved
and the processor checks each specified value that the maximum and minimum are within range,
to determine the maximum is greater equal than the mimimum and core is the range 0 to 64, and that
there is no conflict between the LOCK and UNLOCK, SWAP and HOLD paramters.
If an error is
detected, the processor puts a code in R3 and BALs on 02 to an internal subroutine (ERROR) that
determines what error occured in which partition, and formulates an appropriate error message
identifying the error, the partition and the value(s) used. The corrected value is stored in the skeleton
table upon return from the routine.
Note, if the mimimum is out of range, or if maximum is less
than mimimum, zero is used for the minimum. If the maximum value is out of range, the SYSGEN
defau Its are used for both va lues.
The defaults are then stored in all tables to which are added any parameters that have been specified
for a given partition.
The registers are restored and the processor BALs to WRITELM with the address of the file name to be
created in 03.
Upon return, the tempstack is cleaned up, releasing all the area obtained by SYNTAX
for the tempstack tables and the processor exits to READSTRG in P2CCI.
2. 12.8 XPART Messages
**ERROR-PARAMETER*XXXX*
IN XXXXXXXX MAX
o USED
The specified parameter in the designated
< MIN--
partition or default (INXXXXXXXX) is in
FOR MIN
error. The value used is indicated in the
**ERROR-PARAMETER*CORE*
message.
IN XXXXXXXX MIN > 64--
o USED
FOR MIN
**ERROR-PARAMETER*CORE*
IN XXXXXXXX MAX>64--
64 USED FOR MAX
175
XPART continues.
The specified parameter (*XXXX*) in the
*ERROR-PARAMETER*XXXX*
IN XXXXXXX MAX INVALID--
designated partition or default (IN XXXXXXX)
SYSGEN DEFAULTS USED
is in error. The value used is indicated in the
message. XPART continues.
**ERROR-PARAMETER*XXXX*
IN XXXXXXX MIN INVALID--
a USED FOR MIN
**ERR OR-PARAMETER*XXXX*
IN XXXXXXX MAX & MIN INVALID -SYSGEN DEFAULTS USED
**CONFLICT IN HOLD IN XXXXXXX PARTITION NOT HELD
**CONFLICT IN LOCK IN XXXXXXX PARTITION NOT LOCKED
**PART
a NOT
ALLOWED --
SPECIFIED RESOURCES IGNORED
176
2. 12.9 F low Chart
Pg. 1
CC in
Tabular form
(DYNAMS)
COREALLOC
Get allocated
core for load
module
Determine
highest part
# defined
Compute table
sizes based on
toto I # parts+ 1
MODGEN
Generate va I ue
DEFs, location
DEFs and tables
Figure 2-20.
Flow Diagram of XPART
177
Pg. 2
Save
Registers
ERROR
~--.1
R3 = 2 max.
R3
= 1 min.
Pg.5
Error
Flag = 0
Add -3
to
Error Flag
no
no
Store min &
max defaults
Add -2
to
Error Flag
Store 0
in min
Add -1
to
Error Flag
Add 1 to
Error Flag
no
R3 = 0 max < min
R3 =-1 max out of ranger
R3 =-2 min out of range
R3 =-4 max and min
out of range
Pg. 5
Figure 2-20.
Flow Diagram of XPART (Cont.)
178
Pg. 3
ERROR
R3
Pg.4
,----'~
=5
Pg. 5
Store core,
max, min,
values defaults
in table
Pg. 4
LOCKS
Check HOLD/
SWAP
LOCK/UNLOCK
Store HOLD,
LOCK settings
in table
no
Pg. 4
Figure 2-20. Flow Diagram of XPART (Cont.)
'179
Pg. 4
no
Restore
Stack
Store in
Table
EXIT
/
no
All entries
MAX,MIN,COB
""'-qUAN) done
~
Check hold swap
LOCK/UNLOCK
store if changed
and correct
Restore
Registers
WRITELM
Write
Load module
Figure 2-20.
Flow Diagram of XPART (Cont.)
180
Pg.5
Access
Appropriate
Error Message
ERROR
R3 = 4
Pg. 5
Select lock
mask and value
yes
Compute part #
of error
store in message
yes
ERROR
R3
=3
Pg.5
Print
Or HOLD
mask and
value
i Message
~
Entry
from defau Its
?
yes
RETURN
/
./
no
Store in
Table
- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--1
Figure 2-20. Flow Diagram of XPART (Cont.)
181
3.0 PASS3.
3. 1 PURPOSE.
To provide the communication with the system LOADER necessary to load a specific Monitor, processor, or library.
PASS3 provides for automatic biasing and, optionally, the releasing of random access device files.
3.2 CALLING SEQUENCE.
Monitor Control Command: IPASS3
3.3 INPUT.
PASS3 control commands from SI device.
:name
where
name
is the name of a LOCCT (see LOCCT processor Chapter 5) to be used by the system LOADER in
loading an element.
Comment commands from 51 device..
Files containing LOCCTs from random access device.
M:MON load module, if target system is BPM/BTM, to determine background lower limit.
SPEC:HAND file when LOCCT is for M:MON •.
I/O handlers named in SPEC:HAND file plus BASHANDL file for basic I/O handler set when LOCCT is for
M:MON.
3.4 OUTPUT.
Display of PASS3 control information to LL device.
HANDLERS file containing all necessary I/O handlers when LOCCT is for M:MON.
LOCCT to absolute read/write scratch area on system's random access device (BPM/BTM base system) or to core
common storage (UTS base system).
ROOT Load Module generated if LOCCT is for M:MON and target system is BPM/BTM. See description (Chapter 3.7. 2)
for detailed discussion of contents of various tables. See Table 3. 1 for contents of ROOT load module.
182
·
Table 3 1 ROOT LOAD MODULE CONTENTS
I
LENGTH
I
I
*
CONTENTS OR VALUE
LABEL
ENTRY SIZE
MAXLEV
Value
TBBASE
1
MAXLEV
0
COVLSEG
1
MAXLEV
segment number (starting
with X ' 3F ' and incremented by
1 for subsequent entries)
OSTACK
1
18
stack pointer doubleword
in 1st 2 words followed by
16-word stack.
MAXSEG
Value
SlTB
2
XSEG*
Value
-
segment number
YSEG*
Value.
-
segment number
I
-
MAXSEG
Max. levels in TREE structure
Number of segments in TREE
structure (number of TREE
entries - 1)
0
-
where the names in the TREE entries are substituted for X and the names of ROMS found in OLDSEGS
tables are substituted for Y.
3.5 BASE REGISTERS.
Register 7 = address of control command PLISTs, I/O PLISTs, and data in temp stack.
Register 6
= address
in temp stack of positions of "ROOT" load module.
3.6 SUBROUTINES USED.
NXACTCHR (obtain next character from control command).
NAMSCAN (used to scan a field which contains a name).
CHARSCAN (used to check a specific character, such as a terminator, for legal syntax).
HEXSCAN (used to scan a field which contains a hexadecimal value).
QUOTSCAN (used to scan a field which contains a key word, e.g., SAVE).
System Processor, LOADER (PASS3 does a M:LINK call to this processor to perform a load function.
LOADER must be in the :SYS account).
The
MODIFY (used when generating the "ROOTI! load module).
3.7 DESCRIPTION.
3.7. 1 Overview.
PASS3 is entered when the monitor control command !PASS3 is encountered. Upon entry, PASS3 obtains 4 pages
of core as an initial work area. PASS3 then processes its own control command. A parameter is required (BPM
or UTS) identifying the target system type. The presence of an optional parameter (MON or ALL) wi II cause
PASS3 to abort should M:MON or any module be unable to be loaded successfully.
183
PASS3 then initializes its work area to zero and proceeds to read a :command and processes it according to the following options and syntax:
:name
(option, option· •• )
,.. The "name ll is used to form a file-name which will identify a file containing a LOCCT (see Chapters 5 and 6)0
The "name" is syntactically checked and must be from one to ten alphanumeric characters of which one character
must be alpha.
PASS3 proceeds to obtain the file containing the LOCCT referenced by "name ll •
dividual records of binary card image format.
This file is made up of in-
PASS3 reads each record, checks its sequence number, checks its
check-sum, and reforms the LOCCT in one continuous record in the work area.
The remainder of PASS3's control command is then processed.
The options which may be encountered are as follows:
BIAS=value
specifies that the load bias in the LOCCT identified by "name" is to be changed to the specified
hexadecimal "value'" The "value" cannot be greater than X'lFFFF'. The "value" is also
converted to the next higher page boundary, if not already at.a page boundary. If a bias
offset is specified (see "BIAS=l-offset"), the "offset" is added to the bias "value".
BIAS=+offset
specifies that a hexadecimal Iloffset", converted to next higher page boundary, if not at one
already, is to be added to the specified bias "value ll (see IIBIAS=value ll ) . If no BIAS=value
has been specified, the offset is added to the lower I imit of the background area
(BKGRDLL)o This background 10Y.er limit is determined from the M:MON load module in the
current accounto However, if M:MON is not present, the offset value has no effect and the
original LOCCT bias is unchanged. The logical interaction of these bias values is illustrated
in the following table:
PASS3 processes these two options.
However, they have no effect on a LOCCT's bias for a UTS SYSTEM.
The original bias in the LOCCT is assumed to be correct.
Table 3-2. BIAS RESULTS
BIAS=value
BIAS=toffset
M:MON
Resulting BIAS
unspecified
unspecified
absent
LOCCT unchanged
unspecified
unspecified
present
BKGRDLL
unspecified
specified
absent
LOCCT unchanged
unspecified
specified
present
BKGRDLL+offset
specified
unspecified
absent
value
specified
unspecified
present
value
specified
specified
absent
val ue + offset
specified
specified
present
val ue + offset
184
specifies that when the system LOADER has completed the loading of the module (load module)
IIname", all element files comprising this module, as well as its LOCCT, are to be deleted.
However, this does not include those files specifically named by the SAVE option (see SAVE
option). The deleted files must be in the current account and must not be protected by a
password.
DELETE
SAVE (name
L, name' • • • )
specifies that the named elements ("name") are not to be deleted (see DELETE
option). All element names in the LOCCT from the current account not SAVEd
are deleted. The presence of this option automatically implies a DELETE option.
If, during the loading of a module, the system LOADER encounters an error, the DELETE/SAVE feature is
ignored. That is, no element files are deleted, as the LOADER has not been successful in loading them.
If the SAVE option is encountered, PASS3 obtains enough core to build an internal table of "name. II entries
I
(Table 3-=3)"
This table of names is used when PASS3 performs the DELETE for all element files named in the
ROM Table entries in the LOCCT. This option is necessary when certain element files are referenced by several
LOCCTs.
Table 3-3. Table of SAVE Names
LOWCORE
LW1
NAB
INIT
IIC
C
--
C
C
...
2
C
1
N
2
C
IIC
C
.. .
C
3
1
N
BANAB
\'
BALW
\'
"
\1
where
LW1 = byte address of the last available word plus one in the Table work area, {i. e., BA (BALW+l»
NAB = byte address of next available byte in table's work area (i. e., BA (BANAB», NAB initially contains
the byte address of INIT.
IIC = number of characters in name (TEXTC format)
C l' C2' •• • , C N
= characters in
name
When the control command has been processed, PASS3 checks the load module nome in the LOCCT, which
exists in the work area, to see if it is "M:MON" (i.e., this LOCCT is for a Monitor). If it is, and the target
system is BPM/BTM, PASS3 generates a IIROOT II load module. This module describes the Monitor's overlay
structure as identified by the TREE entries in the current LOCCT.
185
The uROOT" module is ultimately loaded with the Monitor and controls the Monitor1s run-time overlay structure. If
the current LOCCT's load module name is "M:MON ", and the target system is UTS, the "ROOT II module is not
generated.
If the current LOCCr's load module name is not uM:MON", PASS3 determines if a previous Monitor has been
loaded, and if so, what is its background lower limit.
This is accomplished by obtaining the keyed record TREE
from the load module M:MON in the current account.
If the M:MON module does not exist, there is no back-
ground lower limit.
However, if the TREE structure is available, the end of the longest Monitor overlay path is
determined and is used as the background lower limit.
Note RCUR2, RCURSYMB, TSDBTA and CLS are ignored in
determining the longest overlay path.
If the target system is UTS, all further bias analysis ceases, and PASS3 assumes that the bias in the LOCCT
is correct.
However, if the target system is BPM/BTM, the resulting bias in the LOCCT is calculated
according to Table 3-1.
PASS3 then determines where to save the LOCCT for the System LOADER's use.
If the base system is BPM/BTM,
the LOCCT is written to the absolute read/write scratch area on the system's random access device.
But, if the
base system is UTS, the LOCCT is saved in common core storage.
When the LOCCr's load module name is "M:MON IJ , PASS3 proceeds to generate the IIHANDLERS II file.
This
file contains all of the necessary peripheral I/O handlers as defined by the user on PASS2 II:DEVICE II control
The required handler names are found in the keyed file "SPEC:HAND II • The format of this table of
II
names is described in Chapter 6. PASS3 obtains the contents of the "BASHANDL file and writes it to the
commands.
"HANDLERS" file.
The "BASHANDL" file, by default, contains the handlers for: typewriter (handler name
KBTIO), card reader (handler name
= CRDIN),
I ine printer (handler names
= PRTOUT and
=
PRTOUTL), RAD
(handler name = DISCIO).
The handler names ere then obtained from the IlSPEC:HAND Il file.
II
"BASHANDL is ignored.
Any name which is already a part of
If a name is not a part of "BASHANDL", it is used as the name of a handler
file which must be merged into the new "HANDLERS" file.
sequent time in the "SPEC:HAND" file, it is ignored.
If a specific name is encountered a second or sub-
Any name encountered for which there is no
handler file, causes PAS5)3 to discontinue the processing of this control command and, therefore, to
continue to its next command.
When all LOCCT and "HANDLERS" file processing is completed, PASS3 performs a Monitor M:LINK call to the
system LOADER which is found in the :SYS account, and must be a load module file.
When the System LOADER has completed its task, it performs a Monitor M:LDTRC call requesting a return to
the calling processor, namely, PASS3.
The LOADER returns a flag which indicates whether or not the load
function was successful. If not successful (ioe., flag set), PASS3 proceeds to read and process the next control
command, therefore, ignoring any DELETE/SAVE option requested. If the load was successful (i.e., flag reset),
and no DELETE/SAVE option was specified, PASS3 proceeds by reading and processing the next control command.
186
However, if the load was successful, and the DELETE/SAVE option was requested, PASS3 attempts to release each file
named i,n the LOCCT ROM entries, and the actual LOCCT used in loading the module. Each ROM entry is checked
to see if its account field corresponds to the running account. If not, the entry is ignored. Each entry is then checked to
determine if it was listed as a SAVE file.
If it was, the named file is saved. When PASS3 has completed the delete
phase, it proceeds to read and process the next control command.
3.7.2 Generation of ROOT Load Module.
When the LOCCT is for M:MON, after obtaining background lower limit for a BPM/BTM target system, the
GENROOT routine is entered to generate the "ROOT" load module.
First, the dynamic data is moved into the stack and maximum core obtained and initialized for the load module
generati on.
The TREE table in the LOCCT is searched to determine the number of levels in the tree structure.
The number of
levels starts at 1 and is incremented by 1 for each non-zero OVERLAY LINK encountered in the TREE. The number
of levels cannot exceed 5.
The value DEF MAXLEV is generated followed by the table TBBASE, a word table of MAXLEV length, each entry
containing zero. COVLSEG is then generated, a word table of MAXLEV length.
word and increments this by 1 for each subsequent entry.
PASS3 stores X' 3F' in the first
OSTACK is then "generated. This is an 18 word table,
containing a stack pointer doubleword in the first two words, followed by a 16-word stack.
The number of segments in the tree structure (i.e., the number of TREE entrys in the LOCCT minus one) is used
for the value DEF MAXSEG and to build the table S 1TB.
PASS3 allocates a doubleword entry initialized to zero
for each segment.
Each TREE table entry is processed, starting with the root segment.
The segment number designation starts with the
value X' 3F'. As each successive TREE entry is processed, the segment number is incremented by one, the least
significant six bits being saved. That is, the segment number which follows X ' 3F' would be XIQQI. The TREE
entries are processed serially, and not according to overlay structure.
As an entry is processed, a segment name is formed by appending the characters "SEG II to the name in the TREE
entry. That is, if a TREE entry IS name is "A", the result will be "ASEG". This segment name is then used to
create an external definition as follows:
nameSEG
EQU
< an absolute
segment'
value>
where
"name ll
segment'
is the name from the TREE entry (e.g., A).
is the current segment number value (e. g., X' 3F').
After generating this def, the first ROM POINTER (in the current TREE entry) is used to obtain the Relocatable
Object Module (ROM) names from the ROM entries in the LOCCT.
187
The first ROM name is ignored, as it is the same as the name in the current TREE table entry.
However, each sub-
sequent name in the ROM table, up to and including the name whose FLAG (see ROM table description in Chapter 6)
is X'OO', will be processed. The segment number value (e. g., X'3f1) remains the same throughout the processing
of these ROM names. Each ROM name identifies an element file needed to complete the segment identified in the
current TREE entry. As a ROM name is processed, it is used to generate an external definition only if it is found
in the table of special segmert names (Table 3-4).
Otherwise, the ROM name is ignored. If the ROM name is
found, a segment name is formed by appending the characters "SEG" to the ROM name.
That is, if a ROM name
is "B", the result will be "BSEG li o The external definition would then be:
BSEG
<
segment#
EQU
an absolute value
>
When all TREE table entries have been processed, the generated load module will be written to a file called
"ROOT".
The following table controls the generation of external definitions using the ROM names o
The format of a table
entry is as follows:
TABLE 3-4.
PASS3 "OLDSEGSII TABLE FORMAT
NAME
TEXTC
F
LINK
I
Each entry contains a name (TEXTC form), for which a segment number must be assigned.
When a ROM name
from a ROM entry (LOCCT) is found in this table, the characters "SEG IJ are appended to this TEXTC name, and
an external definition is generated o
Note that the Iinked entries each contain a dupl icate entry for the very first
The reason is that the first entry of a chain of Iinked entries is ignored, yet, it must be defined.
name o
Example 3-1.
03
01
0123
I
C
I
L
I
S
000
14567
18910111121314151161718191202122 23124
i5
2627 128293031
188
If ROM name in ROM entry is IIClSII, and this name is found in the table, then the following def is generated:
ClSSEG
EQU
segment#
The "segment#1I will be the same as that used when defining the segment number for the name in the TREE table
entry.
LINK
"10
LINK = 0
is the address of another table entry (TEXTC name) which is to be defined.
If F = 8,
then the current entry's name is defined, and the LINK address is used to obtain the
next entry's name which is to be defined. This continues until LINK = O.
If F = 0,
then the current entry's name is ignored and the LINK address is used to obtain
an entry's name which is to be defined. This condition continues for only one
level, and not until LINK = O.
the current table entry is not linked to other entryso
Example: If ROM name in ROM entry is IIRDF", and this name is found in this table, then, the
following defs are generated when F = 8, and LINK
or LINK = 0:
to
Address = 100
03
1
102
R
04
D
R
l
F
RDFSEG EQU segment#
102
RlBTSEB EQU segment#
B
TRUNCSEG EQU segment#
T
t
105
81
0123
---
105
05
T
N
C
R
U
000
4 567 891011 121314151]617 18 19 /:<0
ii2-2"2j1"242526-2728 £9- 3031
If the ROM name in ROM entry is "M: 16", and this name is found in this table, then the following def is generated
when F = 0, and LINK
"10:
Address = 200
02
[
5
I
01234S6789101112131415 1617181920212223 24252627
Address
28
2y 3031
= 300
M
04
:
ISSEG EQU segment#
1
6
0
o
1 2
3 4 5 6 7
200
9
10
1112 13 14 15
16 17 1819 20
189
212223242,) 26
~I L.IHY.JU
31
The following example shows pictorially what has just been described (to conserve space, the element file names
used are not those specified in PASS3 1s "OLDSEGS" table, although the philosophy is the same).
The LOCCT
would look like:
EXAMPLE 3-2.
DIAGRAM OF LOCCT.
"7
ROM TAB ~E 0
4A
Z
1D
,~
....
",/
",,/
w
w
....1/
....
0....J
0::
W
2D
TREE SI2 E
,if ~
"':'-
172 01 I
15 101 A
--
.~
- --. ---.-
>X
0::
• • - • • 1 •.
0038
c--l---
0000
--
0008llQOO.~. 0000
t='
Z
_·'4
I-
Z
W
W
W
W
~~
....0::
--~
8k1/
0000
OOOB
Z
W
co
1m F
190
W
W
....0::
~
t-
V')
0
07
~~
m
197
~iI
17E 01
....
'1\
Z
w
w
,
w
iI'
'\~
....J
W
0::
co
....
«
....
40
184 01
Y
B
w
..
....
0::
40
D
..v
~I-
Y
y
:A()
,
~
V
v
0000
a0
DOOO
0016
....
....J
co
>0::
«....
Z
0
po
0::
W
U
w
w
w
C
Z
Z w
....
0::
~ V\
:::>
W
V')
-
\/
1\
,r--
(Cont)
190
g
~
w
0
....J
co
o::
>-
II'
I~
~
00::
~
0::
,/
Z
w
~
0
....
00
~~
< END
«
....
0
>0::
T
if
1BC
1/
>-
~
Z
0::
lB5 1m
~
gil
,~
,~
~
W
:::>
....0::'"
lAE 01 H
W
II'
x
0::
....
Z
i::!
Z
0
-.....
00::
~~
D015
0::
Z
~
....
W
Cw
W
w
z~
~
0
1=
r-.
II
~I'I.
A
~,
w
oc
~
>-
.f: \'
w
\'
.;,
-...~
«I-
w
Z
lAn
w
~~
15e ()
....
....
,,;.,
,
0
....,,,
V')
0000
1/
>-
0::
t-
Z-.; ~
00::
If
hl J:
199
N gw
0
....J
-
~-
t='
Z
0
00::
~
~~
0
.-
f)
40
~
I-
15)(
1m
Z
w
"
V
192
JI'-
,I(
~
,
-¥
0
Z
«
w
01 C
00
x
>0::
TREE TAB E 0
-..1:""-
18B
-
1002A OOOB
0021 0000
u..
I
~
01 G
67
OF LOCCT>
... 1;
"!\
Z
w
~
0
0::
,
\,/
Assume that PASS3's "OLDSEGS" Table contains the following entries:
=200
01
A
The resultant external definitions are:
000
0
01
202
8
ASEG
8
204
03
04
EQU X'3F'
204
0
P
S
8
206
From TREE entry for ItAII
206
A
From ROM entry for "8"
-D
R
BSEG
EQU
X'3P
POSSEG EQU
X'3F'
ARDLSEG EQU X'3F'
L
---
8
01
209
000
D
DSEG
03
D
R
-.--
F
04
T --
------
8
R
L
l-
---
210
---
05
T
R
N
C
--_.._---
01
01
G
000
0
04
1
"-
1
300
M
302
-
---- -----
L
K
302
02
OSSEG
000
~_L~J
o
EQU
From ROM entry for
U
0
215
From TREE entry for "G"
GSEG
EQU
X'Ol'
ISEG
8
213
X'OO'
From TREE entry for II!)"
.---:...
8
210
-
20D
8
20D
EQU
300
0
208
From TREE entry for liD"
S
191
,~
EQU
X'02'
II
I"
X'02'
3. 8 PASS3 MESSAGES.
The error or information messages which may appear during a PASS3 consists of the following:
""PASS3--IN-CONTROL""
The PASS3 processor has been entered.
For information only.
""PASS3--COMPLETEO""
PASS3 has completed its function and exits to the
Monitor. For information only.
**1/0 ERR/ABN ON M:SI~
An error/abnormal code (xxxx), has been encountered
when reading the SI device. If there is a background
lower limit, it is displayed. PASS3 displays
completed message and exits to the Monitor.
**OPEN M:EI ERR/ABN=xxxx(LOCCT)
An error/abnormal code (xxxx), has been encountered
when attempting to obtain a referenced LOCCT file.
PASS3 continues to next control command.
**WRITE ABS ERR/ABN=xxxx(LOCCT)
An error/abnormal code (xxxx), has been encountered
when attempting to write the LOCCT to the absolute
read/write scratch area on the random access device
(BPM/BTM base system only). PASS3 continues to
the next control command.
**READ M:EI ERR/ABN=xxxx(LOCCT)
An error/abnormal code (xxxx), has been encountered
when attempting to read a LOCCT file. PASS3 continues
to next control command.
t**OPEN M:MON ERR/ABN=xxxx
An error/abnormal code (xxxx), was encountered
when attempting to open the M:MON load module
file, and the error/abnormal was other than file
does not exist (code=03). PASS3 displays background lower limit, if available, displays completed message, and then exits to Monitor.
t **READ M:MON ERR/ABN=xxxx
An error/abnormal code (xxxx), was encountered
when attempting to read the keyed file TREE within
the M:MON load module file. PASS3 displays background lower limit, if available, displays completed
message, and then exits to Monitor.
**CANNOT OPEN/RELEASE
An attempt is made to release (through DELETE/SAVE
option) an element file, but the file does not exist,
or is from an account other than the running account
or the file has a password. If the file does not exist,
it may be because it is referenced more than once and
the first reference has already released the item. This
message is followed by the name of the element file.
PASS3 continues.
**CC ERROR, NO
PASS3 control commands require a 11:" in character
position one. PASS3 continues to next control
command.
1:1
IN COLUMN-l
**CC 10 INVAUD
The name identifying a LOCCT is not a valid alpha~
numeric character string. PASS3 continues to next
control command.
**10 SIZE> 10 OR = 0 CHARACTERS
The name identifying a LOCCT does not exist or is
longer than ten characters. PASS3 continues to
next control command.
tNote:
When one of these messages appears, PASS3 is in the process of determining a new background
lower limit. That is, a "M:MON" load module does exist in current account, but cannot be accessed.
192
**DELIMITER NOT
0, =OR SYNTAX BAD
One of the specified delimiters is expected but not
found or the delimiter is recognized but is syntactically
incorrect. PASS3 continues to next control command.
**KEYWORD NOT BIAS/DELETE/SAVE
The keyword is inval ide
control command.
**KEYWORD SAVE ALREADY USED
The SAVE option can be defined only one time.
continues to next command.
**NAME INVALID
A SAVE option "name" is not alphanumeric. PASS3
skips to next "name ll, if one exists, or to next field.
**BIAS NOT HEXADECIMAL VALUE OR
TOO LARGE VALUE
The BIAS "value" is not valid. It is either not
"exadecimal or is greater than X'lFFFF'.
PASS3 continues to next control command.
**BIN. CARD INVALID TYPE, SEQ. 'xxxx
A LOCCT file contains an image, sequence 'xxxx,
with an invalid 10 type (i.e., not a X 1 3E' or XI1EI).
PASS3 continues to next control command.
**BIN. CARD SEQUENCE ERR, SEQ. 'xxxx
A LOCCT contains an image, with an invalid SEa
field. The sequence 'XXX>< is the number whrch the
image should have been. PASS3 continues to next
control command.
*CHECKSUM ERROR, SEQ.
PASS3 continues to next
PASS3
')(XXX
,XXX>(
A LOCCT file contains an image, sequence
with a checksum error. PASS3 continues to next
control command.
****SPECIFIED BIAS < BKGRDLL
The bias specified is less than the calculated background lower limit. This is a warning message, and
appears when target system is BPM/BTM only.
****BIAS USED WILL BE
The bias used (xxxxx) is that which appears in the
LOCCT. For information only.
XXX><
****M:MON BK GROLL IS
When PASS3 has completed its function, and the
target system is BPM/BTM, and an "M:MON" load
module has been built, its background lower limit,
xxxxx, is displayed. PASS3 displays completed
message and exits to Mon itor.
XXX><
*****LM 'ROOP' CANNOT BE GEN: RATED
PASS3 cannot generate the "ROOT" module (BPM/
BTM target system). This results from PASS3 not
having enough core for work area. PASS3 ex its
to the Monitor.
-----PASS3 ABORTED
This message is displayed in conjunction with other
messages and implies an abort condition.
*****M:MON TREE STRUCTURE> 5 LEVELS
A Monitor overlay structure containing more than
five levels (BPM/BTM target system) is illegal. A
level implies the root segment as well as each overlay area with the tree structure. PASS3 displays
abort and completed messages and exits to Monitor.
*****PASS3 TYPE UNK NOWN
The system control command, "! PASS3", contains
a parameter which is neither IIBPM" nor IIUTS II •
PASS3 does an error exit to Monitor.
***OPEN/READ NNNNNNNNN
ERR/ABN = xxxx
An I/O error/abnormal code = xxxx, was encountered when attempting to form the "HANDLERS"
file. The name IINNNNNNNNN" is initially
"BASHANDL" and then is changed to the handler
name which PASS3 is attempting to obtain and merge
into the "HANDLERS" file. PASS3 continues to
next control command.
193
****OPEN/READ SPEC :HAND FILE
ERR/ABN = xxxx
An I/o error/abnormal code = xxxx, was encountered
when attempting to obtain the "SPEC:HAND file generated by PASS2. PASS3 continues to next control
command.
***U NKNOWN TYPE - XXM USED
The type field of !PASS3 was not specified. System
type under which doing SYSGEN is used, (XXM).
M:MON NOT SUCCESSFU LLY LOADED
The MON or ALL option has been specified on the
! PASS3 command and M:MON either cannot be loaded
or has not been loaded. PASS3 aborts.
MODULE NOT SUCCESSFULLY LOADED
The ALL option was specified on the! PASS3 command
and the Loader found errors loading a processor. PASS3
aborts.
OPTION NOT 'MON ' OR 'ALL' NONE ASSUMED
The option field on the! PASS3 command is inval id.
PASS3 continues.
3.9 PASS3 PROCESSOR FLAGS.
TYPEFLG
Designates the type of PASS3 specified:
::()
=2
LOC. X' 2B ' in Monitor
BPM
UTS
This location contains the information which identifies
what type of base Monitor is in control (e. g.,
BPM/BTM or UTS). The format is:
where
MON =4 BPM
= 5 BPM/BTM
=6 UTS
A flag indicating the base Monitor type:
MMONTYPE
:::() non-UTS.
"lOUTS.
A flag which indicates that the current LOCCT
generates a M:MON (Monitor) load module. This
flag and the MMONTYPE flag control whether or not
a IIROOT" module is to be generated.
M:MONFLG
:::() LOCCT not for M:MON.
r 0 LOCCT is for M:MON.
A flag set the same as M:MONFLG, except it
controls the generation of the HANDLERS file o
MONFLG
:::() No HANDLERS file generation.
HANDLERS file.
10 generate
BKGDRLL
A cell containing the target system Monitor's background lower limit, if one exists (BPM/BTM target
system only). If none exists, it is = O.
BIAS
A cell containing the bias (BIAS = value) defined
on PASS3's control command, and used only if
BPM/BTM target system:
= -1 no bias defined.
the bias as defined (page boundary).
>0
A cell containing the bias offset (BIAS = tvalue)
defined on PASS3 1s control command, and used only
if BPM/BTM target system:
BIASADD
194
=0 no bias offset defined.
>0 the bias offset as defined (page boundary).
LOADFLG
This flag indicates the System LOADER's success or
failure in loading a module. The LOADER return to
PASS3 with register 15 set 0, if successful, or f if
failure. This value is saved in LOADFLG, and indi~
cates whether or not the DELETE/SAVE options are to
be honored:
=
=0
f 0
DELETE
yes, DELETE/SAVE options to be honored.
no, do not perform DE LE TE/SAVE.
This flag indicates that the DELETE and/or SAVE
option was encountered on the PASS3 control command.
A SAVE option implies a DELETE:
= 0 no DE LETE and no SAVE encountered.
0 a DELETE and/or SAVE was encountered.
f
SAVE
This flag is set when a SAVE option is encountered.
The value in SAVE is the base address of the work
area obtai ned for the SAVE II names .. :
= 0 no SAVE option.
the base address of the work area.
>0
3. 10 INTERNAL ROUTINES.
PASS3
main entry, initialize processor, and general controller.
PASS3NXT
get next control command.
PASS3LCT
obtain information from LOCCr file and re-form the
records into continuous LOCCT.
PASS3CHK
control command has been processed, put various
values into LOCCT table.
GENHAN
determine if HANDLERS file is to be generated for
M:MON load module, and then do a M:LINK call to
the System LOADER.
PASS3PAR
process all parameters on the current control command.
NXTNAM
get next name after SAVE option and enter it into the
work area table.
GETPAGE
get more work area for SAVE option if needed o
PASS3DEL
process DELETE option.
PASS3BIS
process BIAS option.
SAVINCOM
get common storage and save LOCCr for System
LOADER.
Register 15 = buffer address; Register 13 =
LOCCT size in bytes.
GTMONTRE
obtain M:MON's TREE structure from M:MON load
module in current account {if one exists} and determine
the background lower limit.
GENHANDL
generate HANDLERS file from list of handler names
found in SPEC:HAND file.
CPYHNDL
copy a handler to HANDLERS file.
buffer address.
ROMDELET
delete element files which are named in the current
LOCeT ROM entries. Register 13 = LOCCT size in
bytes; Register 15 = base address of LOCCT.
195
Register 9
=
CHKNAM
check LOCCT element file name against table of SAVE
names to determine if delete is desired. If found, do
not delete (condition code one = 1 if found, =0 if not
found). Register 1 = address of name to be checked;
Register 4 = address of table of names.
READCC
read next control command. Register 12 = buffer
address.
READCONT
conti nuation command requested.
LISrCONT
display control command from character subroutines o
L1STCC
display control command.
EOCCSCAN
search for end of control command.
GENROOT
generate "ROOT" load module from M:MON's TREE
structure in M:MON load module in current account.
Register 13 =addr~ss of LOCCT table minus one.
WRI Ttvy'WRITRO OT
write "ROOP' load module to uROOT" file. Register
1 =buffer address; Register 2 = buffer size in bytes;
Register 3 = address of key (load module element's
key).
APNDSEG
append "SEG" to a given segment name. INPUT:
Register 4 = address of segment name OUTPUT:
Registers 8-10 =segment name with appended
"SEG".
EIA/EIE
desired LOCCT file not available.
RSPHER/RSPHAB/OSPHER/OSPHAB/HANDLER/
ONHER/ONHAB/ABSHER/OBSHAB
The HANDLERS file cannot be generated. Either
a handler file, the BASHANDL file, or the
SPEC:HAND file, is not available.
CONY
convert error/abnormal code to EBCDIC.
GENDEF
bui Id DEF PLIST for MODIFY routine to add external
definition. Register 1 = address of NAME •
Register 2 = address of NAM~. Register ~ = 0, no
NAME20 Register 3 = VALUEj.
GENDICT
built DICT PlIST for MODIFY routine to change
RELDICT.OO. Register 1 = address of NAME r
Register 2 = VALUE 1. Register 3 = resolution code
for RELDICT. 00.
Special error routines include:
RBSHER, RBSHAB, CE, CA, CEAO, CEAOX, EIAE,
EOA, RE, RA, OTME, OTMA, OTMAE1, RTME,
RTMA, DE, DA, NO:, IDERR, IDSIZE, DEL,
COMEXIT, KEYWRD, KEYWRDX, DUPKEYWD,
NAM, HEX, TYP, COMERR, SEQ, SUM, MODERR,
BADM:MON, TYPERR, COMNERo
196
3. 11. PASS3 PROCESSOR FLOWCHARTS
ENTER
Page 1
Obtain 4 pages
of Work Area
1st 30 words are
Control Command
Buffer. Remainde
is for LOCCT.
Set TYPEFLG
=0 BPM
=2 UTMBPM
Command
Determine type
UTS
...-__B_P_M/-,--BT_M_-;of base system 1--------,
Set MMONTYP
FLAG
Initialize
work area
Reset FLAGS,
SAVE s.IAS
BIASADD,
DELETE, MONFLG
Read
EOF
Y
GET "id"
from Command
"PASS3
Completed"
Append "id"
to "LOCCT"
Pg.2
Figure 3-1. Flow Diagram of PASS3
197
Page 2
Set up OPEN
FILE PLIST
NO FILE
OPEN FILE
t-?1r-1-_ _ _ _-r--r---n-.....-r--l (LOCCT)
"OPEN M:EI
ERR/ABN =
xxxx (LOCCT)"
Read one Recor
pg. 1
Check SEQ. N,
CHECKSUM
Image
Add record
to previous
records
RE-FORM
LOCCT
yes
Set M:MONFLG,
MONFLG,
FLAGS
SAVE VALUE
IN BIASADD
pgo 3
Figure 3-1. Flow Diagram of PASS3 (CaNT)
198
Page 3
no
pg.2
no
"UNKNOWN
KEYWORD"
I
Set
delete
flag
Keyword SAVE
already USED"
T
pg.l
Get 1 page
for work
area
T
:'Wi iI -~o~t~ i ~ -,
-: save names
Set save flag
to base work
area
Initial ize
work area
"name"
Put "name" in
Work Area
pg.4
Figure 3-1. Flow Diagram of PASS3 (CONn
199
pg. 1
Page 4
pg. 3
I
Used fur- - -
-.; Additional
I "names"
Update work
area contro Is
pg. 3
,----I Used for
__ -I M:MON's
L~E~T~I~
no
None
Open File
"M:MON"
EXISTS
Read keyed
record "TREE"
Release 4 pages
of work area
pg.5
Find end of
longest PATH
and SET BKGRD L
pg.5
.L..---i
Figure 3-1. Flow Diagram of PASS3 (CONT)
200
CLOSE and
SAVE M:MON
.J
Page 5
Put BIAS into
LOCCT Table
Put BKGRDLL
into LOCCT
Table
Get BIAS from
LOCCT Table
"BIAS used
~-------------t will be > 15 CHAR. LONG
DEF searches for next parameter.
****NOT ENOUGH CORE AVAILABLE
*****SYSGEN DEF ABORTED
Work area too small. DEF exits.
****WRITING PO BY DEFAULT
Either no tape type specified or parameter invalid on :WRITE.
***ILLEGAL INCLUDE - WILL BE COPIED LATER
On the :INClUDE command a keyed file (for PO)
or a consecutive file (for BO) has been specified.
The file name is printed above this message. DEF
continues.
***DEF TYPE UNK NOWN
System type field of ! DEF command has been specified
but is invalid. DEF exits.
***TYPE UNKNOWN **NO
1:1
xx Mused
System type field of !DEF missing. DEF defaults to
currently running system type (xx).
in column-1
Command in error.
****TROUBLE WITH M:SPROCS
DEF reads next command.
In attempting to open M:SPROCS in creating a
BO tape for UTS system, difficulty encountered.
DEF releases the tape and if ENDFLG set, exits.
***CANNOT WRITE TAPE
***CANNOT OPEN OUTPUT DEVICE
In attempting to open tape (BO/PO), abnormal
condition occurs. DEF releases tape and if ENDFLG
set, exits.
PO TAPE CONTENTS •••
These are subtitles that are followed
BO TAPE CONTENTS.
by a I ist of the appropriate files.
***INCLUDE ITEMS***
***OTHER ITEMS***
********INCLUDE ITEMS NOT FOUND
4. 10 INTERNAL ROUTINES.
DEF
Main entry, initial ize processor dynamic data area
READFRST
Process DEF command.
INIT
Initialization of pointers.
DEFRDCC
Read :Command for DEF, and branch to appropriate
routine or set DELETEF.
DEFINCL
Process :INCLUDE.
DEFIG
Process :IGNORE.
DEFWRITE
Initial processing of :WRITE.
DFWRTPO
:WRITE processing for PO.
DFWRTBO
:WRITE processing for BO.
DEFTABLR
Processing name options on :INCLUDE or :IGNORE.
PAGER
Get a page of core and zero it out.
210
READCC
Reads :Commonds for DEF.
Register 12 = CC Buffer address
LISTCC
Displ ay commands on LL device.
Register 12 = CC Buffer address
GETRITEMON
Obtain appropriate WRITEMON overlay according
to system type (UTS or BPM/BTM).
EOCCSCAN
Find end of current control command.
CCA
Generate PO/BO tape.
NXTINCL
Obtain next INCLUDE fi Ie name.
RDWRITEM
Read and write fi Ie.
SYNINCL
Process synonymous file includes.
NOINCL
End of includes, begin generating remainder of tape.
NXTFILE
Obtain next fi Ie on disc.
IGNORl
Search ignore table for match.
ISSPEC
Delete fi Ie if required.
CLSDSK
Close file.
RDWRITE
Read file and write to tape.
ALLDONE
Releases pages acquired, if ENDFLG set, exits.
NXTTPE
Zeroes flags and counters, restores FPTs to original
state, returns to INIT via PAGER.
Error and abnormal return routi nes.
LSlVVRT
EOF on reading M:SI.
RTMAINCL
EOF on reading INCLUDE files.
OTMAINCL
Abnormal return on opening of INCLUDE file.
RTMA
EOF on reading M:TM file.
OTMA
EOF on open next of M:TM or synonymous file found
for open-next.
OPOA
Cannot open BO/PO Tape.
.211
4. 11 Flowcharts
Page 1
Initialize
Dynamic
Data Area
Process IDEF
command
TYPEFLG
0= BPM/BTM
2 =UTS
PAGER
Get one of Core
Initialize
pointers
Abnormal Rtn
LSTWRT
Exit from Loop
pg. 11
list :Command
pg. 11
Determine type
of:Command
:DELETE
Process
:INCLUDE
Process
:IGNORE
Process
:WRITE
pg. 3
Set flag
(DELETEF)
Figure 4-1. Flow Diagram of DEF
212
ID
Process if Card
in Error
Page 2
>--~
Initialize
INCLSTRT
(= NXTNAME
Adjust INCLEN
(= NXTNAME+
1)
Process name '~--_----..JL..-____--1
options and
ore' t ble
pg. 12
DEFIG
ENTER
Adjust IGEND
>--y_e_s_~ (=NXTNAME+1
Process name
opti ons, store
in table
pg. 12
Adjust IGEND
(=NXTNAME)
Figure 4-1. Flow Diagram of DEF (CONT)
213
Page 3
DEFWRITE
Get tape type
Field
III egal-PO by
Defau It (pri nt
message)
pg. 4
Figure 4-1. Flow Diagram of DEF (CONT)
214
Page 4
DFWRTPO
OUTSN
DCB Poi nter (R5
to M:PO
Store in DeB
OUTSN
Process
set in DCB
pt JOn,
EXIT
pg. 4
WRTFLG=
ORG (x'20')
Link automatic
IGNORES at
end of IGEND
yes
Link automatic
i ncl udes at end
of INCLEND
Save
Registers
Get version #
R7 = M:PO address
o
Restore Registers
Pri nt PO tape
contents
Get 10 pages
of Core
pg. 6
Figure 4-1.
Flow Diagram of DEF (CONT)
215
Page 5
Open M:SPROCS
(:SYS)
DCB Pointer
(R5) to M:BO
Get 10 pages
of Core
OUTSN
Process SN
option,. set in
pg. 4
Link to
INCLEND
WRTFLG =
ORG (Xl 101)
Save Registers
Get version number
R7 = M:BO address
Close M:SPROC
Search for TE L
Name-End of
Monitor Overlays
Restore
Registers
Link automatic
includes to end
of Monitor overlays
Ad iust Buffer
Addresses
Link automatic
includes for
BPM/BTM at
INCLEND
R5
= DCB point
to M:BO
Get 10 pages of
Core
R5 = DCB point
pg. 6
Figure 4-1. Flow Diagram of DEF (CONn
216
Page 6
Get Byte count
of Entry name
no
Save Position
in Table
pg. 9
AND =0
got entry
L
Must be XI 4F I
Code • Turn on
:SYS in account
field of FPT
Increment (+ 1)
position in tablel-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _---'
Figure 4-1.
Flow Diagram of DEF (CO NT)
217
Page 7
Access file nam
from FPARAM
Pointer to File parameters
(F PARAM) (02) Pointer to start
of variable parameters
(R 1)
pg. 13
Check ORG
of file
Close and Save
File
For INCLUDE
PO - CONSEC only
BO - KEYED only
no
NXTINCN
pg. 6
Get Key Lengt
(04), ORG (03)
from FPARAM
Abnormal addres
OPEN
___ OPOA
M:PO/M:BO
(Print file name)
and size
pg. 12
OPEN M:TM
to FILE
Abnormal addre!s
OTMAINCL
Abnormal Addres
RTMAINCL
- - - - (Exit Point of
Looo)
pg. 8
pg. 13
Get actual
Record Size
Figure 4-1. Flow Oiagram of OEF(CONT)
218
Page 8
PGCNTL
Determine reeso
for ABN return
pg. 8
RTMAIN1
Close and save
Disc and Tape
Files
M
PGCNTL
Flag set
release extra
pages
RETURN
RETURN
rror messages
~_.,..istCC
DEF DONE
Get max pages
Set FLAG
Position one
record back
adjust pointer
RETURN
Figure 4-1. Flow Diagram of DEF (CONT)
219
EXIT DEF
Page 9
Close and
Release File
e lose and Save
File
no
NX F E
D1 = OPEN-NXT
FPT for M: M
D2 = FPARAM
OPEN (NEXT)
M:TM
Abnormal
address OTMA
pg. 10
RDWRITE
Get KEYMAX
D1 = OPEN FPT
Get file name
from FPARAM
OPEN DeB
to Write
Tape
CLSDSK
pg. 9
Abnormal
opot
pg.12
/ Read
PO-keyed fi les
BO~onsecutive
Record
M:TM
fi les
Exit pointer
of Loop
pg.
Get actual
Record Size
Figure 4-1. Flow Diagram of DEF (CONT)
220
Page 10
Close, Save
Determine reaso
for ABN return
pg.
M:BO and
Rewind
8
Close Tape
FILE
Set End of
SYNON TABLE
pgo 6
POOUT
Write LASTLM
Close and
Save and
Rewind M:PO
pg. 9
ERRDNN
Print
DEF DONE
~
TFIL
pg. 9
no
SYNONYMOUS
FILE
no
zero o""'u'-t=fl-og-s----,
and constant
set DCB to
NXTTPE
?
.
Set Table addre s
in INCLSTRT
Set pointer to
INIT
Put SYNON
name in table
pg. 1
pg. 9
Figure 4-1.
Flow Diagram of DEF (CONn
221
LISTCC
Get 1 page
--i
11
M
fRead ~~SI for
Command
ABN LSlWRT
I
pg. 8
pg. 11
ENDFLG
Zero page out
pg. 10
Increment page
count keep trac ,
of end
RETURN
...J0-e 1
a..-_ _ _ _
pg.
Set ENDFLG
RETURN
pg. 3
RETURN
Figure 4-1. Flow Diagram of DEF (CONT)
222
Page 12
Reset Flags
Error Message
pg. 1
PAGER
Get 1 page
and zero it
Store name
in table
Open, Close
Release,
Rewind Tape
RETURN
pg. 10
Figure 4-1 •.Flow Diagram of DEF (CONn
223
SEGLOAD
appropriate over
lay to write unlabeled tape po ion
BPMBT -
(BPM/BTM)
UTMBPMBT-UT~
Branch to
Overlay
RETURN
pg. 7
B
Store SYNaN name
and parent file name
in special SYNaN
OPEN FILE
(" WRITE II FILE)
pg. 8
! -_ _ _ _ _ _ _ _
Figure 4-1. Flow Diagram of DEF (CaNT)
224
~-~
___
J
5.0 LOCCT
5. 1 PURPOSE
To generate a permanent file containing the Loader Overlay Control Command Table (LOCCT) information used
by SYSGEN PASS3 and the system Loader when loading a specified element (e.g., M:MON, PCL, EDIT,).
5.2 CALLING SEQUENCE
The following Monitor control command sequence:
! LOCCT
(LMN, X), •••••
< optional>
! TREE ••••••••••
!DATA
:LOCCT
X
5.3 INPUT
LOCCT control command from C device (80 characters maximum per physical image):
:LOCCT
LOCCT from core common storage (UTS Base System) or abso lute read/write scratch area on system's random
access device (BPM/BTM Base System).
5.4 OUTPUT
A display of LOCCT control information to LL device. A permanent file to random access device containing
LOCCT table. A copy of permanent file information to the PO device.
5.5 BASE REGISTERS
Register 7
= address
in temp stack of control command PLISTs, and I/O PLISTs.
5.6 SUBROUTINES
NAMSCAN (used to obtain the name from the LOCCT control command).
5.7 DESCRIPTION
The LOCCT processor is entered from the system's Control Command Interpreter (CCI) as a result of a
"!LOCCT" Monitor control command being encountered. The "!LOCCT" command replaces the "!LOAD"
or "!OVERLAY" command, although the information on the "!LOCCT" command is identical to that of a
LOAD or OVERLAY command. CCI processes the "!LOCCT" command and the optional "lTREEIl
command and terminates on the II! DATA II command. The resultant output is a LOCCT (see Chapter 6)
which contains all of the information from the II! LOCCT" and
II
!TREE II commands in a compressed format.
If the base system is BPM/BTM, the LOCCT is saved, temporarily, in the absolute read/write scratch area
on the system random access device.
However, if the base system is UTS, the LOCCT is saved in the
common area of core.
225
CCI then enters the LOCCT processor. LOCCT proceeds to read its own control command, ":LOCCTII.
The syntax for this command is
:LOCCT
name
This control command must immediately follow the
II
! DATA II control command. The "name" field is
optional, however, if present, it is used to form a file-name which is the name of the permanent file
containing the LOCCT. The "name" is syntactically checked and must be from one to ten alphanumeric
characters of which one character must be alpha.
This control command cannot be continued to other physical images. Unlike other SYSGEN processors,
a comment control command (i. e., a control command with an asterisk in character position one), is
not recognized.
However, comments may be added to the ":LOCCT" control command by preceding
the comment with a peri ode
The file-name formed from the IIname II option is accomplished by appending the IIname II to the characters
IILOCCT II •
If the Iiname ll field is not specified, a previous assignment must have defined the file-name.
accompl ished with the Monitor control command
II
This is
!ASSIG N ". The assignment is to the M:EO DCB,
and must provide a file-name which is equivalent to that which would have been generated by the
LOCCT processor, i.e., the name must be appended to the characters "LOCCT".
If an Assign command is specified, and the II:LOCCT" command specifies a "name ", the "name" on the
II:LOCCT" command supersedes the assignment.
The LOCCT processor continues by obtaining the LOCCT from either the absolute read/write scratch area
or the system random access device (if the base system is BPM/BTM), or from the common area of core
storage (if the base system is UTS). The LOCCT is interrogated to determine if it is legal. That is, all
element file names (Relocatable Object Module names) are checked to make sure that they do not
reference labeled tape for their inputs. All element file references must be to a random access device.
The LOCCT processor then forms binary card image type records (Table 5-1) from the LOCCT. Each record
contains a binary type identification, a hexadecimal sequence number, a byte checksum, a byte containing
the size of the record (in bytes), and 84 bytes of LOCCT table information. The last eight columns
(or 32 bytes) remain unused.
Each record is then written in the file "LOCCT name" and is also output
the PO device.
When the LOCCTs are being generated, it is recommended that they be built in the same account in which
SYSGEN PASS3 executes. In a LOCCT, each element file reference contains a corresponding account
number in which that file is to be found. If these account numbers vary, and t~ files and accounts do not
exist when SYSGEN PASS3 eventually uses the LOCCTs, then the load phase will not be successful.
5.8 LOCCT MESSAGES
The error messages which may appear on the LL device whi Ie generating a LOCCT are as follows:
226
The LOCCT control command II:LOCCT II contains an invalid
***UNKNOWN CC OR
CONTINUAnON ILLEGAL
character string for the characters assumed to be IILOCCT",
or the command requests a continuation command (i. e., the
":LOCCT II command contains a semicolon prior to the "name ll
field). LOCCT displays abort message and exits to the Monitor.
LOCCT PROCESSOR ABORTED This message is displayed in conjunction with other LOCCT
processor messages.
The ":LOCCT II commandls "name" is not a legal alphanumeric
***NAME INVALID
name. LOCCT displays abort message and exits to the Monitor.
***CANNOT GENERATE LOCCT
WITH ROMS ON LABELED
A load item or element file (Relocatable Object Module - ROM)
TAPE
is to be found on labeled tape and is invalid. LOCCT displays
abort message and exits to the Monitor.
***ROM TABLE END CANNOT
BE FOUND
The LOCCT, as generated by CCI (System IS Control Command
Interpreter), contains inval id or unrecognized Relocatable
Object Module (ROM) information, i.e., the end cannot be
found. LOCCT displays abort message and exits to the Monitor.
***NAME> 10 CHARACTERS
The "name" contains more than ten characters. LOCCT displays
abort message and exits to the Monitor.
***1/0 ERR/ABN FOR READ C = XXXX
***1/0 ERR/ABN FOR WRITE EO=XXXX
***1/0 ERR/ABN FOR WRITE PO=XXXX
***OPEN EO ERR/ABN
= XXXX
***ABS READ ERR/ ABN = XXXX
< for
BPM/BTM only>
One of the above messages appears when an I/O error or
abnormal condition is encountered on the C, EO, or PO devices.
Under a BPM/BTM base system, the ABS READ message may appear.
The value XXXX is the I/O error/abnormal code.
displays abort message and exits to the Monitor.
227
LOCCT
Character
1
2 3 4 5 6 7 8 9 10
12
/
11
1
Row
/
SEQ
0
2
70 71 72 73 74 75 76 77 78 79 80
I-ID
NOT USED
3
4
5
DATA
I-- CKS
~
6
7
8
SEC
/
9
ID
I
V
1
X 3E binary card code
X11 E1 binary end card code
SEQ
two-digit hexadecimal sequence number
CKS
byte checksum of card image
SIZ
number of useful bytes in card image, including the control word in columns 1-3.
However, the size will never include columns 73-80, but, will include all of the
DATA. If the useful data ends prior to column 72, then the size will not include
those columns (or bytes) prior to column 72.
Figure 5-1. LOCCT Record Format
228
5.9 LOCCT PROCESSOR FLAG
LOC X'2B' in Monitor
This location contains the information which identifies what type of base
Monitor is in control (e.g., BPM/BTM or UTS).
The format is:
MON
o
34
31
where
MON = 4 BPM
5 BPM/BTM
6 UTS
5. 10 INTERNAL ROUTINES
LOCCT
main entry, initialize processor, and general contro lIer
GENFILE
generate a permanent file for LOCCT
LOCCTl
form next record from LOCCT information
GETCOM
get original LOCCT from common storage
Reg i ster 13 = buffer address where LOCCT is to end up
Register 14 = buffer size in bytes
FINDEND
find end of LOCCT for purposes of generating a permanent copy
Register 13 = base address of work area
Register 7 = size of LOCCT in words
FINDENDX
check for valid ROM table in LOCCT
Register 2
FINDROMX
= relative
address of ROM table in LOCCT
obtain from TREE table (in LOCCT) the next ROM table
information pointer.
Reg ister 1 = address of LOCCT
CONY
convert error/abnormal code to EBCDIC
Input: Register 10= error/abnormal code, (bits 0-7)
Output: Register 4 = converted code in EBCDIC.
Special error routines include: EO, ECOMMON, E1, E2, E3, E4, CE, CA, WE, WA, PE,
PA, OE, OA, RE, RA
229
5. 11 LOCCT Flow Charts
Page 1
Get 4 pages
for work area
Initialize
LOCCT flags &
work area
Read
LOCCT
command
yes
Display
Command
No, Monitor has already
displayed command
Initialize
LOCCT's
temp stack
Get
Name
field
no name
given
Set up open
PLIST, no
file name
Append name
to "LOCCT"
characters
Set up open
PLIST for perm.
file
Base Monitor
type
Read ABS
Scratch from
disc
BPM/BTM_
UTS
--8
Pg. 2
Pg.2
Figure 5-2. Flow Diagram of LOCCT
230
Page 2
Get common
Limits
Get LOCCT
size (word 1)
Move LOCCT
to work area
Release
common
core
Open output
file perm.
Determine TREE
address & end of
TREE
~_ _ _ FINDROM1
no
f\
FINDENDA
Calculate
LOCCT size
with no ROMI
TREE
Get 1st ROM
entry pointer
from TREE entry
~
Calculate
LOCCT size
with TREE, no
ROM
FINDENDX
~pg.
3
Pg.
3
Figure 5-2. Flow Diagram of LOCCT (Cont.)
231
3
Page 3
"Cannot Gen.
LOCeT with
ROMS on
labeled tape"
"LOCCT
ABORTED II
To next
TREE entry
yes
yes
Pg.2
Calculate
LOCCT size with
ROMs last
Calculate
LOCCT size
with TREE last
Initialize 120
Byte image
buffer
Binary code size,
Byte checksum, &
sequence #
Set up 1st 4
Bytes,
Co ntro I word
Figure 5-2. Flow Diagram of LOCCT (Cont.)
232
Page 4
Move max. of 84
Bytes or remainder
LOCCr, which
ever is less
Move ~ 84 Bytes
from Loccr to
buffer
Form checksum &
put in image
Write buffer
to file
Write buffer to
PO device
yes
Close & Save
Set to next
File
sequence #
e
Pg. 3
Figure 5-2.
Flow Diagram of LOCCr (Cont.)
233
6.0 TABLES, FILES, SUBROUTINES
6. 1 SYSGEN LOADER OVERLAY CONTROL COMMAND TABLE (LOCCT)
J~
LOCCT SIZE
FI
,
Is l\
Word - 0
1
ROM TABLE DISPLACEMENT
2
TREE TABLE DISPLACEMENT
I
3
Z
0
j::::
LOAD BIAS
4
~~
~~
5
w
()
~
4:
0
0
~
~
I-
L1-
6
7
~
Z
0
j::::
0
~
8
~
<5
....I
9
L1-
10
Z
Load Module NAME (3 words)
IV
V
User Account (2 words)
13
15~
v
w
N
Vi
l-
V
V
0
~
~
Word - n
~
Iw
w
~
I-
Vl
Vl
w
I-
4:
~
W
w
U
V
Z~
O~
0
0
~
0
V
L1-
0
Vl f:'
«a..
~
co
Vl
V
2-
0
0
0
4:"-.,.
0
t::.
Vl
Va..
I- CO
Vl
U
U
~
~co
:c~
~ '"
=>
L1-
« «'-'
I-
«
U
U
Vl
0
I-
Z
w
w
=>
Vl
>Vl
W
0 Vl
:E «
Z
L1-
l-
Z
«~
wI-
~
~
w
W
()
Z
,it
ELEMENT FILE Information
(Root Segment)
~
0
«w
0
Z
co N
4: v;
Segment 1 information
:>
~
ZVl
W-
w
....I
!::
co
« «>~Vl
~'"
Vl
w
....I
....I
"
ROOT Segment Information
w
w
U
=> :E....O:E
0 o~
Vl
0
~:;
TREE SIZE
Word - m
Word - m1
Vl
IV
0
....I
....I
Vl
W
....I
co
ELEMENT FILE Information
(Segment 1)
«I:E
0
~
~
~
I
l
,
,,
where
"
,,,
ROM TABLE DISPLACEMENT
the number of words from word - 0 to word n.
TREE TABLE DISPLACEMENT
the number of words from word - 0 to word - m1•
LOAD BIAS
the bias at which to load this element.
LOAD MODULE NAME
the name given to this element.
USER ACCOUNT the account in which this LOCCT is being generated. PASS3
forces th is to the current account.
F
a flag which identifies this LOCCT (if in common storage only, i.e., UTS Base System)
as coming from PASS3 or the or the Systems Control Command Interpreter (CCI). If CCI,
F=O (Bit 0); if PASS3, F = 1 (Bit 0).
SL
the load severity level indicator. PASS3 forces this to be "F", the highest severity level
";""-_ _ possible (B its 8-11).
tBASE SYSTEM refers to the monitor type which is in execution.
Figure 6-1. LOCCT Format
234
Word
0
SEGMENT NAME
l
(TEXTC FORM)
2
3
1st ROMPOINTER
BACK LINK
4
FORWARD LINK
OVERLAY LINK
5
00 SIZE
00 LOCATION
6
RF/DF SIZE
RF/DF LOCATION
7
01 SIZE
01 LOCATION
8
EXPRESSION SIZE
EXPRESSION LOCATION
9
10 SIZE
10 LOCATION
10
where
1st ROM POINTER
the number of words from word-n to first ROM * name (or Element File
Information block) in the LOCCT.
BACK, OVERLAY, AND FORWARD LINKS
the displacements from word-m1 to Segment
Information for next overlay, in the overlay structure.
00 SIZE AND 00 LOCATION
the load modules' protection type 0 size (doublewords)
and base location (doubleword address).
01 SIZE AND 01 LOCATION
10 SIZE AND 10 LOCATION
same as for 00, except it is for load modules' protection type 1.
same for 00, except it is for load modules' protection type 2.
RF /DF SIZE AND RF /DF LOCA nON
the External DEF/REF table's size (words) and base
location (doubleword address) for th is load module.
EXPRESSION SIZE AND EXPRESSION the Expression (External DEF/REF) table's size
(words) and base location (doubleword address) for th is load modu Ie.
NOTE: * ROM name implies Relocatable Object Module name.
Figure 6-2. TREE Entry Format
The Element (ROM) Table's entry has the following format:
Word
0
ELEMENT FILE NAME
2
(TEXT FORM)
r
FLAG
3
ACCOUNT OF ELEMENT FILE
4
5
PASSWORD
6
where
FLAG is a flag identifying the last Element File Name
within this Table and identifying the element file
name as being found on labeled tape, i. e.,
235
:
X '4x '
= not end of Element File
names within
this table.
XIOx' = end of Element File names within this
table.
x = 2 = Element File name found on labeled tape.
Figure 6-3. ROM Table Entry
6.2 SYSGEN LOAD MODULE COMPONENTS
KEY
Word
0
= IIHEAD"
TYPE
1
AI T I
II
I
I
2
I
FF
00
STADD
MODBIAS
3
LOCB/SIZU
J~
SIZE
LOCU
~
.....
a:l
~
Q..
4
Q
.....
8
9
10
11
where
TYPE = X' 81 1
= X ' 80 '
SIZE = X ' 18 1
= X '30 '
library load module (used by SYSGEN).
load module.
HEAD size (bytes) for BPM/BTM target system.
HEAD size (bytes) for UTS target system.
*A = 1 load module is in absolute form, i. e., no relocation dictionary{s) (RELDICT).
= 0 load module is relocatable.
*T = 1 no TCB
= 0 TCB is present.
*STADD Load module's entry point or start address.
#W number words in TREE.
MODBIAS
load module's bias, doubleword address.
LOCB
SECT. 00 base location, doubleword address for BPM/BTM module.
LOCU SECT .00 base location, doubleword address for UTS module.
SIZEU SECT. 00 size, in doublewords, for UTS module.
RFDFU REF/DEF STACK (RFDFSTK) size, in words, for UTS module.
*For SYSGEN - generated load modules: A=O, T=l, and STADD=O.
Figure 6-4. HEAD Record Format
236
------------
~
-----
Word
0
#W
SEGMENT NAME
2
(TEXTC FORM)
3
4
5
6
00 SIZE
00 LOCATION
7
RF /DF SIZE
RF /DF LOCATION
8
EXPRESSION LOCATION
EXPRESSION SIZE
9
10
11
where
#W
number words in TREE.
SEGMENT NAME
00 SIZE
name of load module root segment.
SECT. 00 size in doublewords
00 LOCA nON
RF/DF SIZE
SECT 000 base address, as a doubleword address.
RFDFSTK size in words
RF/DF LOCATION
RFDFSTK base address, as a doubleword address.
EXPRESSION SIZE
EXPRSTK size in words.
EXPRESSION LOCA nON
EXPRSTK base address, as a doubleword address.
Figure 6-5. TREE Record Format
The KEY names used to identify the remainder of a load module are formed by appending to the
SEGMENT NAME a one-byte digit which identifies a component as follows:
digit
00
segments RFDFSTK
01
segments EXPRSTK
02
RELDICT. 00 (relocation di ctionary for SECT. 00)
03
SECT. 00 (SYSGEN - generated tables, data)
Therefore, for a segment name of "ROOT" (refer to PASS3), the corresponding components will
be:
05D9D6D6E300
05D9D6D6E30l
05D9D6D6E302
05D9D6D6E303
implies
"ROOT
IIROOT
implies
implies
00
01
"ROOT 02
implies
"ROOT
237
03
II
=RFDFSTK
II
=EXPRSTK
II
=RELDICT.OO
II
=SECT.OO
RFDFSTK (Generated by call to MODIFY subroutine, 6.5)
Word 0
I
#W
I
TP
J~
VALUE
2
BA
I
HA
3
WA
>-
DA
0:::
I-
Z
w
REF/DEF NAME
u..
w
~
V
v
~
u..
W
n
I
I
(TEXTC FORM)
0:::
,
where
number of words in REF/DEF entry (n + 1).
#W
TP = 0
external definition.
=1
secondary external reference.
= 2
primary external reference.
=3
dummy section.
= 4 or 6 control section.
=5
VALUE
BA
=1
forward reference (null if #W
= 1).
actual value assigned to an external definition. 0, when name is external
reference.
VALUE is byte resolution.
HA= 1
VALUE is halfword resolution.
WA= 1
VALUE is word resolution.
DA= 1
VALUE is doubleword resoiution.
Figure 6-6. RFDFSTK Format
238
EXPRSTK (Generated by call to MODIFY Subroutine 6.5)
Word 0
IElq
#w
1
DSP
CB1
CB3
CB2
CBn
I
~
v
I-
nO
Z
DESTINA TION
n1
>0:::
I
BA
n2
I
HA
w
WA
I
z
o
DA
v;
WORD 1
n3
V')
w
s:X
WORD 2
w
~
m
V
v
I
WORD
I
n
where
#W
number of words in expression entry (m + 1).
DSP
the number of words to word - n2.
expression evaluation control bytes.
Figure 6-7
EXPRST K Format
The expression control byte values recognized by SYSGEN include:
CB.I
=0
null
=1
add constant from next word (word i) in word list in EXPRSTK.
=2
end of expression
= X ' 20'
to X'23'
add declaration according to pointer given in text word (word i) of
word list with resolution of bits 6-7 of CB.
= X'28' to X ' 2B '
subtract declaration similarto X'20' to X'23 1 •
= X ' 30 ' to
change expression resolution to bits 6-7 of CB.
= X '34
1
X ' 33 1
to X '37
1
add the ASECT doubleword address zero to the expression at
the resolution given.
= X ' 38 1 to X ' 3B I
The CBj digit
IS
subtract the ASECT similar to X ' 34 1 to X ' 37'.
format for X ' 20 ' throught X ' 2B ' is
00
10
SO rr
where
S=0
=1
rr = 0
add
subtract
byte reso lution
= 1
halfword resolution
=2
word resolution
=3
doubleword resol ution
239
The CB i digit's format for X'30' through X'33' is
I
00
11
rr
00
l
where
rr =
resolution code as previously described.
The CB i digit's format for X'34' through X'37' is
100 11 01 rr
I.
where
rr =
resolution code as previously described.
The CB i digit's format for X'38' through X'3B' is
I 00
11 10 rr
I
where
rr =
reso lution code as previously described.
wordO, word 1, • • • wordn
corresponds to control bytes (CBi) whose values are 1 or X'20'
through X'2B', and are either constants or displacement pointers to the RFDFSTK. The
format is the same as for DESTINATION.
BA=HA=WA=DA
DESTINATION
0 {resolution word}
a displacement pointer to the RFDFSTK.
C= 0 destination is to RFDFSTK.
= 1 DESTINATION is a core expression with the format
FLDSZ
TBP
ADDR
where
FLDSZ
the destinations (ADDR) field size (in bits) where ultimate value
is to be set.
TBP
ADDR
terminal bit position of value in the destination's field.
word address in SECT. 00 of DESTINATION.
E =0 expression not evaluated.
=1 expression has been evaluated.
240
RELDICT .00
(Generated by SYSGEN, modified by call to MODIFY Subroutine, 6.5)
Word 0
n
where
DO' D , • . • , Dn
1
=a four-bit digit which describes how to relocate a data word
in SECT. 00.
DO
?1
.
o
n
impl ies relative word - 0 in SECT. 00
implies relative word - 1 in SECT. 00
implies relative word - n in SECT. 00
Figure 6-8 RELDICT Format
Table 6-1.
Relocation
Digit (D i)
Part of Word
to Relocate
Relocation Digit Interpretation
Resolution
Relocate With Request
for What Bias
0
Address
Byte
Module Bias
1
Address
Half Word
Module Bias
2
Address
Word
Module Bias
3
Address
Doubleword
Module Bias
A
Both Halves
Doubleword
Module Bias
E
Absolute
-------
-------
SYSGEN uses the above relocation digits with their corresponding implications and results.
SECT. 00 (Generated by SYSGEN)
This area contains the actual data, tables, and reserve area which are generated by SYSGEN
for a given control command.
241
6.3 SPEC:HAND FILE CONTENTS
Word -0
#E
UNUSED
HC
Word - 2
Word - 3
C1
--
-HC
C,
---
C..,
--
C
---
C
~
~
yl
Word m
I
where
= number of entries in table.
HE
UNUSED
HC
= this word is unused.
= number of characters (C ) in name (TEXTC format).
n
C 1' C '. • • C n
2
= characters in handler name, (from one to seven characters
only). Each name ison a doubleword boundary.
Figure 6-9.
6.4
SPEC:HAND File Format
SYSGEN MODIFY SUBROUTINE PARAMETER LISTS (PLISTS)
The SYSGEN MODIFY subroutine requires parameter lists (PLISTS) which describe what is to be
accomplished. This procedure is useful only when changing, adding or defining items in a
load module.
The master PLIST refers to sub-PLISTS which will be referred to as change
description tables, (pointed to by Register 7).
Word 0
1
II
SUBR
2
V
3
4
5
6
ADDRCDT
I
RFDFAD
TREEAD
EXPRAD
RELDICTOAD
SECTOAD
RELDICTlAD
SECTlAD
RELDICT2AD
SECT2AD
7
RFDFUL
EXPRUL
where
ADDRCDT
I= 1
word address of a change description table or sub-PUST.
a change description table is not supposed to cause expansion of the RFDFSTK or
EXPRSTK. Therefore, the EXPR type of change description table is not permitted,
and "name 2" of the DEF type change description table must be defined.
1=0
a change description table may cause an expansion of the RFDFSTK or EXPRSTK.
Therefore, it is assumed that the area between the given RFDFSTK and EXPRSTK lines
is available for that expansion.
242
no action taken.
SUBR = 0
SUBR
f. 0
the address of a subroutine to be entered under the following circumstances.
Any call on the MODIFY subroutine may result in a number of core locations
in SECT. 0, SECT. 1, or SECT. 2 being modified. If it is so desired that
MODIFY not make these changes, but, instead, inform the caller of the
changes, then this subroutine is entered.
The subroutine is entered
via: Set Register 1 = core location to which change applies; Set Register 2 =
value to store; Set Register 3 = mask for BAL, 11 SUBR.
V
=00 RELDICT. 00, 01, 10 are available.
=01 RELDICT. 00, 01 , 10are not available, (i.e., the load module is an absolute module).
TREEAD
=word address of the load module TREE table.
RFDFAD
=double word address of RFDFSTK.
EXPRAD
=double word address of EXPRSTK.
RFDFUL
=double word address of RFDFSTK upper limit, (i. e., last useable doubleword).
EXPRUL
=double word address of EXPRSTK upper limit, (i.e., last useable doubleword).
RELDICTOAD, RELDICTlAD, RELDICT2AD
=doubleword address of the relocation dictionaries
for SECT. 00, SECT. 01, SECT. 10 respectively.
SECTOAD,SECTlAD,SECT2AD
=doubleword address of the SECT.OC, SECT.Ol, SECT.10
data areas respectively.
Figure 6-10. MASTER PLIST Format
DEF (no EXPR evaluation)
Word
TYPE
0
~\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\i
R
#Cl
I
n
m
1
1
#C2
NAME2
t
1
v
NAME1
v
I
±VALUE2
DEF (with EXPR evaluation)
Word
0
TYPE
1
n
J
#C1
NAME1
#C2
v
NAME2
I
±VALUE2
'V
m
~\\\\\\\\\\\\\\\\\\ \\%\\\\\\\\\W
243
R
1
1
I
where
R
=the resolution of NAME2. *
#Cl
=number characters in NAME1.
=the name of the external definition.
NAMEl
#C2
=number of characters in NAME2. If = 0, no NAME2, thus, NAME 1 is absolute.
=the name of an exter~al definition or reference upon which NAME1's value
NAME2
depends.
±VALUE2
=a positive or negative displacement from NAME2, or the absolute value
to which NAMEl is equated (if #C2 = 0).
TYPE = 01
definition with no expression
TYPE = 04
definition with expression
*The
2
resolution codes ("R ") consist of: 0 = byte address, 1 = halfword address,
= word address,
3
= doubleword address,
and 4
= same resolution as NAME 1.
Figure 6-11. CHANGE DESCRIPTION TABLE (SUBPLlST) Format for DEF
These two change description tables both generate an external definition. In the first case
TYPE = 01, no EXPRSTK entry is made which evaluates the definition. However, in the second case
TYPE
= 04,
an EXPRSTK entry is made which generates an actual value for a DEF.
The interpretation of these tables is:
NAMEl
EaU
resolution (NAME2) ±VALUE2
NAMEl
EaU
resolution (NAME2)
NAMEl
EaU
±VALUE2
244
EXPR
Word
0
TYPE
j
#C1
P\\\\\\\\\\\\\\\\\\\\\1
I
v
n
n1
I
NAME1
v
v
±VALUE1
1
#C2
NAME2
1
m
R
±VALUE2
v
I
where
R
=the resolution of NAME2.
#C1
=number of characters in NAME 1.
=the name of an external definition for the destination.
NAME1
±VALUE1
#C2
=a positive or negative displacement from NAME1 for the destination.
=number of characters in NAME2.
NAME2
=the name of an external definition or reference for which a value is to
be evaluated.
=a positive or negative added used to mod ify NAME2 1s va lue.
±VALUE2
TYPE = 00
Figure 6-12. CHANGE DESCRIPTION TABLE (SUBPLIST) Format for REF
The interpretation of this table is :
Destination NAME1±VALUE1 will be set with the resolution (NAME2)±VALUE2 when
NAME2 is defined.
The format of VALUE 1 is:
FLDSZ
TBP
ADDR
where
FLDSZ
=the destination (NAME1±ADDR) field size (in bits) where ultimate value
is to be set.
TBP
ADDR
=terminal bit position of value in the destination field.
=relative word address in SECT.OO,Ol, 10 of destination (relative to NAME1).
245
MOD
Word
0
TYPE
I
#C1
~~~~\\\\\~
R
1
~
NAME1
n
n1
1
±VALUE1
~
m
I
#C2
I
NAME2
~
VALUE2
I
where
R
=the resolution of NAME2.
#C1
=number of characters in NAMEl.
NAME 1
=the name of an external definition for the destination.
±VALUE1
#C2
=a positive or negative displacement from NAME1 for the destination.
=the number of characters in NAME2.
NAME2
=the name of an external definition used in relocating VALUE2.
VALUE2
=value to be put into cell NAME1±VALUEl.
TYPE = 02
Figure 6-13.
Change Description Table (SUBPLIST) Format for Sect. Modification
The interpretation of this table is:
Destination NAME±VALUE1 will be replaced with the ±VALUE2 +resolution (NAME2)
0. e.,
if resolution is byte, then bits 13-31 in VALUE2 will be relocated as a byte
address according to the defined value of NAME2).
The effective address, NAME1±VALUE1, within the load module, determines whether the
modification is to SECT. 00,01, or 10.
246
DICT
Word
0
TYPE
1I
#C
n
~~~\\\'\\\\\1
C
NAME 1
1
v
I
±VALUE1
where
C
#C
=relocation code to be used to modify the relocation dictionary
=number of an external definition.
±VALUE1
=a positive or negative displacement from NAMEl.
TYPE = 03
Figure 6-14. Change Description Table (SUBPLIST) Format for RELDICT. Modification
The interpretation of this table is:
Change the code in the Relocation Dictionary, whose relative position corresponds to the
relative address \(NAME1±VALUE1) - module base address
1'
to the code IIC".
The effective address, NAME1±VALUE1, within the load module, determines whether
the modification is to RELDICT.OO,Ol, or 10
247
6.5 MODIFY
6.5. 1 Purpose
To accept parameters via parameter lists and to generate external definition and reference entries
in a load module's RFDFSTK and EXPRSTK, respectively, and to modify a load module's relocation
dictionary (i.e., RELDICT.OO, 01, 10) or dat~ section (i.e., SECT.DO,Ol,lO).
6.5.2 Calling Sequence
BAL, SR4 MODIFY
6.5.3 Input
Register 7 = word address of MASTER PUST
6.5.4 Output
Condition code one (CC1) set if generation of external definition or reference or modification
of relocation dictionary or data section is unsuccessful, or the change description table TYPE
code is un known.
Condition code one (CC1) reset if generation or modification is successful.
6.5.5 Subroutines
LOC - Evaluate Location
INPUT:
Register 13 = address of NAMEl in Sub-PLIST minus 1.
CALL:
BAL,ll LOC
RETURN: Register 13
= address of NAME2
in Sub-PUST minus 1.
Register 4 = core address of designated location, i. e., NAME 1 ::. VALUE 1 •
Register
°
= Section number of SECT.DO,Ol, 10 in load module where
core address is located.
SECTION - Compute Section Number
INPUT:
Register 13
= address of VALUE i in Sub-PLIST.
Register 4 = core address for which Section Number is to be obtained.
CALL:
BAL,ll SECTION
RETURN: Register
°
= Section Number of SECT.OO,Ol or 10 in load module where
core address is located.
RSEARCH - RFDFSTK Search
INPUT:
CALL:
RETURN+O:
RETURN+ 1:
Register 13 = address in Sub-PUST of NAME i •
BAL,11 RSEARCH
NAMEi was not found in RFDFSTK.
Register 13
same as input.
Register 3
address of next available RFDFSTK entry
Register 12
index to next available RFDFSTK entry.
NAME. was found in RFDFSTK.
I
Register 13
same as input.
Register 3
address of name in RFDFSTK.
Register 12
index to next available RFDFSTK entry.
248
ADJUST - Adjust Value
INPUT:
Register 14 = value from RFDFSTK entry to be adjusted to desired resolution.
Register 15 = Resolution word from RFDFSTK entry,
Register 10 = Resolution desired from Sub-PUST.
CALL:
BAL,ll
ADJUST
RETURN: Register 14 = value from RFDFSTK entry adjusted to desired resolution.
Register 15 = resolution word adjusted to indicate desired resolution.
Register 10= resolution code of resolved value in Register 14.
resolution code BA = 0, HA = 1, WA = 2, DA = 3
EVAL - Evaluate Expression
INPUT:
Register 13 = address of NAME.I in Sub-PUST minus 1.
Register 10= desired Resolution code.
CALL:
RETURN+O:
BAL,ll
EVAL
NAME. not found in RFDFSTK.
I
Registers 10 and 13 are the same as for RETURN+1.
Register 3 = address of next available RFDFSTK entry.
Register 12 = index to next available RFDFSTK entry.
RETURN+ 1: NAME. was found in RFDFSTK as a Ref.
I
Register 13 = address of NAME. in Sub-PLIST
I
Register 10 = resolution code of desired value.
Register 3 = address of RFDFSTK entry.
Register 12 = index to RFDFSTK entry.
RETURN+2: Expression for NAME. ±VALUE. evaluated.
I
I
Register 13 = address of next NAME.I in Sub-PUST minus 1.
Register 10 = resolution code of final value in Register 14.
Register 12
= index
to RFDFSTK entry.
= -1 no NAME .•
I
Register 15 = resolution word of final value in Register 14.
Register 14 = evaluated expression value, NAME. ±VALUE .•
I
EVALR - Evaluate Expression
INPUT:
Same as EVAL, except,
Register 10= desired resolution code from Sub-PLIST.
CALL:
BAL, 11
EVALR
RETURNS: Same as EVAL.
249
I
RAOD
DADO
1_ Add RFOFSTK item (REF/DEF)
INPUT:
Register 3 = address of next available RFDFSTK entry.
Register 13 = address of NAMEi in Sub-PUST.
CALL:
BAL,11
RADD
CALL:
BAL,11
DADO
RETURN: Register 3 = address in RFDFSTK of current entry.
Register 12 = index to RFDFSTK entry.
Register 13 = address of NAME. in sub-PUST.
I
EADD - Add EXPRSTK item
INPUT:
Register 9
= code = 0
Expression for a DEF.
code = 4 Expression for a REF, i. e., core destination.
Register 8 = value of NAMEi ±VALUE i •
Register 13 = address of NAMEi in Sub-PUST.
Register 12 = Index to next available entry in RFDFSTK if Register 10 :s < 4.
Register 10= Resolution code for a REF expression.
CALL:
BAL, 11
EADD
CHCORE - Change Core Location or EXPRSTK
INPUT:
Register 4 = Destination information word, i.e., address field size and terminal
bit position of address field and destination address.
FLDSZ
I
TBP
78
Register 0
I
I
ADD
1516
31
= Section number of SECT. 00,
01, lOin load module where
destination address is found.
Register 14 = the value to be stored in destination.
Register 15 = mask for masking value into destination.
Register 10 = resolution code, 0 = BA, 1 = HA, 2 = WA,
3 = DA, 4 = NONE, for EXP or MOD type Sub-PUST,
or the resolution code plus bit 0 set
= 1 if DICT type
Sub-PUST.
CALL:
BAL, 11
CHCORE
EOEST - EXPRSTK Destination Address
INPUT:
Register 4 = desired destination address for searching purposes.
CALL:
BAL,11
EDEST
RETURN: All EXPRSTK items having a destination (OEST) address equivalent to the desired
destination address in Register 4, are removed from EXPRSTK by setting Bit 8 in
word 0 of EXPRSTK entry to 1.
250
EFIX - Fix EXPRSTK for Unsatisfied REF
CALL: BAL,ll
EFIX
RINDEX
INPUT:
Register 13 = RFDFSTK entry index
CALL:
BAL,ll
RINDEX
RETURN: Register 4 = RFDFSTK entry address
6.5.6 Description
The MODIFY routine consits of various subroutines which interpret input parameter lists
(PLISTS), evaluate their designated expression, (e. g., NAME1
.:!:
VALUE 1), generate
RFDFSTK (external reference and definition stack) EXPRSTK (expression stack defining a
ref/def expression value) entries, and modify core, RFDFSTK, relocation dictionary,
EXPRSTK values.
When an expression (EXPR) PLIST is encountered, NAME + VALUE is evaluated and is
the destination address used when the expression NAME2 ~ VALUE 2 is satisfied (i.e.,
evaluated). If there is no NAME]' VALUE then becomes the destination. The expre1
ssion, NAME2.:!: VALUE2, is then interrogated. If NAME2 is not in the RFDFSTK, it
is added to it as a ref type and an EXPRSTK entry is made which expresses the
evaluation algorithm for NAME 2 • If NAME2 is in the RFDFSTK and is a ref type, an
EXPRSTK entry is made which expresses the evaluation algorithm for NAME • How2
ever, if NAME2 is in the RFDFSTK and is a def type, the expression, NAME2.:!: VALUE 2 ,
is evaluated. The resulting value is then used to replace the field in the destination
address which is masked according to the destination resolution. That is, if the
destination resolution is a byte value, then the evaluation of NAME 2 ::. VALUE 2 is
converted to a byte va lue and replaces the designated field in the destination. Each entry
in the EXPRSTK is then checked to see if its destination address is the same as the destination address of NAME1 ::. VALUE 1, and if so, the EXPRSTK entry is removed by setting
flag (E
= 1)
indicating that this expression has been evaluated. If there is no NAME2
(i. e., only a ±VALUE 2), then the result is the same as if there was a NAME2 defined in
the RFDFSTK with value O.
When a definition (DEF, TYPE =01) PLIST is encountered, NAME1 is entered into the
RFDFSTK as a reference type unless it is already in the RFDFSTK. The expression, NAME2
+ VALUE 2 is then interrogated. If NAME2 is not in the RFDFSTK, it is added to it
as a ref type and an EXPRSTK entry is made which expresses the evaluation algorithm
for NAME 2 _ However, if NAME2 is in the RFDFSTK and is a def type, the expression,
NAME2 ::. VALUE 2 , is evaluated. The result is then put into the RFDFSTK entry and the
entry is flagged as a def. When NAME2 is a reference, then the RFDSTK entry remains
as a ref type. The EXPRSTK is then searched to find all entries which reference this
definition.
Each satisfied reference is then evaluated. The resulting value is then
used to replace the field identified by the destination and is masked according to
the destination resolution. That is, if the destination resolution is a double word value,
251
.then the resulting value is converted to a double word value and replaces the designated
field in the destination. If there is no NAME2 (i. e., only a ±VALUE 2) then the result is
the same as if there was a NAME2 with value O.
When a definition (DEF, TYPE = 04) PLIST is encountered, NAME is entered into the
RFDFSTK as a definition type (unlike that for a definition of TYPE = 0) unless it is
already in the RFDFSTK. The expression, NAME2 ~ VALUE 2 is then interrogated. If
NAME2 is not in the RFDFSTK, it is added to it as a ref type and an EXPRSTK entry
is made which expresses the evaluation algorithm for NAME • If NAME2 is in the
2
RFDFSTK and is a ref type, an EXPRSTK entry is made which expresses the evaluation
algorithm for NAME 2 • However, if NAME2 is in the RFDFSTK as a def type or if there
is no NAME2 (i.e., only a ~ VALUE 2), the expression, NAME2.:!:. VALUE 2 , is evaluated.
The result is then put into the RFDFSTK entry for NAMEl •
When a core modification (MOD) PLIST is encountered, NAMEl ~ VALUE l is
evaluated and is the destination address word when the expression NAME2 ~ VALUE 2 is
satisfied (i. e., evaluated). If there is no NAME 1' VALUE l then becomes the destination.
The expression, NAME2 ~ VALUE2, is then interrogated. If there is a NAME2, it must
have been previously defined with complete evaluation. If there is no NA~E2' (i. e.,
only a ~ VALUE 2), then the result of the expression evaluation is the same as if
there was a NAME2 whose value is known as O. Once the expression, NAME2.! VALUE ,
2
has been evaluated, the entire 32 bit value replaces the contents of the destination
address. The EXPRSTK is then checked to see if any of its entries contain a destination
.± VALUE 1, and if so, each such
1
EXPRSTK entry is removed by setting a flag (E = 1) indicating that th is expression has
address equivalent to the destination address, NAME
been evaluated.
When a relocation dictionary modification (DICT) PLIST is encountered, NAMEl ~ VALUE l
is evaluated and represents the destination address for which a re location dictionary
modification is desired. This type of PLIST will normally accompany a MOD PLIST.
That is, if a core modification is made, its corresponding relocation dictionary entry may
also require a resolution code change. The address NAMEl ~ VALUE relative to the
l
section base, becomes the relative digit position (4 bits per digit) in the section
relocation dictionary.
When MODIFY finishes processing a PLIST successfully, condition code one (CC1) is reset
(i. e., CCl
= 0)
and a return is made to the caller at the BAL plus one. However, if
MODIFY finds any error condition, it sets condition code one (i. e., CC 1 = 1) and
a return is made to the caller at the BAL plus one.
The following conditions will cause an error return (i. e., CCl
1.
TYPE> 4 (sub-PUST type invalid).
2.
No NAME1 in DEF PUST (TYPE
= 1);
3.
= 01).
No NAME1 in DEF PLIST (TYPE = 04).
4.
NAME2 in MOD PUST is not defined or is a reference.
5.
NAME1 in EXPR, MOD, or DICT PUST is not defined or is a reference.
6.
The expression value (NAME l ~ VALUE 1) does not fit into any of the
sections of a load module, (i.e., SECT.OO,Ol, or 10).
7.
The MASTER PUST indicates (I
= 1)
that the RFDFSTK and EXPRSTK
cannot be expanded and a DEF (TYPE
= 01 or 04) or EXPR PLIST is
encountered which would require expansion of either the RFDFSTK or
EXPRSTK or both.
8.
An EXPR, or MOD PLIST requests a core modification whose field size
(FLDSZ in sub-PUST) is either greater than 32 bits or overlaps a word
boundary.
6.5.7 Flowcharts
Page 1
ENTER
+
Sub-PUST
Type =
EXP
t
Evaluate
NAMEl, VALUEl
Evaluate
NAME2, VALUE2
~
Change Core if
Evaluated NAME2
VALUE2 or
f
Add NAME2 to
RFDFSTK,
Expression to
EXPRSTK
+
RETURN
DEF
~
Add NAME1 to
RFDFSTK
(REF Type}Eval.
NAME2, VALUE2
t
Value in RFDFSTk
Satisfy all
EXPRSTK REFs
to Value or
-l
MbD
t
Evaluate NAMEl
and VALUEl
Eva luate NAME2
and VALUE2
t
Change core
Destination
NAMEl +VALUEl
to Evaluated
NAME2 ~VALUE~
DICT
t
t
Evaluate
NAMEl and
VALUE1
Add NAMEl
to RFDFSTK
(DEF TYPE)
~
Change Re locat.
Dictionary Entry
to New
Resolution code
Evaluate
NAME2 +
VALUE2J
~
t
~
RETURN
Figure 6-15. Flow Diagram of MODIFY
(General Flow)
253
~
to
RFDFSTK with
EXPRSTK
Expression
Add
Add NAME2 to
RFDFSTK with
EXPRSTK
EXDression
RETURN
ADDDE
RETURN
NAMI:~
"
RETURN
Page 2
Get TREEAD
from Master
PLIST
Get ADDRCDT
from Master
PLIST
Get Type
from
Sub-PLIST
= 1
=0
Pg. 4
Pg. 3
=2
Pg. 8
Figure 6-15. Flow Diagram of MODIFY (Cont.)
(Entry Point)
254
=3
Pg. 9
=4
Pg.6.
0t
Page 3
LOC
Eval. NAME1,
VALUE1 for
Destination
~
Pg. 10
EVALR
Eval. NAME2,
VALUE2 for
Expression
l
NAME2 not
in RFDFSTK
Pg. 12
NAME2 is
a REF
Expression for NAME2 +
VALUE2 Evaluated
RADD
Add NAME2
to
RFDFSTK
Get Mask to
use in Core
Change of an
Address
Pg. 14
8
R8 = Core Add or
NAME1 + VALUE1
R7
Pg. 8
= X '40'
(Core Destination)
t
EADD
Add Expr.
to
EXPRSTK
l'
Pg. 15
CC1=0
RETURN
Figure 6-15.
Flow Diagram of MODIFY (Cont.)
(Process EXPR SubPLIST)
255
Page 4
Get Sub-PLIST
Pointer to
NAME1
yes
RSEARCH
Search RFDFSTK
for NAME1
Pg. 11
In RFDFSTK
NAMEl to
RFDFSTK
Save RFDFSTK
addr. entry in R4
Set Sub-PLIST
PTR to NAME2-1
Eval. NAME2 +
VALUE2
Pg. 12
NAME2 not in
RFDFSTK
NAME2 is
a REF
Expres. Eva I.
for NAME2 + VA UE2
Resol. word in
WORD-2 of
RFDFSTK Entry
Add NAME2
to RFDFSTK
Value of
NAME2 + VALUE
In WORD-1 of
RFDFSTK Entry
Pg. 7
Pg. 5
Figure 6-15. Flow Diagram of MODIFY (Cont.)
(Process DEF SubPLIST - No Expression. of DEF)
256
Page 5
Byte - 1 in
RFDFSTK entry =0
(DEF Type)
EFIX
Fix EXPRSTK
Entry Referencing
this DEF
Pg. 20
CCl
=0
.-.-_._.- ... _------_ .._-------------------------_._--Figure 6-l5.Flow Diagram of MODIFY (Cont.)
(Process DEF SubPLIST - No Expression of DEF)
257
Page 6
Set Sub-PLIST
PRT to NAME1
RSEARCH
Search
RFDFSTK for
NAME1
yes
Pg. 11
Not in
RFDFSTK
In RFDFSTK
A
Add NAME1
to RFDFSTK
Save RFDFSTK
entry addr. (R4)
set Sub-PLIST PTR
to NAME2 - 1
(R 13)
Eva I. NAME2 +
VALUE2
NAME2 not
in RFDFSTK
Expr. Eva I. for
NAME2 + VALUE2
R D
Add NAME2
to RFDFSTK
Put Resolution
Word into WORDof
RFDFSTK Entry
Put VALUE of
NAME2 + VALUE2
In WORD - 1 of
RFDFSTK Entry
Figure 6-15.
Flow Diagram of MODIFY (Cont.)
(Process DEF SubPLIST, Bu i1d Express ion of DEF)
258
Page 7
R13 = PTR to
NAME2 in
Sub-PLIST
R8 = Index to
RFDFSTK
Entry
R9 = 0
(Expression of
DEF)
EADD
Add Expression
to EXPRSTK
Pg. 15
CCl = 0
Figure 6-15. Flow Diagram of MODIFY (Cont.)
(Process DEF SubPLIST, Build Expression of DEF)
259
Page 8
Evaluate NAME 1
+ VAlUEl
Eva luate NAME2
+ VALUE2
Expression
P • 12
NAME2 Not
in RFDFSTK
NAME2 Is
a REF
Expression
NAME2 +
VALUE2
Evaluated
':"';":o-rm-m-a-s~k-to-sa-v-e-"
part of word not to
be re located
Pg. 2
Pg. 2
Get VALUE2 from
Sub-PLIST on mask
do not disturb
resolved VALUE of
NAME2 + VALUE2
R15 = -1
(Core Change)
CHCORE
Change Core
~____~__~~16
CC1 = 0
Figure 6-15. Flow Diagram of MODIFY (Cont.)
(Process MOD SubPLIST)
260
Page 9
Set CCl = 0
no
yes
LOC
Evaluate NAMEl
±VALUEl
Expression
Get resolution
Code from SubPLIST Set BitO=l
R15 = 0
(No Core Change)
Set up Return to
MEXIT
Enter CHCORE
Returns to
Pg. 16
Set CCl = 0
Figure6-15.
Flow Diagram of MODIFY (Cont.)
(Process DICT SubPLIST)
261
MEXIT
Page 10
Set Resolution
=2
(Word Address)
Evaluate NAME1
+ VALUE1
Expression
Pg. 12
NAME1 Not
In RFDFSTK
NAME1 is
Expression
NAME1 + VALUE1
Evaluated
a REF
R4 =
Expression Value
2
Value of expression
in R4 = doubleword
address
Save bit 31 of word
addr. of expres. va •
Store Sect #
" > - - - - r - - - - + - i in byte O.
yes
Reg O.
yes
Convert address
to word address
using saved bit 31
in R4
yes
Set Bits 0-14 of
R4 to bits 0-14 of
VALUE. word in
SUB-PL~ST
Figure 6-15. Flow Diagram of MODIFY (Cont.)
(Subroutines)
262
Page 11
Get RFDFAD
from MASTER
PLIST
Name not in
RFDFSTK,
no RFDFSTK
"\.
,
C
RETURN
)
yes
no
RETURN
no
Get name size
in Sub-PLIST
entry
Set to # items
left in
RFDFSTK
Figure 6-15.
Flow Diagram of MODIFY (Cont.)
( Subroutines)
263
(
EVALR
Page 12
Resolution code
EVAL
1---
'"
-
-
Get Resolution
set upon entry.
from SUB PLIST
Set PTR to
NAME. in
SUBPLI'sT
I
;
I
i
RSEARCH
Search RFDFSTK
for Name
I Pg. 11
1
Name Not
Found
A
Present
?
yes
no
't
1Found
Set R15 == 4
(Resolution = none)
Index to next
available RFDFSTK
Entry == $-1
Get TP from
RFDFSTK
entry
RETURN
Set VALUE = 0
Set Resol. = 0
(Simulate return
from RSEARCH)
i
I
i
I
II
I
RETURN
no
./
p=o
or TP > 3
-
I
~
/ yes
?
Get value from
RFDFSTK entry
Get Resolution
/
Type is a REF
/
/
Type is
DEF, CSECT,
DSECT
~
ADJUST
Adjust value
to resolution
+
Set PTR to
Value in
Sub-PLIST
~
Add value in
Sub PLIST to
ad iusted va Iue
8
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Su brouti nes )
264
i
Pg. 13
Page 13
yes
yes
yes
yes
RETURN
~--I
(Value Absolute)
R10=4
Resolution of
Ad'usted Value
no
Resolve Value from
RFDFSTK entry to
Resolution
Required
no
No Resolution
Required.
R10 = Resol code of
value in RFDFSTK
Set RESOL. Word
to Represent
Resolved value
-
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subroutines)
265
----------- --
._-----------'
Page 14
Save R10
(Resolution)
Set R10 = 2
(REF Type Entry)
Save R10
Set R10 = 0
(DEF Type Entry)
Calculate # words
needed for entry
(name size/4+4)
Calculate total size
RFDFSTK from
Master PLIST
(RFDFUL - RFDFAD
+ 2)
Calculate #RFDFSTI(
Words in use + need
(RFDF SIZE IN
TREE + ENTRY
SIZE)
yes
no
Update RFDF
size in TREE
Store entry size
Byte 0, 1st word
REF/DEF code in
Byte 1, 1st word
Move name to
entry starting
at Byte 12
Restore R10
Figure 6-15.
Flow Diagram of MODIFY (Cont.)
(Subroutines)
266
Page 15
no
Calculate total
I
size EXPRSTK
;
from Master PLIsj
(EXPR UL - EXPRA
+ 2)
Calculate #EXPRSTK
words in use +
needed (EXPR SIZE
in TREE + 6)
Update expr. size
in TREE
Set PTR to next
available entry
SETT = 2
yes
P = 0 DEF expr.
= 4 REF expr.
R = RESOL. code
(0 - 3)
T = 2 RESOL cod
meaningful
= 0 no RESOL.
Form and set word
EXPRSTK
entry =
o of
X'06P4lTR
Set word 1 of
EXPRSTK entry
(Sub-PUST has
no NAME.)
Set T = 0 I
yes
=
X!02000000'
Form and set
0 of entry
L . . . - - - - - - - - - 1 word
X '06P40 120'
Set Word 2 of
destination. Set
word 3 = 0
Value from SubPLIST to Word 4
Word 5 =
RFDFSTK Index
Figure 6-15.
Flow Diagram of MODIFY (Cont.)
( Subroutines)
267
=
Page 16
Remove EXPRSTK
entries which
reference LaC, R4
Pg. 19
Get SECT #
Calculate relative
address insect
where LaC
NAME1 + VALUE1
Resides
Set address part of
destination to
relative address
in sect
Set mask in
R15 = -1
E)-y-es--<
Set R1
Set R5
no
= FLDS
= TBP
Pg. 17
no
yes
Form mask of
field bits in
R15
Pg. 2
Pg. 17
Figure 6-15
Flow Diagram of MODIFY (Cont.)
( Subroutines)
268
Page 17
Position value
and mask to
TBP
no
~oI(--G
(User makes core
changes)
R1 = destination ad
R2 = value to be sto ed
R3 = mask for storin
l
, . . . . . ; . . - - - - ' " ' -
no
yes
R5
=
User's
Subroutine
no
(MOD or EXP Type)
Store masked part
of value into
masked destination
I ~14 ~
L1ion
co~:
0.
Pg. 18
L _____________________ _
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subrouti nes )
269
yes
Set R14 =
Resolution code
IFrom R10
L __. _" ____ .
Page 18
R2 =
Rei. addr. in
Sect. xx
R3 =
Value to be
stored
word which is to
be modified
R15
= MASK
j
Position RESOL..
code and
MASK to DIGIT#
RETURN
Store masked
resolution code into
RELDICTxx
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subroutines)
270
Page 19
EXPRAD from
master PLIST
EXPRSIZE from
load module TREE
Get Bits 0-15
from word 0
in EXPRSTK
ent
/
RETURN
no
' - - - - - - - - - - - - 1 Position PTR
to next
EXPRSTK entry
Bit 8=1
yes
,/
~ Bit 9=1
no
~
/
~/
entries DSP value
a nd set PTR to
• destination word
~~
/ ntry Dest. = " , >
Dest. Des~~
yes
Set Bit 8=1
In EXPRSTK entry
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subroutines)
271
Page 20
EXPRAD from
Master PLIST EXPR.
size from word
module TREE
RETURN
Bits 0-15 of
word 0 of
EXPRSTK entry
Position pointer
to next
EXPRST K entry
yes
R1 = addr. in EXPRSTK of
resolution word
R5 = contro I byte index
R2 = index to constant word
~
,'~~ex~t
-8
G~;o
Pg. 21
'--R2-=-~-
---8
a
....-------]
Next word
•
~fRs:;~~-
--
c;--.------------: Next control by e
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subrou tines)
272
EF5
Page 21
Get RFDFSTK
Index
Find RFDFSTK
Entry
Pg. 25
R8 = Type (TP)
from RFDFSTK
Entry
yes
Pg. 20
no
Pg. 20
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subrouti nes )
273
Page 22
R15 = Resol word EXPRSTK
R14 = 0 value accum.
R2 = 1 EXPRSTK word index
R5 = 2 CB index
~~-----------.
yes
Set R5 =
Next CB
R10 = ReSOle]
code, Bits 6-7
of CB
Set R2 =
next word
yes
R13
R12 = 0
R13 = 0
Save R14 & R15
Set R14 = 0
Set R15 = 1
word corres e
to CB from
EXPRST K entry
to R14
R2
= RFDFSTK
Index
= Index to
next word
RINDEX
Find RFDFSTK
entry
Pg. 25
Pg. 23
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subroutines)
274
Page 23
Save R14 and
R15
R14 = value from
RFDFSTK
R15=Resol.
from RFDFSTK
C\
01------.. .
Save R5
DJUST
Adjust value to
resolution
13
yes
no
Subtract expression
value from value
accumu lator
Add expression
value to value
accumu lator
Update RESOL.
word in R15 to
equal RESOL. of
adjusted
expression
Restore R5
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subro uti nes )
275
Page 24
9
Set expr. eva I.
Bit in word 0
EXPRSTK entry
(E=l)
no
~
?
yes
~
+
ADJUST
RINDEX
Adjust value to
Resolution
Find RFDFSTK
entry
t
!
Save R3 *R9
Set R10 = 4
(Resol. code)
R13 = RFDFSTK
index from dest.
word in
EXPRSTK entry
Pg. 25
Pg. 13
t
Put value
accumlator in
word 1 of
IRFDFSTK entry
Set R15 to mask for
storing value
Set R4 = Destination
from EXPRST K entry
f
...... _ , _ _ _ -....0..
Put new resolution
word (word 2) in
RFDFSTK entry
t
SECTION
Determine section
where addr locat
+
0
t
Set RFDFSTK
entry to a DEF
TP=O
Pg. 10
CHCORE
Satisfy core with
evaluated express.
,.
Restore R9 & R3
a
Pg. 20
Figure 6-15. Flow Diagram of MODIFY (Cont.)
( Subroutines)
276
j
Pg. 16
Page 25
R4 = Base address
RFDFSTK from
Master PLIST
Calculate actual
RFDFSTK entry
address in R4
Figure 6-15. Flow Diagram of MODIFY (Cont o )
( Subroutines)
277
6.6 SYSG EN CHARACTER Routines Parameter List (PLIST)
The SYSGEN character subroutines (NXACTCHR, NAMSCAN, CHARSCAN, HEXSCAN, QUOTSCAN,
DECSCAN, CHSTSCAN, and GETCHST) require a parameter list (PLIST) which controls certain aspects
of control command processing. The PLIST is as follows:
PLIST (pointed to by Register 7)
Word - 0
D
CLD
CNTC
CONTR
2
OUTR
3
CCP
4
FLAGS
CLD
(terminators ).
#D
number of delimiters in list.
CNTC
continue scan at th is re lative character
position in continuation image, i. e., 1
CBUF
5
CSL
6
PCCP
byte address of list (byte table) of delimiters
impl ies character position 2.
CONTR
7
word address of read routine which is to read a
continuation image. The subroutine must be
8
supplied by the user.
9
CHARACTER
10
STRING
display current image when a semicolon,
11
BUFFER
period, new line, or end of image (80
12
(~35
OUTR
word address of output routi ne wh ich will
characters maximum) is encountere~ This
CHARACTERS)
13
is optional but, if specified, the subroutine
14
must be supplied by user.
15
CCP
relative character position in image of
current character, i. e., 11 implies current
character position 12.
CBUF
word address of buffer containing current
images.
FLAGS
special indicators which control the scan
function.
BA
=
0
Blank character not active
character, i.e., ignore it
and get next character
Blank character is an active
character, i e., it is not a
8
field delimiter unless
specified in delimiter list.
BO
o
do not blank out input image
when a character is obtained
from input image, replace its
position in image with a blank
character.
278
BF
o
character string buffer is empty
character string buffer is full,
i. e., no further scan of input
image is needed, therefore,
use what is in buffer.
CSL
number of characters in current character string
in character stri ng buffer.
PCCP
relative character position in input image of
the first character in the character string
now in character string buffer i. e., 20
implies current character position 21.
CHARACTER STRING BUFFER = a nine word (36 bytes) buffer
which contains the characters of a field after the field has
been s.canned. There can be from one to th irty-six characters.
Figure 6-16. Character String PLIST Format
6.7 CHARACTER ROUTINES
6.7. 1 .
NXACTCHR (SYSGEN Next Active Character Retrieve)
6.7. 1. 1 Purpose
To obtain a character from the input image, check it for a delimiter, then return to caller.
6.7. 1.2 Calling Sequence and Input
Set REGISTER 7
= address of parameter
list
Set REGISTER 8 ::: current character from input buffer or zero if no character exists (i. e., get next character).
NXACTCHR
BAL,ll
6.7. 1.3 Output
Register 8
= current
character from input buffer.
Condition Code one (CC1) set if current character is delimiter, or reset if not a delimiter.
6.7. 1.4 Subroutines Used
Users display image routine, if desired.
Users read continuation image routine.
6.7. 1.5 Description
Th is routine obtains the next active character from the input buffer (as specified by the PUST) if Register 8
is zero. If Register 8 is non-zero, it then is assumed to contain the next active character. If the next active
character is a sem ico lon, the users spec ified output subroutine is entered, if one is spec ified, and then
the users read continuation image routine is entered. The first character (represented by CNTC in
PUST)
is then obtained.
If the next active character is a period, new I ine, or end of buffer (i. e., spec ial
delimiters), then the input buffer end has been found. If the next active character is other than those already
described, the del imiter I ist (represented by #D and CLD in PUST) is searched to determine if the current
279
character is a delimiter. If not a delimiter, then condition code one (CC1) is set to zero and NXACTCHR
returns to caller.
However, if the current character is a delimiter, or the input buffer end has been found, CCl is set to one
and NXACTCHR returns to ca Iler.
6.7.1.6 NXACTCHR Flags and Counters
CCP
=
current character position, in input image, relative to beginning of image, i. e., CCP
= 3 impl ies current character is character number 4.
=
FLAGS =
80, implies end of buffer has been found.
BO
obtain next character, and replace its position with a blank.
o
BA
just obtain next character.
if next character is a blank, accept it as a non-delimeter unless specified as
delimiter in delimiter list.
= 0
if next character is a blank, ignore it.
CLD
byte address of delimiter list.
#D
number of delimiters in list.
OUTR
address of output subroutines.
o
unspecified
CONTR=
address of read continuation image subroutine.
CNTC =
continue scan on continuation image at this character position (relative to beginning of
image, i. e. I C NTC = 1 impl ies character position 2).
CBUF
input buffer address.
280
6.7.1.7 Flowchart
Page 1
no
Set
Reg. 8
Get next
character from
CBUF in Reg. 8
= EOB
yes
8
yes
BAL,ll OUTR
Pg. 2
yes
no
Set
CCl
=1
character in
current position in
Set
CCP = 80
Set
REG. 8
CBUF
= NL
CCP=CCP + 1
Figure 6-17.
Flow Diagram of NXACTCHR
281
Page 2
no
es
yes
'NL-=CRET= -.,'
new_line
1.__ _ I
--f
'-EOB - - - - ,
I
- -- -l end of buffer
yes
1_ _ _ _ _
Pg. 1
1
yes
I" DisPlay - - 1
I Image
I
-,--_1
no
/
Obtain CLD &
#0 for Delimiter
search
, USERS S.R.
BAL,ll OUTR
yes
Obtain CONTR
CONTC
Set
CC1 = 0
Set
CCP = CONTC
I--~---I
__ J
BAL,ll
t
I
Read
continuation
image
-----_._.
no
Set
Reg. 8 = X'FF '
Ce1 = 1
Figure 6-17.
Flow Diagram of NXACTCHR (Cont.)
282
es
1
I
I
6.7.2
NAMSCAN (SYSGEN Get next field and check for name)
6.7.2. 1 Purpose
To obtain next field from input buffer and check if it is an alphanumeric character string of which at least
one character is alpha.
6.7.2.2 Calling Sequence
Set REGISTER 7 = addressof parameter list.
Set REGISTER 8 = current character from input buffer or zero. If zero, start name string with next
character. If non-zero, start name with this character, then get next character.
BAL,11
NAMSCAN
6.7.2.3 Input
See Calling Sequence.
Character string in PLIST's Character String Buffer.
Register 2 = byte address displacement of Character String Buffer in PLIST (from GETCHST).
6.7.2.4 Output
Register 8 = current character from input buffer.
Condition Code one (CC 1) set if name not legal.
Condition Code one (CC1) reset if name is legal.
6.7.2.5 Subroutines Used
GETCHST (Get next character string into character string buffer).
6.7.2.6 Description
This routine requests the next string of characters from the input buffer to be put into the character string
buffer. Each character is then checked for legality (i.e., alphanumeric) and the entire string of characters
must contain at least one alpha character.
If the name is legal, condition code one (CC1) is set to zero.
However, if the name is illegal, CC1 is set to one.
NAMSCAN then returns to the caller.
6.7.2.7 Flow Chart
~
NAMSCAN)
t
GETCHST
Set
CC1=1
non-alphanumeric
RETURN
Set
BF = 0
Figure 6-18.
Flow Diagram of NAMSCAN
283
6.7.3 CHARSCAN (SYSGEN check current or next character for a specific character)
6.7.3. 1 Purpose
To obtain next character from input buffer, or use current character if one exists, and check it for a specific
character.
6.7.3.2 Calling Sequence and Input
Set REGISTER 7 = address of parameter list (PLIST)
Set REGISTER 8
= current character from
input buffer or zero. If zero, get next character from input buffer.
If non-zero, the next character is already in Register 8.
Set REG ISTER 9
= the specific character which
BAL, 11
is being checked for.
CHARS CAN
6.7.3.3 Output
Register 8 = 0 if character check does compare.
Condition code one (CC1) reset if character check does compare.
Register 8
= current character
if check does not compare.
Condition Code one (CC1) set if check does not compare.
6.7.3.4 Subroutines Used
NXACTCHR (Get next character from input buffer).
6.7.3.5 Description
This routine obtains the next character from the input buffer if Register 8 equals zero. If Register 8 is
non-zero, the next character is assumed to be in the register 8. The character is compared to that in
Register 9. If they compare, Register 8 is set to zero and CC1 is reset. If they do not compare, Register 8
is not modified and CC1 is set. CHARSCAN then returns the caller.
6.7.3.6 Flow Chart
NXACTCHR
Set
CC1 = 1
8=0
Set
CC1 = 0
Figure 6-19. Flow Diagram of CHARSCAN
284
6.7.4 HEXSCAN (SYSGEN get next field and check for hexadecimal value)
6.7.4. 1 Purpose
To obtain next field from input buffer and check if it is a hexadecimal va lue. If it is hexadecimal, then
convert it from EBCDIC hexadecimal to hexadecimal.
6.7.4.2 Call ing Sequence
Set REG ISTER 7 = address of parameter list
Set REGISTER 8
= current
character from input buffer or zero. If zero, start string with next character. If
non-zero, start string with this character, then get next character.
BAL,11
HEXSCAN
6.7.4.3 Input
Character string in PLIST's character string buffer.
Register 2
= byte
address displacement of character string buffer in PLIST (from G ETCHST).
6.7.4.4 Output
Register 8
= current
character from input buffer.
Condition Code one (CCI) reset if value is hexadecimal.
Condition Code one (CC1) set if value is illegal.
Register 12 and last word in character string buffer
= converted value
(EBCDIC HEX to HEX).
6.7.4.5 Subroutines Used
GETCHST (Get next character string into character string buffer).
6.7.4.6 Description
This routine requests the next string of characters from the input buffer to be put into the character
string buffer. Each character is then checked for legality (i.e., EBCDIC hexadecimal). If the character
string is legal, it is converted and saved in Register 12 and in the last word of the character string
buffer in the PLIST.
HEXSCAN sets CCl
= 1 if
illegal string or CC 1 = 0 if legal, and returns to ca lIer.
285
6.7.4.7 Flow Chart
GETCHST
no
Illegal
non-hexadec imal
Set
CCl
=1
Convert from
EBCDIC to HEX
RETURN
Save in Reg. 17 &
PLIST + 15
Set BF=O
CC1=0
Figure 6-20. Flow Diagram of HEXSCAN
286
6.7.5 QUOTSCAN (SYSGEN get next field and check for specific character string)
6.7.5.1 Purpose
To obtain next field from input buffer and check the character string for a specific quote constant.
6.7.5.2 Calling Sequence
= address of parameter list
8 = current character from input buffer or zero.
Set REGISTER 7
Set REGISTER
If zero, start string with this character, then
get next character.
Set REGISTER 9 = address of a quote constant in TEXTC format.
BAL,11
QUOTSCAN
6.7.5.3 Input
Character string in PLIST's character string buffer.
Register 2
= byte address
displacement of character string buffer in PLIST (from GETCHST).
6.7.5.4 Output
Register 8
= current character from
input buffer.
Condition Code one (CC 1) set if comparison fai Is.
Condition Code one (CC 1) reset if comparison is ok.
6.7.5.5 Subroutines Used
GETCHST (Get next character string into character string buffer).
6.7.5.6 Description
Th is routine requests the next string of characters from the input buffer to be put into the character string
buffer. The size of the field and each character in the buffer is compared to the quote constant pointed
to by register 9. If they compare, CC 1 is set to zero. If they do not compare, CC 1 is set to one.
QUOTSCAN then returns to the caller.
< TEXTC
FORMAT>
Word 0
Cn
~
I
m
#C
= number of characters in quote
constant.
C , ---, C = characters in quote constant.
l
n
Figure 6-21. Quote Constant
287
6.7.5.7 Flow Chart
QUOTSCAN
GETCHST
no
Set
CC1=1
Set
BF = 0
RETURN
Set
CCl
L~
=0
____________________________________________________________________________
Figure 6-22. Flow Diagram of QUOTSCAN
288
~
6.7.6 DECSCAN (SYSGEN Get next field and check for decimal value).
6.7.6. 1 Purpose
To obtain next field from input buffer and check if it is a decimal value. If it is decimal, then convert it
to binary.
6.7.6.2 Call ing Sequence
Set REGISTER 7 = address of parameter list
Set REGISTER 8 = current character from input buffer or zero. If zero, start string with next character.
non-zero, start string with this character, then get next character.
BAL,11
DECSCAN
6.7.6.3 Input
Character string in PLIST's character string buffer.
Rggister 2 = byte address displacement of character string buffer in PLIST (from GETCHST).
6.7.6.4 Output
Register 8 = current character from input buffer.
Condition Code one (CC 1) reset if va lue is dec imal.
Condition Code one (CCl) set if value not decimal.
Register 12 and last word in character string buffer = converted value.
6.7.6.5 Subroutines Used
G ETCHST (Get next character string into character string buffer).
6.7.6.6 Description
This routine requests the next string of characters from the input to be put into the character string buffer.
Each character is then checked for legality (i. e., EBCDIC decimal).
If the character string is legal
it is converted and saved in Register 12 and in the last word of the character string buffer in the PLIST.
DECSCAN sets CC1=1 if illegal string or CC1=0 if legal, and then returns to caller. Legal EBCDIC
decimal characters include: 0 through 9
289
If
6.7.6.7 Flow Chart
GETCHST
yes
no
Illegal
String
Illegal
non-decimal
convert from
EBCDIC to DEC
Set
CC1=1
Save in REG.
12 & PLIST + 15
Set SF = 0
CC1=0
Figure 6-23.
Flow Diagram of DECSCAN
290
6.7.7 CHSTSCAN (SYSGE"I Get next field)
6.7.7.1 Purpose
To obtain next field from input buffer.
6.7.7.2 Calling Sequence
= address of parameter list
8 = current character from input
Set REG ISTER 7
Set REGISTER
buffer or zero. If zero, start string with next character.
If non-zero, start string with this character, then get next character.
BAL, 11
CHSTSCA N
6.7.7.3 Input
See Calling Sequence
Next character from input buffer.
6.7.7.4 Output
Register 8 = current character from input buffer.
Condition Code one (CC1) set if string not legal.
Condition Code one (CC1) reset if string is legal.
A character string in the character string buffer.
6.7.7.5 Subrouti nes Used
NXACTCHR (Get next character from input buffer).
6.7.7.6 Description
Thi~
routine sets the character string buffer to blanks and then requests the next character from the
input buffer. If it is a delimiter, and no characters have been obtained, condition code (CC 1) is set and
CHSTSCAN returns to caller. If the next character is not a delimiter, it is saved in the character string
buffer in the PUST, and if the character obtained is the first character in a string, the current character
position count is set into the PUST. When the character obtained is a delimiter and a string has been
found, condition code one (CC1) is reset and CHSTSCAN returns to caller. If the number of characters
in a string exceeds thirty-five, condition code one (CC1) is set and CHSTSCAN returns to caller. In
each case, CHSTSCAN puts the character string length into the PUST •
6.7.7.7 CHSTSCAN Flags and Counters
BA
o
Set initially to ignore leading blanks.
Set after first non-blank, non-del imiter character is obtained, indicating that a blank
character is no longer ignored.,
PCCP
re lative position in input buffer of first non-blank character in character string. That is,
if PCCP
CCP
= 2,
first character is in position 3.
relative position in input buffer of current character. If CCP = 3, then character position
is 4.
CSL
the number of characters in string.
291
6.7.7.8 Flow Chart
Set character
string
Buffer = Blanks
Set
BA
=0
NXACTCHR
no
yes
Delimiter
Character
Set
BA
Set
=1
Set
CCl = 1
CCl = 0
I+----f
_.__ _ - - , - - - - - - - - '
•.
Put Char. in
Character String
Buffer
in String
Set
BA
=0
Figure 6-24. Flow Diagram of CHSTSCAN
292,
Set
PCCP=CCP-l
6.7.8 GETCHST
6.7.8. 1 Purpose
To check if a character string alreedy exists in the Character String Buffer, and if not, obtain the next field
from the input buffer.
6.7.8.2 Calling Sequence and Input
Set Register 7
= address of
Set Reg ister 8
= current character from
parameter list
input buffer or zero.
If zero, start string with next character if Character String Buffer is empty.
If not zero, start string with this character, then get next character providing Character
String Buffer is empty.
BAL,ll
G ETCHST
6.7.8.3 Output
Register 1 = character string length (in bytes)
Register 2
= byte
address displacement of Character String Buffer in PLIST.
Condition code one (CC 1) set or reset depending upon character string legality.
set if not lega I
reset if lega I
6.7.8.4 Subroutines Used
CHSTSCAN (Get next character string from input image).
6.7.8.5 Description
This routine is entered by the character subroutines NAMSCAN, HEXSCAN, DECSCAN, and QUOTSCAN
to obtain the next character string from the input image. When a string is obtained, the BF flag in the PLIST is
set to one which indicates that the Character String Buffer contains a character string. The BF flag is reset
on Iy when one of the character subroutines (as named) finds that the character string satisfies its
requirements (i. e., the string is legal). If a string is not legal, the BF flag remains set such that when
another one of the character subroutines (as named) requests a character string, it will receive the
string which is currently in the Character String Buffer. Therefore, a field which may be either a name
or decimal value, may be scanned by both the NAMSCAN and DECSCAN subroutines to determine which
type it is. The GETCHST routine sets condition code one (CC1) according to the character strings legality
and then exits to the caller.
6.7.8.6 Flagsand Counters
BF
0 Character String Buffer in PLIST is empty.
Character String Buffer in PLIST contains a character string.
CSL
number of characters in character string.
293
6.7.8.7 Flow Chart
R4=CCl = 0
yes
CHSTSCAN
Char. String
Exists
in
Buffer
Save
CCl in Reg. 4
Set
Reg. 1 = CSL
Set Reg. 2 = Byte
Addr. Displacemen
of Char. String
Buffer in
PLIST.
Set
BF = 1
Set
CC 1 from Reg.
~
Figure 6-25. Flow Diagram of GETCHST
294
6.8 SYNTAX ROUTINE IN P2CCI (PASS2)
6.8.·1 Purpose
SYNTAX is a PASS2 subroutine which converts control command images into manageable temp stack tables.
It can analyze commands of arbitrary format, detect any syntax errors, and reject (with notification to the
user) any syntactically correct information which is not acceptable to the calling program.
6.8.2 Usage
SYNTAX is called via a BAL, 11 to SYNTAX. Registers 0, 1, 2, 3, 4, and 7 are assumed to contain:
(0)
word address of TEMPSTAC K doubleword
(1)
word size of the TEMPSTACK table to be generated (see OUTPUT)
(2)
word address of a skeleton TEMPSTACK table (see INPUT)
(3)
base word address of P2CCI dynamic data
(4) 0-14
word size of the keyword table to be used (actual keyword portion)
(4) 15-31
word address of the keyword table (see INPUT).
(7)
word address of character routine parameter list connected with the command image.
A II registers are saved except (5), wh ich upon return contains the word address of the generated.
TEMPSTACK table. SYNTAX returns to BAL+1 when it has scanned and interpreted all of the command
image (including continuation records).
6.8.3 Input-Output
6.8.3. 1 Keyword-Format Table
The keyword table serves two purposes. It defines 'l'alid keywords for the command and what action is to be
taken when they are encountered. It also defines the format of the command if it is not stand9rd, i. e.,
options separated by commas of the form:
(Keyword, va lue ,value •••• )
The keyword table format is as fo I lows:
o
0
N
FCH,
FCH2
...
N
FCH n
Keyword entri es
(2 or 3 words each)
#DEFAULTS
o
15 16
31
FCH (Format Control Halfword):
o
I
78
M
ERR
15
FOP
295
I
Optional, used
to specify
nonstandard
formats.
Where:
FOP
is a syntax operation (see table of FOP's below).
ERR
is the number of the format control halfword to be used next if FOP is unsuccessful.
M
if set, implies that an error message be produced if FOP is unsuccessful.
Keyword Entry:
o
7 S
23 24
15 16
31
C1
C2
C3
C4
Keyword characters (blank-filled)
C5
C6
C7
Cs
OIKOP
2nd word optional, C and C5 ~
1
X1SOI.
KF
VDISP
KOP
is a key operation (see table of KOPs below)
KF
is usually zero (see FLAG KOP)
VDISP
is the displacement in the TEMPSTAC K table of the word associated
with this keyword.
#DEFAULTS
is the number of words in TEMPSTACK table that should be replaced
by their defaults if the command did not specify values for them.
Currently implemented values and meanings of FOP:
VALUE
0
NAME
MEANING
NOP
Used to set error return (WDTBL, DWTBL)
GOTO
Set POINTER to ERR (M must be zero)
2
LEFT
Next character must be left parenthesis
3
FLEFT
Search for left parenthesis or end of command
4
RIGHT
Next character must be right parenthesis
5
FRIGHT
Search for right parenthesis or end of command
6
COMMA
Next must be comma
7
FCOMMA
Search for comma or end of command
8
INTEROPT
Next must be right parenthesis followed by
end of command or comma, left parenthesis
9
10
KWD
Next string must be a valid keyword
PROCKWD
Determined by KOP, KF, and VDISP for the
particular keyword
11
ANTXT
Next string must be alphanumeric, convert
it to TEXT form
12
ANTXTC
Next string must be alphanumeric, convert it
to TEXTC form
13
DEC
Next string must be decimal, convert it
to binary
14
HEX
Next string must be hexadecimal, convert
it to bi nary.
296
MEANING
NAME
VALUE
15
CNVTXTC
Convert current string to TEXTC form
16
CNVOEC
Convert current string from decimal to binary
17
CNVHEX
Convert current string from hexadecimal to binary
18
WOTBL
Store current value (output of 11 through 17) in a
word table whose next available address is contained
in the TEMPSTACK table displaced by ERR and whose
last address is in the word preceding that. Error return
is that of the previous control halfword.
19
DWTBL
Same as WOTBL except two-word entries are made.
20
GETSTRG
GET NEXT CHARACTER STRING.
By way of example, the standard format control table:
Displacement
0
M
ERR
FOP
0
0
FLEFT
0
KWD
0
PROCKWD
0
INTEROPT
2
3
1
4
0
GO TO
Currently implemented values and meanings of KOP:
MEANING
VALUE
o
If KF nonzero, OR's KF into byte displaced by VDISP from
TEMPSTACK table. If KF zero, sets defaults and initiates a
new TEMPSTACK table.
No comma or value is expected
for these keywords.
One decimal value expected.
2
One hexadecimal value expected.
3
One device address (NDD) value expected.
4
Same as 0 if KF zero, except one hexadecimal value
is read,put into the new table, and defaults are set
only for the first table.
5
Same as 4, except expects one decimal value
8
The value of VDISP represents a displacement into the
table of FOP's. Effectively this performs a keyword
GOTO function.
X '40'
Stores the flag KF in a byte table (at VDISP into TEMPSTACK
table) indexed by each decimal value following the keyword.
The byte size of the table must be in VDISP-1 into TEMPSTACK
table.
NOTE: When the KOP is 1-5, then the KF field may be used to represent the number
of va lues expected to follow the keyword. The entries at VDISP into the temp
stack table are arranged to conform with the order of the values following the
keyword.
297
6.8.3.2 SKELETON TABLE
The skeleton table is copied intact into the TEMPSTACK table at SYNTAX initialization. Its format is
arbitrary, but SYNTAX expects format in most cases.
If FOP is WDTBL or DWTBL, the format is as is described in the ir descriptions.
If FOP is PROCKWD and KOP is not 0 or X'40· (whose skeleton (TEMPSTACK) table fonnats are described
above), then the word at VDISP into TEMPSTACK table has three parts:
Bit 0
is a flag. When set it implies that no value has been stored into the word by
SYNTAX (the associated keyword either has not been encountered or the
value following it was in error). If this bit is set when end of command is
reached and VDISP is less than #DFLT, then SYNTAX replaces the word
with its default.
Bits 1631
is the upper limit of acceptable values. If it is zero, no limit checking is
done.
Bits 115
is the default value and, if the upper limit is nonzero, is also the lower limit
of acceptable values. (Signed arithmetic value).
Note that this implies that SYNTAX cannot do both I imit checking and default setting if
the lower limit is not the same as the default.
6.8.4 Interaction
SYNTAX is currently used by PASS2 modules: XMONITOR, XLIMIT, IMC, P2COC, SPROCS, XPART, and
BTM. SPROCS and XMONITOR provide their own format table.
SYNTAX uses PASS2's character scanning subroutines to scan the command, P2CCI's LISTIT to print the
command, and P2CCI's OUTLLERR to print error position indicators.
6.8.5 Errors
***
SYNTAX ERR OR - 1(' EXPECTED
Self-explanatory. Occurs on LEFT or INTEROPT FOP.
***
SYNTAX ERR OR - I) 1 EXPECTED
Self-explanatory. Occurs on RIGHT or INTEROPT FOP.
***
SYNTAX ERROR - ., I EXPECTED
Self-explanatory. Occurs on COMMA, INTEROPT, or PROCKWD FOP.
***
INVALID, UNKNOWN, or DUPLICATE KEYWORD
Self-explanatory. Occurs on KWD or PROCKWD FOP.
***
INVALID ALPHANUMERIC STRING
Self-explanatory. Occurs on ANTXT or ANTXTC FOP.
***
ILLEGAL TYPE OR SIZE
A non-keyword stri ng does not conform to the restrai nts imposed on it.
Occurs on FOp·s 10 through 19.
298 .
***
TOO MANY VALUES
A table has been filled. Occurs on WDTBL or DWTBL FOP.
***
ERROR IN PROCESSOR-JOB ABORTED
A FOP or KOP has not been implemented.
***
INVALID CHARACTER STRING
Error has occurred in getting character string, occurs on FOP 20.
6.8.6 Description
SYNTAX initializes itself by copying the skeleton table to the TEMPSTACK, and finding the keyword
table and the appropriate format table.
It then proceeds to perform the operations contained in the
format table, putting valid information from the command into the TEMPSTACK table and producing error
messages for invalid information. When it reaches the end of the command, it finds #DEFAUL TS at the
end of the keyword table, sets the appropriate number of defaults, restores the registers, and returns.
299
6.8.7 Flow Chart
Page 1
put data in it
save reg isters
>-_ _~
no
Get address of
user supplied
format words
R6
Get start of
keyword table
(R4)
Increment R6 (+ 1)
and store 0 in
-1, R6 (used as
Save
KWDTBL po inter
in stack
Get FOP from
format control
halfword
BADCB
no
error in
processor
JOB
aborted
Figure 6-26. Flow Diagram of SYNTAX
300
EXIT
Page 2
A
,~
FOP=
GOTO
0
EX1
Pg. 3
1
EX2
Pg. 3
2
LEFT
Pg.4
3
FLEFT
Pg.4
4
RIGHT
Pg.4
5
FRIGHT
Pg.4
6
COMMA
Pg.4
7
FCOMMA
Pg.4
8
INTEROPT
Pg. 8
9
KWD
Pg. 8
10
PROCKWD
Pg. 9
11
ANTXT
Pg. 5
12
ANTXTC
Pg. 5
13
DEC
Pg. 5
14
HEX
Pg.5
15
CNVTXTC
Pg. 6
16
CNVDEC
Pg. 6
17
CNVHEX
Pg. 6
18
WDTBL
Pg. 7
19
DWTBL
Pg. 7
20
GETSTRG
Pg. 14
Figure 6-26
Flow Diagram of SYNTAX (Cont.)
301
Page 3
ERR
Print error
message with
$ under error
Increment
Index to PR OC
(-1, R6)
Reset buffer
flags
Get FOP
/'
/~OP>O
ERR
~no-~
Error Message
~fes
.~~--~====~~~
Pg. 3
Go to
effect
---
of
FOP store in PRO
Figure 6-26
Flow Diagram of SYNTAX (Cont.)
302
----I
Page 4
I
i
Ie
Select
as
comparison
character
Select I) I as
comparison
character
CHAR
Select I, I as
comparison
character
CHARSCAN
compare
character with
Select I( I as
search
character
Select I) I as
search
character
FIND
CHARSCAN
Find current
character
Figure 6-26 Flow Diagram of SYNTAX (Cont.)
303:
Select I , I as
search
character
Page 5
Pick up
anumeric
string
Pick up
anumeric
string
I Move string
: to registers
1(01 - 04)
Convert to TEXT
Move string
to registers
(01-04)
convert to TEXTC
8
Pg. 3
Pgo 3
Convert
Decimal to
Binary
-1------- -convert HEX
to binary
_/~Ii~"'-~
~b~r
>---~
Figure 6-26
Flow Diagram of SYNTAX (Cont.)
304
Page 6
Put address of
entry into
HEXSCAN into
link register (R4)
Put address of
entry into
DECSCAN into
Convert
DEC/HEX
to binary
Get error
message address
)
Pg. 5
Figure 6-26
Flow Diagram of SYNTAX (Cont.)
305
Page 7
Set DATASIZE
=4
Set DATASIZE
=8
Bump pointer (-1
for error
message
no
3
Get and adjust
table pointer
ERR
Error Message
IStore value in
,
Figure 6-26
table
Flow Diagram of SYNTAX (Cont.)
306
Find end of
CC
pull registers
ERROUTS
Set error flag
find error return
of overlay
retYJ:!L _ _ _
Page 8
CHSTSCAN
~
Figure 6-26
et
Character
String
-_ ..
~--
Flow Diagram of SYNTAX (Cont.)
307
Get VDISP from
keyword table
Decrement
KF (-2)
Get code for
operation
Increment
VDISP
11
no
Print syntax
error
Pg. 3
Read and convert
value
Store value
in keyword
table
Figure 6-26
Flow Diagram of SYNTAX (Cont.)
308
Page 10
CODE=
GOTO
-1
0, 6, 7, 9, 10- 1
1
2
3
4,5
8
EX1 Pg. 3
BADCB Pg. 1
DE CSCA N}predefi ned
HEXSCAN process
NOD Pg. 10
NEWDYN Pg. 12
KWGT Pg. 10
CHARSCAN
Get address
at VDISP
Get
NOD
character
Set CC
Store in
pointer
(-1, R6)
Figure 6-26
no
Flow Diagram of SYNTAX (Cont.)
309
In Error
Page 11
Get (Byte)
VDISP
Get flag
to store
lOR I Byte
with flag
Get max. va lue
for input
Store in
TEMPSTACK
Table
Get table
base
Get val ue
ERR
Error message
no
Pg. 3
Store flag in
table indexed by
value
yes
Figure 6-26
Flow Diagram of SYNTAX (Cont.)
310
Page 12
Save keyword
PTR Set SR 1=0
as flag for return
Get address of
# defaults
yes
Default va lues
List control
command
Figure 6-26
Flow Diagram of SYNTAX (Cont.)
311
Page 13
no
Get new tempstack size and old
starting address
Save space in
stack for new
DYN
Move saved
registers (30) to
end of new DYN
area
Copy skeleton in
new DYN
Pull Registers
HEXSCAN
Convert HEX
to binary
number
Figure 6-26.
Flow Diagram of SYNTAX (Cont.)
312
Page 14
CHSTSCAN
l
Get character
stri ng. Need
not have alpha
character.
~
r--:t string in
registers.
1___
---------l--'
~
Pg. 3
------~-
-
-
-
---------_._---------------------------'
Figure 6-26.
Flow Diagram of SYNTAX (Cont.)
6.9 MODGEN ROUTINE IN P2CCI (PASS2)
6.9. 1 Purpose
To facilitate REFDEF stack, expression stack, and relocation dictionary changes (functions performed by the
MODIFY module) for PASS2 module builders whose memory has been allocated by COREALLOC.
6.9.2 Usage
BAL,10 MODGEN
MODGEN interpretive Iy executes all code following the BAL, saving condition code and all registers (except
R10, which is used to save the condition codes and/or the instruction address). Any successfu I branch
instruction (BIR, BDR, BCS, or BCR) constitutes a return from MODGEN (except when used as a return to
BAL+1 from a subroutine whose BAL was executed by MODGEN). Any instruction for which bits 0 to 3
are all reset is not executed but constitutes input data for MODGEN functions (See INPUT)o A zero byte-O
error address word (see COREALLOC) must be present.
313
6.9.3 Input
All MODGEN specific input is in TEXTC format (maximum 15 characters) as follows:
Byte 0
N
The type of operation is determined by N which is an EBCDIC decimal digit (X'FO' through X'F9 1 )
N
OPERATION
MEANING OF C •• CD
COMMENT
o
Create value DEF
Name of DEF
Value inR12
Create location DEF
Name of DEF
Address (i n data record)
in R8
2
3
Change relocation
n=l,
Address (in data) in R8
dictionary
C =new relocation code
1
C 1 through C n-1 = name of
Address (in data) in R8
Create PREF for address
field
REF; C = resolution
n
6. 9.4 Interact ion
MODIFY is used to make the modifications.
6.9.5 Errors
If a MODGEN operation (other than a value type DEF) is requested with the address in R8 larger than the
highest va lid address in the data record, the message
***INADEQUATE CORE SPACE - SKIP TO NEXT CC
is printed, R8 is set to minus one (as a flag for WRITELM), memory is released, and the word address in RlOis
decremented until it po ints to a byte which is zero, wh ich word is used for an error return address.
An Identical sequence occurs if MODIFY reports an error except that the message is
***MODIFY ERROR - SKIP TO NEXT CC
If an illegal operation code is encountered (N not EBCDIC decimal or not implemented), MODGEN errors the
job step with the message.
***ERROR IN PROCESSOR - JOB ABORTED
6.9.6 Description
MODGEN examines the word pointed to by R10. If any of bits 0-3 are set, the word is assumed to be an
instruction and the condition codes are loaded from R10, the word is executed, the new condition codes
stored in R10, and RlOis incremented. Otherwise, the operation code is picked up from the end of the
TEXTC and a corresponding subroutine generates a change description table and performs the operation
through MODIFY. R10 is incremented to point to the word after the TEXTC.
This process is repeated
until a successful branch instruction is encountered, since its execution transfers control out of
MODGEN.
314
6.9.7 Flow Charts
Page 1
EXU
yes
no
Restore R1, load
CCs from SR3
(Byte 0)
BADCB
Error in
processor
job
ABORTO
Execute
Instruction
EXIT
Save 9 registers
Build required change
description table, perform
o eration (MODIFY)
Pg. 2
MODER
Print
Free Core , set
error flag,error
return to overlay
yes
Pg. 2
Find next
location after
TEXTC
Restore 9 registers
increment SR3
to next location
Figure 6-27 Flow Diagram of MODGEN
315
Save CCs in
Byte 0 of
SR3
Page 2
CODE=
o
GOTO
DEFABS
Pg. 3
DEFREL
Pg. 3
2
DICTMOD
Pg. 4
3
DICTMOD (REF)
4-15
BADCB
Pg. 4
Pg. 1
ERROUTM
Free core
Pcges
Set error flag
Find error return
address of
call ing overlay
Figure 6-27
Flow Diagram of MODGEN (Cont.)
316
Page 3
Set NAME2
=0
Set NAME2=
X'OlooOOOO'
MODERO
Get appropriate
error message
no
Get value
for NAMEl
Get NAMEl and
store in change
description TBL
(COT)
Store va lue of
NAME2 in COT
MODIFY
Store type code
= 4 in CDT
Figure 6-27
MODIFY
load module
return
Flow Diagram of MODGEN (Cont.)
317 .
Page 4-
Set NAME2 =
X'OlOOOOOO'
Get value for
NAME 1
Get reso lution
code and convert
to binary
MODIFY
no
Store type
code = 3
in COT
MODIFY load
module
Return
Put in CDT
resolution
code
Store NAMEl
in COT
Store VALUEl
(a constant)
in COT
MODIFY
Store NAME2
in COT
Figure 6-27
MODIFY load
module
Return
Store type
code=O
Flow Diagram of MODGEN
318
(Cont.)
6. 10 COREALLOC ROUTINE IN P2CCI (PASS2)
6. 10.
~
Purpose
To obtain and allocate memory for building SYSGEN library load modules.
6. 10.2 Usage
BAL,ll
(0)
Temp stack pointer address
(3)
P2.CCI dynamic data address
(12)
Desired word size ofREFDEF stack or -1, if unknown
(13)
Desired word size of data record or -1, if unknown
Upon exit:
(7)
Address MODIFY PLIST
(8)
Address of data record
(9)
Address of REFDEF stack.
4 and 14 are destroyed.
6. 10.3 Output
Allocation of Memory:
Z words
'II1II(
REFDEF Stack
EXPRESSION Stack
Data Record
Data Record
Unused
X words
X words
Relocation
8 times Rei.
W words
One 4-word entry
Zero-filled
Dictionary
Diet. size.
IE I filled
Y words
Rest zero-fi lied
zero-fi lied
Upper limit of memory
Higher addresses
If neither R12 nor R13 is minus one:
X=(R12), Y=(R13), W=Z-2X-9Y/8
If only R12 is minus one:
Y=(R13), X=(Z-9Y/8)/2, W=O
If only R13 is minus one:
X=(R 12), Y=(Z-2X) *8/9, W=O
If both R12 and R13 are minus one:
X=Z/3, Y=8Z/27, W=O
The entry in REFDEF defines the data base address.
In the Temp stack, COREALLOC bui Ids a MODIFY PLIST, a ten-word Change Description Table area, a
HEAD record, a TREE record, and an M:OPEN FPT, and one word
end of the data).
(MAXOO for the word address of the
Each of these has appropriate address and size fields fi lied in.
6. 10.4 Input
The highest addressed word before the BAL to COREALLOC which contains a zero in byte-O.
This word must
contain the address of code which c leans up if sufficient memory not available and contains a BAL to
WRITELM which releases stack space used by COREALLOC.
319
6. 10.5 Interaction
M:GP, M:FP to obtain and release memory.
6. 10.6 Errors
If available memory is insufficient, the message:
***INADEQUATE CORE SPACE-SKIP TO NEXT CC
is printed, (RS) is set to minus one as a flag for WRITELM, and a return is made to the address described
under INPUT.
6. 10.7 Description
COREALLOC first sets up R7 and moves a blank data area (PLIST, HEAD, TREE) to the stack. All available
memory is obtained. The sizes of the various sections are calculated according to the formulas under OUTPUT.
If enough memory is available, all the appropriate slots in PLIST, HEAD, and TREE are filled in, the memory
is set up, and COREALLOC returns.
320
6. 10.8 Flow Chart
Page 1
Move HEAD, TRE
PLIST,stack
CDT. t.O . 1
temp
Get maximum
core
/sECT
-<~
no
RFDFOK
Given
~?
no
Set RFDF =
total WDS/3
Compute
(tota 1-2*RFDF)
yes
convert to
doubleword
--t
SECTO
Given
Set SECTO=
(tota 1-2*RFDF}*8
9
convert to
doubleword
Figure 6-28.
Flow Diagram of COREALLOC
321
Page 2
Compute RFDF=
(total -9/8*SECTO
2
Zero out
work area
Store SECTO
bias in REFDEF
entry
Store T EE addr.
and CDT address
in PLIST
Store RFDF addr.,
EXPR address in
TREE
Store IE IS in
RELDICT
Store RFDF addr.
in PLIST and
. Restore
REGISTERS
Store address an
size of RELDICT
and SECTO addr. ,
in PLIST
Store SECTO size
in TREE, address
in HEAD RECORD
Figure 6-28.
Flow Diagram of COREAlLOC (Cont.)
322
Page 3
List
command
Restore
Registers
Print
Error
Message
Free pages
set error fl ag
ind error return
address of
calling overlay
RETURN
Figure 6-28
Flow Diagram of COREAllOC (Cont.)
323
6. 11 WRITELM ROUTINE IN P2CCI (PASS2)
6. 11 • 1 Purpose
To write a SYSGEN library load module file whose memory has been allocated by COREALLOC.
6. 11. 2 Usage
BAL,11
(0)
Temp stack pointer address
(7)
Modify PLIST address (also used to find HEAD, TREE, and M:OPEN FPT)
(8)
Actual end of data record or minus one to skip the write for errors.
(14)
Address of TEXTC file name.
All registers saved except 12, which is used to reduce the temp stack to pre-COREALLOC status.
6. 11.3 Interaction
M:OPEN, M:WRITE, M:CLOSE to create the file.
M:FP to release memory obtained by COREALLOC.
6. 11.4 Description
If R8 contains minus one, the stack is pulled to pre-COREALLOC status and WRITELM returns. If not,
the actual data record size is put into the TREE and the HEAD is ad.justed according to the running monitor
type
The first entry in the REFDEF stack (put there by COREALLOC) is replaced with a CSECT entry, the
fi lename (from R14) is put in the TREE, and the OPEN FPT and the file is opened in the output mode.
Then the HEAD, TREE, REFDEF stack, Expression stack, relocation dictionary, and data are written to the
file, which is then closed and saved. Memory is released, the stack is pulled, and WRITELM returns.
324
6,.11,5 Flow Chart
Readjust
Stack Pointer
EXIT
Calculate SECTO
size and store in
TREE
Store SECTO size in
HEAD record. Store
>----..1 RFDFSTK address
no
in HEAD record
Set HEAD
record size=
24 Bytes
Put (SECT DEF
in REFDEF Stack
Get fi Ie name
open file
Close fi Ie release
pages restore
registers
--------- --- ---------------------..,,-.1
Figure 6-29
Flow Diagram of WRITELM
325
APPENDIX A
A. 0 BPMBT - DEF OVERLAY
A.1 PURPOSE
To write a bootable BPM monitor to either 9-track tape, 7-track tape or disk pack.
A.2 CALLING SEQUENCE
BAL instruction from DEF
BAL, 12
BPMBT
A.3 INPUT
R6 = address of the parameter list control word to open the input DCB to read the monitor
R7
= address of
DCB for writing BO/PO tape/disk
RO = push down stack poi nter address
A.4 OUTPUT
Error messages to LL device bootable monitor
A.5 CORE USAGE (not to scale)
BPMBT OVERLAY
DEF
WRITEMON Mag Tape
Processor (Procedure) Mini-Boot
Root
WORK AREA
COWs
System Boot
To Read MON Root
Subroutine Device To Read
for
DISKLOAD
Boot
MON Head & SGMT-Names' -To-Read- Routine Tree (l Page) and #IS
Monitor
(1 Page)
SEGMESTS
A.6 OVERVIEW
A.6. 1 Description
BPMBT consists of two sections; both sections are contained in one ROM.
executed as part of the DEF processor to write a bootable monitor.
BPM operating system.
Section I is the portion of BPMBT that is
This section of BPMBT is executed under the
Section II contains bootstrap routines and the Boot Subroutine.
written to the boot device along with the bootable monitor by Section I.
the master mode at boot time in order to bring up the BPM system.
A. 6.2 Module Organization - BPMPT
I WRITEMON (writes a bootable monitor)
II BOOTMON (routines to boot the monitor)
A.
Magnetic Tape Bootstrap
B.
COWs for Disk Pack Boot Deck
C.
Boot Subroutine
1.
RDROOTTP (boots monitor from tape)
2.
RDROOTDP (boots monitor from disk pack)
326
This section of BPMBT is
The coding in this section is executed in
3.
WRTROOT (writes monitor to system device)
4.
WRTLOOP (reads overlays and writes them to system device)
5.
Various BOOTMON Subroutines
6.
System Devi ce Bootstrap
Only the WRITEMON portion (Section I) of BPMBT is documented in detail here.
For details concerning the
BOOTMON portion (Section II of BPMBT) refer to the BPM Technical Manual, 90 15 28, Chapter 3.
A. 7 DESCRIPTION
Upon entry, WRITEMO N issues an M:GP to get all of core to use as a work area.
DCB to the keyed fi Ie M:MON.
passed to WRITEMON by DEF.
WRITEMON then opens M: TM
The account specified is determined by the parameter list control word whi ch is
If creating a BO device this is the :SYS account; if PO, the current account.
After M:MON has been opened, WRITEMON reads the keyed record 'HEAD' to get the start address.
address has been defined by the END INITIAL Metasymbol directive in the module M:TABLES.
This start
The stack address
is stored in the Boot-Subroutine to be used as an entry point to the Monitor initialization routine after the Monitor
root has been read into core by the Boot-Subroutine.
Next the keyed records 'TREE' and MON::ORG are read.
WRITEMON then accesses the size of the Monitor root
from the Tree Table and stores the byte size of the root in the System Device Boot Routine.
This address also is
used as the buffer address to read the Monitor Tree Table at boot time and is stored within the Boot Subroutine in
the C DW used to read the tree.
The Monitor root is to be written out in 2048 byte segments on either tape or disk pack.
To avoid the increased
possibi Iity of tape read errors caused by reading an extremely short record the last segment is always written using
a minimum of 40 bytes.
last segment.
The Boot Subroutine must know how many of these segments to expect and the size of the
So WRITEMON makes these calculations at this point and stores the result in the Boot Subroutine.
During the initia; boot process the Boot Subroutine will be read (either by the mag-tape mini boot or DISKLOAD)
into core location TOPRT + 1 page.
Again, using the size of the Monitor root as accessed from the tree table,
WRITEMON calculates this address and stores it into the CDWs used to read the Boot Subroutine in both the magtape mini-boot and the CDWs set up for DISKLOAD.
This address is also stored at all entry points to the Boot
Subroutine so that it may be accessed and used as a base register by the various routines within the Boot Subroutine.
A.8 BPMBT SUBROUTINES
A. 8.1 WRSEG
A. 8. 1. 1 Purpose
To write the Monitor Root and Overlay Segments to the output device.
A. 8. 1. 2 Calling Sequence
BAL, 11
WRSEG
A. 8. 1. 3 Input
Reg. 4 = Number of bytes to be written
Reg. 14
= Address
of buffer
327
A. 8. 1.4 Description
The WRSEG routine writes out the buffer in 2048 byte segments to the output tape or pack.
operation the cell CURBLOCK is updated.
Following each write
This cell is used for each subsequent write operation to indicate the
BLOCK value when the output device is pack.
A. 8.2 DISPSEG
A. 8. 2. 1 Purpose
To bui Id the Segment Names and Numbers Record and list it on the LL Device.
A. 8. 2.2 Calling Sequence
BAL, 11
DISPSEG
A. 8. 2. 3 Input
Reg. 1
=
Segment Number (binary)
Reg. 2 = Address of Segment Name
Reg. 13 = Address of work area to build the record
A. 8. 2. 4 Description
If the overlay number contained in R1 is '3F ' , DISPSEG puts out a standard segment message for the Root.
Other-
wise, the value in R1 is converted to EBCDIC and stores it along with the overlay name in a message work area
and prints this message.
In any case the message is moved to the work area allocated to building the Segment Names and Number Record.
The first word in this work area is used to indicate the displacement into the work area where the next segment
message is to be stored.
Each message is 6 words long.
Next WRITEMON determines if a pack or tape is being created. If pack, WRITEMON calculates the required
size of BOOTFILE by searching through the Monitor Tree Table and accumulating the total number of granules
required for the Monitor Root and all Monitor Overlays. Added to this are 6 granules which is a fixed requirement
for the Boot Subroutine, Monitor Tree Table and Segment Names and Numbers Record.
the RSTORE value to open random file 'BOOTFILE' on the BO/PO pack.
This value is then used as
After the file has been opened
WRITEMON accesses the FDA from the Fi Ie CFU to determine if BOOTFILE is the first data fi Ie on a private pack
that has been initialized at 2 granules per cylinder.
If not the DEF processor is aborted.
Otherwise, the Boot
Subroutine, along with the CDWs required to boot that routine, is written to the first 4 granules in BOOTFILE.
If a tape is to be written, the tape DCB is opened to device.
Boot Subroutine, is written to the tape.
Then the Mag-Tape Mini-boot, followed by the
The FPTs used to write the Monitor Root and Overlays, the Monitor Tree
Table and the Segment Names and Numbers Record are then modified to delete the BLOCK parameter.
the same FPTs to be used to write to both tape and pack.
This enables
From this point on, processing is the same for both tape
and pack output.
WRITEMON next BALs to the WRSEG subroutine to write out the Monitor Root in 2048 byte segments.
this the Monitor Tree Table is written.
328
Fo"owing
WRITEMON then bt ins the process of reading the overlay segments and writing these segments, again in
2048 byte records,,) the output device.
and Numbers Recore.
First, a page is reserved in the work area to bui Id the Segment Names
WRITEMON scans the Monitor Tree Table to locate each successive overlay.
For each
overlay a BAL is mcde to the DISPSEG subroutine to bui Id the Segment Names and Numbers Record and list it on
the LL Device.
WRIH:MON then obtains the segment name and size from the tree table and reads the Monitor
Overlay into the work area.
The overlay name is moved to the three words preceding the overlay to be written out
along with the overlay itself.
Table as a check at boot time.
The Boot Subroutine wi II use this information to compare against the Monitor Tree
WRITEMON BALs to the WRSEG subroutine to write out each Monitor Overlay in
2048 byte segments.
After all overlays have been written to the output device, the Segment Names and Numbers Record is written, the
input M:TM DCB is cb;.ed, the output tape/pack DCB is closed, the work area is released and control is returned
to the calling routine.
A.9 WRITEMON MESS.·\GES
$$$$SEGMENT #IS FOR PATCHING MONITOR
MONITOR $1$$
This is a title message that precedes the
list of segment numbers.
xxxxxxxxxxxx = SEG. #nnnn
This message identifies the segment number {nnnn} for each segment {xxxxxxxxxxxx}
as the absolute bootable Monitor is written
for the PO tape.
I----- ---
--
-------------------------+--------------------{
*****CANNOT OBTAIN IM:MONI FROM
CURRE NT ACCOUNT
The M:MON load module cannot be obtained from the current account. The
processor is aborted.
*****CANNOT OBTAIN IM:MONI FROM
I:SYS 1 ACCOUNT
---------PROCESSOR ABORTED (WRITEMON)
The M:MON load module cannot be obtained from the :SYS account. The processor is aborted.
*****CANNOT READ KEYED RECORD 'HEAD'
FROM IN M:MON
*****CANNOT READ KEYED RECORD 'MON::ORG'
IN M:MON
*****CANNOT READ KEYED RECORD 'TREE' IN
M:MON
*****CANNOT READ KEYED RECORD
IxxxxxxXXXXXXI IN M:M ON
One of these messages appears if a part of
the M:MON load module cannot be obtained. IXXXXXXXXXXXXI is the name of a
M:MON segment. The processor is
aborted.
--- ---------
----
1 - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - -------------.-------.--*****CANNOT USE PACK - REINITIALIZE
WITH CYL SZ=2
The PO or BO pack must not contai n any
Processor is aborted.
fj les prior to the DEF.
----------------------------+----------------------*****SPACE OVERFLOW ON SEGMENT NAMES
RECORD
---------PROCESSOR ABORTED (WRITEMON)
'_ _ _ _ _ _
The Monitor Tree Table is too large for segment name information to be contained in
one page. The processor is aborted.
Information message to indi cate the BPMBT
overlay has caused the abort of the DEF
processor.
_- - - L - - -_ _ _ _ _ _ _
l
329
Page 1
"'\
. \ WRITEMON
r "-" ' _ _
:
r--- - /
~orkarea
-,-'
: Get ADDR of
TOPRT + 1 page
."
Set up CDWs to in
mag-tape mini-boot
to read BOOT SR
t
Set FPT to get
M:MON from :SYS
or current account
Set up CDWs for
DISKlOAD to read
BOOT SR from pack 1
-S;t addr;ss- t~ ~ used as basi c
register at all entry
points of BOOTSR
Open keyed fi Ie
M:MON
~W"t"Ing
1_._ _ _ _ _ . _ - -
<
_ _ _--.1 __ _
i
'-
I
Read 'TREE'
fr~;
--
~
,
I'
I Open output DCB
to random fi Ie
'BOOTFIlE'
--I
- -
-_.
-
Set up CDW to
I boot tree from
tape/pack
-----
~
.-i0
/-bootfi Ie~
first f i on
Ve
-',
pack
?
~e_o: _ j-
Set up CDWs for
system devi ce
bootstrap
-
/
writing
\
_no
_ -_
_ _---..IOPNTAPE
I
to tape
/
r--------'----.- --
,
: : byte ,'i
?
~/
/'
i yes
R.ead M:MON~oot
MON::ORG
,
to pack
I
I
M:MON
l
n
'-
Get start addr"
(initial in tables)
and store as entry
point to monitor
Initia lization
,
-I
r-------"+L.. yes
no
~
Abort DEF \
. "-- processor)
Write BOOl-SRI
to
'BC?OT!~~~'_ _J
,
(~
Set up CDWs to
boot root from
tape/J'a~__
pg 2
-,~ )
Figure A-l"
Flow Diagram of BPMBT
330
__ J__
pg 2
(
0i
OPNTAPE )
*
Open output DeB
to tape device
Page 2
Search tree table
to get overlay
segment name
~
t
Delete 'block'
paramej'er in FPT's
to \AIr i te to output
DeB
~
Write mag-tope
mini-hoot to
outputl.1t,e _____
DISPSEG
Output seg name
and number on LL.
Bui Id names and
number record.
pg. 4
j
Read overlay
from input file
M:MON
I
-'--I Write BOOT SR
I to output tape
..L--..
_
-
Get size of
overlay
--_._"-
I
(
J-.
~\
WRSEG
~:::;;
*
WRSEG
rwrite monitor '-d,)t
I to output device
Write overlay to
output devi ce
j
pg. 3
Wri te moni tor tree
tc output device
-
-'-
--
Write seg names
and number's
record to output
device
Update granule
count for 'bootfile'
Allocate work area
for names and
number's record
Close output
device DeB
Figure A-l.
Flow Diagram of BPMBT (Cont. )
331
Re Iease work
area
Page 3
8
yes
Set FPT to
write remaining
byte size
Set FPT to write
2048 bytes
Write record to
output devi ce
Update granule
count for
'bootfile '
Update buffer
address
Decrement
number of bytes
left to write
no
Return
Figure A-l.
Flow Diagram of BPMBT (Cont.)
332
Page 4
yes
Move segment
name to message
Convert segment
number to EBCDIC
Store segment
number in message
Write message
to LL device
Move message to
next avai lable
entry in names and
number1s record
Update pointer
to next available
entry
Return
Figure A-l.
Flow Diagram of BPMBT (Cont.)
~33
message is set to
rootseg = 3F
APPENDIX B
B.O UTMBPMBT - DEF OVERLAY
B. 1 PURPOSE
To write the bootable portion of a UTS system tape.
B.2 CALLING SEQUENCE
BAL, 11
UTMBPMWRITEMON
(8)
= X'01010202' for input from current account (DEF)
= output tape DCB address
= version number (3 EBCDIC characters, left-adjusted)
(0)
= temp stack pointer address
(6)
(7)
All registers destroyed.
B.3 INPUT
Load module files for M:MON, XDELTA, GHOSTl, ALLOCAT RECOVER, M:SPROCS, and all Monitor overlays
(according to M:SPROCS) in the current account (for DEF usage).
B.4 OUTPUT
Error messages to the LL Devi ce
Bootable monitor (see Figures B-1 and B-2)
Tape
boot
M:MON
Data
GHOSTl
DeBs
GHOSTl
data
RECOVER
head
OverlaY1
Data
System
information
Exec
Delta
Data
Exec
Delta
head
GHOSTl
procedure
RECOVER
data
ALLOCAT
head
OverlaYn
head
OverlaYn
head
DATA
Procedure
GHOSTl
head
OverlaY1
head
:EOF
NOTE:
Head
Head portion of load module
Data
Protection type 0 portion of load module
DCBs
Protection type 2 portion of load module
Procedure
Protection type 1 portion of load module
OVERLAY.
I
M:MON overlays (shared processor type) as described in M:SPROCS module (except
M:DUMLMs)
Figure B-1.
Output Tape Format
335
byte + 3 bytes
NL
VD]
Blank line
*****
---UTS--SYSTEM GENERATED ON:
hh:mm
MM
DD
YY
VERSION NO. IS: XXX)$'
*****
Six words each line. First
character of each line must
be X'40'.
PATCH SEGMENT NUMBERS:
00
SN
M:MON
SSSSSS
******
Blank line
The message contains the time/data (hh:mm, MM DD YY) of when the tape was generated, and the segment numbers (SN) assigned to each segment (SSSSSS) for absolute patching purposes.
VD
word displacement to version number (XXXW)
NL
number of six-word lines of text
Figure B-2.
System Information Format
DESCRIPTION
Initialization consists of saving the version number (in R8) in the canned information record, obtaining all
avai lable dynamic data pages, and putting the appropriate fi Ie name control word (in R6) into M:OPEN FPTs for
M:MON, M:SPROCS, and monitor overlays, GHOSTl and RECOVER.
set to the unformatted mode.
Then the output tape DCB is opened and
The M:MON HEAD record is used to put the start address into the tape bootstrap.
The data size from the HEAD is used to set up the bootstrap, which is then written to tape. It is followed by
M:MON data in 2048-byte records.
M: TIME puts the date and time into the canned information record.
The
M:SPROCS data record is then used to construct a doubleword table of fi Ie names for transfer to tape, since this
record starts with P: NAME (doubleword table of TEXTC format monitor overlay names).
This table is then used to
construct the segment number portion of the monitor information record, which is then written in a 2048-byte to tape
and line-by-line to the LL device.
Then the loop, NXTULBL, is entered which picks names out of the file name
table, and copies appropriate protions of the fi Ie to tape.
The HEAD record is copied unless the fi Ie is a JIT.
Then
the data protection type is copied unless the fi Ie is GHOSTl or ALLOCAT, in which case DCB (for GHOSTl only),
data, and procedure are copied, in that order.
2048-byte segments.
All pieces of information (including the HEAD record) are copied in
When RECOVER has been copied, those pages that were obtained are freed, the tape DCB is
CLOSEd (to write an :EOF record), and a return is made to the caller via Rl1.
An abort via M:MERC with X'80 ' merged into the error code occurs if any module cannot be obtained.
336
APPENDIX C
c.o
DEF (HOO BPM/BTM VERSION)
This Appendix describes DEF released as the HOO version for BPM/BTM systems.
This version is based on the
processor described in Chapter 4 but has been significantly enhanced to permit creation (for BPM/BTM only) of
PO/BO disk packs in addition to PO/BO tapes.
C.l
PURPOSE
To generate one or more target system tapes (PO tapes) or disk packs (PO packs) or BO tapes or disk packs which
maybe used as master BI tapes/packs for subsequent SYSGENs.
C.2 CALLING SEQUENCE
Monitor control command
! DEF ••••
C.3 INPUT
DEF control commands from the SI device.
! DE F (from C devi ce)
:WRITE
:INCLUDE
:IGNORE
:DELETE
END
Fi les from random access device comment commands
C.4 OUTPUT
Display of DEF control information to LL device.
PO tape
PO disk pack
BO tape
BO disk pack
C.5 DATA BASE AND REGISTERS
R7
R6
= address
= address
in temp stack of control command PLISTS
in temp stack of data and I/O PLISTS
IGSTRT/IGEND - Pointer to Start/End of IGNORE table
INCLSTRT/INCLEND - Pointer to Start/End of INCLUDE table
LSTLMST - Pointer to Start of intermediate table for LASTLM for BO disc pack
LSTLMBUF - Pointer to Start of compact LASTLM record to be written for BO disc pack
OPEN FPTs
OPNTMSQN - Open disc to fi Ie
OPNPOBO - Open PO/BO (via DCB whose address is in R5).
dynamically changed if writing to disc pack.
337
Originally set up to write to tape,
OPNTM - Open disc to next fi Ie.
OPNSYN - Open for Synonomous files originally set up to write to tape, changed dynamically if writing
to di sc pack.
OPNPOBOLST - Open to write null LASTLM used for PO/BO tapes and PO disc pack set up for tapes,
changed if disc pack.
OPNDPLST - Open to write non-null LASTLM to BO disc pack.
POIGS/BOIGS Tables - Automatic IGNOREs for BO/PO tapes and disc packs.
POINCLS Table - Automatic INCLUDEs for UTS PO tape.
BOINCLS Table - Automatic INCLUDEs for UTS BO tape.
BBOINCLS Table - Automatic INCLUDEs for BPM/BTM BO tape/disc pack.
C.6 SUBROUTINES
BPMBT - to write BPM/BTM system to unlabeled portion of BO/PO tape or to random file 'BOOTFILE' on
BO/PO disc pack.
See Appendix A for description.
UTMBPMBT - to write UTS system to unlabeled portion of BO/PO tape.
See Appendix B for description.
NAMSCAN - to scan any field containing a name.
CHARSCAN - to check a specific character for legitimate syntax.
CHSTSCAN - to obtain a character string field.
NXACTCHR - to get next active character from input record.
HEXSCAN - to scan for a hexadecimal character.
DECSCAN - to scan for a decimal character.
QUOTSCAN - to compare a quote constant with a character string.
GETCHST - to obtain the next character string.
C.7 CONTROL COMMANDS
Upon entry DEF requires a parameter on the !DEF command that identifies the SYSGEN system for which tapes/disc
packs are being created.
This parameter maybe either BPM, BTM, or UTS.
running operating system is used to determine the system type.
indicative message and aborts.
If none is specified, then the currently
If the parameter is invalid, then DEF prints an
For UTS, an optional second parameter is a version number.
analysis made on the field, therefore any set of characters is accepted.
There is no syntax
However, only the first three characters
are retained.
The type and composition of the tape(s}/disc packs DEF creates is a function of the control commands read by DEF.
If the !DEF is immediately followed by a monitor control command, one PO tape is created by default.
The
function of the END command is to cause DEF to exit since an EOF on reading M:SI causes one PO tape to be
generated unless the last command processed was :WRITE.
To write a BO tape/PO or BO disc pack and/or include,
ignore or delete files for any tape or pack type, :Commands are required.
format:
:INCLUDE (namel, name2 .•. )
:IGNORE (nameA, nameB ••. )
:DELETE
:WRITE
f
~g
},
[SN]
BODP
PODP
338
These commands have the following
All commands preceding the :WRITE apply to that tape/disk pack being created and may appear in any order.
The
:WRITE is required for BO tapes and oacks and PO packs as a PO tape is generated if the type parameter is null
or illegal.
[lEF.
The optional SN fie Id permits a generalized assignment of PO/BO to (DEVICE,
6~
prior to calling
The processor itself stores the particular SN into the DCB.
The type of fi les that may be specified or are affected by the other commands depend on the type of tape/disc pack
being generated.
Table C-l summarizes this information.
Tab Ie C -1.
:COMMAND
Fi Ie Types
BO tape/pack
PO tape/pack
I
:
:INCLUDE
Keyed fi les
Consecuti ve fi Ies I
:IGNORE
Consecuti ve fi Ies
Keyed fi les
:DELETE
I
BOTH
!
i
!
BOTH
C.8 DESCRIPTION
Upon entry DEF initializes its dynamic data area and processes the !DEF command.
One page of core is obtained
for storing file names into the tables pointed to by IGSTRT and INCLSTRT.
DEF then reads it :Commands and branches to the appropriate routine to process them.
For: INC LUDE and: IG NORE,
this involves syntax checking the names ~ 15 characters); determining if room exists for the entry (if not, obtaining
an additional page of core); storing the name in the appropriate table; and exiting to read another command.
For
:DELETE, a flag (DELETEF) is set before exiting to read another command. When an abnormal return (EOF) is made
from reading SI for commands, ENDFLG is set and if the WRTFLG is non-zero indicating the last command was
:WRITE then the routine is entered to clear up the stack and exit.
If WRTFLG is zero, then the routine to write a
PO tape by default is entered.
For the :WRITE command, entry is made to the initial routine that determines which type of tape or disc pack is
being generated.
From here, a branch is made to either the PO or BO tape/pack routines.
For PO and BO packs for BPM/BTM systems only, the initial routines alter the fpts to reflect file type operations and
change the fi Ie access parameter in the fpt for synonymous fi les to update mode.
From these routines DEF then
enters the main processing routines for PO and BO tapes.
For PO tapes, after processing the optional SN field, the names of files that are to be automatically ignored
(i. e., LASTLM and SPEC: HAND) are linked to the end of the IG NORE table. If the system being created is UTS,
then the names of files to be automatically included are linked to the end of the INCLUDE table.
These files are
listed in Table C-2. The appropriate routine to write the unlabeled portion of the tape is segloaded and entered.
See Appendixes A and B for a description of these routines.
Upon return, ten additional pages of core are obtained
and the common routine (CCA) to generate the remainder of either type of tape is entered.
For BO tapes, after processing the optional SN field, the appropriate routine to write the unlabeled portion of the
tape is segloaded and entered.
Upon return, for BPM/BTM systems, the files to be automatically included (see
Table C-2), are linked to the end of the INCLUDE table, ten additional pages of core are obtained and exit is
made to CCA.
If the system is UTS, the fi Ie, M:SPROCS in :SYS account, is opened, ten pages of core are
339
obtained and the fi Ie is read into the newly acquired area and linked to the end of the INCLUDE table.
M:SPROCS
contains the names of the monitor overlays and shared processors but only the overlays are added to the INCLUDE
table.
The names of the other files to be automatically included are linked to the end of the added monitor over-
lay names and exit is made to CCA.
Upon entry, the common routine (CCA) first determines if a disc pack is being created, if not then VOLINIT is
removed from the list of automatic INCLUDEs.
If a BO disc pack is being generated then the start of the INCLUDE
table is stored as the start of the list of fi les for the non-null LASTLM fi Ie.
The INCLUDE list is then processed.
This involves obtaining the name of a file, storing it in the open FPT (OPNTMSQN) for M:TM to the disc and then
opening the fi Ie, using the FPARAM option.
The fi Ie, thus opened, is checked first if it is a synonymous fi Ie in
which case special handling is required, namely its parent name must be added before writing it to the tape.
Note
the parent fi Ie must occur before the synonymous fi Ie or the latter is lost.
Then the organization of the fi Ie is determined.
keyed files.
If PO, then only consecutive fi les are processed, if BO, then only
The other types are automatically handled later.
If a file for a disc pack is invalid then a link is set
over the entry thus removing it from possible subsequent processing in BO pack situations.
The PO/BO tape disc pack is then opened and the fi Ie is read into core and wirtten to tape/pack unti I an EOF is
encountered at which point the DCB is closed.
have been processed.
This routine is repeated until all the names in the INCLUDE table
When this processing is completed and the files thus written to the tape/pack have been
listed on the LL device, the next phase of DEF is entered.
If a BO pack is being generated then the routine WRLSTLM is entered to bui Id a LASTLM fi Ie of one record containing the names of all the INC LUDEd fi les and terminated by a final word of zero.
the :SYS account at boottime.
The fi les so named are to go into
On BO tapes, the file LASTLM is null and its position on the tape serves as a
termination of the fi les for :SYS.
However, on BO packs, because the fi les on a disc pack are accessed through
the alphabetized fi Ie directory, LASTLM is used as a mini-directory for the :SYS file.
If a BO tape is being generated, a null fi Ie, LASTLM, is written to the tape.
Subsequently, or if a PO tape is
being created, the FPT for open-next to the disc (OPNTM) is opened and fi Ie parameters obtained.
If the fi Ie
organization is consecutive (BO)/keyed (PO), the IGNORE table is searched to determine if it is listed there.
If the DE LETEF is set, the fi Ie is deleted when M: TM is closed.
into core and written to tape/disc pack.
If the fi Ie is not to be IG NOREd, it is then read
This procedure is repeated unti I all fi les in the current account have been
processed.
If on opening-next-file, an abnormal return is made indicating the file is a synonymous file, its name is stored in a
new INCLUDE table whose location is pointed by INCLSTRT and a flag (SYNFLG) is incremented, thus maintaining
a running total of the number of synonymous fi les found.
When an abnormal return is made indicating an end of all files on open-next, if the tape/pack being created is
BO, it is immediately closed, rewound, and saved.
If a PO tape/pack is being generated, SYNFLG is tested.
If non-zero, a second pass is made through the INCLUDE routines.
If or when SYNFLG is zero, the null file,
LASTLM, is written to the tape/pack which is closed, rewound, and saved.
Note:
When writing Synonymous fi les to disc pack, the DCB is opened in the update mode.
not there, then the fpt is set to open out and the fj Ie is subsequently written out.
340
If the parent fi Ie is
The pages of core acquired thus far are released. If ENDFLG is not set, the flags and counters are zeroed to
prepare for the generation of another tape. If ENDFLG is set, DEF exits.
-,
Table C-2. Automati c INC LUDEs
PO Tape/Pack *
BO Tape/Pack **
i
UTS
-
UTS
-
BPM/BTM
BPM
UTS
SIG7FDP
:BLIB
FLIBMODE
SIGMET
M:CDCB
M:OCDCB
M:BIDCB
M:CIDCB
M:SIDCB
M:EIDCB
M:BODCB
M:CODCB
M:SODCB
M:PODCB
M:GODCB
M:LODCB
M:DODCB
M:EODCB
M:LLDCB
M:SLDCB
M:ALDCB
M:LIDCB
XDELTA
LOGON
TEL
SUPER
DEFCOM
SYMCOM
JITO
JIT1
JIT2
JIT3
JIT6
ANLZ
ERRMSG
GHOSTl
RECOVER
M:SPROCS
M:MON
PCL
CCI
LOADER
PASS2
LOCCT
PASS3
DEF
Plus Monitor overlays
from M:SPROCS
FMGE
PASSl
ERRMSG
:DIC
: LIB
M:C
M:OC
M:BI
M:CI
M:SI
M:EI
M:BO
M:CO
M:SO
M:PO
M:GO
M:LO
M:DO
M:EO
M:LL
M:CK
M:SL
M:AL
M:LI
M:MON
PCL
CCI
LOADER
PASS2
LOCCT
PASS3
DEF
VOLINIT***
I
*
From Current Account
**
From :SYS Account
***
For BO pack only
341
I
I
I
C.9 DEF MESSAGES
::::SYSGEN DEF IN CONTROL::::
Commentary at beginning of execution.
::::DEF COMPLETED::::
Commentary at end of execution.
**CC TYPE UNKNOWN
****GET NEXT CC
Error in Command.
**SYNTAX ERROR, NO 1('
Error in syntax.
**DELIMITER MUST BE I, I OR 1)1
Invalid terminator on :Command.
command.
**NAME INVALID OR
> 15 CHAR.
DEF reads next command.
DEF reads next command.
DEF reads next
DEF searches for next parameter.
LONG
****NOT ENOUGH CORE AVAILABLE
*****SYSGEN DEF ABORTED
Work area too sma II.
***WRITING PO TAPE BY DEFAULT
Either no type specified or parameter invalid on
:WRITE.
***ILLEGAL INCLUDE - WILL BE COPIED LATER
On the :INCLUDE command a keyed file (for PO)
or a consecutive fj Ie (for BO) has been specified.
The file name is printed above this message. DEF
continues.
I
DEF exits.
-
***DEF TYPE UN KNOWN
System type field of !DEF command has been specified but is invalid. DEF exits.
***TYPE UNKNOWN - xx Mused
System type field of !DEF missing. DEF defaults to
currently running system type (xx).
**NO 1:1 in column-1
Command in error.
****TROUBLE WITH M:SPROCS
***CANNOT WRITE TAPE
In attempting to open M:SPROCS in creating a
BO tape for UTS system, difficulty encountered.
DEF releases the tape and if ENDFLG set, exits.
*****CANNOT WRITE DP
DEF is unable to write to the disc pack. It releases the pack and proceeds to the next command.
_.
DEF reads next command.
------_ ..
***1/0 ERR/ABN
= xx/xx
-----. -
An I/O error/abnormal condition has been detected by DEF and is not expected.
****TROUBLE WRITING LASTLM FOR BO DP
..•
***CANNOT OPEN OUTPUT DEVICE
-
An error or abnormal return has been made when
opening or writing LASTLM for BO packs .
---------------------- .--- .-.--In attempting to open tape/pack (BO/PO), an
abnorma I condition occurs. DEF releases tape
pack and if ENDFLG set, exits.
---------
... PO TAPE CONTENTS ...
\
)
· .. PO DP CONTENTS ...
· .. BO TAPE CONTENTS ..•
· .. BO DP CONTENTS ...
***INCLUDE ITEMS***
-
I
These are subtitles that are followed by a list of
the appropri ate fi Ies.
I
I
***OTHER ITEMS***
I
********INCLUDE ITEMS NOT FOUND I
)
342
--_ ....
C.10 INTERNAL ROUTINES
I
I
DEF
Main entry, initialize processor dynamic data area.
READFRST
Process DEF command.
INIT
Initialization of pointers.
DEFRDCC
Read :Command for DEF, and branch to appropriate routine
or set DELETEF.
DEFINCL
Process :INCLUDE.
DEFIG
Process :IGNORE.
DEFWRITE
Initial processing of :WRITE.
DFPODP
DFBODP
Initial processing of PO/BO disc pack for :WRITE commands.
Sets DPFLG and changes FPT to reflect fj Ie type operations,
changing mode of synonymous file fpt to update. Exits to
DFWRTPO/DFWRTBO.
DFWRTPO
:WRITE processing for PO.
DFWRTBO
:WRITE processing for BO.
DEFTABLR
Processing name options on :INCLUDE or :IGNORE.
PAGER
Get a page of core and zero it out.
READCC
Reads :commands for DEF.
Register 12 = CC Buffer address
LlSTCC
Display commands on LL device.
Regi ster 12 = CC Buffer address
GETRITEMON
Obtain appropriate WRITEMON overlay according to system
type (UTS or BPM/BTM).
EOCCSCAN
Find end of current control command.
CCA
Generate PO/BO tape/disc pack.
NXTINCL
Obtain next INCLUDE file name.
RDWRITEM
Read and write file.
SYNINCL
Process synonymous fi Ie includes.
I
i
I
I
I
~.
I
i
---
I
---,--- ..
End of includes, begin generating remainder of tape/disc pack.
--.------- -- --- Builds non-null LASTLM record for BO disc pack after completion of processing of :INCLUDEs.
NOINCL
-.~.
WRLSTLM
Obtain next file on disc.
NXTFILE
IGNOR1
--
!
.--~
Search ignore table for match.
ISSPEC
Delete fi Ie if required.
CLSDSK
Close file.
343
I
RDWRITE
Read fi Ie and write to tape/disc pack.
ALLDONE
Releases pages acquired, if ENDFLG set, exits.
NXTTPEDP
Zeroes flags and counters, restores FPTs to original state,
returns to INIT via PAGER.
Error and abnorma I return routi nes.
---
.. -
.
.....----
LSTWRT
EOF on reading M:SI.
RTMAINCL
EOF on reading INCLUDE files.
OTMAINCL
Abnormal return on opening of INCLUDE fi Ie.
RTMA
EOF on reading M: TM fi Ie.
----.-
OTMA
EOF on open next of M: TM or synonymous file found for
open-next.
OPOA
Cannot open BO/PO Tape/disc pack.
DPABN
Abnormal condition for opening writing disc pack.
.
---
----SYNERR
--
I
Abnormal/error conditions for writing synonymous files to
disc pack.
--.-
- .,-
_.- ----- .,--- --.
344
_.
,-
---------.--- ---------- -------
~
FLOWCHARTS FOR DEF
Page 1
(
ENTER)
Initial ize dynamic
data area
TYPEFLG
Process ! DEF
command
-
-
-
0 = BPM/BTM
2 = UTS
PAGER
Get one of Core
and zero it
pg. 11
INIT
Initial ize pointers
DEFRDCC
READCC
Abnorma I routi ne
LSTWRT
exi t from loop
Read :Command
pg. 11
pg. 11
LlSTCC
List :Command
pg. 11
Determi ne type
of :Command
DEFINCL
DEFIG
Process
:INCLUDE
Process
:IGNORE
:DELETE
DEFWRITE
Set flag
(DELETEF)
Process
:WRITE
pg. 3
Figure C-1. Flow Diagram of DEF
345
ID
Process if
card in error
Page 2
(
DEFINCL )
yes
yes
>---------1...
Initia lize
INCLSTRT
(=NXTNAME + 1)
Adjust INCLEND
(=NXTNAME + 1)
DEFTABLR
Process name
opti ons a nd store
in table
pg. 12
Adjust INCLEND
(=NXTNAME)
DEFIG
ENTER
EXIT
/'
Linkin~
needed
yes
-r-"---~
Adjust IGEND
(=NXTNAME + 1)
DEFTABLR
~
Process name
opti ons, store
,
in table
pg. 12
Adjust IGEND
(=NXTNAME)
Figure C-l. Flow Diagram of DEF (Cont. )
346
Page 3
DEFWRITE
Get tape type
field
yes
Search table for
match and go to
appropriate
routine
no match
PODFLT
Illegal-PO by
DEFAULT (print
message)
pg.4
Figure C-l.
Flow Diagram of DEF (Cont. )
347
Page 4
OUTSN
(DFWRTPO )
SN ~
Option ~RESE~
DCB pointer
(R5) to M:PO
Store in DCB
~
~-)
DFPODP
WRTFLG =
ORG (x'20')
DCB pointer
to M:PO
Link automatic
IGNORES at
end of IGEND
//
/~
UTS
?
(
DFBODP )
-~.-,
yes
Link automatic
includes at end
of INCLEND
DCB pointer
to M:BO
Error message
PO by default
UTS
~
Save ,egisters-J......t - - - - - - - - '
no
BO
Get versi on number
R7 = M: PO address
R6 = Flags for PO
GETRITEMON
SEGLOAD overlay
write unlabeled
portion of tape/dis
pg. 5
Set up FPTs
to fi Ie type
------.--~
Restore registers.
Pri nt PO tape/DP
contents
Get 10 pages of
core
-8
----------'
pg. 13
Figure C-1.
Flow Diagram of DEF (Cont. )
348
PO
pg. 6
Page 5
DFWRTBO
Open M:SPROCS
(:SYS)
DCB pointer
(R5) to M:BO
Get 10 pages
of Core
OUTSN
Process SN option,
set in DCB
pg.4
Link to INCLEND
WRTFLG =
ORG (Xl 10 1)
Read M:SPROCS
Save registers
Get version number
R7 = M: BO address
R6 = Flags for BO
Close M:SPROCS
. -_ _--L-_ _ _ _
Search for TEL
Name-End of
Monitor overlays
GETRITEMON
SEGLOAD overlay
write unlabeled
portion of tape
pg. 13
Link automatic
inc I udes to end of
Monitor overlays
Restore registers
Adjust buffer
addresses
Link automatic
includes for BPM/
BTM at INCLEND
R5 = DCB poi nter
to M:BO
Get 10 pages of
Core - R5 = DCB
pointer to M:BO
pg. 6
Figure C-1.
Flow Diagram of DEF (Cont.)
349
-----------------------------Page 6
yes
Remove VOLINIT
from auto includes
yes
pg. 9
Set up INCLUDE
start as LASTLM
start
NXTON
Get byte count
of entry name
no
LINK=
O?
Save posi ti on
in table
/'
BC:X ' 40 '
pg. 9
AND=O
got entry
7
= X ' 40 '
---------------------------~
Must be X ' 4F'
code. Turn on
:SYS in account
field of FPT
~
~
l ___________________ __
.
Increment (+ 1 )
position in table
Figure C-l.
.. ___ ._.. _. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--1
Flow Diagram of DEF (Cont.)
350
Page 7
(
NXTINCL )
Access fi Ie name
from FPARAM
Pointer to OPEN
FPT (M:TM)
Pointer to Fi leparam ters
(FPARAM) pointer t
start of variable
parameters
Check ORG of
fi Ie
For INCLUDE
PO - CONSEC ani
BO - KEYED only
no
Store fi Ie name in
OPEN FPT
Close and Save
Fi Ie, if disc pack
set link over bad
entr
Adjust table
pointers
Get Key Length,
ORG from
FPARAM
-8
pg. 6
L-_________ ,
Ajust variable
parameter contra I
word
OPE N M: PO/M: BO
-- Abnormal address
{p rint file name}
OPOA
Ge t buffer address
and size
OPEN M:TM
to FILE
D1 = OPEN FPT
for M: po/M: BO
Read record
r------;~ (M: TM)
pg. 8
__ Abnorma I address
OTMAINCL
Get actual
record size
pg. 13
1 - -_ _ 1
Figure C-1.
Abno~ma I address
-- RTMAINCL {exit
point of loop}
Wri te record
M:po/M:BO
Flow Diagram of DEF {Cant. }
351
Page 8
~
PGCNTL
Determi ne reason
for AB N return
~
RTMAINl
pg. 8
Close and save
Disc and Tape/disc
pack Fi les
~~M
pg. 7
PGCNTL
es
EOF
").-£--~
?
Flag set release
extra pages
RETURN
no
Pri nt
code
II0
error
BUFF~"/'
no
too small
NOROOM
RETURN
/
/ ' MAX
pages obtained /
yes
?
Error messages
List CC DEF
DONE
EXIT DEF
Get max. pages
set FLAG
Position one record
back adjust pointer
Figure C-l.
-k
RETURN
Flow Diagram of DEF (Cont. )
352
)
Page 9
8
WRLSTLM
pg. 14
8
Write null
LASTLM close
save tape
yes
Close and Re Iease
File
NXTFILE
D1 = OPEN-NXT
FPT for M:TM
D2=FPARAM
OPEN (NEXT)
M:TM
CLSDSK
Close and Save
File
r
-
Abnormal
address OTMA
:----~----
pg. 10
Get fi Ie name
from FPARAM
RDWRITE
Get KEYMAX
D1 = OPEN FPT
CLSDSK
pg. 9
OPEN DCB to
write tape/disc
pack
Abnormol OPOA
pg. 12
PO-keyed fi les
BO-consecuti ve
files
,~
Read record M: TM
1 -_ _...--,-_____
~et actua I record
size
J:0
Wri te record
(M:PO)/M:BO
~
Figure C-1.
Flow Diagram of DEF (Cont.)
353
r
J
Abnormal RTMA
- - exit pointer of
loop
pg. 10
I
Page 10
e
Close, Save
M:BO and
Rewind
Determine reason
for ABN return
-8
pg. 8
Close Tape/disc
pack File
Set End of
S_Y_N_O_N_ _ ,
_ TABLE
pg. 6
8
POOUT
Write LASTLM
Close and Save
and Rewind M:PO
pg. 9
ERRDNNE
*
Re Iease a II pages
acquired
ALLDONE
// EOF""""
onM:TM
OPENNXT
NXTON
ENDFLG
~~
~
Zero out flags and
constant set DCB
, to original items
Set table address
in INCLSTRT
Set pointer to INIT
Put SYNON name
in table
pg. 1
e
pg. 9
Figure C-l.
Flow Diagram of DEF (Cont.)
354
EXIT DEF
Page 11
(
PAGER)
LISTCC
pg. 11
rR-e-a-d-M--:S~I-fu-r----~ _JrA--BN--L-S-nN--R-T--~
l
command
pg. 11
yes
Set ENDFLG
Increment page
count keep track
of end
RETURN
Li st Command and
Error Message
pg. 11
8
yes
list it
RETURN
pg.3
Figure C-1.
Flow Diagram of DEF (Cont.)
355
RETURN
Page 12
G
Pri nt message
invalid command
Get name option
yes
Errorme~
no
PAGER
Get 1 page and
zero it
Store name in
table
//
//
End
of options
?
Print can't Open
Output Devi ce
Open, Close
Release, Rewind
Tape/disc pack
pg. 10
Figure C-1.
Flow Diagram of DEF (Cont. )
356
Page 13
GETRITEMON
SEGLOAD
appropriate overlay
to write unlabeled
tape porti on or
random bootfi Ie if
disc ack
Print name
INCLUDE file not
found
BPMBT - (BPM/BTM
- - - UTMBPMBT -UTS
Branch to overlay
8
Set FPT to open
OUT (for disc pack
fi les)
Store SYNON name
and parent file name
in special SYNON
FPT
WRTSYN
Open fi Ie ("WRITE
file)
II
SYNERR abnormal
address
pg. 8
Figure C-1. Flow Diagram of DEF (Cont.)
357
Page 14
Get start of include
table and buffer
address to bui Id
LASTLM record
Get link address
-~n-o--tl~ of next entry
no
yes
'-----1
Convert to textc
format store in
buffer area posi ti on
for next entry
Compute number
bytes in record,
open, write, close
LASTLM
~
NXTFILEJ
pg. 9
DPABN
Convert I/O error
code print error
message close M: B
if open
ERRDNNE
pg. 10
Figure C-1.
Flow Diagram of DEF (Cont. )
358
DPABN abnormal/
error address
APPENDIX D
D.O BPM/BTM MODULE NAMES
For BPM/BTM systems only, the following is a list of the ROM names, CL labels and internal names of the modules
comprising the SYSGE N processors. This information is avai lable in LISTFILE on CI tape or BO pack releases of
the system.
Sect. of manual
where described
LMN
ROM
CL Label
Internal Names
PASS2
P2CCI
CN704896
M:SYSCCI2
2. 1
UBCHAN
CN704897
M:SYSDVLB2
2.2
SDEVICE
CN704893
M:SYSSDEV2
2.3
XMONITOR
CN704868
M:MONITOR2
2.4
XLIMIT
CN704957
M:DLIMIT2
2.5
ABS
CN705536
M:SYSABS2
2.6
BTM
CN705418
BTM:CCI
2.7
P2COC
CN706164
M:P2COC
2.8
IMC
CN706165
M:IMC
2.9
SPROCS
CN706163
M:SPROCS
2. 10
FRGD
CN705538
M:SYSFRGD2
2.11
XPART
CN706293
M:XPART
2. 12
MODIFY
CN704898
M:SYSMOD
6.5
PASS3
PASS3ROM
CN705539
M:PASS3ROM
3.0
DEF
DEFROM
CN704876
M:TMTOPO
4.0, C.O
BPMBT
CN704875
M:WRITEMON
A
UTMBPMBT
CN706166
M:UTMBPMBT
B
LOCCTROM
CN705540
M:LOCCTROM
5.0
LOCCT
359
Xerox Corporation
701 South Aviation Boulevard
EI Segundo, California 90245
XEROX
Reader Comment Form
Publ ication No.
I
We would appreciate your comments and suggestions for improving this publ ication.
Rev. Letter
I
I Current Date
Title
Is the material presented effectively?
How did you use this publication?
o
o
o
o
Learning
Reference
o
o
Installing
Maintaining
What is your overall rating of this publication?
Very Good
Good
0
o
Fair
0
0
o
Sales
Operating
o
Fully Covered
DWell III ustrated
o
Well Organized
D
Clear
What is your occupation?
Very Poor
Poor
Your other comments may be entered here. Please be specific and give page, column, and line number references where
applicable. To report errors, Please use the Xerox Software Improvement or Difficulty Report (1188) instead of this form.
Your N arne & Return Address
2190( 12172)
Thank You For Your Interest. (fold & fasten as shown on back, no postage needed if mai led in U.S.A.)
Staple
Staple
Fold
First Class
Permit No. 229
EI Segundo,
California
BUSINESS REPLY MAIL
No postage stamp necessary if mailed in the United States
Postage will be paid by
Xerox Corporation
701 South Aviation Boulevard
EI Segundo, California 90245
Attn: Programming Publications
Fold
XEROX
701 South Aviation Boulevard
EI Segundo, California 90245
213679-4511
XEROX® is a trademark of XEROX CORPORATION
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Producer : Adobe Acrobat 9.13 Paper Capture Plug-in Modify Date : 2009:09:20 03:33:27-07:00 Create Date : 2009:09:20 03:33:27-07:00 Metadata Date : 2009:09:20 03:33:27-07:00 Format : application/pdf Document ID : uuid:14faf4c0-6ee4-411c-821d-30bcaa4f3d80 Instance ID : uuid:865c96cc-2892-42c2-a7c1-1aedbc41419e Page Layout : SinglePage Page Mode : UseOutlines Page Count : 370EXIF Metadata provided by EXIF.tools