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 PDF.
Page Count: 370

Download901877B_System_Generation_Tech_Sep73 901877B System Generation Tech Sep73
Open PDF In BrowserView 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                      : 370
EXIF Metadata provided by EXIF.tools

Navigation menu