MI00091 C_Compiler_Montitor_System 2_CMS 2_For_Use_With_AN_UYK 7_Computer_Aug75 C Compiler Montitor System 2 CMS For Use With AN UYK 7 Computer Aug75
MI00091-C_Compiler_Montitor_System-2_CMS-2_For_Use_With_AN_UYK-7_Computer_Aug75 MI00091-C_Compiler_Montitor_System-2_CMS-2_For_Use_With_AN_UYK-7_Computer_Aug75
User Manual: MI00091-C_Compiler_Montitor_System-2_CMS-2_For_Use_With_AN_UYK-7_Computer_Aug75
Open the PDF directly: View PDF
.
Page Count: 702
| Download | |
| Open PDF In Browser | View PDF |
mrIJIJO'lI-(!
·M·5035, VOLUME II
USER'S REFERENCE MANUAL (U)
FOR
COMPILER, MONITOR SYSTEM·2 (CMS·2)
FOR USE WITH AN/UYK·1 COMPUTER
COMPILER, ASSEMBLER, AID INSTRUCTION REPERTOIRE
FLEET COMBAT DIRECTION SYSTEMS SUPPORT ACTIVITY
San Diego, California 92147
THIS CHANGE SHOULD BE INCORPORATED INTO TilE
BASIC PUBLICATION. DESTROY SUPERSE~ED PAGES.
REVISED: 16 NOVEMBER 1973
CHANGE: 16 AUGUST 1976
M-5035
Change 5
Volume n
LIST OF EFFECTIVE PAGES
Insert latest changed pages; disp'ose of superseded pages in accordance with applicable
regulations.
NOTE: On a changed page, the portion of the text affected by the latest change is indicated by a vertical line, or other change symbol, in the outer margin of the page.
Total number of pages in this manual is 681 consisting of the following:
tChange
No.
Page
No.
Title •.
4
..
A - D ••
ii Blank
iii - v •.
vi
II-4-2 ••
II-4-3 ••
II-4-4 - 11-4-6.
11-4-7 - II-4-16 •.•
11-4-17 •
II-4-18.
n-4-18A - II-4-18B
II-4-19 - II-4~20
II-4-21 - II-4-22
II-4-23 - n-4-24 ••.
II-4-25.
11-4-26.
II-4-27.
II-4-28.
II-4-29 - II-4-33
II-4-34.
II-4-35 ••.
II-4-36 ••••
II-4-37 - II-4-40
II-4-41 - II-4-42
II-4-43 - IT-4-59
II-4-60 •••••••
II-4-61 - 11-4-62
II-4-63 •••
11-4-64.
II-4-65 ••.
II-4-66.
II-4-67 - II-4-68
IT-4-68A ••••••
II-4-68B Blank
II-4-69 ••
II-4-70.
II-4-71 - II-4-72
5
o
1 • • • • •
o
. ..
..
3
5
viii
viliA
4
4
viiiB Blank
ix
4
4
5
2
5
xvi
xvii - xviii • • •
11-1-1 - 11-1-9.
n-1-10 Blank.
11-2-1 ••••••
••
II-2-2 - 11-2-24 •
11-2-25 - 11-2-26
II-2-27 •••••
II -2 -28 Blank •
II-3-1 - II-3-3 ••••
11-3-4••
11-3-6 ~ •••••••
II-3-6 ••
11-3-7.
II-3-8 ••
II-4-1 ••••
2
·.
·.
·.
·..
·.
·.
·.
·..
•
..
..
•
o
3
o
.. .
... .
. ..
. ...
o
o
4
o
4
o
o
o
. ....
3
o
1
3
o
o
t zero in this column indicates an original page.
A
o
3
o
5
o
o
5
2
o
5
o
..
4
'5
5
.. . ... ....
3
o
3
.. . .
'0
xv ••
.. .
.. . . . .
o
vii ••
. . .. · . · . ·.
.. . . . . .. ..
·...
x.
..
·
.
.
·.
xi . . . .
·.
xii •••
·
...
xiii
·...
xiv
..
·.
tChange
No.
Page
No.
3
o
2
o
3
2
3
o
.. .
5
o
5
5
5
5
o
5
M-5035
Change 5
Volume IT
LIST OF EFFECTIVE PAGES (contd)
II-5-1 - II-5-2 ••
II-5-2A•••••
II -5 -2 B Blank
II-5-3.
11-5-4 ••
11-5-4A.
1I-5-4B Blank
II-5-5 ••••
II-5-6 ••
11-5-7 •.
II-5-8 - II-5-10
11-5-11 - II-5-12
II-5-13 ••••••••
11-5-14 - II-5-17
II-5 -18 •••
11-5-18A ••
1I-5-18B Blank ••
11-5-19 - II-5-20
II-5-21 •••••
II-5-22.
U-5-23 - U-5-25 •••
11-5-26 - II-5-27 ••••••
II-5-28 •.
II-5-29.
II-5-30.
II-5-31 ... I1... 5-32
II-5-33 - 11-5-38.
II -5 -3 9- .II -5 -40. • • •
II-5-41 - II-5-44. •••••••
II-5-45 - II-5-46••••
II-5 -47 •••••••
U-5-48 - II-5-79
II -5 -80 Blank. • •
II-6-1 - II-6-4 ••
II-6-5 - 11-6-7 ••
II-6-8 - II-6-9 ••
II-6-10 •••••••
II-6-11 - U-6-15
II-6-16.
II-6-17 •••
. . .. .
...
..
4
4
4
·.
· ..
••
·.
·.
R-6-18 - II-6-22
II-6-23.
II-6-24 •.•• ' •••••
11-6-25 •• ; •.
II-6-26.
11-6-27 •.
II-6-28.
II-6-29 - II-6-30
II-6-31 •••••••
11-6-32 - IT-6-34
II -6-35 •...•
II-6-36 Blank.
II-7 -1 - 11-7 -3 ••
II-7-4 - II-7-5 ••
II -7 -6 - n -7 -7 • •
H-7-8 ••
H-7-9 ••
H-7-10.
n-7-11.
ll-7-12.
II-7-12A - 1I-7-12B
U-7 -13 - II-7 -16
II-7-17.
II-7-18 ••
1I-7-19.
U-7-20 - n-7-21
II-7-22.
II-7-23.,' •
II-7"':24.
II-7-24A •.
II-7-24B ••
II-7-25 - II-7-26
II-7 -27 •..
II-7 -28 ••.
TI-7-29.
TI-7-30.
II-7-30A ~ 1I-7-30F'
II-7 -31 - II-7 -33 •.
11-7 -34 Blank
II-8-1 - 11-8-2 •.
II-8-3 . . . . . . . .
II-8-4 - ll-8-5 ••
3
4
4
4
3
1
2
o
3
1
· ..
..........
... . . . ..
.. · ..
··..
...
. . .. . ... . .
·.
·.
. .· ..
·.
.. ·· ..
...
o
5
5
5
5
o
5
o
3
o
5
..
o
5
o
3
o
3
o
4
4
o
2
.. .
No.
No.
No.
No.
tChange
Page
tChange
Page
o
4
o
1
2
t Zero in this collU1lJ1 indicates an original page.
B
. .. . .. .
...
. .....
. ...
· ..
o
2
o
1
o
2
1
o
1
o
3
3
· ...
· ..
· ...
· .. · ..
. ..
o
5
4
5
o
5
2
3
4
o
· ...
· .. · . .
..
. ... ·· ..
· ..
. . . ·.
2
o
2
o
3
5
4
4
5
3
o
.. .
2
1
5
5
5
5
o
...
1
o
M-5035
Change 5
Volume n
LIST OF EFFECTIVE PAGES (contd)
tChange
No.
Page
No.
n-S-6 •.••••••
IT-S -7 - IT-S-ll '•••••••••
IT-S-12 Blank ••.•••••••.••
ll-9-1 •••••.••••••••••••
IT-9-2 - IT-9-3 ••••••••••••
U-9-4 • •••••••••••••••••
U-9-5 - ll-9-6 ••••.••••.••
ll-9-7 •••••.••••••••••••
IT-9-8 ••••••••••••••••••
IT-9-9 - IT-9-l6 •••••••••••
11-9-17 ••••• "•••.••••••••
IT-9-lS - n-9-2l ••••••••••
IT-9-22 Blank ••••••••••••
IT-lO-l - IT-lO-2 ••••••••••
IT-IO-3 •••••••••••••••••
IT-lO-4 - IT-lO-5 ••••••••••
IT-lO-6 - IT-IO-lO ••••••••••
IT-lO-ll . . . . . . . . . . . . . . . . .
IT-lO-12 - IT-lO-13 •••••••••
IT-lO-14 Blank •••••••••••
IT-ll-l ~ IT-ll-lO ••••••••••
IT-II-II - IT-ll-l2 •••••••••
IT-11-13 - ll...;11-14 •••••••••
IT-ll-l4A - IT-11-14B •••••••
ll-11-15 - ll-11-22 •••••••••
IT-11-23 ••••••••••••••••
IT-l1 ~24 ••••••" ••••••••••
ll-11-25 . . . . . . . . . . . . . . . . .
11-11-26 "••
, IT-11-26A - IT-11-26B •••••••
II-11-27 -IT-11-3l . . . . . . . . . .
ll-11-32 - n-11-49 •••••••••
IT-11-50 •••• " •••••••••••
11-11-51 - ll-11-69 •••••••••
IT-l1"-70 ••••• "•••••••••••
IT-11-7l - n-11-74 •••••••••
IT-11-75 - IT-11-76 •••••••••
IT-11-77 - II-II-SO •••••••••
11-11-81 ••• eo • • • • • • • • • • • •
IT-11-82 - IT-ll-S3 •••••••••
n-11-84 ••••••••••••••••
n -12 -1 - IT -12 -4 • • • • • • • • • •
•
o
• • • • • •
"• • • • • • •
tChangc
No.
Page
No.
11-12-5 ........., ......•. ~~~ ..
11-12-6 - 11-12-34 ....•.. ~ ~ ..
11-12-35 - 11-12-50 .......... .
11-12-51 - 1I-12-54 ..••. ~ .. ~.
3
o
o
~
11-12-55 .•............. ~ •.. ~ ... ~~
o
11-12-56
11-12-57
11-12-69
11-12-73
11-12-79
11-12-83
11-12-84
11-12-85
11-12-89
11-12-90
11-12-95
2
1
3
o
2
o
2
o
3
o
5
o
3
o
A-I
A- 2
A-3
A-4
B-1
................., .•...
- 11-12-68 .••••.....
- 11-12-72 .•••... ~ ..
- 11-12-78 ••••.•.. ~.
- 11-12-82 ..•••.....
..................... .
...................... .
- 11-12-88 .•.•..•...
........•...••• ~ .•...
- 11-12-94 ..••......
- 11-12-110 ..•......
........•...•....•••...•...
••••••••••••••••••••••••..
•••••••••••••• ~ •••••••••.•
Blanl<: ••••••••••••••••
- B~2 ••••••••.••••••••.•. "
t!
•••
B-3
B- 4 - B- 6 ••••••••••••••••••••
B- 7 ••••••••••••••••••••••••••
1
B-8 - B-12 .•.....•...••......
B-13 - B-14 ......•....•......
B-15 - B-16 .....•....••......
B-17 - B-18 ...........•......
B-19 - B-20 .......... ~ •......
o
o
1
o
5
o
1
o
1
o
1
5
1
5
1
o
2
o
5
5'
o
5
o
o
3
3
5
o
5
o
5
o
5
o
1
5
3
5
B- 21 •••••••••••••••••••••.•••
C-1 ••••••••••••••••.••••.•..•
C-2 - C-6 •••••••••••• ~ ••••••.
o
3
D-1
D-2
5
2
o
2
5
2
5
'2
5
2
5
2
5
0
B-22 - B-28 ....•.....••......
...........................
E-1 - E-2 ••••••••••••••
~.
E-3 - E-4 ••••••••••••••••••..
E- 4A •••••••••••••••••••••••••
ill
•••
E-4B Blank ................... .
E- 5 - E-6 ............. ~ .•......
E- 7 .......................... .
E-8 ••••••••••••••••••••••••, ••
E-9 - E-10 •...•.....•.., ..... .
E-lOA ••••.•••••••• ~ _ • • ~ . • , • • .0
E -1 DB ••••••••••••••• ~.•
E-l1 •.....
ill • •
_
••
II!,
e. . . . . . . . . . . . . . . . . . . .
E-12 - E-14 .•........••......
E-15 - E-17 ....•..•.. ~ • . ~ . . . .
t Zero in this column indicates an original page.
c
5
o
3
3
5
5
5
5
4
3
4
4
5
5
3
5
M-S03S
Change 5
Voltune II
LIST OF EFFECTIVE PAGES (contd)
tChange
No.
Page
No.
E-18 ~ E-19 .., ...... ~f!i
4t.,.,
E-20 - E-24 ....... ~ ......... ~ .. .
.•• ,
F-l
•••
-
•••••••• ,
••
. . . . . . . I! • • ,
•••.
~
F-2
• • • • • • • •' • • • •
G-l
- G-8 .................... , ..
~ ,
H-l
H- 2 BlaI1k ........
. . . . . . . . . . . . . II.
• • • • • • • • • • • • • . • . • • • II! • • lilt • • ,
t!. • ,
f!i •
.. _",
~. . . ~
•
••
•
•
1-1 - 1-3 ..•.....•.•.••.•. , ••
1-4 .................. ~., ....... .
1-5 - 1-24 ........, ......... ., ..
1-25
1-26
1-31
1-32
1-35
1-36
. . . . . . . . . . . . . , ••.•• ·0 •.•••.•••
- 1-30 .•.••..•...••.••.•
- 1-34 ••.•.•...•••••. ~ ••
................• _.tt. .. ..
~
Blank ..•...•.•.••••.•..•
K-1 - K-IS
K-16 Blank ••.•••••••••••
Page
No"
2
3
o
5
o
3
o
2
5
2
5
2
5
2
5
5
5
5
t zero in this column indicates an original page.
D
tChange
No.
M-5035
Volume II
FOREWORD
This is,.Revision 1 of Volume II of the two volume User's Reference Manual for
Compiler Monitor System (CMS-2) for use with AN/UYK-7 Computer. This
volume contains a description of the languages recognized by the Compiler and
Assembler, including a comprehensive description of macro generation. It
also contains a complete functional description of the AN/UYK-7 Computer
Instruction Repertoire.
(Volume I describes the Monitor, Loader, Librarian,
Peripheral Utilities, and System Operation.)
Revision 1 incorporates changes 1, 2, and 3 to the original document (NA VSHIPS
0967-028-0060). The reader will find the changed pages clearly indicated throughout the volume.
A document related to Volume II is the Compiler Monitor System-2(CMS-2)
User's Reference Manual, Volume I, M-5012. This document describes the
CMS-2 language as it is used in the preparation of programs for the CP-642Bhosted CMS-2/XCMS-2 compilers.
i/ (ii blank)
M-5035
Volume II
RECORD OF CHANGES
I
CHANGE
NO.
DATE
TITLE OR BRIEF
DESCRIPTION
ENTERED BY
-1
I
----.-J
i
I
I
I
t
i i'i
M-5035
Volume II
TABLE OF CONTENTS
Paragraph
Ti tIe
SECTION 1
INTRODUCTION
1.1
1.2
1.3
1.3.1
1.3.2
1.3.2.1
1.3.2.2
1.3.2.3
1.3.2.4
1.3.2.5
1.3.2.6
1.3.2.7
1.4
1.4.1
1.4.2
1.4.3
Purpose and Scope
Applicable Documents
System Capabilities
Hardware Requirements.
Software Components
Monitor
Object Code Loader
Librarian
Peripheral Utilities
Compiler
Assembler
System Tape Generator
System Operation
System Load and Initiation
Standard Input Processing
Standard Output Processing
I 1 ~1-1
11-1-2
. 11 -l-:J
11-1-3
11-1-5
II -1-6
11-1-6
11-1-7
11-1-7
11-1-7
11-1-8
11-1-8
11-1-0
11-1-0
11-1-9
11-1--9
SECTION 2
INTRODUCTION TO THE CMS-2 LANGUAGE
2.1
2.2
2.2.1
2.2.1.1
2.2.1.2
2.2.1.3
2.2.2
2.2.2.1
2.2.2.2
2.2.2.2.1 .
2.2.2.2.2
2.2. :~
2.3
2.:~.
1
2.:~.1
•1
2.:i.l.2
2 .:~. 2
2.:~.2. ]
2.:~. 2.2
2.3.2. :i
Major Features of CMS-2
Program Structure
Organization and Classification of
Identifiers
Forward and Backward References
Local and Global Definitions
External References and Definitions
CMS-2 Elements
System Data Designs
System Procedures
Local Data Designs
Procedures
Range of Identifiers
Declarative Statements
Program Structure Declaratives
Procedure Structure Declaratives and
Linking
Reentrant System Procedures
Data D(~(:1arations
Swi tch(~s
Variables
Tables
iv
11-2-1
11-2-1
11-2-3
11-2-3
11-2-3
11-2-4
11-2-5
11-2-7
11-2-8
11-2-9
11-2-9
11-2-9
11-2-10
11-2-10
11-2-13
11-2-14
1 I-2-}()
11-2-17
11-2-17
11-2-17
M-5035
Volume II
TABLE OF CONTENTS
(Continued)
Paragraph
SECTION 2
(Continued)
2.3.2.4
2.3.3
2.4
2.4.1
2.4.2
2.4.3
2.5
2.6
Arrays
Compiler Directive Declaratives
Uynamic Statements
Expressions
Statement Operators
Special Operators
High-Level Input/Output Statements
Program Debug Facilities
11-2-20
11-2-20
11-2-24
11-2-24
11-2-24
11-2-25
11-2-26
11-2-27
SECTION 3
BASIC DEFINITIONS
3.1
3.2
3.2.1
3.2.2
3.2.2.1
3.2.3
3.2.3.1
3.2.3.2
3.2.3.3
3.2.3.4
3.3
3.4
3.5
3.5.1
3.6
CMS-2 Alphabet
Symbols
Operators
Identifiers
Statement Label
Constants
Numeric Constants
Hollerith Constant
Status Constants
Boolean Constants
Delimi ters
Statements
Comments
Special Comments
Source Card Format
11-3-1
11-3-1
11-3-2
11-3-2
11-3-3
11-3-3
11-3-3
11-3-4
11-3-5
11-3-6
11-3-6
11-3-6
11-3-6
11-3-7
11-3-8
SECTION 4
DECLAR AT IVES
4.1
':l.l.l
4.1.2
4.1.3
4.1.4
4.1.5
4.1.6
Program Structure Declaratives
System Declarative (SYSTEM)
Head Declarative (HEAD)
End Head Declarative (END-HEAU)
System Data Design Declarative (SYS-UU)
End System Data Design Declarative
(END-SYS-DD)
System Procedure Declarative (SYS-PROC)
v
II-4-1
II-4-2
II-4-2
11-'1-~}
11-4-4
11-4-4
11-4-5
M-5035
Volume II
Change 3
TABLE OF CONTENTS
(Continued)
Paragraph
SECTION 4
(Continued)
4.1.,7
4.1.8
4.1.9
4.1.1U
4.1.11
4.1.12
4.1.13
4.1.14
I
4.1.15
4.2
4.2.1
4.2.1.1
4,,2.2
4.2 .. 3
4.2.4
4.2.5
4.2.6
4.2.7
4.2.8
4.2.8.1
4.2.8.2
4.2.8.3
4.2.9
4.2.10
4.2.10.1
4.2.10.1.1
4.2.1U.l.2
4.2.10.1.3
4.2.10.1.4
4.2.11
4.2.11.1
4.2.11.1.1
4.2.11.1.2
4.2.11.2
4.2.11.2.1
4.2.11.2.2
4.2.11.2.3
Reentrant System Procedure Declarative
(SYS-PROC-REN)
Local Data Design Declarative (LOC-DD)
Local Data Design Declarative (END-LOC-DD)
Automatic Data Design Declarative
(AUTO-DO)
End Automatic Data Design Declarative
(END-AUTO-DD)
Procedure (PROCEDURE) and End Procedure
(END-PROC) Declaratives
Function (FUNCTION) and End Function
(END-FUNCTION) Declaratives
End System Procedure Declarative
(END-SYS-PROC)
End System Declarative (END-SYSTEM)
Data Declarations
Variable Declaration (VRBL)
Parameter Declaration (PARAMETER)
Table (TABLE) Declaration
Field (FIELD) Declaration
Item-Area (ITEM-AREA) Declaration
Subtable (SUB-TABLE) Declaration
Like-Table (LIKE-TABLE) Declaration
End-Table (END-TABLE) Declaration
Packing Rules
No Packing (NONE)
Medium Packing (MEDIUM)
Dense Packing (DENSE)
Overlay (OVERLAY) Declaration
Data Referencing
Table Referencing
Whole Table Referencing
Item Referencing
Field Referencing
Item-Area Referencing
Transfer Declaratives (Switches)
Statement Switch (SWITCH) Declaratives
Index Swi tch
Item Switch
Procedure Swi tch (P-SW1TCIf) Declaratives
Index Procedure Swi tch
Double Procedure Switch
Item Procedure Switch
vi
11-4-6
11-4-6
11-4-7
11-4-7
11-4-8
11-4-8
11-4-11
11-4-13
11-4-14
11-4-14
11-4-15
II-4-18A
11-4-19
11-4-25
11-4-30
11-4-31
11-4-34
11-4-35
11-4-37
11-4-38
11-4-38
11-4-39
11-4-40
11-4-44
11-4-44
11-4-45
11-4-45
11-4-47
11-4-49
11-4-50
11-4-50
11-4-50
11-4-53
11-4-55
11-4-55
11-4-56
11-4-58
M-5035
Change 5
Volume II
TABLE OF CONTENTS (Continued)
Paragraph
Title
SECTION 4
(Continued)
4.2.11.3
4.2.12
4.2.13
4.3
4.3.1
4.4
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
Switch Referencing
Local Indexes
Data (DATA) Declaration
Control Declaratives
Mode (MODE) Declaration
System Linkage
External Definition (EXTDEF) Operator
External Reference (EXTREF) Operator
Transient Reference (TRANSREF)
Operator
Local Definition (LOCREF) Operator
Applications of EXTDEF, EXTREF and
TRANSREF
11-4-59
11-4-59
11-4-61
11-4-62
11-4-63
11-4-64
11-4-65
11-4-66
11-4-66
11-4-67
11-4-68
SECTION 5
DYNAMIC STATEMENTS
5.1
5.1.1
5.1.1.1
5.1. 2
5.1.3
5.1.4
5.2
5.2.1
5.2.2
5.2.3
5~2.4
5.2.5
5.2.6
5.2.7
5.2.8
5.3
5.3.1
5.3.2
5.3.3
5.3.4
5.3.5
5.4
Expressions
Arithmetic Expressions
Fractional Significance in FixedPoint Operations
Relational Expressions
Boolean Expressions
Literal 'Expressions
Functional Modifiers
Absolute Value (ABS) Modifier
Bit (BIT) Modifier
Character (CHAR) Modifier
Count (CNT) Number of Bits·
Core Address (CORAD) Modifier
File Position (FIL) Modifier
Record Position (POS) Modifier
Record Length (LENGTH) Modifier
Procedure Linking
Procedure Call
Function Call
Return (RETURN) Statement
Executive (EXEC) Statement
Procedure Switch Call
Replacement Statements
vii
11-5-2
11-5-2
11-5-3
11-5-5
11-5-6
11-5-8
11-5-9
11-5-10
11-5-10
11-5-12
11-5-13
11-5-14
11-5-14
1r-5-15
11-5~15
11-5-15
11-5-16
11-5-18
11-5-19
11-5-22
11-5-23
11-5-26
I
M-5035
Volume II
Change 4 _
TABLE OF CONTENTS (Continued)
Para&!:a}2h
Title
Page
(Continued)
5.4.1
5.4.1.1
5.4.1.2
5.4. 1.3
5.4.1.4
5.4.1.5
5.4. 1. 5. 1
5.4. 1. 5. 2
5.4.1. 5.3
5.4.2
5.4.3
5.4.4
5.5
5.5.1
5.5.2
5.5.3
5.6
5.6.1
5 .. 6.2
5 6.2 .. 1
5.6.2.2
5.6 2.3
5.6.2.4
5.6.3
5. 6~ 4
5.6.5
5 6.6
5.7
5.7.1
5.7.2
5.7 .. 2.1
5.7 .. 2.1.1
5.7.2.1.2
5.7.2.103
0
0
0
5.7.~.2
5.7.2.3
Assignment (SET) Statement
Arithmetic Assignment Statement
Literal Assignment statement
Status Assignment Statement
Boolean Assignment Statement
Multiword Assignment Statement
Multiword Table-to-Table Assignment
Statement
Multiword Item-to-Item Assignment
Statement
Single Word-to-Multiword Assignment
Statement
Exchange Statement (SWAP)
Shift (SHIFT) Operation
Pack (PACK) Operation
Control Statements
GOTO Statement Name
GOTO Switch Name
STOP Statement
Decision Statements
Logical Decision Statement
Table Search statement
FIND Statement
Search Decision Statement
Table Search Format
Table Search Examples
Validity Decision Statement .
Parity Decision Statement'
ELSE Statement
Nested Decision Statements
Statement Blocks
BEGIN Block
VARY Block
VARY Statement
Index Clause
WHILE Clause
UNTIL Clause
Resume (RESUME) Statement
End Vary Statement (END)
viii
II-5-26
II-5-27
II-5-31
II-5-32
. II-5-33
II-5-35
II-5-35
II-5-36
II-5-36
II-5-38
II-5-39
II-5-40
11-5-41
II-5-41
II-5-42
II-5-45
II-5-45
IT-5-46
II-5-48
II-5-48
II-5-50
II-5-51
II-5-52
II-5-54
II-5-55
II-5-56
II-5-58
IT-5-59
II-5-60
II-5-61
IT-5-62
II-5-64
U-5-65
IT-5-66
II-5-66
II-5-67
1\'1-5035
Volume II
Cha~e' 4
TABLE OF CONTENTS (Continued)
ParagraEh
5.7.2.4
5.7 03
5.7.3.1
5.70 3. 2
5.7.3.3
Title
(Continued)
Examples of VARY Blocks
FOR, Block
FOR Statement
Value Block
FOR Block Examples
Page
II-5-67
II-5-72
II-5-73
II-5-76
11-5-77
SECTION 6
INPUT/OUTPUT STATEMENTS
6.1
6.1.1
Input/Output Operations
INPUT Statement
viliA/ viiiB Blank
II-6-1
II-6-4
M-5035
Volume II
Change 4
TABLE OF CONTENTS (Continued)
Paragraph
Title
SECTION 6
( Continued)
6.1.2
6.1. 3
6.2
6.3
6.3.1
6.3.2
6.3.3
6.3.4
6.4
6.5
6.5.1
6.5.2
6.6
6.7
6.8
6.8.1
6.8.2
OUTPUT Statement
FORMAT Declaration
Encode and Decode Operations
Nonstandard File Control
FILE Declaration
OPEN Statement
ENDFILE Statement
CLOSE Statement
Device State Checking
Device Positioning
Positioning by Files
Positioning by Records
File and Record Position Determination
Record Length Determination
Device Identification Operations
DEFID Statement
CHECKID Statement
11-6-7
II-6-8
II-6-15
II-6-18
II-6-20
II-6-24
II-6-24
II-6-26
II-6-26
II-6-28
11-6-28
11-6-30
II-6-31
II-6-32
II-6-33
11-6-33
II-6-35
SECTION 7
COMPILE-TIME SYSTEM FACILITIES
7.1
7.2
7.3
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
7.3.7
7.3.8
7.4
7.4.1
7.4.1.1
7.4.1.2
7.4.1.3
7.4.1. 4
7.4.2
7.4.2.1
7.4.2.2
7.4.3
7.5
7.5.1
7. 5.2
Accessing the Compiler
Major and Minor Headers
Options Header Statement
SOURCE Option
OBJECT Option
LISTING Option
MONITOR Option
NONRT Option
Two-Level Diagnostics
MODEVRBL Option
STRUCTURED Option
Allocation Header Statements
Pooling statements
LOCDPOOL Statement
TABLEPOOL Statement
BASE Statement
DATAPOOL Statement
EQUALS Statement
Defining a Tag
Establishing Relative Locations
NITEMS Statement
Library Retrieval Header Statements
LIBS Statement
Retrieval Selection Statements
ix
II-7-1
II-7-3
11-7-5
11-7-6
II-7-7
II-7-10
II-7-11
11-7-12
II-7 -12
11-7 .... 12
1I-7-12A •
1l-7-12B
II-7-12B
11-7-14
II-7-16
II-7-17
II-7-18
II... 7 -19
11-7-20
11-7-21
11-7-22
11-7-22
II-7-23
11-7-23
M-5035
Change 5
Volume II
TABLE OF CONTENTS (Continued)
Paragraph
Title
Page
SECTION 7
(Continued)
7.5.3
I
7.5.4
7.5.5
7.6
7.6.1
7.6.2
7.6.3
7.6.4
7.6.5
7.6.5.1
7.6.5.2
7.6.5.3
7.6.5.4
7.6.6
7.6.7
7.6.8
. Correcting Elements During Library
Retrieval
DEP Statement
Key Specification
Miscellaneous Header Statements
SYS-INDEX Statement
MEANS Statement
EXCHANGE Statement
DEBUG Statement
CSWITCH Declarations
CSWITCH Selection Declaration
CSWITCH Brackets
CSWITCH Deletion
CSWITCH Example
EXECUTIVE Statement
CMODE Statement
SPILL Statement
II-7-24B
11-7-25
11 . . 7-25
II~7-27
11-7-27
11-7-27
·11-7-28
11-7-29
11-7-30
11-7-30
II-7-30A
lI-7-30B
II-7-30B
11-7-31
11-7-32
11-7 ... 32
SECTION 8
DEBUG STATEMENTS
8.1
8.2
8.3
8.4
8.5
Display Statement
Snap Statement
Range Declaration
Trace Statement
Procedure Trace (PTRACE)
11-8-2
11-8-5
11-8-7
11-8-9
11-8-11
SECTION 9
DIRECT CODE
9.1
9.2
9.2.1
9.2.2
9.2.2.1
9.2.2.2
9.2.2.3
9.2.2.4
9.2.2.5
9.2.2.6
9.2.3
9.2.4
9.2.5
9.2.6
9.3
Direct Code Statement Format
Direct Code Statement Repertoire
Direct Code Directives
Constants
Decimal Numbers
Octal Numbers
Floating-Point Numbers
Character Strings
Scaled Decimal Numbers
Scaled Octal Numbers
Data Expressions
Literals
Direct Constant Entries
Instruction Expressions
Processing Conventions
x
11-9-1
11-9-2
11-9-2
11-9-6
11-9-6
11-9-7
11-9-7
11-9-8
11-9-9
11-9-9
11-9-10
11-9-11
11-9-11
I1-9-i2
11-9-15
M-5035
Change
Volume II
TABLE OF CONTENTS
Paragraph
(Continued)
Title
SECTION 10
COMPILER OUTPUTS
10.1
10.2
10.3
10.4
10.5
10.6
Source Listing Format
Source and Mnemonic Listing Format
Local Cross-Reference Listings
Global Cross-Reference Listing
Symbol Analysis Format
Compiler Error Summary
11-10-1
11-10-2
11-10-4
11-10-5
11-10-6
11-10-12
SECTION 11
ASSEMBLER
11.1
11.1.1
11.1.1.1
11.1.1.2
11.1.1.2.1
11.1.1.2.2
11.1.1.2.3
11.1.1.2.4
11.1.1.2.5
11.1.1.2.6
11.1.1.2.7
11.1.1.3
11.1.1.4
11.1.1.4.1
11.1.1.4.2
11.1.1.5
11.1.2
11.1.3
11.1.4
11.1.5
11.1.6
11.1.7
11.1.8
11.1.9
11.1.9.1
11.1.9.2
11.1.10
11.1.11
11.1.12
11.1.13
11.2
11.2.1
Assembler Functions
Input Language Structure
Label
Statements
Fields
Subfields
Omission of Subfie1ds
Statement Continuation
Statement Terminatioti and Notes
Blank Card Images
Language Structure Summary
Notations Used In This Section
Coding Control Statements
Comments
. Printer Page Control
Directives
Addressing Sections
Segmentation
Assembly Base Addresses
Conditional Assembly
Library Usage
Macros
Expressions
Assembler Generation
Full-Word
Half-Word
Temporary Storage
Assembler Output
Assembly Ti~e Allocation
Linking
Control Card
Start Assembly (ULTRA)
xi
11-11-1
11-11-2
11-11-2
11-11-5
11-11-5
11-11-5
11-11-5
11-11-6
11-11-6
11-11-6
11-11-6
11-11-7
11-11-7
11-11-7
11-11-7
11-11-8
11-11-8
11-11-8
11-11-9
11-11-9
11-11-10
11-11-10
II-II-II
11-11-11
11-11-11
11-11-11
11-11-11
11-11-12
11-11-12
11-11-12
11-11-12
11-11-12
M-50a5
Change 3
Volume II
TABLE OF CONTENTS
(Continued)
Paragraph
SECTION 11
(Continued)
I
I
11.2.2
11.2.3
11.2.4
11.3
11.3.1
11.3.1.1
11.3.1.2
11.3.1.3
11.3.1.4
11.3.2
11.3.2.1
11.3.2.2
11.3.2.3
11.3.3
11.3.3.1
11.3.3.2
11.3.3.3
11.3.3.4
11.3.3.4A
11.3.3.5
11.3.3.6
11.3.3.7
11.3.3.8
11.3.3.9
11.3.3.10
11.3.3.11
11.3.3.12
11.3.3.13
11.3.3.14
11.3.3.15
11.3.3.16
11.3.3.17
11.3.3.18
11.3.3.19
11.3.3.20
11.3.3.21
11.3.3.22
11.4
11. 4.1
11.4.1.1
11.4.1.2
Stop Assembly (OFF)
Disable Object Output Code (OFO)
Sample Deck Using Control Cards
Source Statements
Label Field
Labels
Address Counter Declaration
Leading Asterisk (*)
Half-Word Instruction.Labels
Operation Field
Processor Instruction Mnemonics
Input/Output Controller Command
Mnemonics
Directive Mnemonics
Directives
ABS Directive
BYTE Directive
CHAR Directive
DO Directive
EMBED Directive
END Directive
EQU Directive
EVEN, ODD Directives
FORM Directive
LCR Directi ve
LIBS Directive
LIB Directive
LINK Directive
LIST, ELIST, and NOLIST Directives
LIT Directi ve
LLT Directive
PXL Directive
RES Directive
RF$ 'Directive
SEGEND Directive
SETADR Directive
WHD Directive
TAGTBL Directive
Mac ro Sta tement s
MACRO and END Directives
Para forms
Starred Labels Within Macros
xU
1I-11-14B
1I-11-14B
11-11-15
11-11-15
11-11-15
11-11-16
11-11-18
11-11-18
11-11-18
11-11-19
11-11-20
11-11-20
11-11-20
11-11-21
11-11-21
11-11-21
11-11-22
11-11-23
II -11-25
11-11-26
II-11-26A
II-11-26B
11-11-27
11-11-28
11-11-29
11-11-29
11-11-31
11-11-32
11-11-33
11-11-34
11-11-35
11-11-35
11-11-36
11-11-37
11-11-38
11-11-39
11-11-40
11-11-40
II -11-40
II -11-42
11-11-45
M,-5035
Change 2
Volume II
TABLE OF CONTENTS
(Continued)
SECTION 11
(Continued)
11.4.1.3
11.4.2
11.4.2.1
11.4.2.2
11.4.3
11.4.4
11.4.4.1
11.4.4.2
11.4.4.3
11.4.4.4
11.4.4.5
11.4.4.6
11.5
11.6
11.6.1
11.6.2
11.6.3
11.6.4
11.6.5
11.6.6
11.7
11.7.1
11.7.2
11.7.2.1
11.7.2.2'
11.8
11.8.1
11.8.1.1
11.8.1.1.1
11.8.1.1.2
11.8.1.1.3
11.8.1.1.4
11.8.1.1.5
11.8.1.1.6
11.8.1.1.7
11.8.1.1.8
11.8.1.2
11.8.1.2.1
11.8.1.2.2
11.8.1.2.3
Operand Field
Other Macro-Oriented Directives
NAME Directive
GO Directive
Summary of Macro Usage
Special Consideration When Coding Macros
Comments
Labels on a Macro Reference Line
Address Counter Declarations Within a
Macro
Externalizing Labels
Macro Reference Lines
Complex Macros
Address Counter Declarations
Expression Statements
Labels
Address Counter
Decimal Number
Octal Number
Floating Point Number
Fixed Point Number
Data Modes
Literals
Data Words
Constants
Character Strings
Operators
Symbols
Arithmetic Operators
~~ (Positive Exponentiation)
*- (Negative Exponentiation)
*1 (Binary Exponentiation or Scaling)
* (Arithmetic Product)
I (Arithmetic Quotient)
II (Covered Quotient)
+ (Arithmetic Sum)
- (Arithmetic Difference)
Logical Operators
** (Logical Product)
, ++' (Logical Sum)
-- (Logical Difference)
xiii
1 I -11-~5
lI-11-J6
11-11-16
11-11-48
11-11-49
II-II-50
I I-II-50
11-11-50
11-11-:11
11-11-31
II-II-53
II-l1-~3
II-II-54
11-11-35
II-II-56
II-II-56
II-ll-!l7
II-II-57
11-11-:18
II-II-59
II-II-59
II-II-59
11-11-60
11-11-60
11-11-61
11-11-62
11-11-63
11-11~65
11-11-65
11-11-65
11-11-66
11-11-66
11-11-67
11-11-67
11-11-67
11-11-67
11-11-68
11-11-68
11-11-68
11-11-68
M-5035
Volume II
Change 5
TABLE OF CONTENTS
Paragraph
(Continued)
Title
SECTION 11
(Continued)
I
11.8.1.3
11.8.1.3.1
11.8.1.3.2
11.8.1.3.3
11.8.2
11.8.3
11.8.4
11.9
11.9.1
11.9.2
11.9.2.1
11.9.2.2
11.9.2,.3
11.9.2.4
11.9.2.5
11.9.2.6
11.9.2.7
11.9.2.8
11.9.2.9
11.9.2.10
11.9.2.11
11.9.3
11.9.4
11.9.4.1
11.9.4.2
11.9.4.3
11.9.4.4
11.9.4.5
11.10
11.10.1
11.10.2
11.10.2.1
11.10.2.2
11.10.3
11.10.4
11.11
11.12
Conditional Operators
= (Equal)
> (Greater Than)
< (Less Than)
Operator Priorities
Parenthetical Grouping
Re10catabi1ity
Assembler Outputs
Side-Sy-Side Listing,
Error Codes
Express i on (E)
Duplicate (D)
Undefined (U)
Instruction (I)
Relocation (R)
Truncation (T)
Overflow (0)
Name (N)
Level (L)
Floating Point (F)
Warning (W)
Generation Formats
Listing of Labels
Level 0
Leve 1 1
LLT Sample Listing
Undefined Labels
Cross Reference Listing
Assembler Diagnostics and Status
Assembly Errors
Assembler Internal Errors
Core Overflow
Level Overflow
Library Call Errors
Peripheral Errors
Source Deck Organization
Special Considerations
11-11-68
11-11-09
11-11-69
11-11-69
11-11-70
11-11-71
11-11-71
11-11-73
11-11-73
11-11-73
11-11-73
11-11-73
II -11-74
lI-11-74
11-11-74
11-11-74
11-11-74
11-11-74
11-11-75
Ir-11-75
U-11-75
11-11-15
11-11-76
11-11-76
11-11-76
11-11-76
11-11-76
11-11-77
11-11-77
11-11-77
II -11-79
11-11-79
11-11-79
11-11-79
II -11-79
11-11-80
11-11-83
SECTION 12
INSTRUCTION REPERTOIRE
12.1
12.1.1
12.1.1.1
AN/UYK-7 Computer Functions
Register Format and Usage
Program Address Register
xiv
11-12"'1
11-12-2
11-12-2
M-5035
Volume II
TABLE OF CONTENTS
(Continued)
Paragraph
SECTION 12
(Continued)
12.1.1.2
12.1.2
12.1.2.1
12.1.2.2
12.1.2.3
12.2
12.2.1
12.2.2
12.2.3
12.2.4
12.2.5
12.2.6
12.2.7
12.2.7.1
12.2.7.2
12.3
12.3.1
12.3.2
12.3.3
12.3.4
12.3.5
12.3.6
12.3.7
12.3.8
12.3.9
12.3.10
12.3.11
12.3.12
12.4
12.4.1
12.4.2
12.4.3
12.4.4
12.4.5
12.4.6
12.4.7
12.4.8
12.4.9
12.4.10
12.4.11
Addressable Registers, Control Memory
Modes of Operation
Interrupt State
Task State
Active Status Register
AN/UYK-7 Instruction Formats
Format I Instructions
Format II In~tructions
Format III Instructions
Format IV-A Instructions
Format IV-B Instructions
Indirect Word
I/O Commands Formats
Normal Mode
ESI Mode
Symbolic Conventions
f - Function Code Designator
a - Arithmetic Code Designator
k - Operand Interpretation Code
Designator
b - Index Register Code Designator
i ~ Indirect Address Code Designator
~. - ~ase Register Code Desig~ator
y - Operand Code Designator
f2t f3, f4, - Subfunction Code Designators
m - Shift Counter Field
.
m - Monitor Interrupt Cod~ Designator
c - Chain Flag Code Designator
j - Channel Number
Computer-Instruction Repertoire
Load and Store Instructions
Arithmetic Instructions
Jump Instructions
. Instructions Involving Comparison
Operations
Instructions Involving Logical Operations
Shift Instructions
Instructions Referencing Control Memory
Interrupt Handling Instructions
Miscellaneous Instructions
Extension Mnemonics
Input/Output Instructions
xv
11-12-3
11-12-8
11-12-8
11-12-8
11-12-9
11-12-12
11-12-12
11-12-13
11-12-13
11-12-14
11-12-14
11-12-15
11-12-16
11-12-16
11-12-17
11-12-17
11-12-17
11-12-17
11-12-22
11-12-25
11-12-25
11-12-25
11-12-25
11-12-20
11-12-26
11-12-26
11-12-26
.11-12-20
11-12-26
11-12-3S
11-12-41
II -12-~*>
11-12-57
11-12-02
11-12-68
11-12-71
11-12-79
11-12-84
11-12-92
11-12-98
M-5035
Change 2
Volume II
TABLE OF CONTENTS
Paragraph
(Continued)
Title
APPENDIX A
CHAR ACTER CODES
APPENDIX B
SUMMARY OF SYSTEM STATEMENTS
A-I
B-1
APPENDIX C
SUMMARY OF SERVICE ROUTINE CALLING SEQUENCES
C-1
APPENDIX 0
CMS-2 COMPILER RESERVED WORD LIST
D-l
APPENDIX E
COMPILER ERROR MESSAGES AND LIMITS
E-l
APPENDIX F
SUMMARY OF ASSEMBLER ERROR CODES
F-1
APPENDIX G
AN/UYK-7 CONDENSED REPERTOIRE
. APPENDIX H
CMS-2 SYSTEM TAPE DUPLICATION
APPENDIX I
SYSTEM MODIFICATION
CMS-2 KEYWORD INDEX
xvi
G-l
H-1
I-I
M-5035
Ch H n~Jf' 4
Volume II
L1 ST OF 1LUJSTH AT] ONS
Figure
I-I
2-1
2-2
2-3
2-4
2-5
2-6
2-7
2-8
:.!-<)
2-10
2-11
2-12
2-13
2-14
5-1
6-1
7-1
11-1
11-2
11-3
11-4
ll-S
11-6
11-7
1l-B
11-9
11-10
Ti t Ie
Typical Minimum Configuration
CMS-2 Compile-Time System
Structuring of Data Designs and Proceuurps
Source Deck Forms
System Procedure Design
Range of Program Identifiers
CMS-2 Program Structure Declaral ivps
A Compile-Time System Struc1un~
Statement Execution Flow Involvin~l Pro(,t't\url'
Calls
Table Structure
Fi('lt! Assignments for a Tablp
Tab 1(' S tor age S eq U(~ncp
Parent Table Relationships
A Three-Dimensional Array
Array S 1 or age Sequenc(~
VARY Flow
Input/Output Data Flow
Element s of a Compi le-Timt' Sys tern
Assembler Pass 1 Data Flow
Assembler Pass 2 Data Flow
Sample Deck Using Control Cards
Sample Deck to Assemble ,Load, and EXt'cUl1'
a Single Program
Sample Cr os s -He f e f('ncp Li s 1 i n~1
Source Dt'ck Oruanizalion for a Singlt' Prouram
Source Deck Organization for Asst'mblinu
Using Library Input
Source Deck Organization for Two or Mort'
U(~ppnden t ('roU rams 0 r S(~gn1t'n t s
Source Dpck Organizat ion for Two or ~lorl'
Independent Programs or S(~~)ml'nt s
Source Deck Assembly Tinw Allocat ion
~
I 1-1--1
11-2-·1
1 1 -~-()
11-2-7
11-:2-0
}1-:2-1u
11-:2-1]
11-:2-1:2
11-:2-1'-1
II-:2-HI
II-:2-1q
Il-:2-Jt}
J l-:2-:2J
I 1-:2-:2:2
11-:2-:2:{
I 1-.-)- 63
I 1 -()-:~
11-7-:2
11-11-:1
I 1-11--1
11-11-1.-)
I 1-11-1 -;-
1I-II-7t'
II -1 1-{,I)
I I-II ....U I
11-]]-l\:2
I I -I 1-tl:2
I 1-1 I _n:~
I
M-5035
Change 4
Volume II
LIST OF TABLES
Table
•
4-1
4-2
5-1
5-2
5-3
5-4
6-1
7-1
9-1
11-1
11-2
11-3
11-4
12-1
12-2
12-3
12-4
12-5
12-6
12-7
Ti tie
Examples of Variable Declarations
Examples of Type-a Fields
Arithmetic Operators
Relational Operators
Boolean Operators
Truth Table
CMS-2 Operating System Standard Files
Equals Expression Summary
Instruction Sub-field Valid Forms
Operators and Priorities of Operators
Data Modes for Operator Items
Relocation of Binary Items
Single and Double Precision Expressions
Central Processor Control Memory Address
Assignments
AN/UYK-7 Computer Modes of Operation
Active Status Register
Instruction Repertoire Symbol Definitions
General Operand Interpretation (Memory To
Ar i t hme tic)
General Operand Interpretation (Arithmetic
To Memory)
General Operand Interpretation (Normal
Replace Instruction Interpretation)
xviii
11-4-20
11-4-32
11-5-2A
11-5-6
11-5-6
11-5-8
11-6-2
11-7-20
11-9-19
11-11-6 l
11-11-65
11-11-72
e
II~11-72
11-12-4
11-12-8
11-12-9
11-12-19
11-12-23
11-12-23
11-12-24
M-5035
SECTION 1
INTRODUCTION
1.1
PURPOSE AND SCOPE
This user's reference manual contains the information
operators who wish to use or control the operation of
(CMS-2) developed for use with the AN/UYK-7 Computer.
Group developed this system for the Department of the
Command, under contract number N00024-70-C-1142.
required by programmers and
the Compiler-Monitor System
Univac Systems Programming
Navy, Naval Ship Systems
This manual consists of two volumes with contents as follows:
Volume I
- Moni tor, Loader, Librarian, Peripheral Utilities, and System
Operation - contains descriptions of command formats
recognized by the Monitor, Loader, Librarian, and
Peripheral Utilities. This volume also contains
descriptions of calling sequences required to reference
Monitor service routines and descriptions of operator
commands recognized by the CMS-2.
Volume II - Compiler, Assembler, and Instruction Repertoire - contains a
description of the languages recognized by the Compiler
(both high level and low level) and the Assembler,
including a comprehensive description of macro generation.
Volume II also contains a complete functional description
of the AN/UYK-7 Computer ~nstruction repertoire.
While this manual contains comprehensive descriptions of command syntax,
calling sequences, and messages generated by various components of the system,
detailed descriptions of the functions performed by each component, the interfaces between the components, and functions performed by the hardware are all
beyond the scope of this manual.
11-1-1
M-5035
1~2
APPLICABLE DOCUMENTS
The following documents augment the content of this manual to provide a
complete description of the Compiler-Monitor System 2 (CMS-2) developed for the
AN/UYK-7 Computer:
NAVSHIPS 0967-029-5430
Consists of" five parts containing
Program Specification for
the basic functional specifications
Compiler-Monitor System
for each of the five major components in the system:
for use with the AN/UYK-7
Computer.
Part 1 - Compiler
Part 2 - Librarian
Part 3 - Monitor
Part 4 - Loader
Part 5 - Peripheral Utilities
NAVSHIPS 0967-029-5440
Consists of five parts containing
Program Design Plan for
the detailed descriptions of
Compiler-Monitor System
functions performed by each of the
for use with the AN/UYK-7
five major components in the system:
Computer.
Part 1 - Compiler
Part 2 - Librarian
Part 3 Monitor
Part 4
Loader
Part 5 - Peripheral Utilities
NAVSHIPS 0967-051-6291
Contains the hardware description
AN/UYK-7 Digital Data Computer
of the computer used by the system.
Un j \' ac DSn Doc umen t, PX 3699A
Contains the hardware description
UNIVACu 1532 Input/Output
of the I/O console used by the
Console Technical Description
system.
Univac DSD Document, PX 3662
Contains the hardware description
UNIVAcID 1540/1541 Magnetic
of the magnetic tape units used
Tape IJnits Technical Description
by the sys tern.
11-1-2
M-5035
Univac OPO Document, UP2543, Rev I,
UNIVA& 1004 Card Processor Reference
Contains the hardware description
of the card reader, card punch,
and high-speed printer used by
the system.
1.3 SYSTEM CAPABILITIES
CMS-2, also referred to as the system, provides optimum utilization of the
AN/UYK-7 Computer and associated peripherals in a serial batch proces'sing
environment. The system is user oriented and designed to optimi~e the
capabilities,of the system for all users. Its major features are:
1.
Provides the simplest possible operational characteristics
consistent with the full utilization of the system.
2.
Provides a simple yet flexible means of generating, storing, and
updating computer programs at the individual installation.
3.
Provides a broad and easily utilized system of program construction,
manipulation, and debugging aids.
1.3.1
Hardware Requirements
The system operates on an AN/UYK-7 Computer and its associated peripherals.
The ~inimum equipment required to efficiently operate the system consists of:
I.
AN/UYK-7 Computer with 3 memory banks.
2.
UN IV AcE> 1004 Card Reader, Punch, and Printer or equlv·alent.
3.
Six UNIVAOV 1240 or 1540 Magnetic Tape Transports or equivalent.
4.
UNIVAC® 1532 Input/Output Console and Keyboard or equivalent.
Figure 1-1 illustrates a typical minimum configuration.
11-1-3
M-5035
AN/UYK-7
Computer
with 48K
of Memory
1004 Card Reader
Punch, and
Printer
1532 I/O
Console and
Keyboard
I
I
I
I
I
t
r---I
I
I
I
IL___ _
Figure 1-1.
Typical Minimum Configuration
.I 1-1-4
*
Optional
addition
M-5035
1.3.2
A
Software Components
s~ftware
component of CMS-2 is a program which is designed to perfQrm a
specific function (e.g., compile a program, build a library) using an
external data-base (e.g., source, object code). The component is designed
to operate under the Monitor (a component that performs control functions)
which determines its final operational allocation and provides it with a
centralized input/output capability.
Thus, a component represents a module
in the system which may be tailored to operate ·under the Executives with
.
little anticipated change in the logic.
These changes would necessarily
reflect the idiosyncrasies of the particular executive, notably in the area
of the Executive call.
CMS-2, for the initial development, consists of the
followi ng components:
1.
Monitor
2.
Object Code Loader
3.
Librarian
4.
Peripheral Utilities
5.
Compiler
6.
Assembler
7.
System Tape Generator
The system utilizes magnetic tape as the system storage medium.
The tape
format effectively provides the features which follow:
1.
Efficient run time retrieval of programs.
2.
Independent system initialization.
3.
Potential system expansion.
4.
Total system delivery.
5.
Complete
sys!~em
update, maintenance and reproduction.
The system storage medium consists of two parts:
and 2) the system library.
11-1-5
1) the operational library
M-5035
The operational library contains the Monitor and components which make up the
system; in addition, it contains directory information required for locating
programs on the operational library, for relocatable loading (not initruction
modification), and for initating execution.
This library occupies the first
file on the system tape and is wiitten in a format compatible with the NDRO .
bootstrap routine. The Monitor and the directory information are loaded when
the bootstrap routine is initiated from the computer control console. This
provides the independent system initialization.
The system Library contains the following:
1.
Object code of all run time routines (implicit)
2.
Object .code of all intrinsic built-in routines.
J.
Object code of Monitor and all components.
4.
Compools of selected data designs for Monitor and components.
1.3.2.1
0
Monitor
The Monitor (described in Volume I, Section 2) is a serial batch processing
operating routine utilizing a single AN/UYK-7 unit processor.
Major functions
available through the Monitor are requested by the user through control cards
described in Volume I, Section 2.
The Monitor includes the Centralized Input!
Output Module which supports I/O on the various devices attached to the
AN/UYK-7.
The Monitor also provides for handling of all classes of processor
interrupts and interfaces to allow user programs to access vital interrupt
inform~tion
(e.g., flo~ting point error). The Monitor is responsible for
retrieval of components from the operational library on the system storage
medium (system tape).
It also maintains system core allocation algorithm.
1.3.2.2 Object Code Loader
The Object Code Loader (described in Volume I, Section 3)
pe~forms
instruction
modification to object code produced by the CMS-2 Compiler and CMS-2
Assembler.
The Lvclder allows optimum code to be generated by the AN/UYK-7
language processors by combining independently compiled program segments
under a common base register or registers, thus reducing the number of base
register manipulation instructions which must be executed •
.11-1-6
M-5035
1.:\.2.:\
l.ibrarian
The Librarian (described in Volume I, Section 4) provides a convenien.t, f!asyto-use method of storing, ~etrieving, and updating both source statements and
rclocatable object code.
The Librarian is capable of
u~dating
(i.e., adding.
deleting, changing) both entire elements or individual items within an element.
1.3.2.4
Peripheral Utilities
The Peripheral Utilities (described in Volume I, Section 5) provide a
variety of functions for manipulating data files on the peripheral devices.
These functions include:
1.
Position specified magnetic tape at the start of a file (designated
by a file mark).
2.
Position specified magnetic tape at the start of a record within
a file.
3.
Transfer tape data into memory (read tape).
4.
Transfer memory data onto tape (write tape).
5.
Compare the contents of two tapes and print out any differences.
1.3.2.5
Compiler
The Compiler (described in Volume II Sections 2 through 10) accepts both high
and low level languages.
The high level language is statement oriented and
the low level is computer instruction mnemonic oriented.
These languages
describe the desired program, and the Compiler generates object code data that
the Object Code Loader places into memory as an executable program.
The
Compiler input is called source code and the Compiler output is called object
code.
lI-I-7
M-5035
1.3.2.6
Assembier
The Assembler (described in Volume II, Section 11) accepts a computer instruction mnemonic oriented language that gives the programmer absolute control of
the structure of his program.
In addition, the Assembler provides programmers
with a level of assistance beyond that normally associated with
~n
assemblf!r
class of language processors. The assembler accepts programmer definitions
of pseudo-operations (called Macros) and then uses the definition whenever
tht> programmer references the pseudo-operations.
As with the Compiler, the
Assembler input is called source code and the Assembler output is called
obj ec t code.
1.3.~.7
System Tape Generator
The System Tape Generator (described in the System Programmer's Manual),
provides an easy-to-use method of updating system tapes that have a directory
scheme identical to the CMS-2 tape.
The System Tape Generator accepts input
that contains the necessary data to change tape directory information (e.g.,
number assigned to a new, component, names of 'new records. names of records to
be deleted), and then, in conjunction with the Object Code Loader, generates
a new system tape complete with required directories.
1.4
SYSTEM OPERATION
System operation consists of initiating the system, preparing inputs to the
system, and accepting outputs.
1.4.1
System Load and Initiation
System loading is initiated using the AN/UYK-7 Magnetic Tape Hardware Bootstrap
Program.
The resident Monitor is loaded at a specified location dependent on'
the number of operable memory banks currently available.
The necessary allo-
cation-dependent words in the resident Monitor are then initialized.
The
Monitor's data and the operational library directory for the Monitor are then
loaded from the system tape, and the Monitor requests the current time, date,
operating mode (open or closed shop), and standard selections of input/output
devices.
Any other flags or variables maintained by the Monitor and requiring
initialization are preset.
11-1-8
M-5035
1.4.2
Standard Input Processing
Once initiated, the Monitor starts reading card image data from the
standard input device.
This device is normally the card reader;
select(~d
howf~'/('r,
Ihc
Monitor accepts commands to process data from either magnetic tape or t.he I/O
console as standard input data.
In each of these cases, the input data must
be in card image format.
The data read from the standard input device consists of:
1.
Monitor control cards which contain commands to the Monitor inclu(ting
commands to load and activate other system components or user programs.
2.
Inputs to an activated system component or user program which contain
both commands to the program and input data to be processed by the
program.
In general, when the Monitor
pas~es
control to either an(Ither system component
or user program, the component or program (as applicable) starts reading data
from the standard input devices; for example, the card images following the
image commanding the Monitor to load and activate the Compiler make up the
source code input to the Compiler.
On the other hand, most of the card images
following the image commanding the Monitor to load and activate the Librarian
are commands to the Librarian directing its manipulation of data stored on
magnetic tape.
1.4.3· Standard Output Processing
The system has three basic outputs:
I.
Standard output consisting of object code cards normally produeed on
the card punch. The Monitor accepts a command to place this data on
magnetic tape in obj ec t code card image format instead of punchiny
cards.
2.
Hardcopy output consisting of high-speed printer-oriented data, such
as program listings, normally produced on the UNIVAC\!!) 1004 High
Speed Printer.
The Monitor accepts a command to place this data on
magnetic tape in printer format instead of printing the data.
3.
Console messages consisting of up to 72 characters of operatororiented data (request to mount a tape) typed out on the I/O console.
II-I-9/II-I-IO Blank
M-5035
Change
·t
SECTION 2
I~TROUUCTION
~.l
MAJOR
fE~rURES
Of
TO TilE CMS-2 LANGUAGE
CMS~2
CMS-2 is a problem-oriented compiler language developed to meet the needs of
real-time data processing and scientific applications.
Its major
featur\~s
are described below:
a•
I
C MS-2 permits program modularization and adherence
to the concepts of structured programming.
b.
Input to the CMS-2 Compiler is statement-oriented, rather
than card-oriented
o
The source card format is free-form
and may be arranged for user convenience.
c.
A broad range of data types is definable in CMS-2.
These
types include fixed-point, floating-point, Boolean,
Hollerith (character), and status.
d.
CMS-2 permits direct reference to, and manipulation of,
character and bit strings.
e.
Programs may include segments of symbolic machine language,
referred to as direct code.
The remainder of this section presents a number of definitions, discusses
various concepts fundamental to the CMS-2 language, and presents a summary of
the specific capabilities of the language.
2.2
PROGRAM STRUCTURE
A CMS~2 program is composed of an orderly set of statements.
These statements
are composed of various symbols that are separated by delimiters.
categories of symbols are processed:
Three
operators, identifiers, and constants.
The operators are language primitives assigned by the Compiler to indicate
11-2-1
M-5035
specific operations or definitions within a program.
Identifiers are the
unique names assigned by the programmer to data units, program elements, and
statement labels. Constants are known v~lues, and may be numeric (decimal or
octa}) , Holleri th strings, status values, or Boolean.
CMS-2 statements are written in a free format and terminated by a dollar sign.
Several statements may be written on one card, or one statement may cover
many cards. A statement label may be placed at the beginning of a statement
for reference purposes.
Tht! c~llection of program statements developed by the programmer for input to
the CMS-2 Compiler is known as the source code for a program and is composed
of the following two basic types of statements:
1.
Declarative statements - Provide basic control information to
the Compiler and define the structure
of the data associated with a particular
program.
2.
Dynamic statements
- Cause the Compiler to generate executable machine instructions (object code)
for a program.
These instructions, when executed at program run time, manipulate the data
to solve the desired problem.
Declarative statements defining the data for a program are grouped into units
called data designs. Dat~ designs consist of the precise definition of
temporary and permanent data storage areas, input areas, output areas, and
special data units such as program switches.
The dynamic statements that
cause manipulation of data or express calculations to solve the programmer's
problems are grouped into procedures.
These data designs and procedures
may be further grouped or classified to form elements of a CMS-2 program.
At compile-time, the CMS-2 Compiler recognizes a system as any collection of
program
~l~ments
that may be compiled as an entity independent of any inter-
facing proyram elements.
eXf!Cut jon package or
j
A compile-time system may comprise an entire
t may be only a small part of a large program.
11-2-2
M-5035
Before presenting any further discussion concerning the classification and
grouping of procedures and data designs into elements and the combining of
these elements to form systems, several concepts fundamental to the CMS-2
language must be explored.
2.2.1
Organization and Classification of Identifiers
The CMS-2 Compiler uses several conventions to classify data definitions and
program identifiers that are defined in a user's program. These techniques
assist the programmer in structuring his program and simplify the development
and maintenance of the programs.
2.2.1.1
Forward and Backward References
The order in which definitions and references to these definitions appear in
the source input to the Compiler is quite important.
defined in data designs.
All data units are
Within the data design where it is defined, an
identifier may generally be referenced either before it is defined (a forward
reference) or after it is defined (a backward reference).
However, references
to data from outside a data design can only be backward; that is, the data
must have already been defined before it can be referenced.
Since data
definitions always appear in data designs, and since data references usually
appear in procedures, procedures generally fOllow the data designs defining
the data referenced by the procedure.
References to statement labels within procedures and calls to procedures may
be forward or backward, but must obey the following local/global limitations.
2.2.1.2
Local and Global Definitions
The Compiler further structures the referencing of identifiers by classifying
all identifiers in a program as either local or global.
Local definitions
are those identifiers that can be referenced only from within the system
element where they are defined. Global definitions are those identifiers
that can be referenced both from inside the element where defined and from
outside by subsequent system elements in the source input stream.
11-2-3
M-5035
Figure 2-1 is a pictorial representation of a CMS-2 compile-time system consisting of three elements: A, B, and C. Since a definition in the CMS-2
language is said to be local if it is valid only within a single element of
the system, any definition valid within element B of Figure 2-1 is said to
be local to element B. A global definition in the system of Figure 2-1 is
valid within elements A, B, and C.
An alternative definition of the term "system" can be derived from this localglobal concept, i.e., a system is the largest global area within a CMS-2
compilation.
System
Figure 2-1.
2.2.1.3
CMS-2 Compi Ie-Time System
External References and Definitions
The CMS-2 Compiler provides the capability of compiling one or more elements
of a large system independently.
For. example, all three elements of the
system of Figure 2-1 could be compiled together as a single compile-time
system.
Alternatively, elements A and B could be compiled together as a
11-2-4
M-5035
eompi l(~-timc system and then element C could be compi led separately as another
compil(!-time
syst(~m.
The compiler-produced output in each case is the computf!r-
executable instructions (object code) for the various system elements.
Later,
the object code for element& A, B, and C may be combined by a relocatable
linking loader program and executed together.
Presumably, there is some cross-referencing of data and procedures between
the three elements of our example.
In order to compile element C separately,
any references made by element C to definitions in elements A and B must be
handled in a special manner by the Compiler and the Loader.
References of
this type are called external references because they involve definitions
that are external to element C and, in this case, external to the compiletime system as well.
Those definitions in elements A and B that are referenced
externally by element C are called external definitions because they are
definitions that are available to elements external to A and B.
There are various ways in which definitions and references may be declared
external.
In some cases the Compiler will automatically treat a definition
or a reference as being external.
In other cases, external references and
definitions must be explicitly declared by the programmer.
It should be noted that only global definitions may be externally referenced
or defined. Local definition~ are never valid outside, or external to, the
element in which they are defined.
2.2.2
CMS-2 Elements
As described in the previous paragraphs, data designs may be grouped OT
classified to form elements, of a CMS-2 program. One or more elements then
make up a
co~pile-time
system.
The ordering and content of program elements
is subject to the rules governing range and classification of definitions.
The two types of elements within a compile-time system are system data designs
and system procedures.
System data designs contain global data definitions.
System procedures contain one or more procedures and may also include local
data design packages. A local data design, as the name implies, contains
data definitions that are local to the system procedure in which the local data
11-2-5
M-5035
design appears.
This structuring of data designs and procedures into program
elements within a system is illustrated in Figure 2-2.
I
System
System Procedure
Procedure
Local Data Design
Figure 2-2.
The
hi~rarchy
System Data Design
~
Structuring of Data Designs and Procedures
shown in Figure 2-2 indicates that, within a system, system
data designs are equal in importance to system procedures; they are the
program elements of a system.
Keeping in mind the restrictions against
forward referencing, a source deck may take various forms, as illustrated
in Figure 2-3.
The technique illustrated in Figure 2-3 (A) is dften used
program.
i~
constructing a
Since definitions within a system data desi9n are global to the
balance of the system, system procedures may appear in any order following
the system data design(s) defining the referenced data.
Interspersing data
designs and procedures as in Figure 2-3 (8) (e), however, has an advantage,
especially in a large system, of maintaining data definitions in meaningful
groups close to the associated procedures.
Note that Figure 2-3 illustrates several examples of a compile-time system,
but these systems might be only a small part of an entire execution patkage.
In addition, each compile-time system of Figure 2-3 might be further broken
doWn into two or more compile-time systems.
In this manner, corrections
may be made to a particular system procedure, which may then be recompiled
without compiling the entire execution package again.
11-2-6
M-5035
System
System
Data Design
D~ta De~ign
System Procedure
System Procedure
System
System Procedure
System
Data Design
System Procedure,
System
Data Design
System Procedure
System Procedure
System Procedure
System
Data Design
System Procedure
System Procedure
System Procedure
A
B
C
~
Figure 2-3.
Source Deck Forms
System data designs and system procedures are the smallest program units that
may be compiled individually. A compile-time system may consist of a single
system data design or system procedure, but it cannot consist of a single
local data design or procedure.
2.2.2.1
System Data Designs
Data designs contain descriptions of the attributes of the various data units
(e.g., tables and,variables) and their relationship to each other.
As the
Compiler processes these descriptions, it assigns and reserves core storage
locations for subsequent references to the data units.
Data designs may
contain value information as well, which will cause the
object code to preset the data.
Co~piler
11-2-7
to generate
M-5035
Definitions within a system data design are global to the system.
all automatically externally defined by the Compiler.
They are
There is, therefore,
no need to specifically externally define any data within a system data
design.
2.2.2.2 System Procedures·
System procedures are composed of procedures and local data designs.
A
system procedure usually contains one procedure with a name identical to that
of the system procedure name.
of that system procedure.
This procedure is known as the prime procedure
The prime procedure entry point is automatically
externally defined by the Compiler and is global to the system.
Other system
procedures, and data designs may reference prime procedures at will.
Thus,
the prime procedure of a system procedure is considered a global procedure
(hence, the term system procedure).
A system procedure may contain more than one procedure, as illustrated in
Figure 2-4.
Local Data Design
"'
Procedure A
System
>Procedure
Procedure B
Local Data Design
Procedure C
..I
Figure 2-4.
System Procedure Design
For example, the system procedure of Figure 2-4 contains three procedures and
two local data designs.
If this system procedure were named "B", procedure B
would be the prime procedure of the system procedure and its name would be
11-2-8
M-5035
global to the entire system.
However, procedures A and C, along with the
data units of the two data designs, would be local to the system procedure
and could not be referenced from outside the system procedure.
2.2.2.2.1
Local Data Designs.
The difference between system data designs
and local data designs is that, while system data design definitions are
global to the system and automatically externally defined, local data design
definitiops are local to the system procedure within which they are contained;
any necessary external definitions must be explicitly indicated within the
data design. In addition, a local data design may not be compiled separately
from its associated system procedure.
The local data design is intended to be used for the definition of data units
referenced only by the procedures within its system procedure.
The use of
local data designs reduces the possibility of duplication of data names in a
large system because of their limited range of definition.
2.2.2.2.2
Procedures.
Procedures contain CMS-2 statements and machine-
language statements. They may not contain data definitions or data values
for previously defined data. Procedures contain the statements from which
the Compiler generates the instructions that actually perform the steps
necessary to the solution of the problem. They must be included withiri a
system procedure element at compile-time.
2.2.3
Range of Identifiers
As can be seen from the previous discussions, the organization of CMS-2
statements into system data designs and system procedures to form the
elements of a program is closely related to the rules concerning classification
of identifier definitions and references. These rules on the range of
identifiers (i.e., local/global definitions and forward/backward references)
are summarized i'n Figure 2-5.
11-2-9
M-5035
Range Within Which
They Can Be Referenced
Identifiers
Global
Prime Procedures
Throughout the compile-time system.
Data defined in a
System Data Design
Within thnt system data design
and in all system elements that
follow.
Local Procedures
Within the same system procedure.
Data defined in a
Local Data Design
Within that local data design and
the remainder of the system procedure
containing t.he local data design.
All Statement Labels
Within the system procedure.
Local
Figure 2-5.
2.3
Range of Program Identifiers
DECLARATIVE STATEMENTS
The CMS-2 declarative statements provide the Compiler with information about
program structure and"data element definitions.
result in executable code.
pr"'.lr~:-;l
Declaratives generally do not
Declaratives are classified in three categories:
structure declaratives, data declaratives', and Compiler directive
(or program control) declaratives.
2.3.1
Program Structure Declaratives
ln the development of a CMS-2 program, the dynamic and data definition statements arc organized into procedure and data design packages.
CMS-2 program
structure declaratives are used to define the source program organization by
specifically delimiting the structure type as shown in Figure 2-6.
exampl(~
An
of the correct organization of program structure declaratives for a
compile-time system is presented in Figure 2-7.
11-2-10
M-5035
Beginning Delimiter
Ending Delimiter
SYSTEM
ENO-SYSTEM
. Delimits a compile-time system
SYS-UU
ENU-SYS-OO
Oelimits a system data design
within a compile-time system
SYS-PROC
END-SYS-PROC
Delimits a system procedure
within a compile-time system
LOC-DD
END-LOC-DD
Delimits a local data design·
within a system procedure
PROCEDURE
END-PROC
Delimits a procedure within a
system procedure
FUNCTION
END-FUNCTION
Delimits a function within a
system procedure
SYS-PROC-REN
END-S YS-PROC
Delimits a reentrant system
procedure within a compiletime system
AtrTO-DD
END-AlITO-DD
Delimits a reentrant data design
within a reentrapt system
procedure
HEAD
END-HEAD
Delimits a header package within
a compile-time system
Figure 2-6.
CMS-2 Program Structure Declaratives
11-2-11
::;:
I
U1
o
w
U1
15
11
20
S'AJ~ PI LIEI
I I
I I I
I
I I
I I , I I I I
l>IA,T1A1),E,C-1
,....
......
I
N
I
.....
N
25
ISlt,SIT, E,MI
IN, £, ALl, £$,
30
35
,.it I I ,
, , , I I
' ' 'iT-I/,DIN,S,
I(,III bt -IH,E' I AI)'
Is,t,SI-I),l, pt., 1 I
,V,t,A,R, $1
I
I
IE IWI:bI-ISI'fISI-~I)1
I I
I I
,
I
I I
I I I
,
I I I
I I I
I
I
IVI~,8tL.,
U,B),R"IC,
I
1
I
Major
Header
1.$1 , ,
I I
1
I
I
15IDlul~CIEI ~
, , 1 I
I
40
System Data Design
'I
CompileTime
System
ISli1SI-,P,IC"o,G, 1$1 I , , , I , I 1
IP,~,D'c.,E' I)'''' ,R,EI kJ,PLJ>,A ,TIE, I~I
Is IElll
IY IEIAIRI I,.jOI "I ~1711t
IRltITIUI~INII!' I
,$,
I,,
I I I I I I
IFIIIIJ>'-IPIRIOICI IUlp,l),AITI" ~I I
IE,IIIl>I-Rly,SI-IPIRl o lc, 1$1
IE ,N,J>,-,S 1'1 ISjT ,[ "" I ,$, , I
Figure 2-7.
I
,
I I
I
I
I
A Compile-Time System Structure
System
Procedure
M-5035
2.3.1.1
Procedure Structure Declaratives and Linking
The dynamic statements that describe the processing operations of a program
are grouped into blocks of statements called procedures.
The overall
purpose of a program, its design, and to some extent, its size, influence
the programmer's decision as to whether one or several procedures will be
declared. The transfer of program control from one procedure to another
requires the observance of procedure linking rules for such transfers.
The concept of procedure linking may best be described by posing a situation
from which those linking requirements desirable for use by a programmer may
be derived. As a program design develops, it becomes apparent to the
programmer/designer that there is a requirement to execute a given set of
statements at several points (within several procedures) in the total program.
As ~ach of these points is encountered, it would be advantageous to have a
program control capability of branching to a common routine (procedure),
processing, and returning to the next instruction following the program
control branch point (or procedure call).
Along with this procedure call
should be a capability of simultaneously and automatically passing that
data, from the calling procedure to the called procedure where the data
is processed. This automatic data transfer is defined as input of parameters, that
cedure.
is~
data input to the called procedure from the calling pro-
Upon completion of processing by the called procedure, it also should be
possible to automatically pass the results of the processing from the called
procedure to the calling procedure when program control is returned to the
calling procedure. This is defined as output of parameters, that is, data
output to the calling procedure from the called procedure.
Additionally, there should be a capability of specifying an instruction
address (statement label) to which the called procedure may transfer program
control in the event it does not perform its normal processing due to invalid
input data or processing checks indicating invalid or illogical results.
This is defined as an abnormal exit (abnormal return).
11-2-13
M-5035
The foregoing is the capability available to provide linkage among all
procedures. Furthermore, all or part of these linkage capabilities may be
used, depending upon the requirements of the program •. The syntactical
requirements for defining a procedure and making a procedure call are
presented in Sections 4 andS, respectively.
Figure 2-8 is a schematic
representation of the procedure linkage concept.
2.3.1.2
Reentrant System Procedures
Certain programming applications require that one or more of the procedures
comprising the program package or system f6r that application be structured
such that they may be shared by more than one task concurrently.
Procedures
of this type are said to be reentrant procedures.
The principal characteristic of a reentrant routine is that it must be divided
into two logically and physically distinct parts: a constant part and a
variable part. The constant part (instruction part) is loaded into memory
once and services all tasks requiring this routine.
One copy of the
part (data area) belongs to each task that is being serviced.
~ariable
This copy is
usually created (that is, it is allocated memory space) when the task is
initiated.
Within the CMS-2 language, a programmer has the capability of declaring a
system procedure to be reentrant.
In this case, the object code generated
by the Compiler for all procedures within this system procedure will be
invariant (constant) under execution.
In addition, a special type of local
data design called an automatic data design may be declared within a reentrant
system procedure.
An automatic data design is used for the definition of
temporary storage and procedure parameters used by the reentrant procedures
within the system procedure. Within a reentrant system procedure, the
Compiler automatically performs the required separation of the constant part
(procedures) and the variable part (automatic data designs).
of the variable part may then be loaded into
m~mory
Multiple copies
along with a single copy
of the constant part and the reentrant system procedure may be executed
simultaneously by more than one task or central processor.
1I-2~14
M-5035
-- ... - -,
Procedure B
Procedure M
Entry
Entry
r--" ,
CMS-2
Dynamic
I Statements
~
I
I
I
I
•
I
I
I-J
Procedure B Call
Next inst. after call
•I Procedure G Call
I
I
J
~ --- ....
Return
~---------------------~
-
Procedure G
•
Next inst. after call ~
;
I
I
I
I
I
1
t
I
I
Procedure R
-,
Entry
I-
Procedure R Call
------,
I
Return
t
~ ----,
I
Next inst. after call
L_r-J
I
I
·1
I
I
~.I-J
I
I
I
I
I
Entry
i-
Procedure F Call
Next inst. after call
I
I
I
~I
.. "' }
Procedure F
I
.~
Branch to Abnormal
Sequence or
Continue with
Normal Sequence
I
I
I
I
I
INorma 1
I
L!!£.t.E!..~.
I
t
I
I
Tes t Sequence
I
J
-
...,
I
I
I
I
I
I
I
r- _.J
I
I
I
Abnormal
Processing
Sequence
I
I
.J
r·
I
I
•
I
AbnorI
mal
I
Return .-~---- ____ -.JI·
~
I
t
I
I
Return
4---.. t---------...J
Figure 2-8.
Statement
Exe~ution
Flow Involving Procedure Calls
11-2-15
M-5035
It must be clearly understood that the Compiler provides only this separation
capability. The responsibility for loading these programs into memory and
allocating space for automatic data designs is properly a function of loaders,
monitors, and executive programs. Furthermore, the CMS-2 language and
Compiler provides the capability, through this separation function, of
implementing such sophisticated programming te~hniques as recursion and
reentrance after suspension. However, much of the responsibility for this
type of programming must be borne by the programmer/designer and the executive
program for the application.,
2.3.2
Data Declarations
Data declarations by the programmer define the format, structure, and
of data elements within a compile-time
are as follows:
1.
2.
Swi tches:
a.
Statement switches.
b.
Procedure switches.
Variables:
a.
b.
3.
.
system.
Computational:
1.
Integer.
2.
Fixed-point.
3.
Floating-point.
Non-computational:
1.
Hollerith.
2.
3.
Boolean.
Status.
Tables:
a.
One-dimensional.
b.
Multidimensional (array).
c.
Subtables.
11-2-16
ord~r
The three major data types
M-5035
2.3.2.1
d.
Like-tables.
e.
Item areas.
f.
Fields.
Switches
Switches provide for the transfer of program control to a specific location
within a compile-time system. Switches contain a set of identifiers, or
switch' points, to facilitate program transfers and branches.
points represent program
addres~es
The switch
of statement labels or procedure names.
Transfer of control to a particular switch point is usually determined by
the value of a programmer-supplied index.
2.3.2.2 Variables
A variable is a singular piece of data.
or words.
statement.
It may be one bit or multiple bits
A variable may be preset to a desired value within the definition
The variable may contain a constant value or its value may
continuously change during program execution.
Multiple variables
~aving
identical attributes may be defined in a single declarative statement.
types
th~t
Data
may be specified fora variable are arithmetic (fixed- or floating-
point), Holleri th(character string), status (defined states of condi tion), or
Boolean (true or false).
An initial value, or preset, may be specified for
the variable in the declarative statement.
2.3.2.3 Tables
Tables hold ordered sets of identically structured information.
unit of data structure in a table is the item.
The common
An item consists of k computer
words where k Js selected by the'programmer or Compiler. A table may contain
n items, where n is programmer selected. Thus the size of the table in
number of required computer words for
st~rage
becomes the product of nand k.
A table structure is illustrated in Figure 2-9.
11-2-17·
M-5035
Word 0
Word 1
Word.2
Item 0
1
2
3
4
n
Figure 2-9.
Table Structure
11-2-18
Word k
M-5035
Items may be subdivided into fields.
Fields are the smallest subdivision
of a table. A field may be a partial word, a full word, or a multi-word
subdivision. Data types that may be specified for a field are arithmetic
(fixed- or floating-point), Hollerith (character string), status (defined
states of condition), or Boolean (true or false). Field~ may overlap each
other. Data may be preset into a field.
is illustrated in figure 2-10.
Word 0
Word 1
y
(
Item 2
An example of field assignments
Word 2
y
I I I,
t
\..
\
Field B
'~--------~T--------~~
Field A
Field C
Figure 2-10.
Field Assignments for a Table
CMS-2 tables may be defined as horizontal or vertical. This specification by
the programmer dictates the manner in which the table words will be stored in
core. The words of a horizontally declared table are stored such that words
o of
all items are ~tored sequentially, followed by words I of all items, etc.
The words of a vertically defined table are stored such that all words of
item 0 are siored sequentially, followed by all words of item 1, etc. Figure
2-11 illustrates the storage pattern for horizontal and vertical storage.
Word 0
Word 1
Word 2
Word o. Wor.d 1 Word 2
Item 0
Item 0
Item I
Item 1
Horizontal Storage
Figure 2-11.
Vertical Storage
Table Storage Sequence
11-2-19
M-5035
The CMS-2 table structure also allows the programmer to define a subset of
adjacent items within a table as a subtable.
The programmer may also allocate
outside the table a working storage area, designated as an item-are~which will
automatically take on the same field format as that defined for the table
items. Additionally, the programmer may declare tables kno~n as like-tables
having identical field format as the parent table but having a different
number of items. Figure 2-12 illustrates these ~escribed relationships to
the parent table.
2.3.2.4
Arrays
An array is an extension of the table concept for storing ordered sets of
identically structured information previously defined as items.
Arrays may
be conceptually visualized as rows, columns, and planes of items. An example
of an array (three-dimensional) is presented in Figure 2-13. As with tables,
the basic structural unit of an array is the item.
The array item may
consist of k computer words with fields defined as desired.
The pattern
for storage of an array within core is illustrated in Figure 2-14.
2.3.3
Compiler Directive Declaratives
Certain CMS-2 declarative statements specify control information to the
Compiler.
These declaratives direct Compiler action as to allocation mode,
listing options, system index registers, program debug features, base numbering system interpretation, data pooling requirements, and the computer mode of
operation within which the designated program is expected to run.
These
declarative statements may be located in major headers if the control applies
to the entire compile-time system, in minor headers if the control applies
to a system element, or within a system element.
The rules for placement
and range of effective action for the individual declaratives are defined
fully in Section 7.
11-2-20
M-5035
Item 0
I
2
Parent
Table
3
Subtable
4
5
Subtahle
6
7
8
II
II I I
Item-Area
Like-Table
2
3
Figure 2-12.
Parent Table Relationships
II~2-21
M-5035
Column 0
Column 2
Column 1
Row 0
1
/
.
2
\
\
\\
,
I I
\\
~o\ umn 0 Column
\
I
I /
3
Plafe p
,I /
Row 0
1
.
2
/ /
3
"
,
/
/ //
/
/ /
,,
\
\
\ ,Plane 1
,
,,
,
\ \
,
\
\ \
I I
I /
/ /
I /
/
/
\
\
\
,,,
,
/
\\
,.,\
\\
'.
/ /
/
/ /
/ /
/
1
\ \
\
\ \
\ \
\
/
Item 1, 2, 0
Word k
Word l'
Figure 2-13.
A Three-Dimensional Array
11-2-22
Column 2
M-5035
Plane 0
r
Column 0
,
r
Word
o
Word
1
Word
2
Column 1
r
Word
3
Row 0
1
2
Repeat the pattern with next plane, commencing at
Row 0, Column 0, Word O.
Figure 2-14.
Array Storage Sequence
11-2-23
M-5035
2.4
DYNAMIC STATEMENTS
CMS-2 dynamic statements specify processing operations and result in executable
code generation by the Compiler o
A dynamic statement consists of an operator
followed by a list of operands and additional operators.
An operand may be a
single name, a constant, a data-element reference, or an expression.
2.4.1
Expres s ions "
Arithmetic expressions may include standard addition, subtraction, multiplication, and division operators, as well as exponentiation, mixed-mode values,
and inline redefinition of the scaling of fixed-point numbers.
hierarchy of operation evaluation is used.
An algebraic
A relational expression performs
a comparison between two similar operands as specified by a relational
operator.
There are four types of comparisons available:
1.
Arithmetic, involving the comparison of signed arithmetic values
(fixed, floating, or mixed).
20
Hollerith, involving a left-to-right, character-by-character
comparison.
3.
4.
Boolean, involving single bit comparisons.
Status, involving the comparison of status values.
Arithmetic operators used in CMS-2 are + (addition), - (subtraction),
/ ( d i vis ion), ~~ ( mu1 tip Ii cat ion), )!c
e xp 0 ne nt i a t ion), and •• ( i n1 i nesc ali ng) •
)!¢
(
Relational operators are EQ (equal), NOT (not equal), LT (less than), GT
(greater than), LTEQ (less than or equal) and GTEQ (greater than or equal).
Boolean operators used in CMS-2 are AND, OR, XOR (exclusive or) and COMP
(logical not).
A CMS-2 expression may include algebraic, relational, and
Boolean operators.
2.4.2
Statement Operators
The CMS-2 statement operators allow the programmer to write his program in an
easy-to-Iearn, problem-oriented language.
Major CMS-2 operators and their
functions are summarized on the following page.
11-2-24
M-5035
Change -!
Function
Op(~rat()r
SET
Per f () r msea 1c u1ali 0 nsur ass i Uns a val ut' t 0 () nf! 0 r m0 rt~
d a tau nit s • The ass i g nnH' n t may 11 ear i t hmel ie, II 0 lIe r i t h ,
.status, Boolean,' ur multi-word.
SWAP
Exchanges the contents uf two
(;OTO
Alters program flow directly or via a statement switch.
IF
Expresses a test situation for conditional execution of
one or more statements.
VARY
Establishes a program loop to repeat execution of a
specified group of statements.
FINU
Searches a table for data that satisfies specified conditions.
PACK
Transfers bit strings into a data area.
SHIFT
Shifts a string of bits.
FOR
data
units.
Selectively executes one of a set of statement
blocks based on the value of a controlling expression.
2.4.3 Special Operators
Special operators are available in CMS-2 to facilitate references to data
\
structures and operations on them.
These operators and their functions ate
summarized below.
Operator
Function
BIT
To reference a string of bits in a data element.
CHAR
To reference a character string.
COR AD
To reference a core address.
ABS
To obtain the absolute value of an expression.
POS, FIL
To pOSition a magnetic tape file.
LENGTH
To obtain an input/output file length.
eNT
To obtain a count of bits set.
CAT
To concatenate character strings.
11-2-25
I
M-5035
Change 4
HIGH-LEVEL INPlH/OlJfPlJr STATEMENTS
CMS-2 high-level input/output (I/O) statements permit the program to communicatt
with various hardware devices while running in a non-real-time environment
under a Monitor system.
When CMS-2 I/O statements are used by the programmer,
the Compiler generates specific calls to run-time routines that must be
loaded wit.h the user's program.
The run-time routines are designed to link
with the Monitor system and communicate with its I/O drivers.
I/O declarative
and dynamic statement operators and their associated functions are summarized
below.
Operator
Function
FILE
Defines the environment and pettinent information concerning
an input or output operation, and reserves a buffer area
for record transmission.
OPEN
Prepares an
CLOSE
Deactivates a specified file and its external device, if
appropriate.
~xternal
device for I/O operations.
Directs an input operation from an external device to a
FILE buffer area.
OIHPlJr
Directs an output operation from a FILE buffer area to an
external device.
FORMAT
Defines the desired conversion between external data blocks
and internal data definitions.
ENCOUE
Uirects transformation of data elements into a common area,
with conversion in accordance with a specified FORMAT.
DECODE
Directs unpacking of a common area and transmittal to data
uni ts as speci f ied by a FOHMAT declarat ion.
EI\UF 1I.E
Plac('s an
CIILCKIU
lJi
LJEF llJ
lJ i Tf ~ e 1 s the
Tf~e t
(~nd-()f-file
mark on appropriate recording mediums.
scheck! nlj an III header or 1 abe I on a fi Ie.
0
u t put of a n IlJ }1( ~ cJ d (~ ron a f j
I J -2-:!()
1e •
M-5035
2.l)
PROGRAM DEBUG FACILIT IES
CMS-2 debug statements may be placed in the source language of a user's
program to assist in program checkout. These statements may reference any
data units defined within the system. Machine code is generated by the
Compiler to call on run~time debug routines. The debug routines communicate
with the Monitor system during program execution to print the desired checkout
data onto the system output device (high-speed printer).
Five program checkout statements are provided. Output code is generated only
if the corresponding statements are enabled in the program header information.
A programmer may then control and select the debug tools as needed.
The debug
operators and their functions are summarized below.
Operator
Function
DISPLAY
Causes the contents of machine registers and/or specified
data units to be formatted and printed on the system output.
SNAP
The contents of a data unit are printed and stored. Subsequent executions cause a printout only when the data
contents are modified.
RANGE
A high and low value are specified for a data unit. Each
tihte the data is modified in the program, a message is
printed if the value falls outside the range.
TRACE
A printout is generated for the execution of each CMS-2
statement between TRACE and END-TRACE boundaries.
PTRACE
Each CMS-2 procedure call encountered in the program being
executed is identified by calling and called procedure
names.
11-2-27/II-2-28 Blank
M-5035
SECTION 3
BASIC DEFINITIONS
A CMS-2 program consists of an ordered set of sentences composed of symbols
and delimiters.
The symbols and delimiters are formed using characters from
the CMS-2 alphabet.
3.1
CMS-2 ALPHABET
The CMS-2 alphabet consists of letters, digits, and marks as described below:
a.
Letter - One of the 26 letters of the English alphabet, A
through Z, written in capital letter form.
b.
Digi t
- One of the ten Arabic numerals, 0 through 9.
c.
Mark
- Any additional special character that may be input
to the Compiler via the Monitor I/O routines.
The
commonly used marks that have significance to the
CMS-2 Compiler are listed below, along with their
common name:
+
/
~::
(pI us)
)
(right parenthesis)
(minus)
$
(dollar sign)
(comma)
(slash)
(asterisk)
(prime)
(decimal point, period)
~
(left parenthesis)
(space)
(space)
3.2 SYMBOLS
CMS-2 symbols are composed of strings of one or more letters, digits, or marks
from the CMS-2 alphabet. There are three types of symbols:
1.
Operators
2.
Identifiers - Names by which programs reference their
environment.
- Words that represent unchanging values (constants
Constants
3.
- Indicating operations or specifications.
in the mathematical sense).
11-3-1
M-5035
3.2.1
Operators
Operators are symbols that denote an action or delineation to the Compiler.
They :ell the Compiler "what to do" or "what it is" as opposed to other
symbols that tell "where it is" or "how much it is".
The following symbols are examples of CMS-2 operators; the symbols are divided
into five categories:
Arithmetic
+
I
Relational
Boolean
Dynamic
Declarative
EQ
AND
PROCEDURE
TABLE
LT
OR
FIND
FIELD
GT
COMP
SET
LOC-DD
A special class of operators provides machine control interface.
are entirely machine dependent.
These symbols
For the AN/UYK-7 Computer, these symbol s are:
KEYl, KEY2, KEY3, STOP, STOPS, STOP6, and STOP7.
3.2.2
Identifiers
Identifiers are ::Jrbitrary names used to label various units of a CMS-2 program
so that these units may be referred to by unique names.
A name is composed of
from one to eight letters and digits; the first character of a name must be a
letter
o
All CMS-2 identifiers (except statement labels, procedure names, and
abnormal exits) must be defined by or within a data declaration, which associates the identifier with its specific attributes.
In order to prevent ambiguities in the sotirce input for a CMS-2 program, the
Compiler does not allow the programmer to declare or define identifiers that
duplicate operator symbols in the CMS-2 language.
of those symbols which are reserved words.
Appendix D presents a list
These reserved words are not
available to the programmer for use as identifiers. In addition, any programmer
expecting to make use of CMS-2 run-time routines (high-level debug, input/
output, or mathematical routines) should avoid the use of identifiers beginning
with the characters "RT".
This will prevent possible conflict at load time
with global identifiers defined and referenced within the CMS-2 run-time
library.
11-3-2
3.2.2.1
Statement Label
A statement label is a special identifier in a CMS-2 program; the statement
label is used to label a dynamic statement.
A statement label derives its
definition by context, since it is always followed immediately by a period.
When reference is made to the statement label during an operation within the
program, the period is omitted and the label is then known as a statement
name.
More than one statement label may be applied to a dynamic statement.
NOTE
Statement labels may appear only on dynamic
statements. Hence, the period following a name
signifying a statement label may be used only
between the PROCEDURE and END-PROC declarations
and may never be used with direct code statement
labels.
3.2.3
Constants
A constant denotes a value that is known at compilation time.
m~nipulate
CMS-2 programs
the following four types of data:
1.
Numeric values consisting of rational numbers.
2.
Hollerith or literal values consisting of strings of characters
from the CMS-2 alphabet.
3.
Status values consisting of independent sets of arbitrarily
named conditions.
4.
3.2;3.1
Boolean values consisting of the two values:
true or false.
Numeric Constants
A numeric value, positive or
n~gative,
may be represented by a de£imal or
octal constant as described below:
1.
Decimal - Consists of one or more base-IO digits (0-9).
is the normal mode of the Compiler.
This
The number
enclosed in parentheses, preceded by the letter D,
is also acceptable and may be used when a non-decimal
mode is specified to the Compiler (see Section 7).
11-3-3
M-5035
Change 3
- Consists of one or more base-8 digits (0-7) enclosed·
2. Octal
in parentheses and preceded by the letterO.
These constants may be preceded by a plus sign if positive and must be preceded by a
minus sign if negative.
A radix point appearing within or at the beginrting of the constant identifies the constant
as a mixed number or fraction. The number of fractional bits attributed to the constant
equals:
1. 3. 2*n+l truncated to an integer, if constant is decimal, or
2. 3 *n, if constant is octal
where n is the number of fractional digits. If the radix point is omitted or occurs at
the end of the constant, it identifies the constant as an integer (whole number).
Examples
a.
b.
-94
0(77)
(negative decimal integer)
(positive octal integer)
c.
88.1
(positive mixed decimal number)
d.
-O( .64)
(negative octal fraction)
e.
-0(492.3)
(negative mixed decimal number)
To avoid writing many zeros, it is sometimes convenient to express a very large or·
very small numeric constant as a coefficient multiplied by an exponent.
Examples
a. .00023
a
=
.23 ','-'. 10 -3
8
8
b.
180000°10
=
18 10 .,'-'. 10
c.
1500°10
=
1.5
10
r.
J
-'. 10 4
','
=
o(. 23E-3)
=
18E5
--
1.5E4
3
= 7.3 8 '.,-'. lOa
= O( 7.3E3)
730°8
Both the coefficient and the exponent must have the same Dase. If the number is octal,
it must be preceded by the 0 descriptor.
d.
3. 2. 3. 2 Hollerith Constant
A Hollerith constant is composod of a string of characters
preceded by the descriptor H.
11-3-4
e~closed
by parentheses and
M-5035
Examples
1.
2.
H(NOTNOW)
H(REWINDilil)
3•
H() ) LAST)
In the second example, the two blanks are considered part of the constant.
The third example illustrates the use of a right parenthesis as part of
the constant within a string of characters.
Each right parenthesis must
be represented by two consecutive right parentheses since the
terminated by a single right parenthesis.
~tring
is
Encoding this constant results
in the characters:
) LAST
Any character, including blank, is a valid character in the Hollerith
set and may be used in source programs to construct character-string
constants.
NOTE
If a Hollerith constant appears as the last term of a
parenthesized expression, at least one blank must
separate the right parenthesis signifying the end of
the Hollerith constant from the right parenthesis
signifying the end'of the expression.
3.2.3.3 Status Constants
A status constant is a mnemonic used to describe one of the possible values of
a data unit.
The Compiler assigns a unique value (beginning with zero) to each
status constant that is associated with a data unit.
In
subseque~t
statements,
as the programmer sets and tests the data unit using the mnemonic, the Compiler
sl~bstitutes
the assigned value to differentiate possible conditions.
constants must
be,uniqu~ fo~
Status
a given data unit but may be reused for other
data units.
A status constant may be composed of any characters of the CMS-2 alphabet with
the exception of a single prime
The status constant may have the same
(f).
number of characters as an identifier.
Status constants are always enclosed
by single primes, as illustrated on the following page.
11-3-5
M-5035
Change 1
'REPAIR'
'STANDBY'
'ALERT'
'AIRBORNE'
3.2.~.4
Boolean Constants
A Boolean constant denotes one of the logical values of Boolean algebra (true
or false) and is represented as a binary integer:
Logical
3.3
Binary
True
I
False
o
DELIMITERS
Blanks serve to separate symbols in a CMS-2 program.
a single blank accomplishes the same result as a
blanks.
When used as a separator,
~equence
of two or more
All marks described in paragraph 3.1 may be used as delimiters.
Some marks, such as $, have unique delimiting uses.
When a mark appears
between two CMS-2 symbols, blanks are not needed as separators although they
may be used if desired.
J.,I
STATEMENTS
CMS-2 statements are dynamic and declarative and
symbols and delimiters.
~re
composed of a string of
In general, a declaration defines a structural con-
figuration of data and a dynamic statement defines the processing operation
that manipulates the data.
sign ($).
All CMS-2 statements are terminated by a dollar
More than one statement may appear on one card and a statement may
be continued on several cards.
Null statements are recognized by the compiler
when a statement terminator is immediately followed by a statement terminator
and is otherwise syntactically correct.
3.5
COMMENTS
ComnH'nts,
jnlf!nd{~d as eJarifyinu
text, havp no oper"ational f'ff(!(:t on a prourarn
and may he included in either of the following two ways.
11-3-6
M-5035
Change 3
1.
Within a statement by enclosing the comment within two
consecutive single-prime symbols, as illustrated below:
VRBL Z I"NTEGER" 14 "BITS" S"IGNED" $
NOTE
A symbol may not be broken by this type of comment;
i.e., V"A"R"IA"BL"E" would not result in the symbol
VRBL.
2.
As a separate statement the use of the operator, COMMENT:
COMMENT THIS ROUTINE COMPUTES SQUARE ROOTS $
NOTE
A dollar sign may be expressed within either type of comment
by coding it as two consecutive dollar signs.
3.5.1
Special Comments
Comments beginning in card column 11 (the first column of the statement field)
are treated as special cases by the Compiler.
If the statement is one of the
following, the Compiler performs the indicated action on the listing:
Action
COMMENT6«EJECT $
COMMENT 6( (LINE~!; $
Eject to the top of the next listing page.
COMMENT6( (SKIPn $
Skip n lines, where n is a number from 1 to 9.
Print a line of asterisks (*).
If a comment statement beginning in card column 11 is not one of the special
indicators, the Compiler replaces the word COMMENT with a single asterisk (*)
in column II and lists the comment after skipping a line.
Input:
COMMENT THIS IS AN EXAMPLE
$
Output:
::;
Till S IS AN EXAMPLE
$
These special commenls allow programmers to produce listings that have a
greater narrative format. than list.ings without t.he special comments feat.ure.
11-3-7
3.6
SOURCE CARD FORMAT
All CMS-2 source cards contain a card identification field and a statement
field. The card identification field occupies columns 1 through 10; the
statement field occupies columns 11 through 80.
Card columns 1 through 10 have no operational effect on the Compiler.
the suggested use of the card identification field is as
However,
follow~:
ao
Columns 1 through 4
- Program identification.
b.
Columns 5 through 8
- Card sequence number.
c.
Columns 9 through 10 - Insert number.
The statement field has a free format. Statement labels, operands, operators,
etc", may occur anywhere in columns 11 through 80. Each statement is terminated
with a $.
There can be more than one statement per card or a statement may
require several cards
o
No continuation card indicator is needed when a CMS-2
statement exceeds one card.
throu~h
The statement continues in columns 11
of each succeeding card until a dollar sign is encountered.
80
If a symbol or
contiguous string of characters is to span two cards', the first part must end
in column 80 of card 1 and the second part must start 1n column 11 of card 2.
For example, if the eight-character symbol STMTLABI is started in .column 78
of one card, the remaining five characters must begin in column 11 of the
next card.
While packing of statements on cards reduces the size of the input deck, the
CMS-2 Compiler does not format the listing of the input statements
statements will
~ppear
in the same form on the listing.
11-3-8
o
Packed
M-5035
SECT ION ;1
DECLARATIVES
The CMS-2 declarative statements provide the Compiler with information about
program structure and data element definitions.
result in executable object code.
groups:
Declaratives generally do not
Declaratives may be divided into three
program structure declaratives, data declaratives, and control
declaratives.
LL I
PROGRAM STRUCTURE DECLARAT IVES
The following program structure declaratives are used to define the organization
of a CMS-2 program:
a.
SYSTEM and END-SYSTEM statements delimit a compile-time systemo
b.
HEAD and ENU-HEAD statements delimit headers within a compiletime system.
c.
SYS-DD and END-SYS-DD statements delimit a system data design
d.
within a compile-time system.
SYS-PROC (or SYS-PROC-REN) and END-SYS-PROC statements delimit
a system procedure within a compile-time system.
eo
LOC-DD and END-LOC-DD statements delimit local data designs
within a system procedure.
f.
AurO-DO and END-AUTO-DD statements delimit automatic data
designs within a system procedure.
g.
PROCEDURE and
END~PROC
statements delimit procedures within a
system procedure.
h.
FUNCTION and END-FUNCTION statements delimit functions within
a system procedure.
Each of these statements is discussed in detail in the following paragraphs
in the order in which they generally occur in a CMS-2 source program (see
Section 2 for further information on program organization).
II-4-1
M-5035
Change 3
4.1.1
System Declarative (SYSTEM)
The SYSTEM declarative specifies the beginning of
ac6mpile~time
system.
This
must always be the first statement of a CMS-2 source program.
Format
I
name
SYSTEM key-specification
$
comments
Explanation
Name
The identifier by which this system is known.
SYSTEM
Declares a compile-time system to be known by the
identifier above.
I
Key specification Optional (see Section 7 for explanation).
Comments
'1.1.2
Programmer remarks.
Optional.
Head Ueclarati ve (HEAU)
The HEAD declarative serves to identify a group of major or minor Compiler
control statements •. The major header control statements of a compile-time
systpm must immediately follow the SYSTEM declarative and must be terminated
with an ENU-HEAU declarative.
Minor header control statements immediately
-precede the system data design or system procedure to which they apply.
Since the HEAD declarative is primarily for library control purposes, its
use in source input to the Compiler is generally optional (see Section 7 for
further information on the HEAD statement).
Format
I
narne
HEAD
key-specification
comments
$
Explanation
I
Name
The identifier by which this header is known.
HEAU
Declares a major or minor header.
Key specification Optional (see Section 7 for explanation).
Comments
Programmer remarks.
11-4-2
Optional.
M-5035·
-1.1.:3
End Head Declarative (END-HEAD)
This declarative terminates a major or minor header within a compile-time
system. Its use is required after major header control statements but is
optional after minor header control statements.
Format
END-HEAD
name
$
~xplanation
END-HEAD
Declares the end of a header.
Name
The header identifier.
Optional.
Example
:S:A:~:Pt:£: : : ~~f:r:~b~:~s:o:u:~c:£:
I
IE~I~I-IHIEIAI~
I I
I
I I
I
I I I I I
/41
I
,: :::::: ::::
I I
I / I I I I
I
I
I I
I I
I I I
I
I
I I
I
11-4-3
I I I
M-5035
Change 3
401.4
System Data Design Declarative (SYS-DD)
This declarative specifies the beginning of a collection of data element
definitions that are global to the system; that is, these data elements are
known to all system procedures that follow in the compile-time system.
A
system data design is a basic element of a CMS-2 program.
/'
Format
I
name
SYS-DD
key-specification
comments
$
Explanation
I
Name
The identifier by which this system data design is known.
SYS-DD
The system data design declarative.
Key specification Optional (see Section 7 for explanation).
Comments
Programmer remarks. Optional.
4.1 5 End System Data Design Declarative (END-SYS-DD)
0
This declaration terminates a system data design'within a compile-time system.
Format
END-SYS-DD
name
$
Explanation
END-SYS-DD
Declares the end of a system data design.
Name
The identifier by which this system data design is known.
I 1-4-4
M-5035
Change 3
,t.l.()
Sys\('JI1
('fue('dlH ..
J)e(~lara'ivc
(SYS-I'HOC)
Syslt'1ll proepduf{'s consist of one or more procedures or functions and mr:ly
contain one or more local data designs.
A system procedure is a basic ('lement
of a CMS-2 program.
F urmn 1
name
SYS-PROC
key-specification
comments
•
$
Explanation
Name
Thp idpntifier by which the system procedure is knowno
. 11. also identifies the prime procedure wi t.hin the sys tem
procedure.
SYS-PROC
Initiates a system procedure consist.ing of local da1a
designs and procedures.
•
Key specification Optional (see Section 7 for explanation).
Comments
Programmer remarks. Optional
Examples
!SlUiter,
Is ItISI-IPI~IOCI
,t'
I I I I I I I I I
11-4-5
I
I I I I I
J
1
I I
M-5035
Change
a
4. 1. 7 Reentrant System Procedure Declarative (SYS-PROC-REN)
This declarative specifies the beginning of a special type of system procedure known as a
reentrant system procedure. The generated code produced by the Compiler for all
procedures within a reentrant system procedure is invariant under execution (see Section 2
for a further explanation of reentrant code). A reentrant system procedure consists of one
or more procedures and may contain one or more local data designs or automatic datadesigns.
Format
Name
SYS-PROC-REN
key-specification comments
$
Explanation
Name
The identifier by which the sy stem procedure is known. It also
identifies the prime procedure within the system procedure.
SYS-PROC-REN
Initiates a reentrant system procedure.
Key specification
Optional (see Section 7 for explanation).
Comments
Programmer remarks o Optional.
4. 1. 8 Local Data Design Declarative (LOC-DD)
This declarative specifies the beginning of a set of data element definitions that are valid
only within the system procedure in which this local data design appears. Such data
elements must be defined in a local da!a design before they may be referenced by a dynamic
statement within a procedure.
Format
name
LOC-DD
comments
$
Explanatlon
Name
The identifier by which the local data design is known. Optional.
The name has relevance when LQCDDPOOL is requested. The
user must provide a LOC-DD name at compile time if he wants
to reference the pooled local data design by AC name atloadtime.
LOC-DD
Declares the start of a local data design.
Comments
Programmer remarks. Optional.
11-4-6
M-5035
4.1.9
Local Data Design Declarative (ENU-LOC-DU)
This dpelarative specifies the end of a local data design within a system
proc~dure.
Format
END-LOC-DD
name
$
Explanation
END-LOC-DD
Declares the end of a local data design.
Name
The identifier by which the local data design is known.
Optional.
4.1.10
Automatic Data Design Declarative (AUTO-DU)
This declarative specifies the beginning of a set of data element definitions
that are valid only
wi~hin,
matic data design appears.
thG reentrant system procedure in which this autoAn automatic data design may appear only within a
reentrant system procedure (i.e., it must follOW a SYS-PROC-REN declaration).
All formal input and output parameters and temporary data storage areas used
by .reentrant procedures that follow must be declared between the
END-AUTO-DD declarativcs.
AUTO~DU
and
The allocation for these data areas must be provided
dynamically prior to or during execution; hence, automatic
d~ta
designs may
not contain switch definitions or preset data.
Format
name
AUTO-DD
comments
$
Explanation
Name.
The idenlifipr by which the automatic data design is
known~
AurO-DD
Declares the start of an automatic data design within a
reentrant system procedure.
Comments
Programmer remarks.
Optional.
11-4-7
M-5035
NOTE
Automatic data designs are functionally similar to local
dat a designs except t hat they may be used only wi thin a
reentrant system procpdure and may not contain preset
data or switches. Automatic data designs should contain
the definit ions of all data units that are modified during
execution of reentrant procedures. Local'data designs
may be used within reentrant system procedures for
defining switches and preset data that are not modified
during execution.
4.1.11
End Automatic Data Desiqn Declarative (END-AUTO-DD)
This declarative specifies the end of an automatic data design within a
r e (~n t ran t s ys tern p roc e d ur e •
Format
END-AurO-DD
name
$
Explanation
END-AurO-DO
Declares the end of an automatic data design.
Name
The identifier by which the automatic data design is
known.
4.1.12
Procedure (PROCEDURE) and End Procedure (END-PROC) Oeclaratives
A procedure is the bBsic organizational unit of dynamic statements in a CMS-2
program; it establishes the rules of data manipulation in processing a problem.
Procedures specify a se<
[X
H 7
H HOLCHAR
H 1
C><
IMPL
Initial
Value
Rounding
Preset
Scaling
$
V( .25,0)
$
$
$
$
P 0(12345)
P
1.25
P 12.75
P 15E9
P 0
P I
P0
P 'NONE'
P H(ABCO)
A
A
$
$
$
$
$
$
$
$
e><:
[X
$
$
$
$
$
$
_L-
NOTES
1.
2.
Tags such as INTDBITS, FIXBITS, FIXFRAC, and HOLCHAR may be used as indicated but must be assigned
integer values by an EQUALS declaration.
If the type of variable is implied (type-structure omitted) the attributes of the variable are determined
by the implied mode of the Compiler to be a signed l6-bit integer, unless superseded by a MODE declaratio~
M-5035
Change 5
A multidimensional table (array) is stored forward in memory, in order of
increasing absolute locatiori, with the leftmost subscript (which represents
the row or item) varying most rapidly.
said to be stored in a columnar fashion.
Thus, a two-dimensional array may be
All the defined subcomponents of a
g i,' e n tab Ie (f i e Ids , . sub tab I e s, I ike - tab I e.s, and item - are as) mus t bed e fin e d
bet\\ecn the TABLE declaration and its associated END-TABLE declaration. Subtables and like-tables are not allowed as subcomponents of an array. Subtables, like-tables, and item-areas cannot be included in a table that is
variable in length or that uses indirect addressing (INDIRECT).
In the following discussion of table format. the term tag is indicated as an
option to specify integer values for the various parameters associated with
the declaration of a table.
When this option is exercised, the value supplied
by the tag must be provided by an EQUALS declarative (see Section 7).
Format
TABLE
name
INDIRECT
storage-type
words-per-item or
packing~descriptor
number-of-items or dimensions
major-index-name
$
Explanation
TABLE
Specifies a TABLE declaration.
Name
An identifier unique to the TABLE.
Storage Type
Specifies the storage alignment desired according
to one of the following types:
Words~per-Item
H
Horizontal arrangement
V
Vertical arrangement
A
Array arrangement in n-dimensions
An integer constant or tag that specifies the numher of words contained in each item. This value
cannot be
o.
11-4-21
I
M-5035
Change 5
Packing Descriptor
Specifies that the Compiler will compute the
number of words per item necessary to contain the
specified fields, as follows:
Descriptor
Result
NONE
Each field is assigned at least a
full word.
MEDIUM
Each field is assigned the smallest
available, directly referable word
fragment that will hold the data.
DENSE
Fields
wil~
be packed by the Compiler
in a dense manner, making optimum use
of all bits in a word.
(data type)
The Compiler will assign the number
of words required to accommodate
the attributes of the specified data
type (see explanation under FIELD
declaration for data type).
This
parameter permits referencing a
single piece of data by item. Field
declarations must specify starting
bit and word number when used with
typed-item tables.
INDIRECT
Optional.
referenced.
Specifies that the table is indirectly
Furthermore, no core allocation is
made, the names and definitions are preserved, and
\
the core allocation can be accomplished dynamically.
II-4-22
M-5035
Number of I t(~ms
An int.eger or tau that
sl)(~eifif~s
the maximum
number of items in the table.
Integers and/or tags, separated by commas, which
Dimensions
specify the array dimensions (a maximum of 7).
Major Index Name
Optional.
Defines a unique identifier containing
the current number of items in the table as maintained by the user.
If the major index name is
specified, the Compiler uses it to determine the
current number of items in the table containing
data when searching or moving the table.
Use of
a major index is restricted to V- and H-type tables.
Specification of a major index name constitutes
a definition of it as a data unit (signed 16-bit
variable); consequently, it cannot appear in any
other data declarative statement.
Examples
In this example, the table named DICT is a horizontal table with three
words per item, 500 items, and a major index named ALPHA.
At run time,
ALPHA contains the current number of items as set dynamically by the
program.
, I I
2.
I
The table named IONS is a vertical table with 1,200 items and is to be
densely
packed~
The Compiler
comp~tes
the words per item based on the
number and size of the defined fields and performs the dense
3.
,T,II,B, L,E;
I
I JIt;~Yj
,/I, "S; 6.1 I ,3",
It,
;$,
I 1
J1
I I I
packing~
I
,
I
In this example, an array, ARY, contains five words in each item.
dimensions are 2 by 3 by 4, or 24 items.
11-4-23
,
I
Its
This example defines an array, RAY, of which each item contains two
words.
Its dimensions are 2 by 3 by 4, or 24 items.
indicates that no core allocation is to be made.
The word INDIRECT
All references to
table RAY will be made by indirect addressing.
Following is an example of the use of INDIRECT and a major index.
Assume that a procedure processes data tables of fixed format and
varying lengths up to a maximum of 100 ehtrfes.
The data design
associated with the procedure contains a table declaration:
This declaration specifies a horizontal table of two words per item 100
items maximum, that
h~s
not been allocated core storage.
The table has.
a major index JI, which will contain the a.ctual·number of items at runtime as provided by the dynamic source statements.
This declaration may
be accompanied by FIELD declarations as desired.
The procedure itself might require as input the location of the calling
. program's data table and the number of items in the following table:
The calling procedure puts data in its associated data table.
The
procedure OUTDO is then called:
where MYBUF is the name of the caller's data buffer which has a structure
compatible wi th TABA, and BUFITEMS contains the number of i terns in MYBUF.
The procedure OUTDO thus has its TABA defined dynamically as the user's
data table for this operation of OUTDO.
Each, subsequent request for
OUTDO would provide simi lar entry condi tions (see Section 5).·
11-4-24
M-5035
Change 5.
6.
TABLE TRACK V 1 0
$
The table TRACK is vertical with one word per item.
table because it is declared with zero items.
TRACK is a "null"
No core locations will
be reserved.
7.
TABLE
FLOATDAT V (F) 1000 $
Table FLOATDAT has been declared vertical and 1,000 items long; the
type of data
associate~
with the table is floating-point.
will assign two words per item.
The
Compil~r
References to the table may be by item
. -and the Compiler will utilize the declared data type (floating-point).
8.
Following is an example of the use of tags within a table declaration:
NUMWORDS EQUALS 1023 $
NUMITEMS EQUALS
TABLE
25 $
LARGE V NUMWORDS INDIRECT NUMITEMS $
In the above example, the names NUMWORDS and NUMITEMS represent 1023
ahd 25 respectively.
The statement is interpreted as:
TABLE LARGE V 1023 INDIRECT 25 $
The table LARGE is arrpnged vertically, with 1,023 words per item and
25 items.
Dynamic core allocation is specified by the INDIRECT
specifier.
4.2.3 Field (FIELD) Declaration
The items of a given table may be further subdivided into units called fields.
Field configurations are identical for all items of a given table.
may occupy a partial word, a whole word, or more than one word.
A field
A field
defined as part of a word must be wholly contained within that word; i.e.,
it may not cross word boundaries.
A field occupying more than one word will
11-4-25
M-5035
be allocated an integral number of words.
in horizontal tables.
Multiword fields are not permitted
Field defihitions within an item are completely inde-
pendent of one another and may, therefore, overlap. It is not necessary for
all of the dat~ within an item to be completely defined by fields. A field
name is always associated with a particular table, like-table, subtable or
item-area.
Format
There are two basic formats for defining fields:
1.
Type a
FIELD
name
data-type
initial-value
2.
(R)
V(x,y)
word-location
starting-bit-position
initial-value
V(x,y)
$
Type b
FIELD
name
data-type
(R)
$
Explanation
FIELD
Specifies the FIELD declaration.
Name
The identifier used to reference the field within the
table. Field names are local to the table within which
they are defined. The same names may, therefore, be
used for fields within various tables.
The same name
may not be duplicated within the same table definition.
Data Type
Meaning
Descriptor
F
Floating-point field.
B
Boolean field.
H followed by the
Hollerith field having the
number of characters
indicated number of characters.
(not to exceed 132).
S followed by a list
Status field, which can have any
of status constants
of the states from the list.ed
separated by commas.
status constants.
11-4-26
M-5035
Change 5
Ucscriptor
A followed by the
Fixed-point field.
number of bits (not
to exceed 64), designator s/u (signed
or unsigned), and the
number of fractional
bits.
1 followed by the
Integer field.
number of bits (not
to exceed 64) and
the designator S/U
(signed or unsigned).
NOTE
If the data type specification is omitted, the
field will be assigned the implied mode (i.eo,
by a MODE declaration or Compiler-provided
signed 16-bit integer).
(R)
Optional. This parameter is meaningful only when a
floating-point data type is specified. If specified,
it indicates that AN/UYK-7 floating-point inst.ructions
with rounding are to be used for arithmetic operations
of this field.
Word Location
An integer or tag indicating the word of the item in which
the field occurs. This value must not be greater than 255.
St.arting Bit
Position
An inte~er or tag specifying the most significant
bit oi sign bit of the field. In an n-bit word, the
positions are numbered from left (n-l) to right (0).
Initial Value
Optional.
This field may be preset with this parameter.
If specified, this parameter consists of a P followed
by one or more constants.
These constants must be a
value compatible with the data type specified for the
II~4-27
I
M-5035
Change 2
field. A series of constants, up to a maximum of 255,
separated by commas, may be specified for mUltiple occurrences of the field.
Constants may be enclosed in
parentheses and preceded by a repeat factor.
V(x,y)
Optional. This parameter specifies that the field is
to be preset to the preceding specified initial value
parameter according to the magnitude and bit position
contained within the parentheses.
The initial value
will be computed using the magnitude assigned by the
x-parameter to the bit position assigned by the yparameter (see Example 6).
. 15 hi ts.
The magnitude must not exceed
Type-a fields are used when the programmer wishes to specify the field
location within an item (programmer packing).
Type-b fields are used to permit packing to be controlled by the packing
designator used in the TABLE declaration (Compiler packing).
The data type may be omitted for both type-a and type-b fields to specify
use of the implied data type of the Compiler.
The implied data type is the
inherent mode of the Compiler (a signed l6-bit integer) or is specified
in a MODE declaration.
Examples of Type-a Fields
1.
,fj/IEtL~
I I
I6p.Qt..
.A .4t
I
1,0, ,$,
I I I I ,
I
I
I I I I I , I I
I
The Boolean field, BOOL, occupies the rightmost bit of the second word
(word 1) of the item.
In this example,the Hollerith type field, HOLL, has 120 characters.
is located in word 2 of the item and starts in bit position 31.
It
It is
implied that this is a multiword field requiring the necessary number
of words to contain the 120 characters.
horiZontal table.)
11-4-28
(HOLL would not be allowed in a
M-5035
:~ .
,iii , EjL..~
J!,TiA,T, 5, ,',&ElJjEjC.,T, '", " yt,ctc,e'iBn' " ,
J
,. I I I I ,
I
J
J
I , , "
'tftO)LJ.b,'",
,',6.1'IXI'J I~' ,1, ~,
The status type field, STAT, may contain only the status constants
'REJECT', 'ACCEPT', 'HOLD', or 'FIX'.
It is located in word 4 of the
item and starts in bit position 2.
4.
In this example, the field ARITH is a signed fixed-point data type having
24 bits, four of which are fractional. It is located in word 0 of the
item and starts in bit position 23.
5.
Ii A §'1A
I I
~~,HtIt'J>J
'£ ,45) tf, ,
I I 1 I I I
I,
I , , , , I I I
The field MDHWD starts in bi t 15 of word 2 of each i tern. Its type is
implied by the Compiler or a MODE declaration and must not conflict with
the starting bit 15.
In this example, field MATH is a signed integer, 12 bits long, starting
at bit 26 of word 1.
The first occurrence of this field is to be preset
to the value of 30 with bit 28 of the field representing the magnitude
of 12.
The result of the preset assignment will show an Qctal represent-
ation of 1200' in the field, as illustrated below:
Word 1
I
f
26
31
Word
Q'
I
?~
Sign Bit
\
o
15
I I 0I 1 I °I 1 I 0 I °I u I 0·1 0I 01 ° 1
t
T
"
11-4-29
.~~
2O. =
21 =
22 =
2 3 ==
2 4 ==
25 ==
26 ==
27 =
28
2 9=
210 ==
Octal
0.046875
)0
0.1875
0.375
}
3
6
}
.2
°.09~\75
0.75
1.5
0
= 12
24
48
}
1
M-5035
In this example, field FARITH is a floating-point data type, two words
long, starting at bit 31 of word O. The (R) signifies that arithmetic
operations using this fieid must employ floating-point instructions .with
rounding.
Note that a floating-point field must never be defined in a
horizontal table since the AN/UYK-7
adjacent computer words.
floating~point
format requires two
Examples of Type-b Fields
8.
1 1 II
I I
I
I
,/f/,EjLtA
,8iOJgL, ,8.
~
This is a Compiler-packed Boolean type field.
have a packing descriptor.
I I I
I
I
I ,
, I
, , I I J
The associated table must
The integer field VALUE will be allocated or packed according to the
packing descriptor specified in the table declaration.
The first
occurrence of this field in an item will be preset to -145, the next
three occurrences will be preset to 19, and the following 4 occurrences
will be preset to 73.
See Table 4-2 for further examples.
4.2.4
Item-Area (ITEM-AREA) Declaration
An item-area is a data set with a structure identical to that of an item of
the associated (parent) table, with the same number of words and the
field configuration.
~ame
There may be any number of item-areas associated with
a parent table, but they are physically separated from the table. The itemarea is a convenient working storage area, assigned by the Compiler, where· a
single item of a table may be temporarily stored for examination, manipulation,
or accumulation of data.
11-4-30
M-5035
Format
ITEM-AREA
area-name(s)
$
Explanation
ITEM-AREA
Specifies the ITEM-AREA declaration.
Area Name( s)
The unique name or names, separated by commas, of
areas of working storage.
Each area has the same
format as an item of the parent table; therefore,
only the name of each item-area associated with the
parent table need be specified.
Examples
I
1.
rA
I
I
A single item-area named BUFFI is defined.
There are three item-areas named BUFF2, WORKl, and WORKST.
4.2.5
Subtable (SUB-TABLE) Declaration
A subtable is a set of adjacent items, wholly contained within the parent
table.
!
Its item size and field configurations are identical with those
defined for the parent table.
Except that it lies within the confines of the
parent table, a subtable is itself a table having its own optional major index
and stipulated maximum number of items.
table
~re
Subtable definitions within a parent
independent of one another and may overlap.
Subtables may only he
defined for single-dimensional tables (horizontal or vertical tables).
Format
SUB-TABLE name initial-item-number-of-parent-table
maximum-number-of-items-in-subtablemajor-index-name
11-4-31
$
TABLE 4-2.
EXAMPLES OF TYPE-a FlEWS
,
OF FIELD OECLARAT ION
Start
Rounding Location
Bit
I
FOR~lAT
TYPE OF FIELD
FIELD
Name
Data Type
Integer
FIELD
FIELD
INTA
INTB
I
I
Floating Point
FIELD
FLTA
F
Fixed Point
FIELD FlXA
FIELD FIXB
5 U
64 S
A 6 U 2
A 32 S 16
FIELD
FIELD
BOOLA
BOOLB
B
B
Status
FIELD
STA
S 'ON', 'OFF'
Hollerith
FIELD
FIELD
HOLA
fiOLB
H 40
H 3
FIELD
IMPLA
Boolean
......
.......
I
A
I
W
I\:
Implied
-
------
L
2
INTBWL
15
INTBST
1
31
~
F IXBLOC
I
\/
A
/ \\ °
5
31
V
0
o
W
$
P3(lO)
P 0
$
$
V(l,O)
~
P 9.548
0
BOOLBBIT
P 1,0,1
1
14
P 'ON'
3
31
28
P H(ABC)
15
(J'1
In1 ti a 1
Values
Scaling
1
0
1
1
\/
V
/\
/V \\
$
$
$
$
$
$
$
$
$
NOTES
1.
2.
3.
~
::3:
I
,
I I I·'
,,1, J,lI ,S, 1/'" ,$." , I , , J
It-pie,A, L, T,lt-,I( ,NI ..~i, lip p, IL,OI'-ir,~
ITt &!'tfli 0, tt, ,3 ,A-I ,5, ,D, ,'.3,1,,$, I, , ,
I I
""
I I
I ,
I
I , , , , "
I
1
·1
I
:':N~:~~A:6IL:E: :L:O:C:A:~T:R:K:
I , ,,
I
I
I
,
I
,
,
I
(II ,3,L ,.$,
I
1
i: ::::::I:::::::::I:: :::
therefore, the MODE-declared attributes of A 32 S
16
would be assigned
Note that it is still necessary to specify the word location
and starting bit for those three fields since Compiler packing was not
specified.
4.4
I
&tJ ,3,.L1 c$.
.;31 ,-I,L ,~
In this example, fields Xl, Yl and TI have undeclared data-type attributes;
to each.
I
SYSTEM LINKAGE
System linking is the process by which program information known to one basic
CMS-2 element. may be communicated to another basic element.
It may be
required when the information is local to a system procedure within a SYSTEM
or unknown because the elements were compiled under different SYSTEM headers.
The following items may be linked between two basic elements:
a.
Tables (and associated items).
b.
Variables.
c.
P-switches.
d.
Procedures.
e.
Functions.
f.
Files.
11-4-64
M-5035
Change 5
The capability to link the above items between and within basic CMS-2 elements is provided by the EXTREF, EXTDE¥, TRANSREF, or LOCREF operators. This capability
eliminates the need to expand the local concept of certain items and/or include entire
elements within SYSTEM compiles 'when only a few unknown items are referenced.
Because segments containing items 'a through f can be linked at load time, it is
unnecessary to externally reference a procedure (unless it has input/output parameters
or exits) or to define a procedUre in a segment in order to call it in that segment. .
Although the compiler will not flag such an "undefined" procedure, the loader will do
so if that procedure remains undefined at load time.
4.4.1
External Definition (EXTDEF) Operator
The name and associated declaration following the operator EXTDEF is to be
considered as global so that it may be referenced within any basic element
of any SYSTEM compilation.
Format
(EXTDEF)
$
identifier-identification
Explanation
EXTDEF.
Specif ies an external defirii tion.
Identifier-Identification
A symbol and its associated definition defined
totally within this SYS-PROC.
Examples
1.
, (,f,XiT.), £, F,) I IV,& e. LI ,x, I Fj r@
I
I
I
I
I I
I I I
I
I
I I
I I
I , I
I
This example specifies that VRBL X, defined in a LOC-DD of the SYS-PROC,
is referenced by other SYS-PROC's and is to be considered global.
This example declares that variables XX, YY. and ZZ within this SYS-PROC
are global floating-point data units.
ll-4-65
I
I
M-5035
4.4.2
External Reference (EXTREF) Operator
The declaration following the operator EXTREF defines an item that is
physically located in another SYS-PROC or SYS-OO and is referenced within
the current SYS-PROC.
Allocation of the item will not occur in the SYS-PROC
being compiled, but the definition to provide the necessary element compatibility will be applied.
Format
( EXTR EF )
ide n t i fie r - ide n t i fie a t ion
$
Explanation
EXTREF
Specifies an external reference.
Identifier-Identification
A symbol and its associated identification
that is referenced from, but not located within,
th is SYS-PROC.
Example
I
I I
I I I , 1 I
I
This example specifies that VRBL FI is used within this SYS-PROC, but is
physically located in another SYS-PROC or
4.4.3
SYS~DO.
Transient Reference (TRANSREF) Operator
The declaration following the operator TRANSREF defines an item that is
physically located in another SYS-PROC or SYS-OD that cannot be assigned a
permanent base register.
References made to this item will result in the load
of a transient base register to cover the referenced SYS-PROC or SYS-DD.
definition furnished
~ill
be applied to provide the necessary element compati-
bility.
Format
(TR ANSR EF )
The
ide n t i fie r - ide n t i f i cat ion $
11-4-66
M-5035
Change 5
Explanation
TRANSREF
Specifies a transient reference.
Identifier -Identific ation
A symbol and its associated identification
that is referenced from, but not located
within, this SYS-PROC.
Examples
4.4.4
Local Definition (LOCREF) Operator
The procedure or function declaration following the operator LOCREF is considered
local to the system procedure in which it is contained, so that forward references to the
procedure or function receive proper parameter linkage. The declaration containing
the (LOCREF) modifier must appear in a local data design prior to the procedure or
function.containing the local forward reference. Formal parameters m'll:-st be defined
prior to the declaration.
Format
(LOCREF) procedure or function declaration $
Explanation
LOCREF
Spe~ifies
Example
1.
,vIK,8ILI IVI ({d ,
,I,
I~I
lUI
l1,
a local procedure or function declaration.
t
t
, , I
I
I
, I
I I I I I I
I
t
,,
This example specifies that procedure PRA is a procedure local to the system
procedure and is called locally within this system procedure. Its formal input
is VB!.
11-4-67
'M-5035
Change 5
4.4.5
1.
,fb
Applications ofEXTDEF, EXTREF, and TRANSREF
I I I
I
I II
IS if ,s'-JP,i~ 99 .#1
I I l I I I I I
J
i
:G~kk:E:f~: :~~~~: ~~~: \16 4 :~IJ: ~: : : : : : : : : : : : :
:{:~~~:~:~F~: :~:~~:~:A:~~~lb~~~S: ~ 1°: :3t: :$; ::: :
lrITIE,"tI-I,+IRlfIAJ !S,u,MIBJ
I
I
J
J .,
I
J
I I
I
I I
I -I
I
I
I
I I
I
I
,$,
I
I
I
J
I
I ,
I
I I
J
-T able SUM is linked between syste m procedure A and system procedure B. Since the
field defintion for SUM! is included in the table deSCription, SUM! is also linked between A and B. A reference to SUM (0, SUM!) in either system procedure will access
the same data unit.
Subunits of tables, such as like-tables, subtables, and item-areas are not automatically linked between system procedures. In this example, a reference to SUMB will
access different data units. However, linkage can be achieved for subunits of tables.
Item-area SUMA is externally defined in system procedure A and externally referenced
in system procedure B, thus providing the ability to reference the same data unit from
either system procedure.
An externally referenced table must have the same field definitions as that of the ex ....
ternally defined table. Only like-tables, subtables and item-areas may be added or
n-4-68
M-5035
Change 5
deleted from the definition. As an example of this, SUML can be included in system
procedure B without being in system procedure A as long as it has the same attributes
as table SUM.
n -4-68A/ll-4-68B (Blank)
M-5035
Change 5
IEirJdJ
I I
,
)B,., .s,r,BRi/etblE"tR,
,IS,)',SJ-I/3R,o,c,
1.t1!~"4f(I,,,/1
IIi
I
I
I
(:E~~~ :~:E:F~: :~ %:~~~:!~:r5 ~ ::::::::::: :::::::::::: ::
(1§)l,T 1t'2-.,f,F-3), IV,&6t4 IP,2t111
I I I I , I , I IV I R18, '-i Iff ,it "1
If, , I
I 1'"
Lt J
I I I I I I
I I
I
I""
·1,
(:~:t~:g:E:f:): :;:~~~:~~:i~:~ ~:L:P~:~ :/:~p:uM
J I
IEIN,.b, -, L,gc'-lb}J> I
,
,.".,
,
I
1 I
I
I
It,
I
I
I
I
I
I
I
I
I
I
I ') .,
I
I
I'
I
I
, I
I
, I
I
I
IL ,0, Cl-ll?tl?1
I
I
I
, I
,
I
,
,
I , I
I
t I
, ,
I
I
I
I
I
I
I I
I
I
I
, I
I
I
,
I ,
, I
I I
I
I
I
1 , I J I
,r ,:b JE, F,), I\II Il, S,l, Pg., ,F, 1$.
I
I
I
,
,. ,
I
I
I I
I
,
,
I
I· I
I
I
,
I
IE:N;A-.L,O,C,-,'b.)1
I
I
I I·,. I
I.
,
,
I
I
I
I
•
,
,
,',
I
tt,
I,
I
I
I
I
,
,
I
I
I
I
,
1 , I'
,
I
,
I,
I,
I
1
I
I
I
I•I
t
,.,
I
I I
I
I
I
I
I
II-4-69
I
I
I
I '
,
I
,J
I
'I',
,
I
,
1
I
,
I I
J
I
,
I
,
I
I
I I
I
I
,
I
I
, 1
I
I
, I
I
I
I
Procedure ALPHA is in SYS-PROC HAND. SYS-PROC BETA initiates a procedure
call to ALPHA by means of ALPHA INPUT Al OtrrP11f A2$. To indicate this
cross-referencing to the Compiler, procedure ALPHA and its associated
formal parameters, variables PI and P2, are flagged as external references
in SYS-PRDC flPTA and as external definitions in SYS-PROC HAND .
•
,
I ,
I
I
,
,,
I I
I
I ,
I'll
:i,i: ~U:T:P:U~: ~ P:i :~:
I I , I , I
I',
1$, 'I
I 1 I t
,
I "
I I
I
I 1 I I
I
I I
, , I
,
I I "
I
I
I
I.,
I I J I
( , Ej ~
II "
Iii
I I I
",! ••
J
I I
I
I
I I
I
M-5035
:3.
,$,
Is ,y,S,Tj EjM,
,AI
I
I
I,·, , , ,
,
I I ,
I ,., ,
I
I , ,
1 , 1 "
J
",
,Ey('~IP, , , , , IS,'I15,-,P,RIOIY ,
ITt., .plo,E,
171~I~JY 1'7,0,
tI"
"I
:(:~&A:N:~~:~f:)
;:~:;:tL: 1:l:A~S: :A: :3:i is: II;': :$: : : ; : : :
F,),
Fi; IFi
I (1' Ej K, T I
&§
I , I VI R, 8, 1..,
, I
I ,.,
I , I 1 I
I
I ,.,
1 I
,
I
,
,$ I
I
II
I , I
I
I,
I
, ,
I I
, I
I ,
I ,
I ,
I ,
I
I
,.
,
I
I', I , I , I I I
I
'-I
I
I
'I
,
, ,
I
I
I
I ,
I ,
I ,
I
,
,
I
I
, 1 J
I ,
, I
" I .I",
II
1
, I
I
I ,.,
I
I
, , I , I I
I
, , I.
I , .I I "
I
I I
I
I I
I , I I
I
I
I
J
I ,
I ,., ,
I
, ,I
I
I
I
I
I,
I
I
I
I -'I
,
I
I
I
I
I ,
I
I •"
I
I
I
I
I , I
I
I .I
I
1
I
I
I"
,
,I
,.,
I
I
I
,,
,,
I ,
I
I
,
,
I ,
,
I
I
,'1 I I "
I·' I I I
I " II
I
I .,
J
,
I I
I
I J
I I I J I I
I I
,,
I
I .,
J ,
, , , I 1 ,
I
J
I
, I
I I
I
I
I
I
I I
I J
, I
, I
J I I I I I
I
I
When SYSTEM A was compiled, the programmer ant.icipated using two variables
from different SYS-IJU's in SYSTEM B that would not be covered under the
11-4-70
M-5035
Change 5
same base register.
This capability allows assigning a base
register to one SYS-DD when SYSTEM A is loaded for execution and a
transient register to the
ot~er
SYS·DD.
It was not necessary to
attach the operator EXTDEF to the variables in SYSTEM B since
they are within SYS-DD's and, hence, global.
Use of the TRANSREF and EXTREF operators allows the Compiler to
generate the appropriate object code for SYSTEM A.
is ,determined by the system Loader.
4.
SPCX
SYS . . PROC $
LOC-DD $
VRBL VX1 A 16 S 10 $
(LOCREF) PROCEDURE PRXl OUTPUT VXI $
VRBL VX2 H 2 $
(LOCREF) FUNCTION FNX2 (VX2) H 4 $
VRBL (VA3, VA4) A 32 S 24 $
VRBL (HAS ,HA6) H 4 $
•
•
END-LOC-DD $
PROCEDURE PRCAl $
•
•
PRXI OUTPUT VA3 $
•
•
11-4-71
The allocation
M-S03S
Change S
SET HAS TO FNX2(HA6) $
•
•
END-PROC PRCAI $
PROCEDURE PRXI OUTPUT VXI $
•
•
END-PROC PRXI $
FUNCTION FNX2 (VX2) H 4 $
•
•
END-FUNCTION FNX2 $
•
•
END-SYS-PROC SPCX $
Procedure PRXI and function FNX2 are local to system procedure
SPCX; both are called prior to their definition by procedure
PRCAI.
Including the declarations in the local data design prior
to PRCAI permits m6re accurate error checking and generation for
their parameter passage with respect to scaling and type.
II-4-72
M-5035
Change 4
SECTION 5
DYNAMIC STATEMENTS
Dynamic statements specify processing operations within procedures and
functions. They perform calculations, manipulate data, and direct control of
the program.
This type of statement consists of an operator followed by a list of operands
and additional operators. An
oper~d
may be a single name, a constant, a data
unit reference or an expression. Expressions may be arithmetic, Boolean,
relational, or literal.
Dynamic statements have two possible forms: simple and compound. A simple
statement comprises a single dynamic statement followed by its statement
terminator ($). A compound statement consists of two or more dynamic
statements, each separated by the connector THEN, followed by a single
$ statement terminator.
With the exception of decision statements (Paragraph 5. 6), there are no
restrictions on the number or types of dynamic statements which may be
compounded. With this exception, the connector THEN is exactly equivalent to
the terminator $.
Example
The compound statement
SET A TO B THEN PROCA INPUT X
THEN L2. SET E TO F THEN GOTO Ll $
is equivalent to the simple statements:
SET A TO B $ PROCA INPUT X
$L2. SET E TO F $ GOTO Ll $
11-5-1
M"':5035
Change 4
I
Simple. and compound statements may also be· grouped into a statement block by
the formation ofa BEGIN, VARY, or FOR block (Paragraph 5.7). Statement
blocks are required in order to nest decision statements (Paragraph 5. 6. 6).
5.1
EXPRESSIONS
The arithmetic, Boolean, relational, and literal expressions used in dynamic
statements are described in the following paragraphs.
NOTE
Variables, constants, local and system indexes, field
references, typed item references, item word references,
function references, and functionally modified data
units may be used as operands in CMS-2 expressions.
Tables, sub-tables, like-tables, and untyped item
references may not be used as expression operands.
5.1.1
Arithmetic Expressions
An arithmetic expression consists of two or more arithmetic data units or
constants (operands) connected by arithmetic operators. The operators and
their hierarchy of execution are defined in Table 5-1.
Operations involving
the level-l operators are evaluated first, followed by evaluation of operators
of levels 2 and 3.
M-5035
Change 4
TABLE 5-1.
HIERARCHY OF
EXEClITION
1
ARITHMETIC OPERATORS
OPERATOR
-
1
~~~~
2
~c
2
/
3
+
3
-
FUNCTION
Unary minus
Exponentiation
Multiplication
Division
Addition
Subtraction
If expressions involve more than one operator of the same hierarchy, execution
is performed from left to right in the order in which the operators are
encountered.
For example, A*B/C is evaluated as (A*B)/C.
The one exception
to this rule occurs with ~xpressions involving the exponentiation and unary
minus operators (level-I). In this case, e~ecution proceeds from right to
lefl. For example, -X**-Y is equivalent to -(X**(-Y), unless X is a
constant in which case the sign is part of the constant. Note that the unary
minus is the only operator that may directly follow another operator.
Example
A+B::~/D~~*3
is evaluated in four steps:
1.
B~:IGS,
(Je, IC,),),
IA,N#l 14
The expression is evaluated as follows:
1.
B or C
2.
A AND the result of Step 1
3.
COMP the result of Step 2
4.
The result of Step 3 AND C
5.
A OR the result of Step 4
Operands associated with logical operations in a Boolean expression may be of
any type (i.e., Hollerith, numeric, status, or Boolean) or they may be
relational expressions.
If no Boolean operators are used, the operand of a
Boolean expression must be a Boolean variable, Boolean constant, Boolean
function, Boolean functional modifier, or a relational expression.
If two
operands result in bit strings of lengths a and b, where a and b are not
equal, the length of each bit string is assumed to be the maximum of a and b
with the shortest bit-string filled with zeros on the left.
All bit strings
are right-justified before the binary Boolean operations are performed. In
arithmetic operations, bit-strings are assumed unsigned, fixed-point data with
no scaling.
I
The primaryluse of Boolean expressions is in IF and FIND statements, which
select stat ment execution options based on relational comparisons.
The
Booleanexp ession is also useful for manipulating bit strings and assigning
values to B
data units.
i
When the value of a relational expression is used as an operand in a Boolean"
expression, each bit .of the required bit string for the operand is. assigned
the value true (1) or false (0).
When a Boolean data unit is used as an
operand in a Boolean expression, it is always assumed to be a single bit in
length.
If the functional modifier BIT specifies a single bit of a data unit,
that d~ta unit is considered a Boolean operand.
11-5-1
M-5035
When relational and Boolean operators are mixed in a Boolean expression, the
relational operations are performed first and the resultant Boolean values are
evaluated according to the Boolean operators.
Example
1.
2.
A LT B (true or false)
C EQD (true or false)
3.
(result of 1) AND (result of 2)
The results of Boolean operations can be shown in a truth table. "Referring
to Table 5-4, the A and B" columns represent the assignment of truth values
for these variables. The remaining columns show the truth values "resulting
from the Boolean operations.
For example, if A and B are both false
(represented internally as 0) then COMP B would be true", A AND B would be
false, A OR B would be false, and A XOR B would be false.
TABLE 5-4.
5.1.4
TRillH TABLE
A
B
COMPB
A AND B
Ai OR B
XOR
0
0
1
0
0
0
0
I
"0
0
I
I
I
0
1
0
I
I
I
I
0
I
I
0
Literal Expressions
A literal expression is similar to other expressions in that it specifies a
single literal value expressed in terms of literal operators and associated
operands.
The operands that are allowed with literal expressions are:
fields"
and variables typed as Hollerith, Hollerith functions, the functional modifiers
BIT and CHAR, and Hollerith constants.
11-5-8
M-5035
The operator allowed in a literal expression is CAT (concatenation).
Whpn
Used, it places the rightmost character of the left operand adjacent to the
leftmost character of the operand on its right.
Example
Assume the following variables have been declared with associated initial
values:
then M CAT E CAT SCAT S CAT A CAT G CAT E is equivalent to the Hollerith
value, MESSAGE.
5.2
FUNCTIONAL MODIFIERS
Functional modifiers facilitate easy reference to various parts of data
structures or indicate an operation to be performed on data.
designated as open and/or closed functions.
They are
An open function reference
generates instru~tions that are compiled in-line. A closed function requires
references .at run-time to Compiler-supplied routines loaded with the user's
program.
The following formats define the allowable functional modifiers:
f.
ASS (data uni t)
BIT (index, index) (data uni t)
BIT (i ndex) (data unit)
CHAR (index, index) (data uni t)
CHAR ( index) (data uni t)
CNT (data unit)
g.
h.
COR AD (data unit)
FIL (file-name)
i.
LENGTH (file-name)
j •
POS (file-name)
a.
b.
c.
d.
e.
11-5-9
r-5035
5.~.1
ADS
Absolute Value (ABS) Modifier
is used for referencing
absolute value of a data elempnt or ari thmt't ie
th(~
expression; it is an open function.
Forma t
ABS
E xp 1 a n.a t
(d a tau n i U
ion
Specifies an absolute value operation on the specified
ABS
element.
Data Unit
A data unit or arithmetic expression.
Examples
I
1.
I
I
1 I
I
I
I
I
J
I
I I I
,
,
J
I
,
I
I
The example refers to the absolute value of the variable ALPHA.
f!,§S. GCIL.tAI5ISI(.s,:rI'~E J~J I
2.
I
I I
I , I
I I I J ,
I
I
,
I
This example refers to the absolute value of the field, SIZE,· in the
item-area CLASS.
5.2.2
Bit (BIT) Modifier
BIT is used to reference a string of one or more bits in a data unit.
unit bits are numbered with bit 0 specifying the leftmost bit.
Data
This function
may be open if the starting bit and length specifications are positive integer
constants and do not require movement across a word boundary.
Format
BIT
(starting-bit,number-of-bits) (data-unit)
Explanation
BIT
Indicates t.hat. bit
speeificatio~s
f (I J ] ow.
IJ-~-lO
for a data
clem(~nl
M-5035
Change 3
A numeric constant, data unit, or arithmetic expression.
Starting Bit
This bit specifies the initial hit position of the string.
Number of Bits
Optional. A numeric constant, data unit, or arithmetic
expression. It specifies the number of bits in the string.
If this option is omitted, the number of bits is assumed to be 1.
The name of a data unit. The data unit cannot be a system
Data Unit
or local index.
Examples
The string begins in bit 0 (the leftmost bit) and is five bits long.
ALPHA is the name given to the variable by a previous declaration.
This bit string begins in bit 6 and is six bits long.
The table (subtable
or like-table) is BETA, the item index is N, and the field referenced is
SUM.
In this example, assume that field SUM has been defined such that
it~occupies
bits 27-16 of a table word.
Thus, the bit reference applies
to word bits 21-16, as illustrated below:
,...
Field SUM
I,
31 30
: 27
25·
20
t
Starting bit
specified in the
BIT n~ference
II-5-11
..
I
I
16'15
I
M-5035
Change 3
3.
This example specifies the single bit in bit-position 6 of variable
ALPHA.
This bit string begins in the position specified by the variable START.
Its length is determined by the value of the variable LENGTH.
(subtable or like-table) is BETA.
The table
The item index is N, and the field
referenced is SUM.
J.~.~3
Character (CHAR) Modifier
CHAR is used to reference a string of characters in a data unit.
characters are numbered with 0 specifying the leftmost character.
Data unit
This
fonctionmay be open if the character string specifications are positive
integer constants and do not require movement across a word boundary.
Format
CHAR
(starting-character ,number-characters) (data-uni t)
Explanation
Indicates that character specifications for the
CHAR
data element follow.
Starting Character
A numeric constant, data unit, or arithmetic
expression.
po sit ion
0f
It specifies the initial character
the s t ring. .
I
Number Characters
Optional.' A numeric constant, data unit, or
arithmetic expression.
It specifies the number of"
characters in the string.
specified, the number
~f
If this option is not
characters is assumed to
be 1.
I
Data
Unit.
The nnmf! of a dn t. C1 un it.
system or local index.
11;...5-12
The data unit cannot be a
M-5035
Change 1
Examples
Ie., hiA,&
1.
d,t) ,3,) I (I~I Ej Tj /IdA" !Si14 !IIIj ) I) I
I I I I
I
I I I
I
I
I
The character string begins in character position 1 and is three
,
characters long.
.
The table (subtable or like-table) is BETA, the item
is 4, and the field referenced is SUM.
This example can be
vi~ualized
like Example 2 for BIT, t'he difference being that this uses character
counts where there are eight bits per character.
This character string begins in character position I and is one character
Tbe table (subtable or like-table) is BETA, the item index is N.
long.
and the field referenced is SUM.
5.2.4
Count (CNT) Number of Bits
CNT furnishes the count of the number of bits set (equal to 1) in the specified
data element.
CNT results in an integer value and may be used in a numeric
or status expression.
This is an open functiono
Format
CNT
(one-word data-unit)
Explanation
CNT
Specifies the counting of bits set to 1 in the designated
I
data unit.
One-word '
data-unit
The name of a data unit contained in one word.
Example
I
I
I
The number of bits that are set in field FLDPOS of item XX of table TBLE
will be counted.
II -5-13
M-5035
5.2.5
Core Address (CORAD) Modifier
CORAD is used to reference the core address of a data element.
function.
It is an open
Format
CORAD(data-unit or statement-name)
Explanation
COR AD
Specifies the core address of the following
data element or statement name.
A data unit or statement identifier.
Data Unit or Statement Name
NOTE
.The CORAD modifier always results in an unsigned,
16-bit value which represents the SY address of the
data uni t or statement· name referenced. Under no
circumstances will CORAD result in an la-bit absolute
address.
5.2.6
File Position (FIL) Modifier
FIL is used for file positioning.
See Section 6 for usage examples.
This
is a closed function.
Format
FIL
(name)
Explanation
FIL
Specifies the positioning of a device to a
{}articular file.
Name
The identifier of a file.
11-5-14
M-5035
:i.:!o7
Reeord Position (paS) Modifier
POS is used for record positioning.
This is a
closf~d
function.
See paragraphs
6.S.1 and 6.5.2 for usage examples.
Format
POS(name)
Explanation
Specifies the position of a file named within the
POS
parentheses.
The identifier of a file o
Name
°
5 •2•8 Record Length (LENGTH) Modifier
LENGTH is used to determine the length of the last record of an input or
output operation; it is a closed function.
See paragraph b.7 for usage
examples.
Format
LENGTH (n arne)
Explanation
LENGTH
Specifies the length of a record for the file named.
Name
The identifier of a file.
5.3- PROCEDURE LINKING
Procedure linking is accomplished through the procedure call, function call,
the procedure swi tch call, and the return statement.
This capabili ty provides
for program segmentation and increased efficiency through the elimination of
statement duplicationo
Paragraph 4.1.12 gives instructions for declaring a
procedure.
11-5-15
M-5035
5.3.1
Procedure Call
A procedure call establishes transfer of control to a named procedure and may
assign actual parameter values to the formal parameters defined in the procedure
declaration.
All procedure input parametl)r linking is accomplished by transferring the
values contained in the actual input parameters of the calling statement to
tllP formal input parameters of the called procedure declarative statement.
That is, an actual parameter and its corresponding formal parameter are
usually (iistinct programmer-declared data units allocated to different
locations in core.
Therefore, modification of a formal input parameter in
the procedure does not affect the value of the actual input parameter in the
calling procedure.
Procedure output parameter linking is accomplished by
transferring the values contained in the formal output parameters of the
called procedure's declarative statement to the actual output parameters
specifi(~d
in the calling statement upon procedure return.
param(~ter
is omitted" or if the same data unit is specified as both the actual
paramct(~r
and the corresponding formal parameter, no transfer of values is
performed.
If an actual
Addresses of data units may be transferred (simulating a call by
name) by using the CORAD operator (see paragraph 5.2).
Format
name
INPUT
actual-input-parameter(s)
actual-output-parameter(s)
EXIT
OUTPlH
statement-name(s)
$
Explanation
Name
Identifies the procedure to be executed.
INPUT
Optional.
Specifies that the following list
of actual parameters is to be input to the
named procedure. '
Act ua] Input I'aramnler(s)
Constants, data units, or expressions that
f(~pJaGP
ttw Gorrt!sponding formal input para-
meter valuns during execution of the nam£!d
,
T
~
.. ,
M-5035
procedure.
Actual parameters must
type with formal parameters.
agrf~e
in
Mult.iple para-
meters are separated by commas.
There must
be a one-to-one correspondence with the formal
parameters defined in the called procedure's
declarative statement (see note below).
OUTPUT
Optional.
Specifies that the list of actual
parameters following are the outputs from the
named procedure.
Actual Output Parameter(s)
Data units whose values are replaced by the
corresponding formal output parameter values
after execution of the named procedure.
Actual parameters must agree in type with
formal parameters.
Multiple parameters are
~eparated
by commas. There must be a one-toone correspondence with the formal parameters
defined in the called procedure's declarative
statement (see note below).
Optional.
EXIT
Specifies the statement name(s)
that follow are abnormal exit reentry points.
Statement Name
An identifier that replaces the corresponding
formal exit name during execution of the
named procedure.
Program control is trans-
ferred to the named statement if a RETllRN
(see paragraph 5.3.3) referencing the formal
exit name is executed.
NOTE
If tbe same data unit is specified as both the actual
parameter and the corresponding formal parameter, no
transfer of values is performed. Alternatively, if
an actual parameter is omitted from the calling statement. no transfer of values is perfo~med. In this case,
the position of the actual parameter in the parameter
list must be maintained with a comma.
11-5-17
M-5035
Change 5
Since the passing of parameters involves a passing of actual values, if the designated
parameter is a table, subtable, etc., the entire table, subtable, etc., is actually
transferred into the procedure receptacle. The procedure must, therefore, provide a
receptacle of sufficient size. Any excess beyond the receptacle size is truncated.
The CORAD modifier and the IN DmE CT table
opt~on
may be used when a table is
specified as a procedure parameter and it is desirable not to have the entire table
passed (see paragraph 4.2.2).
NOTE
It is not legal to use status constants as actual input or
output parameters for forward reference procedures
(procedures which are called before they are formally
defined or declared with an EXTREF or LOCREF
modifier). Furthermore, a local procedure may not
be forward referenced before its local formal para":'
meters are defined or declared, regardless of the
parameter types.
Examples
1.
tl,X,.,
I
I , ,
IT,EjS,T,R, tI;tJ,p,Utra ,0, Q,tJjr,p,U,TJ
The statement AX will call the procedure TESTR.
will be passed to TESTR as the actual
~nput
ly~Il,S,
,$,
I I
I,
INPlIT specifies that 0
parameter value.
The actual
parameter CLAS will receive the output value from procedure TESTR.
:! •
18, Call, C, 6 H, P, \:\TJ ,11IP,~, ' ') tA, P", ,o,y T Ie. LA, Tj
I , , , I . ,E,x,r, Tj I ,A,T I~' ~ I I I I , , , ". I
~ MIA g1 E;
,I,
I
,
The procedure RCAC is to be called. API and AP3 are the first and third
actual input parameters. The actual parameter IMAGE will contain the
output from procedure RCAC.
If an abnormal exit is taken from RCAC
t
reentry to the calling procedure will be at the statement labeled AT3.
IT-5-18
M-5035
procedure.
Actual parameters must aurp(! in
type with formal parameters.
Multipl(~
meters are separated by commas.
parn-
There must
be a one-to-one correspondence with the formal
parameters defined in the called procedure's
declarative statement (see note below).
OUTPUT
Optional.
Specifies that the list of actual
parameters following are the outputs from the
named procedure.
Actual Output Parameter(s)
Data units whose values are replaced by the
corresponding formal output parameter values
after execution of the named procedure.
Actual parameters must agree in type with
formal parameters.
Multiple parameters are
separated by commas. There must be a one-toone correspondence with the formal parameters
defined in the called
procedu~e'~
declarative
statement (see note below).
Optional.
EXIT
Specifies the statement name(s)
that follow are abnormal exit reentry points.
Statement Name
An identifier that replaces the corresponding
formal exit name during execution of the
named procedure.
Program control is trans-
ferred to the named statement if a RETllHN
(see paragraph 5.3.3) referencing the formal
exit name is executed.
NOTE
If the same data unit is specified as both ~he actual
parameter and the corresponding formal parameter, no
transfer of'values is performed. Alternatively, if
an actual parameter is omitted from the calling statement, no transfer of values is performed. In this case,
the position of the actual parameter in the parameter
list must be maintained with a comma.
11-5-17
M-5035
Change 5
Since the passing of parameters involves a passing of actual values, if the designated
parameter is a table, subtable, etc., the entire table, subtable, etc., is actually
transferred into the procedure receptacle. The procedure must, therefore, provide a
receptacle of sufficient size. Any excess beyond the receptacle size is truncated.
The CORAp modifier andthe INDmECT table option may be used when a table is
specified as a procedure parameter and it is
~esi!able
not to have the entire table
passed (see paragraph 4.2.2).
NOTE
It is not legal to use status constants as actual input or
output parameters for forward reference procedures
(procedures which are called before they are formally
defined or declared with an EXTREF or LOCREF
modifier). Furthermore, a local procedure may not'
be forward referenced before its local formal parameters are defined or declared, regardless of the
parameter types.
Examples
1.
A,x,.,·,
I , ,
IT,EjS,T,R,
,JijNIP,Utr,
,0, Q,U,T,P,U,TI ,yLtR,S, ,$, ,
The statement AX will call the procedure TESTR.
I
I
I
INPlIT specifies that 0
will be passed to TESTR as the actual input parameter value.
The actual
parameter CLAS will receive the output value from procedure TESTR.
:!.
IR,C,tl,y
I , , ,.,
otJ,P,'1T J
,E,x,r, Tj
,A,P,;" ..,tA,P'31
I I R,T '~J
~
I , I
,O,YT,5lA,Ti
I"
,
I "
;tj~Ag,€j
I
I
I
,
I
The procedure RCAC is to be called. API and AP3 are the first and third
actual input parameters. The actual parameter IMAGE will contain the
output from proc.edure RCAC.
If an abnormal exi t is taken from RCAC t
reentry to the calling procedure will be at the statement labeled AT3.
II-5-18
M-5035
Change 5
5. 3. 2 Function Call
A function call establishes transfer of control to a named function and assigns one or
more values to the formal input parameters of the function. A function call may appear
in dynamic statements or expressions; it resembles conventional mathematical function notation.
Format
name
(actual-input-parameter, ••.. , actual-input-parameter)
II-5-18A/IT-5-18B (Blank)
M-5035
Change 5
Explanation
Name
The name of the function to be executed.
Actual input Paramcters(s)
Specifies each actual input to the function.
There must be at least one specified; multiple parameters are separated by commas.
Example
The function call for the function TAN is TAN(AX, AY). AX and AY are the actual
i~ut
parameters to be used as the values of the form al input parameters of the
function. The function is evaluated and provides the value specified to complete
the operation of the SET statement.
NOTE
It is not legal to.use status constants as acutal input
parameters for forward reference functions (functions
which are called before they are form ally defined or
declared with an EXTREF or LOCREF modifier).
Furthermore, a local function may not be forward
referenced before its local formal parameters are
defined or declared, regardless of the parameter
types.
5.3.3
Return (RETURN) Statement
The RETURN statement is a transfer of control operation used within a given procedure or function to exit from that procedure or function. There are three types of
RETURN statements for procedures:
a normal RETURN,
an abnormal RETURN, and
a conditional RETURN, dependent on a hardware key setting. All procedures should
have at least one normal RETURN statement. However, a RETURN statement may be
omitted if it immediately precedes the END-PROC declaration. There is only one type
of return for a function.
Format
RETURN
statement-name special-condition $
RETURN
(expression) ,$
11-5-19
M-5035
Change 5
Explanation
RETURN
Causes a norm3J. transfer back to the statement
following the procedure -linking operation of the
calling procedure or function.
Statement Name
Optional. Must be the same name as one of
those follOwing the EXIT definition in the procedure declaration and effects an abnormal transfer of control to a labeled state ment of the calling
procedure or function. A one-to~ne corresporidence is established between EXIT names specified
in the c all and those specified in the declaration
to effect this transfer.
Special Conditions
Optional. Specifies any of the special hardware
conditions defined for the target
machine~
For
the ANfUYK-7, these are KEYl, KEY2, KEY3,
STOP, STOP 5 , STOP 6 , and STOP7 (see paragraph 7.3.4 for simulating these speci al condi..;
tions).
Expression
Any legal data name or CMS-2 expression. This
format is reserved for returning from a function.
The Compiler will process the expression and
return the result to the calling procedure.
Examples
l.
I
1 ,. 1 I 1 1 I I
I
I
This is thp normal type of ret.urn.
Control is transferred back to the
JI r IIt'l'eI" r t' I hill (' II I I t'dIII'DA'n: •
11-5-20
M-S035
2.
Jf,l3tg"E.1~U,~,Ei JR,E,4J) ,
I
j
,.,
J
J
I·' , I , , "
ii' I
I J ,
,
I , I·, I , , I J
JRIEjr,U, ~w. III
I
I
I ,
I
I , I.
I,I I
J
I
O,u,T,PfllT, It!BD, ,EjX,rJT, ,E;9F,$/
I
'J
I
I
, ,
I J
I
I ·1
I
I
The RETURN EOF statement results in a return to the alternate reentry
statement corresponding to the parameter EOF in the procedure call.
In this case, the output parameter value is not transferred.
3.
,s;r )0, R ,$, ,
I&E,1iu.K.ttI
I
I l~l
I
I
I
I
I
I
I
,
IS,,- lo,p,S,
,
I
,$,
These are examples of special condition returns.
The first example
results in an unconditional halt with the return executed after operator intervention.
The second example results in a stop if key 5 is
set, with the return executed after operator intervention; otherwise
the return is executed.
4.
IR,EiT,U.iaN,
I
.s;rle-,p,9, I
ISaT,9P~
,1,
I I , I , I ,
In this example, if key 5 is set, a halt will occur.
I,,
I "
I
After operator
intervention, the return will be made through STEP9 to the controlling
procedure or function.
without halting.
5.
JgIEJljij~,,vI' ~XI
Otherwise, a return through STEP9 is executed
Itl Itt
,+, ,Z),, ,$1
,
I I I , , I
I , I.
I
I , ,
I
In this example of a return from a function, the expression X+Y+Z will
be evaluated and returned to the calling procedure as the output value
of the funct.ion.
11-5-21
M-5035
Change 5
5.3.4
Executive (EXEC) Statement
This statement provides an interface with an executive program.
A call to an
executive program is generated and a parameter is placed in the appropriate
register for the executive program to access.
e~ecutive
The parameters required by the
program are spe~ified by the particular ,system.
This statement
merely provides the interface capability.
Format
EXEC
parameter-I,
parameter-2
$
Explanation
Causes a call to an executive program (generation of an
EXEC
XS instruction).
A parameter required by the executive program to inform
Parameter I
it
~s
wh~t
to
action is to be taken (this parameter is
specified by the particular system).
This parameter will
appear in the SY portion of the XS instruction.
Parameter 2
Optional.
A parameter that will be loaded into machine
register AO prior to execution of the XS instruction.
Examples
I.
?l~ tiC, , tLS(·,
t$,
I
I ,
I
I
I
I
I
I I
I
I
I I I I
I
I
I ' , I '
This example provides code 15 to the executive program and requests the task
I
associated with code 15 to be performed (i. e., generates an XS 017 instruction).
2.
.Q"& Ef'1
I
,.451 ',I Vl~ ,BtbX, ti I
I
I
I I
, I
I I I
I
I
I ,
I
I
I
I
This example provides the contents of VRBLX to the executive program
through task register AO.
This data unit may either instruct the
executive program to perform a specific task. or may contain a core
address for the executive program to access for its instructions.
generated instruction is dependent on the particular system that is
imp 1c~mt~n tHd) •
11-5-22
(This
M-5035
:i.:\.:i
l'roct'dure Switch Cnll
A procpdun\ switch call
t~stahlis}ws
of control to one of the
(see paragraph 4.2).
proc(~dures
a procedure link by
specifyi'n~J
a
transf(~r
named in the procedure swi tch declarat ion
Actual paramt!ters nrc assigned to formal parameters
named by the declaration.
The index value of the procedure switch call determines which procedure within
the declaration is to be called.
If the value of the switch index is outsidp
the range of allowablc values, control may be transferred to the named
via the INVALIU operator.
statemt~nt
Allowable index values are 0 through n-l, where n is
the number of switch points.
If the user does not use the INVALID
o~tion,
it
is his responsibility to see that the index is within the range of the switch.
If the procedure switch is defined with formal input and output parameters,
actual input and output parameters must be included in the procedure switch
call, as in a normal procedure call.
Format
name
USING
index
INVALID
actual-paramcters
statement-name
OUTPUT
INPUT
actual-parameters
$
Explanation
Name
The identifier of a previously defined P-SWITCH.
USING
Specifies that the following index indicates the
procedure to be called.
This parameter is not
used in a procedure item switch call.
Index
A data unit, constant, or arithmetic expression
whose integer value determines the procedure to be
called.
This parameter is not used in a procedure
item switch call.
INV ALIU
Optional.
Specifies that the procedure linkage
should be accomplished only if the switch index is
valid.
11-5-23
M-5035
Statement Name
Identifies the statement to which control is
transferred if the invalid condition is met.
INPUT
Optional.
Specifies that the list of actual para-
meters following are the inputs to the named procedure switch.
Actual Parameter
A data unit, constant, or expression that replaces
the corresponding formal input parameter during
execution of a procedure referenced by the
procedure switch call.
Multiple parameters are
separated by commas.
OffiPm
Optional.
Specifies that the list of parameters
following are to contain the outputs from the
named procedure.
Actual Parameter
A data unit that is replaced by the corresponding
formal output parameter after execution of a
procedure referenced by the procedure switch call.
Multiple parameters are separated by commas.
11-5-24
M-5035
Example
The following declaratives are referenced in t.he procedure switch call.
IVd'. ',$
'1 AJ8tL, Ej ,.1i§slr,EiR, ,H I tD,E't',SIE", tl,o, ,$, I l I I I 'I
""
I I ,
:, " tiL,]), ,C.,/.
I ~,i, I ;r, ," kI, ,0, ,ft', .$, 1 I
IFj (,c,LJ>.
tE"IHlbC-
I ,
jT,,,,~,L.le,
,If,
,W,It,O,'-,t,
J , , ,
I
I
I,
I ..
I
I
I
I
I I
J
I
,
I ,
I
,$,
I
I
I I
I
II
, ,
I I ,
,I
:~:~~~: : : : I : :~A~ ~~ :U8:1':t~:($:Jl>:I(:~LL:Y~: J: I
"viR, C!JLI ,
J I
I
J
IA,X,FI6A,&-1
AB .$. ,
I , I
I , I I , ,, ,,
I
I I
,
I
"
1.
J
Every word of table WHOLE is set to 15.
2.
S,t;jTj 'lC,IO,TIT, ,Tig I,D, ,$,
I,,
,,
I
The table CATTiscleared to zeros.
3 ..
,s. £iT" ,'riA,rJT,
,Tj g
, ,L,:;'!t I ,$, , , , , , , ,
f , "
,
I
I 1 1. ,
Every word of CATT is filled with the value contained in the variable
LIB.
4.
,5,EiT"
,"11,m,
,1IQ
J
~H;O, YEi
Gi, ,,2 "3,, ,Wt.JD
Each word of the subtable CATA is assigned
of item 1,2,3 in table MIOLE.
1
th{~
I If.
I I
I 1 1 , •
value of the field W3
M-5035
Each of the three words in the item specified by 0,1,0 of table WHOLE
is assigned the value of the arithmetic expression LIB •• 2*4 o
6.
1Si£JT1 IQAIDrl',A) I I IIIQ
I IClQII1I81PI
t$
I
I
I
I
I II I I I I I I
Each word of item 1 of table CATT is filled with all or part of the
characters of the Hollerith variable COMAP.
For example, since the
AN/UYK-7 machine word size accommodates four characters, the characters
REDK would be stored in each word of the item.
,(>,
7.
I I I I
I
I
I I
I ,
I
I I I .,
Each word of subt3ble CATA is replaced with the true or false (lor 0)
value of the Boolean variable AXFLAG.
3.4.2
Exchange Statement (SWAP)
Th(' exchange statement swaps the values contained in two data units.
The
exchange statement may be viewed as two assignment statements that are
executed simultaneously.
The rules regarding ~ata unit iengths and types in
the exchange statement are the same as the rules for the assignment statement
(see paragraph 5.4.1.1).
However, both the left and right terms assume the role
of the receptacle.
Format
SWAP
data-unit
data-unit
$
Explanation
SWAP
Specifies the
Data Unit
The identifier of a data unit.
~peration
11-5-30
SWAP.
M-5035
Change 3
Examplt'S
I .
'-.
tS,tv, At P,
3.
~W,I!tP,
~)
,j
tS/NI&P,
I
, J
I 1 J
I ,
,,
5.4.3 Shift (SHIFT) Operation
The SHIFT operation moves the contents of a data location into either the
same or a different data location. During the operation, the data is shifted
as prescribed.
Format
SHIFT
data-unit
shift-type
shift-count
INTO
data-unit
$
Explanation
SHIFT
Specifies the operation.
Data Unit
The identifier for a data unit (two words or less in
length).
Shift Type
Shift Count
One of the following:
eIRe
Specifies circular shift.
ALG
Specifies algebraic shift (sign flll).
LOG
Specifles logical shift (zero fill).
Specifies the number of positions to shift and the .
shift
dire~tion.
This may be a constant, a data unit
or an arithmetic expression. A negativ~ shlft count
denotes a shift to the left, a positive shift count
denotes a shift to the right (the sign must be explicitly
specified for a left shift).
INTO
Optional. Specifies that the receiving data ualt'. name follows.
1I-5~39
I
M-5035
Change 3
NOTE
The SHIFT statement is intended primarily to provide highlevel access to the shift instructions in the AN/UYK-7
repertoire. Consequently several restrictions and limitations
are imposed: the data-unit being shifted must not exceed 64
bits in length; partial-word circular shifts are not permitted
(i. e. ,if crnc is specified, the source data-unit must be defined
as exactly 32 or 64 bits, or 4 or 8 characters); when a
receptacle data-unit is specified, the normal data-type rules
for assignment statements must be followed and the shift operation itself is independent of normal operand alignment or conversion which takes place prior to the assignment; because all
left shifts must be performed using AN/UYK-7 circular shift
instructions, left algebraic shift operations can result in filling
to the right with magnitude bits.
Examples
1•
6l#tZiB7j ,. tIJNj7j
I
IL.O"
I
,-12.
I
$,
, I ,
I ,
'I I 1 I 1 , ,
I
-.
OJ
:~
.
5.4. 4
Pack (PACK) OperatioI).
The PA CK operation requests packing of specified data units into a specified data area.
Format
PACK data-unit WITH data-unit data-unit ... data-unit
$
Explanation
PACK
Specifies the operation.
Data Unit
The identifier of a data unit.
WITH
Specifies that the· data units which follow are to be packed into
the receptacle.
The effect of the PACK statement is bit string transfers from the source location to the
target area, where the strings are stored consecutively and without spacing. If the
receptacle is a table or an item, the right side data units must be tables or items. If the
receptacle is a variable or field, the right side data units must be variables or fields.
11-5-40
M-5035
Examplp
As s un\(~ :
a.
COON is a half-word variable.
b•
ANG i s a 40 - bit fie I d •
c.
LAT(L) is a three-word field in item area LAT.
The variable QUAU will receive the following
Word 0
Word 1
Word 2
cont~ibutions:
Word 3
Word 4
~!
I
presuming that QUAD is a storage area capable of containing the
specified bit strings.
5.5
CONTROL STATEMENTS
A control statement alters or affects program flow within a procedure.
There
are three types of control statements:
2.
GOTO statement name
GOTO switch name
3.
STOP
1.
5.5.1
GOTO Statement Name
This statement performs a transfer to a named statement and may specify a
governing special condition imposed by a console hardware switch.
Format
GOTO
statement-name
special-condition
11-5-41
$
M-5035
Explanation
GOTO
Specifies a transfer of control.
Statement Name
The name of the
gatem{~nt
to which control is to be
transferred.
Special Condition
Opt.ional. Specifies a machine-dependent condition
of lh(' console key selt;ingso For the AN/UYK-7,
these are KEYl, KEY2, KEY3, STOP, STOPS, STOP6 and·
STOP7.
~amples
I .
6.1QJjQ
I ,
lL,BllAITiEi
I
~
I
I
I
"
I I J I J
I
I
I ,
I I ., , J
I
Execution of this statement transfers program control to the statement
labeled UPDATE.
A transfer is made to statement label ERRDIAG if console key I is on.
If console STOPS is on, program execution halts.
When restart is
accomplished, a transfer is made to statement label ALTRNATE.
5.5.2
GOIO Switch Name
This statement performs a transfer of control toa statement label listed
within an index- or item-switch declaration. Transfer may be made conditional
as governed by a specified console key setting.
1.
Referencing an Index-Swi tch.
Transfer is based upon the
valu~
of the switch index.
value is specified in the GOTO statement.
th(! Compiler as to
th(~
This
No check is made by
valictity of the index.
Therefore, if
the index is outside the range of switch index values, program
M-5035
('xpcution eonlrol ean b(' Josi.
To
of thl' INVALJl) operator direct.s the
pf(~v(!nt.
this, spp(;ification
Compil(~r
to perform a
validity check; if the index is oUlside the range of index
values, contr61 will be transferred to a programmer-supplied
statement label.
..... Referenc i ng an I fem-Swi tch.
')
The value of the variable specified in the item-switch is
compared against the list of constants defined in the switch
declaration.
If a match is found. transfer is made to the
corresponding statement name.
If a match is not found, control
is transferred to the next statement or to a statement svecified
after the INVALID operator.
Format
Goro
switch-name
value
INVALID
statement-name
special-condition $
Explanation
GOTO
Specifies a transfer of control.
Switch Name
The name of the referenced index- or item-switch.
Value
A constant, arithmetic expression, or data unit
that provides an index value pointing to a switch
point.
This parameter is not to be used when
referencing an item-switch.
Special Condition
Optional.
Specifies the machine dependency conciitions
to be imposed by console key settings.
KEYl, KEY2,
KEY3, STOP, STOP5, STOP6, and STOP7 are the CMS-2
identifiers used for the corresponding key settings
on the AN/UYK-7.
INVALID
Optional. Spe~ifies a transfer of control to the
following named statement if the index is outside
the range of the index-switch values or if no match
is found in an item-switch.
M-5035
Statement Name
Control is transferred to this statement if the
switch test is invalid.
Examples
Thp following declarations are referenced ip the GOTO switch examples:
IV1RI~ll
I
I~ I ~I I I I 1 I I I I I I 1 I I , I I
I~~IAI I IS~I~~I lSIAI&i~ I ~11i131 I!I
t2,~XI 1$1 I I I I I I
II
I' I
12IWI§ I(~I~)(~I Iii
151 81.1.1 ,$1 I
I
I
I
~lwt!lrl~~
IVI~BI~ I 1
15Iwl~rl~HI
IbiD",
tJ,o, ~I
1 ISI§&J !$, I I 1
1 I ,.2 1 1)1 I I IS181311~1
I J
IEjNlbl-I~WI~!1C.I"1 lSI Wl61 Iii
I I
I.
,
°
rna TiOI
1 ISIWAI
I
1
J
I
I
I
I
I
I
I
I
tld I til I
I
I
1
I
I
I I
I I I I '.1
I
I
I 1I
I· I I 1 I 1
I
Program control is transferred to the switch point of SWA specified by
I.
~or
example, if I equals 2, control is transferred to statement SA3.
This is the same as Example I, except that if 1 is outside the valid
index range, control is transferred to statement SA4.
For example, if
I equals 4, control is transferred to SA4.
~.
t;iOlriA I
Plwle,
I
tS,
I
I
I , I
I
1 I
I I I I I I I , I III I
I
I
I I
Prouram control is transferred to the statement corresponding to the
value in SWX.
For example, if SWX equals 30, control is transferred to
statement SB2; however, if SWX equals 35, program control continues to
the next sequential statement.
11-5-44
M-5035
Change 3
Cia ro, I .5,wl8. , ;+'tI, v,R,Lil;) I , ,S ,B,i, , .$,
4.
I • • ,
I.
I
I
,
,
,
This is the same as ExamI)le 3, except that if the value of SWX is not
found in the switch definition, control is transferred to statement 5B4.
For example, if SWX equals 40, control is transferred to SB4.
> a J SIMA,
5.
I
,4. IK,k,y,il , S.
1
I
J
,
,
J ,
J
Program control is transferred to the statement labeled SA2 if console
key I is on.
5.5.3
STOP Statement
The STOP statement temporarily suspends program execution.
This statement is
legal only in programs being compi.led to execute in the executive state.
Format
STOP
special-condition
$
Explanation
STOP
Specifies a suspension of program execution.
Special Condition
Optional.
Specifies machine dependent conditions
\
of the console key settings.
;).o, DECISION
STAT~M~NTS
The IF operator allows for conditional execution of one or more slatenlPnts.
The condition is based on one of the following four types of de'cisions:
1•
Log lea 1
.
'-.
S('arch
:l.
Validi ty
1.,
Parity
)
A decision statement may be followed by the ELSE operator which allows for execution
of one or more statements if the result of the condition is false.
11-5-45
I
M-5035
Change 3
5.6.1
Logical Decision Statement
\
The logical decision statement evaluates a specified Boolean condition and
reduces the evaluation to a true or false result.
Format
IF
Boolean-condition
THEN
statement(s)
$
Explanation
IF
Specifies that an evaluation, resulting in a Boolean
true or false condition, is to be made.
Boolean Condition
Specifies a Boolean condition, defined in CMS-2
notation by operands (constants, data units, and
arithmetic expressions) and relational or Boolean
operators.
THEN
Specifies that the statement or statements that
follow are to be executed only if the result of the
Boolean condition is true.
Statement(s)
I
A simple or compound statement, or a block of dynamic statements.
See paragraph 5. 8 for an explanation of blocks and the requirements for compounding
(nesting) .decision statements.
Exam(!les
1.
~fi I
~Er'i
~ iiiit' IE"~I G:.QIUO, I~.£I ~
8.1 ITiDI ail ctl . Iii I til I I I I I I I I
dJ eQ
Control is transferred to statement Sl when A equals B.
I .I
I I
Otherwise,
the set statement is executed.
2.
t;FI
J I ,
,R,+I§ ILO-'EiQ is•.,,, ITiflffl' ISle l~' ,TiD, .),
,1j"'Cj'l 15 lilT, I~ InQ IF! I ,.-. I I I I I I I I I
C is set to.D, and E is set to F when A+B is less than or equal to B.C.
11-5-46
I
I
M-5035
.trjF1 ,W,~,Ajrlltlt'",R, ,E,Q,
:\.
I I 1
.-',R,4ts'MY/ J
,Tr#lEtI'J
,Crtg 1iA IE,V,A-,LW, T,tt,R, , ri, , , , ,
('(I!llro) is Iranst't'rrt'd
10 s.talt·Jllt~nt
I I ,
E\ALWnm if lilt' statlls of \\LXIIWH
is 'HAI:\Y'.
eIiF, It, tA,Hj)J
I.
,5
IgR,
, , , YxQTj{), I el~
I
,(g.1
,$,
Yjrl 1M lAtJ.iJl
I I I
I
;;)1
I I , , I I I I ,
J
,T,H,tflj
t I I I ,
If Iht' Bouh'an variahlt's E and F art· both trUt' lII, or if (; is
Ihan II and thp Boolt'an \'ariablt' I is trUt',
~Irt'nlt'r
lIH'!l conlrol is Iransft'rrt'd
t () S t a I I'ml' n lSI •
If
thl~
Buol('an variable BOOL is set to tht' trUt' slate (U,
pro~lral11
control
is transfl'rred tu thl' slatement labelt'd TRUE.
b.
If the Boolean variable BOOL is set to the false state (0), takin~J tht'
complement will make it
true; hence, the true path is takt'n with protJram
control transfer beinu made to statement FALSE.
7.
~~,
I
I
titn
~I~ AIN~ ~~~I~lrI61TI I£'~ 1/~~I!t!I~ I, J·~C~i
8tirJt~
61£(17 IClo,lliEI ITe, I'dl'l Irfl.E~t I
I
I I i i I
aIQJ1jO, leBOICIEIS~dl· I
Ifl
I I I
I
I
The rei a t ion a I e x pre s s ion s ( GT and E(J) are fir s t
to a true or false condit ion.
I
·1
t'V a 1 u ate dan d
r (' d u (' e d
These two results are then logically
tested (ANU) for the final determination of a true or false condition.
If
evaluat(~d
true, the status variable COUE is St't and
is lransferrpd to statement PROCESSA.
II-~-:17
pro~lram
eontrol
I
L.J...J..
M-5035
Change 4
. 5.6.2 Table Search Statement
The table search statement provides the capability of searching a table for data
that satisfies specified end conditions. The statement is a combination of a
FIND statement and a search decision statement.
The FIND loop is terminated when the value of the table element, specified by
the index, first satisfies the condition. If the condition is satisfied, the loop
index points to the element that satisfied the condition. The loop is also
terminated when the index has reached its final value.
The FIND statement must always be followed immediately by a search decision
statement, which may in turn be followed by an ELSE statement (Paragraph 5.6.5).
5. 6. 2~ 1 FIND statement
Format
statement-label. FlND expression VARYING loop-index
initial-value final-value increment $
Explanation
Statement Label. Optional. The name by which this statement is
referenced. This label is required if the table
search is resumed.
FIND
Specifies a table search.
Expression
A relational expression, the first term of which
must be a subscripted table reference using the
loop index.
II-5-48,
M-5035
Change 4
VARYING
Optional. Specifies that the operands that
follow, control the loop. If not included, the loop
index is varied from 0 in increments of 1 within
the limits of the table. The loop index, initial
value, and final value are allowed only if
VARYING is given.
Loop Index
Optional. The name of an index or integer variable
to be varied. It must be included whenever
VARYING is used and it must be one of the
subscripts included in the table reference. If the
VARYING clause is omitted, the first subscript in
the table reference will be used as the loop index.
Initial Value
Optional. FROM followed by a constant, arithmetic
expression, or data unit that specifies the beginning
index value of the loop. If omitted, the initial value
is O.
Final Value
One of the following:
1.
May be THRU followed by a constant,
arithmetic expression or data unit. This
value Signifies the last pass through the
loop.
2.
May be WITHIN followed by the name of a
horizontal or vertical table, subtable, or
like-table. The value assigned is the
number of items defined for the table or
the current value of the major index.
11-5-49
M-5035
Change 4
Increment
Optional.
BY followed by a constant, arithmetic
expression, or data unit. If this value is to be a
decrement, BY must be followed by a minus sign.
If omitted, the increment is 1.
When varying
within a table by a negative value, the initial value
is the number of items defined for the table or the
major index, and the final value is O.
5.6.2.2 Search Decision Statement
The search decision statement must immediately follow a FIN D statement.
The FOUND/NOTFOUND condition is determined by the results of the FIND
search.
Format
IF DATA FOUND THEN statement(s) $
IF DATA NOTFOUND THEN statement(s) $
Explanation
IF
Specifies that a condition is to be evaluated as
true or false.
DATA
A compiler control word used to clarify the
statement.
FOUND
Specifies the condition to evaluate upon
satisfaction of the FIND condition.
NOT FOUND
Specifies the condition to evaluate when the
search loop is completed.
THEN
Specifies that the statement or statements that
follow are to be executed if the FOUN D or
NOTFOUND condition Is true.
11-5-50
M-5035
Change 3
Explanation
ELSE
Specifies that the statement or statements that follow
are to be executed only if the result of the Boolean
condition in the corresponding previous decision statement
'is false.
A simple or compound statement, or a block of dynamic
Statement(s)
statements.
See paragraph 5.8 for an explanation of blocks and the requirement for
compounding (nesting) decision statements.
Examples
1.
IF A EQ B THEN'SET C TO D $
ELSE SET C TO 1 $
C is set to D if A equals B. Otherwise C is set to 1.
2.
IF BOOL THEN PROCA $
ELSE BEGIN $
SET E TO F $
SET G TO H $
END $
PROCB $
If the Boolean variable BOOL is true, then procedure. PROCA
is called. If BOOL is false, then the block of set statements
is executed.
In either case, PROCB is then called.
5.7 LOOP STATEMENTS
Loop statements direct repeated execution of a specified group of statements (vary
block) or perform. a table search.
II-5-50A
M-5035
5.7.1 Vary Block Statements
A vary operation· is used to execute .one or more statements a specified number of times
(at least one time). The statements to be executed are bracketed by a VARY statement
and an END vary statement. This group of statements is defined as a vary block.
The number of passes through the loop is controlled by a loop index.
Multiple vary
loops on the same level are allowed within the same VARY statement. .
II-5-50B
M-5035
Change 4
Statement(s)
A simple or compound statement, or a block of
dynamic statements.
5.6.2.3 Table Search Format
A generalization of the FIN D statement in combination with the required search
decision statement follows:
1.
FIND statement $
IF DATA FOUND THEN
(found sequence, with or without
RESUME) .•• $
(search completed sequence, should not RESUME)
2.
FIND statement $
IF DATA NOTFOUND THEN •••
(search completed sequence,
should not RESUME) ..• $
(found sequence, with or without RESUME)
The search completed sequence in the first case and the found
sequence in the second case may be ELSE statements.
11-5-51
M-5035
Ghange 4
5.6.2.4 Table Search Examples
'TARGET' is compared fJljainst. field PLUTA in table PAR, starting at
ii, 'm 0 and c () n Lin u i nU un til an e (I ui val en c e i s f 0 und
0r
the com pie t e
table has been searched (not. found) and an exit made to AVERAGE.
t h" FIND is
control is
s('archt'd.
satisfi(~d
lransf(~rred
If
before the complete table has been searched,
out of the loop and the remaining items are not
The variable K is the loop index.
This sequence of statements increments TALLY each time the third word
in the first seven items of CATD equals CATC.
If no equivalence is
found or the varying portion of the FIND is satisfied, control is
I
ransferred to STEP2.
The RESUME statement. continues the search only
if an (>({uivalence has occurred.
It is
no~
logical to resume a FIND
loop on a not-found condition since the search continues without
reinitialization.
tJr
In the example, STEP2 will always be executed whether
not dat.a is found, since completion of the table search will be
interpreted as a true NOTFOUND condition and exit will be via THEN
(;OTO STEP2.
11-5-52
1\1-5035
Change 4
The following three f>xamples illustrClte a table search for a
~pecified
condition using Cl FIND st.atement with a search d(lcision statement of ForNU
and NOTFOUNU, respect ively, in the first two pxamples, and a VARY block in
the thitd examp·le.
All three examples produce the same result:
a transf('r
to ALARM is made if the specified condition is met less than five times
during the search; otherwise, processing continues with the next instruction
in sequence.
1 I 'I
I
4.
1
I I I I I
I
1'1 I I.! ,
,A- r; Rt Rj' f: JAtl) IY', J
1.'
,S,c."
,KO,Uft,TI ,r; 9
,0,
If,
I J
11
,FtZiM), ,"':,BIUM,'-,( ,TI~'J'5L,"'J~lr
I
C~~f1~) ,
II-5-53
I
,
I
I
I
J
J
J I
,
I'"16,),
lillI&.,
I
,I
1
I
M-5035
Change 4
,-,.
I
I
I
,
I
,
J
,
,
ls,EiT,
,f4,O,tJ,MT,
lA~IR,R,£"II4I~,Y,.1 IVaD,R,Y, ,TiX,
Irp"f), ,$,
I
J J
J ,
,
4
"
,Wlr,T,HltJl OrJ:,Arj,!,B,L, If,
, 1
I
I I
I
5.6.3 Validity Decision Statement
. The validity decision determines whether a subscripted data reference is valid.
For
example, if a horizontal table is defined wlth four items, any reference with the item
index larger than 3 would be invalid
o
Format
IF table-element VALID/INVALID THEN statement(s) $
11-5-54
M-5035
Change -.1
Explanation
IF
Tablt~
Spt'cifips that n decision is to bf'
EIl'mt'nt
performf~d.
A subscripteu table ell'mt'nt wtll'rl' tht, suhscript
cnlculation is checkpd for \,nlidity.
\' AL I I) / I NVALI I)
5 Pe c i fie sac 0 nil i t ion () f a \' II 1 i Ii
subscript.
TlIEN
Specifies that the statellll'nt or statpments thnt
follow
()rf~
0
r i nval i d
to bp (,Xl'cutt'd if tht' tllhll' l'lenwnt
ref ere nc e i s VAL I U () r I :\ \' AL III •
5tatement(s)
A simple or compound statenlent or a block of dynamic
statements.
Examples
The following tieclnration is referenced in the validity decision examplt>s:
''2WiB' e
I
,ClA'M
.s)UlB -171ABIL 1«1
,
I
1111
I
l-5j
IClefIZl81 lat
I ,2 I $
III ,$I
Program control is transferred to statement 51 if I has a value of U
or 1.
Program control is transferred to statement 51 if I is not zero.
5.6.4
Parity Decision Statement
The parity decision statement determines parity by testing the data specified
for an odd or even number of I-bit settings.
If the sum of the I-bits
contained within the data unit is an even number, theparitj is considered
even.
If the sum is an odd number, the parity is considered odd.
II-5-55
1\1-5035
Change 4
Format
IF one-word data-unit
onDP
IF one-word data-unit
EVENP
THEN
THEN
statement(s)
$
statement(s)
$
Explanation
IF
Specifies that a condition is to be evaluated as true
or false.
One-word
data-unit
The identifier of a data unit contained in one
word.
ODDP/EVENP
The decider as to whether the parity condition of the
value contained in the data unit is odd or even.
THEN
Specifies that the statement or statements that follow
are to be executed if the ODDP or EVEN P condition
is true.
State~ent(s )
One or more (connected by THEN) dynamic statements.
Example
The bits set to 1 in the variable STAT are tested to see if their sum is an
even number. If so, the variable FLAG is set to O.
5.6.5
ELSE Statement
Any of the four types of decision statements may be immediately followed by an ELSE
statement which allows for execution of one or more statements if the result of the
condition is false.
Format
ELSE
statement(s)
$
I1-5~56
M-5035
Change 4
Explanation
ELSE
Specifies that the statement or statements that follow
are to be executed only if the result of the Boolean
condition in the corresponding previous decision statement
is false.
Statement(s)
A simple or compound statement, or a block of dynamic
statements.
Refer to paragraph 5.7 for an explanation of blocks and the requirement
for compounding (nesting) decision statements.
Examples
1.
IF A EQ B THEN SET C TO D $
ELSE SET C TO 1 $
C is set to D if A equals B.
2.
Otherwise C is set to 1.
IF BOOL THEN PROCA $
ELSE BEGIN $
SET E TO F $
SET G TO H $
END $
PROCB $
If the Boolean variable BOOL is true, then procedure PROCA
is called.
If
is executed.
B~OL
is false, then the block of set statements
In either case, PROCB is ,then called.
11-5-57
1',1-5035
Change 4
5. 6. 6 Nested Decision Statements
Because the connector TH EN serves a specialj purpose within decision statements,
IF and FIND statements cannot directly appear
~fter
THEN or ELSE associated
with an IF statement. However, the compiler interprets all statements within a
statement block (Paragraph 5.7) as the equivalent of a simple statement.
This
provides the means of nesting decision statements and gives rise to the following
rule:
If an IF or FIND statement is to appear following the connector THEN or the
operator ELSE associated with another decision statement, the nested IF or
FIN D statement must appear within a statement block. Furthermore, when a
stat~ment
block appears within an IF statement, execution of all statements
within the block is subject to the condition of the IF statement.
Examples
1.
IF 'A
Bl.
THEN
BEGIN $
FIND TAB(I) EQ B $
IF DATA FOUND THEN SET F TO 1 $
ELSE
SET F TO 0 $
END B1 $
ELSE
132 •. BEGIN $
IF B LT 10 THEN SET B TO B+1 $
ELSE
VARY I WITHIN TAB $
SET TAB(I) TO 0 $
END $
END B2 $
1I~5-58
M-5035
Change 4
In this example, the outer decision statement is logically
equivalent to the form:
IF A THEN block Bl ELSE block B2 $
The BEGIN and END statements are necessary due to the nested FIND
statement in Bl and the nested IF statement (with its nested VARY loop)
in block B2.
2.
IF
STATUS EQ 'START' THEN
SET STATE TO 0 THEN
VARY I WITHIN ANS $
SET ANS(I, SUM) TO 0 $
END THEN
COMPUTE $
ELSE FINISH $
In this example, the VARY block is the equivalent of a simple
statement within the compound conditional portion of the decision
statement.
5.7 STATEMENT BLOCKS
A statement block is a group of simple or compound statements initiated by a
BEGIN, VARY, or FOR statement and terminated by an END statement. A
statement block is interpreted by the compiler as the equivalent of a simple
statement. A value block (Paragraph 5.7.3.2) is a special block used only in
the construction of FOR blocks; a value block· is not the equivalent of a simple
statement.
11-5-59
M-5035
Change 4
5. 7. 1 BEGIN Block
Format
statement-label.
BEGIN $
dynamic statements
EN D statement-name $
Explanation
Statement-label
Optional. The name by which the block is
identified.
BEGIN
Specifies the start of a block.
END
Specifies the end of a block.
Statement-name
The name, if any, given to the block as
•
specified in the BEGIN statement.
The BEGIN and END statement brackets serve only to delimit statement blocks;
the BEGIN statement does not specify a dynamic processing function as does the
VARY or FOR statement (Paragraphs 5.7.2 and 5.7.3).
Because the BEGIN
statement does not define a loop structure, it cannot be resumed. Statement
blocks delimited by BEGIN and END may be nested within, and in the same
manner as, VARY blocks and FOR blocks.
ll-5-60
1\1-5035
Change 4
Example
Ll.
BEGIN $
SET A TO B $
VARY I WITHIN TAB $
BEGIN $
SET C TO D**A $
IF C LT 100 THEN SET TAB(I) TO C $
END $
SET A TO A+1 $
END $
END Ll $
Three statement blocks are defined in the above example: an outer block, Ll,
delimited by BEGIN and END; a VARY block nested within block Ll; and a
BEGIN/END block embedded In the VARY block. Note that the two BEGIN
statements and their associated EN D statements serve only to group dynamic
statements in a logical manner; removal of these bracketing statements would
not alter the processing function of this program segment.
5.7.2 VARY Block
A vary operation is used to execute one or more statements zero or more times.
The statements to be executed are bracketed by a VARY statement and an EN D
vary statement.. This group of statements is defined as a vary block.. The
number of passes through the loop is controlled by zero or more loop indices, a
WHILE condition, and/or an UNTIL condition.
11-5-61
M-5035
Change 4
5.7.2. 1 VARY Statement
The VARY statement initializes the loop and specifies controls for the number of
passes through the loop (see Figure 5-1).
Format
statement-label. VARY index-clause(s) WHILE clause UNTIL clause $
Explanation
Statement Label.
Optional. The name by which the vary block is
referenced. This label is required if the VARY
loop is resumed.
VARY
Specifies the start of a vary block.
Index-clause(s)
Optional. Specifies the data units to be incremented
or decremented and possibly tested (Paragraph 50 7.2 .. 1. 1:
Multiple index-clauses are separated by commas.
WHILE clause
Optional. Specifies a condition which is to be
tested before each pass through the loop
(Paragraph 5.7.2.1.2).
UNTIL clause
Optional. Specifies a condition which is to be
tested after each pass through the loop
(Paragraph 5.7.2" 1.3).
A program's execution nlust not depend on incrementing and testing of the indices
and the evaluation of the UNTIL clause being performed in a.ny predefined order.
The conlpiler will order the end loop evaluation a.ccording to optimal code
generation.
II-5-62
M-5035
Change 3
Simple and compound statements may also be grouped together into blocks by means
of the brackets BEGIN or VARY and END. Statement blocks are particularly useful,
and in fact are required, when compounding (nesting) of decision statements is
desired.
5. 8. 1 Statement Blocks
A statement block is a group of simple or compound statements initiated by a VARY
or BEGIN statement and terminated by an END statement. A statement block is
lnterpreted by the compiler as the equivalent of a simple statement.
Format
statement-label. VARY. . . $
or
statement-label. BEGIN $
.
dynamic statements
EN D statement-name $
Explanation
Statement-label
Optional. The name by which the block is identified.
This label is required on the VARY statement if the
VARY loop is resumed.
VARY.
A VARY statement is specified in paragraph 5. 7. 1. 1.
BEGIN
Specifies the start of a block.
END
Specifies the· end ofa block.
Statement-name
The name, if any,given to the block as specified
in the VARY or BEGIN statement.
n-5-62A .
M-5035
Change 3
The BEGIN and END statement brackets serve only to delimit statement blocks; the
BEGIN statement does not specify a dynamic processing function as does the VARY
\
statement, described in paragraph 5. 7. L
Because the BEGIN statement does not
define a loop structure, it cannot be resumed. Statement blocks delimited by BEGIN
and END may be nested within, and in the same manner as, VARYblocks.
Example
Ll.
BEGIN $
SET A TO B $
VARY I WITHIN TAB $
BEGIN $
SET C TO D**A $
IF C LT 100 THEN SETTAB(I) TO C $
END $
SET A TO A+l $
END $
END Ll $
Three statement blocks are defined in the above example: an outer block, Ll,
delimited by BEGIN and END; a VARY block nested within block Ll; and a
BEGIN/END block embedded in the VARY block. Note that the two BEGIN
statements and their associated END statements serve only to group dynamic
statements in a logical manner; removal of these bracketing statements would
not alter the processing function. of this program segment.
5.8.2 Compound Decision Statements
Because the connector THEN serves a special purpose within decision statements, IF
statements (and therefore FIND statements) cannot directly appear after THEN or ELSE
associated with an IF statement. However the compiler Interprets all statements within
a statement block
(1. e.,
all statements from BEGIN or VARY to the corresponding END
statement) as the equivalent of a simple statement. This provides a convenient means
II-5-62B
M~5035
Change 3
of compounding, or nesting, IF statements and gives rise to the following
rule.
If an IF or FIND statement is to appear following the connector THEN or the
operator ELSE associated with another IF statement, the nested IF or FIND
statement must appear within a statement block. (Note that VARY may directly
follow THEN or ELSE because the VARY statement defines the start of a block.)
Furthermore,. when a stateIJlent block appears within an IF statement, execution of
all statements within the block is subject to the condition of the IF
stat~ment.
Examples
1.
IF A
THEN
Bl.
BEGIN $
FIND TAB(I) EQ B $
IF DATA FOUND THEN SET F TO 1 $
ELSE
SET F TO 0 $
END B1 $
ELSE
B2. BEGIN $
IF B LT 10 THEN SET B TO B+1 $
ELSE
VARY, I WITHIN TAB $
SET TAB(I) TO 0 $
END $
END B2 $
In this example, the outer decision statement is logically equivalent
to the form:
IF A THEN block B1 ELSE block B2 $
II-5-62C.
M-5035
Change 3
The BEGIN and END statements are necessary due to the nested FIND
statement in Bl and the nested IF statement (with its nested VARY loop)
in block B2.
2.
IF· STATUS EQ 'START' THEN
SET STATE TO 0 THEN
VARY I WITHIN ANS $
SET ANS(I, SUM) TO 0 $
END THEN
COMPUTE $
ELSE FINISH $
In this example. the VARY block is the equivalent of a simple
statement within the compound conditional portion of the decision
statement.
Il-5-62D
M-5035
Change 4
Index
Ini tiallzation
Condition False
VARY Block
Increment Indices
and Evaluate
UNTIL Condition
Yes
Next
Statement
Figure 5-1.
VARY Flow
l'Y1-5035
Change 4
5.7.2. 1. 1
Index Clause.
An index clause specifies a data unit which is to
be initialized before the first pass through the vary loop, incremented or
decremented after each pass through the loop, and possibly compared against
a limit after each pass through the loop in order to terminate the loop.
Format
loop-index
initial-value increment final-value
Explanation
Loop-Index
The name of the data unit to be varied,
Initial-Value
Optional. FROM followed by a constant,
arithmetic expression, or data unit that
specifies the beginning index value of the
loop. If
Increment
omitte~,
Optional.
the initial value is O.
BY followed by a constant,
arithmetic expression, or data unito If
this value is to be a decrement, BY must
be followed by a minus sign. If omitted,
the increment is 1. When varying within
a .table by a negative value, the initial
value is the number of items defined for
the table or the major illdex, and the final
value is O.
II-5-64
M-5035
Change 4
One of the following:
Final Value
1.
May be THRD followed by a constant,
arithmetic expression or data unit.
This value signifies the last pass
through the loop.
2.
May be WITHIN followed by the name of
a horizontal or vertical table, subtable t
or like-table. The value assigned is
the number of items defined for the table
or the current value of the major index.
The initial-value,
incr~ment,
and final-value may appear in any order
within an index-clause. Refer to Paragraph 5.7.2.4 for examples of
index-clauses.
5.7.2. 1. 2
WHILE Clause.
The WHILE clause specifies a condition which
is to be tested before each pass. If the WHILE condition is true, the pass will
be executed.
Format
WHILE condition
Explanation
WHILE
Specifies a WHILE clause.
condition
A Boolean-condition as defined in Paragraph 5.6.1,
a validity condition as defined in Paragraph 5.6.3,
or a parity condition as defined in Paragraph 5.6.4.
Refer to Paragraph 5.7.2.4 for examples of WHILE clauses.
II-5-65
1\'1-5035
Change 4
5.7.2.1.3
UNTIL Clause.
The UNTIL clause specifies a condition which is
to be tested after each pass through the VARY block.
If the UNTIL clause is
true, another pass through the VARY block will not be performed.
Format
UNTIL condition
Explanation
UNTIL
Specifies an UNTIL clause.
Condition
A Boolean condition as defined in Paragraph 5.6,
a validity condition as defined in Paragraph 5.6.3,
or a parity condition as defined in Paragraph 5. 6.4.
Refer to Paragraph 5.7.2.4 for examples of UNTIL clauses.
5.7.2.2 Resume (RESUME) Statement
A RESUME statement specifies a transfer to the increment and test steps within
a VARY block.
This allows partial vary passes through a VARY block and a
means to continue the VARY block. A RESUME statement may also be used in
conjunction with a FIND statement, since FIND operations permit VARY operands.
Format
RESUME statement-name $
Explanation
RESUME
Specifies the RESUME operator.
Statement Narne
The name given to the VAR Y or FIN D
statement to which this RESUME statement
applies.
II"'5-(j()
M-5035
Change 4
5.7.2.3 End Vary Statement (END)
The EN D vary statement specifies the conclusion of the vary block. If the loop
is not yet completed, any loop indices are incremented and control is transferred
to the initial statement within the vary block. If the loop has been completed,
control is transferred to the statement following the END vary statement.
Format
ENU
statement-name
$
Exp lana t i on
ENU
Specifies the end of a vary block.
S t a Lemen t Name
The name, if any, given to the corresponding VARY statement.
5.7.2.4
Examples of VARY Blocks
1.
The data unit APR is varied from starting point 1 (FROM)
point 10 (TURU) by an implied faetor of I.
val u e
0
f 'I NSERT' i nit em s 1 t h r 0 ugh 10
0
to thpf'nding
The field FCX2 iss!'t to thp
f tab 1e PAR.
Whe nth e 100 pis
completed, processing cont.inues with the statement following the ENU
stat
em(~nl
•
NOTE
Upon loop terminat.ion (aftpr thp END statement),
the loop index will not neeessarily eontain 1.h(1
value of thp ending point or tht' pndin~) point
plus one.
11-5-67
1\1-5035
Change 4
2.
,S,T,EiP,,,.,
,-e,y,
IV)41RIY' ,L>,W, ,WtrlrtHtEaM o'&2t8cr1
J,s,EjT, ,FjCtg,RIT,(JZ)~,. J,),
,01
IEiNlb,
IS, " , I , I I , II
,T,O,
,S,T,.,,,,,
Cd,
J~'
It,
I
I
I
I
I
The data unit UW is varied according to the number of items in table
FC2RT or the major index (if any).
·Each word 1 in all i terns of table
F C 2R T wi 11 be set toO.
, I
I
I
I
IVIAl1 IK, ,W,r,TIHi5N, ,Ct;15,R, iBl)'J ,-,.L
I EIFI ·1c..,II8,RI(I~.13UI ',#to,Tj ,0, ,DMEf(1 I
C,A,T\,R,.,
f()]lowin~1
Whl'l1 CJBH(K,:3) is nonzpro, tl1l' statpnwnt
PXI'(~ulpd.
Th(~
ro
transf('r
ll1ah(~
,i
tile IF is nol
pass Ihr()lI~lh Ihl' vary b]och
Ilw twxl
is accomp 1 j shed by I lip HESt:~lE s tat cnH'ut •
. _~ ij£d<,J"
Iv ~ JAj 16R,oM,
I j
_LLj_l.~.LLJsJ§Il
,X.
i~~~1.21QL
...L.L.LJ-L.L-L
,'I1_.1±l..Jk. LJ.~_.} ..... L...L-LL.l._L_J-1_l
Ii!
JTjol 1
-1-. _.
; J __L-Ll kJFl fi 161Tl ~J! IlT1H-f"1.ti.L_jQ:.~!'QL_~~A[1~ J~L-LJ _
_j_~ .. ~._.2 .L..l.-l_~J)j ... J g,T,§~ I J~_.~ .. J._l.... L__
LJ __.4.-1-l.J-~~ ..Ll.
-L.L I !. 1 .l..
I l.~J--.LL-L...L1 1 ,1 1 L-L.l_J.....LJ ...l L.~~
1 1.J
_L..L-.L..J. 1 1 , I ) '-1 1 J .1-1-L' I I I I
l..J____ L...LL~ , 1
1 J-Li
j
I
j
'!
:,~~g.: :: ~:;:~ ::~ :T.ol : YM~~: I ~.
I
I
I
T his
III
f •X
J 1
IRIE'IS1U,MtEll6JT~,&
a III pIe ill II ~ t rat (~ s t h (' t r an s fer
1
0 Ut
I~
I J
1
I
I
I'
sid (' () f a va r y b 1 0 e k.
J
Wh f' n X
is Un',ltt'r than :2;1, control is transferred to stp» LATH outside of this
vary block.
Thp HESIJME stat(~ment will transfer control hack into 1h('
vary hloch.
11-5-70
1\1-5035
Change -1
tie
VARY I FROM I WHILE TAB(I) VALID
~
SET TAB(I) TO TAB(I)+5 $
VARY I FROl\1 I \VITHIN TAB $
SET TAB(I) TO TAB(I)+5 $
END $
This example illustrates two methods of increnlenting a set of table
itenls not necessarily starting with the first iteln.
The diffetcnc"e
between the two Inethods is the location of the test to deternline if
another pass is to be perfornled.
The VAR Y using the \VHILE clause
will test before each pass, while the VARY using the \VITH1N will
test after each pass.
The WHILE VARY would be used for situations
in which !!£ passes through the loop were desired because I does
not contain a valid TAB index.
9.
VARY I UNTIL SYl\tIBOL NOT H(,) $
SCAN $
"SET NAIHE(l) TO SYlVlBOL $
SCAN $
END $
The above example illustrates the use of an UNTIL clause to process
a comnla separated list, storing each list itcnl in a name"table
whose index is also initialized and incremented by the VARY block.
Assuming SCAN updates the value of the HoU'erith variable SYl\IBOL,
a test is made at the end of each pass to determine if another list
item is specified.
11-5-71
M-5035
Change 4
10
0
VARY I, J THRU5 WHILE B1 UNTIL B2 $
TABPROC INPUT TIN(I) OUTPUT TOUT(l), BI,
B2 $
END $
The above examples illustrate a loop which may be terminated by any
of the three loop termination criteria: index, WHILE, or UNTIL.
No passes will be made through the block if the Boolean variable B1
is false when first entering the block. TABPROC will set the first
six items of table TOUT assuming neither Boolean variable B1 or B2
is set to false due to some condition diagnosed by TABPROC.
11.
VARY I $
END $
VARY $
END $
The above examples illustrate two methods of programming "infinite"
loopso The only difference between the loops is that in the first
example, I will maintain a count of how many times the loop has
been executed.
5. 7 . 3 FOR Block
A FOR block consists of a FOR statement followed by a set of value blocks
. and an END statement which terminates the FOR block. Execution of a FOR
block will result in the execution of the value block one of whose values is the
. same as the result of the FOR expression contained in the FOR statement.
11-5-72
M-5035
Change 4
Format
statement-label. FOR-statement $
value-block
value-block
EN D statement-name $
Explanation
Statement-label
Optional. The name by which the FOR block
is identified.
FOR-statement
Refer to Paragraph 5.7.3.• 1.
Value-block
Refer to Paragraph 5.7.3.2.
END
Specifies the end of the FOR block.
Statement-name
The name, if any, given to the FOR block .
as specified in the FOR statement.
Examples
Refer to Paragraph 5.7. 3. 3.
5.7.3.1 FOR Statement
The FOR statement specifies the controlling expression, type, and optional
ELSE statement of a FOR block.
Format
FOR FOR-expression FOR-type ELSE-statement $
1\1-5935
Change ·1
.Explanation
FOR-expression
Any arithmetic, Boolean, relational, literal,
or status expression legal as an assignlnent
expression as defined in Paragraphs 5. -1. 1. 1
through 5.4. 1. 4.
FOR-type
Optional.
The presence of an explicit FOIt-type
is denoted by a comma following the FOHexpression.
The comma is followed by a
data type containe.d in parenthesis. The data
type nlay be any type allowed in a variahle
declaration with the restriction of a rnaximum
of eight characters for a Hollerith type. ,If
the
F(>I~-expression
is a variable, field
reference, typed item reference, or function
reference and the FOR-type is not explicitly
specified, the FOR block will have the type
of the FOR-expression data unit.
If the FOR-
expression is a local or system index and the
FOR-type is not explicitly specified, the FOR
block will have a type of I 16 U.. If the FORexpression is an item word reference and the
FOR-type is not explicitly specified, the FORblock will have
a type of I 32 S.
If the FOR-
expression is not one of the above data units
the FOR-type must be explicitly specified.
If
the FOR-type is explicitly specified, the FOR-
expression must agree in type with the FOR-type
U-5-74
1\1-5035
Chang(.) 4
acco'rding to rules of assignment specified in
Paragraphs 5 . .J. 1. 1 through 5..1. 1. 4.
Additionally, if the explicit FOH-type is
Hollerith, the FOR-type 1l1UY not specify a
greater nUlnber of characters than contained in
the FOR-expression.
ELSE-statement
Optional. Refer to Paragraph 5. 6. 5.
Execution of a FOR statenlent will cause the evaluation of the FORexpression, the required conversion, if any, to the FOR block type,
and execution of the value block having the same value as the FORexpression. If the value of the FOR-expression docs not match any
of the l. . OR block values and an ELSE-statement is not specified,
the control will be transferred to the staten1ent following the FOR
block.
If the value of the FOR-expression docs
110t
match any of
the FOR block values and an ELSE-statclllCnt is s})ecified, the
ELSE-statelncnt will be executed. After execution of the selected
value block or the ELSE-statement, control will be transferred to
the st.atement following the FOR block.
Execution of a FOR statement is subject to the following rules:
1.
If the FOR-expression is an arithmetic expression, it
will be evaluated with "simulated receptacle" rules
defined on Page II-5-4.
2.
The result of a
FOR~expression
will be converted to the
FOR block type as if the FOR-expression were being
assigned to a variable having the FOR block type.
II-5-75
M-5035
Change 4
3.
To produce correct code, the'FOR block type
~
express
all possible values which may be produced by the FORexpression o For example, if an arithmetic FOR-expression
produces a negative value, the FOR block type must be
signed. This rule does not imply that a value block must be
specified for each possible value which may be produced by
the FOR-expression.
4.
To produce optimal code, the FOR block type should express
only those values which may be produced by the FOR-expression.
For example, if an arithmetic FOR-expression will always
produce only the integers between 0 and 7, the FOR block
should be typed I 3 U.
5.7. 3.2 Value Block
A value block is a group of statements which is executed when the evaluation
of the associated FOR-expression results in one of the constant values
associated with the value block.
Format
Statement-label.
BEGIN value(s) $
.
dynamic statements
EN D statement name $
Explanation
Statement-label
Optional. The name by which the value
block is identified.,
n-5-76
1\[-5035
Change -l
Specifies the start of a value block (when
BEGIN
followed by constants).
Constants that are associated with the value
Value(s)
block.
Multiple values are separated by
commas.
The constant must agree, in type
with the FOR block type.
If the constant
is Hollerith, it will be blank filled to the
right to the size of the FOR block type.
Statement-name
The name, if any, given to the value block
as specified on the BEGIN statement.
5. 7. 3. 3 FOR Block Examples
1.
FOR X $
VA.
BEGIN 0, 7 $
CASEA INPUT H($) $
END VA $
'VB.
BEGIN 4 $
CASEB INPUT H(,) $
END VB $
VC. ',BEGIN 1,2,3 $
SET ERCOD TO 16 $
END VC $
END $
Assuming X is a local-index, the appropriate value block will be
executed if X has the value 0, 1,2,3,4, or 7. If X is 5,6 or greater
than 7, the statement following the FOR block will be executed. If
it is known that at the time of execution of the FOR statement, X
will never be greater than 7, the FOR statement should be coded:
FOR X,
(I 3 U) $
11-5-77
1\:1~5035
Change 4
2.
FBLOCA.
FOR F(X)+2, (1646S)
BEGIN -7, -5, 7 $
VBLOC.
VARY UNTIL X GTEQ 0 $
SET X TO X+F(X) $
END VBLOC $
SET MES TOH( ) $
END $
BEGIN -1, 0, 1 $
FBLOCB.
FOR H(Y)
ELSE
SET MES TO H(*****) THEN
SET X TO 1 $
BEGIN H(Tl) $
SET MSG TO H(AA) $
SET X TO 5 $
END $
BEGIN H(Dl), H(T2) $
SET MES TO H(??) $
SET X TO 7 $
END $
BEGIN H(DIA) $'
SET MES TO H(ERROR) $
SET X TO 0 $
END $
ENDFBLOCB $
END $
END FBLOCA $
The value block containing VBLOC will be executed if the arithmetic
expression F(X)+2 results in -7, -5, or 7.
II-5-78
The value block containing
1\1-5035
Change -1
F BLOC B will be executed if the expressions results in -1,0, or 1.
If none of these values result, the control will be transferred to
the statement following block FBLOCA. FBLOCB is a FOR block
whose FOR-expression is an H 4 type function.
returns the value H(Tl.6.6), H(Dl.6.6),
,H(T2.6~),
II the function
or H(DIA.6), X
and 1\IES will be set by the appropriate value blocks. Otherwise,
X and 1\-[ ES will be set by the execution of the FOR ELSE clause.
3.
FOR T(J)
ELSE BEGIN $
VARY UNTIL T(J) EQ 'FREE' $
'END $
SET T(J) TO 'BUSY' $
END $
BEGIN '101'
$
VARY UNTIL T(J+l) EQ 'FREE' $
END $
END $
BEGIN' '102' $
VARY UNTIL T(J+2) EQ 'FREE' $
END $
END $
BEGIN 'FREE' $
END $
END $
Example 3 demonstrates a possible
~sage
of a FOR block used to
control wait loops in a multiprocessing environment. where the
processors communicate the system status through a table with
status typed items. Note that the value block whose value is
'FREE' contains no dynamic statements.
II-5-79/U-5-80 Blank
M-5035
SECTION 6
INPUT/OUTPUT STATEMENTS
The CMS-2 language i~cludes a number of statements that enable the user's
program to communicate with peripheral equipment. The operators for these
statements are summarized below:
General Operators
INPUT
OUTPUT
FORMAT
ENCODE
DECODE
Special File
Handling Operators
FILE
OPEN
ENDFILE
CLOSE
POS
FIL
LENGllI
DEFID
CHECKID
To use these statements successfully, the following restriction must be
observed: The CMS-2 Monitor must be in core during user-program execution.
This requirement arises because of Compiler-generated procedure calls to
input/output run-.time routines, which are designed to link with the Monitor
and communicate with its input/output drivers.
6.1
INPUT/OUTPUT OPERATIONS
For many input/output
purposes~
a user's program requirements can be most
simply met wi th: only the INPUT, OUTPUT and FORMAT s ta tements. In these
general situations, the CMS-2· operating system provides system-defined names
by which the user may reference the hardware device involved with the input or
output function. These names and their associated devices, hereafter referred
to as startdard files, are described in Table 6-1.
11-6-1
M-5035
TABLE 6-1.
CMS-2 OPERATING SYSTEM STANDARD FILES
FILE NAME
FILE DEVICE
READ
PRINT
Card reader
Printer
PUNCH
Card punch
OCM
Operator communication medium
For those cases in which the user wishes to perform input/output operations
using devices other than standard devices, special
are provided.
fil~-handling
operators
These operat-ors are discussed in paragraph 6.3 (Nonstandard
File Control).
The INPUT and OUTPUT commands are used to transmit data between a hardware
device and a user's program.
Figure 6-1.
These commands are functionally illustrated in
Each input or output statement causes the Compiler to generate
calls to particular run-time routines.
These routines interface with the
Moni tor to cause immediate transfer of data between a buffer area and the
hardware device.
For standard files, the run-time routines provide the
buffer area.
If formatting (conversion of data from one representation form to another) is
required, transformation routines that utilize the specifications of the
FORMAT statement as their inputs are provided.
These transformations occur in
the input/output flow as illustrated in Figure 6-1.
Prior to each input or
output operation, the buffer area associated with that file name is preset to
blanks if the data is to be formatted, and to zeros if the data does not have
formatting specified.
For standard input/output operations where no format statement is prescribed,
the input card image is interpreted as Hollerith characters and stored with
the internal octal representation of the individual character.
During 6utput,
the word contents are interpreted in 8-bit Hollerith characters and are printed.
11-6-2
M-5035
Us er Req ui res
Formatting
User Does Not
Require Formatting
External
Hardware
Device
External
Hardware
Device
Output
Buffer
Area
Buffer
Area
Data Conversion
Based on Format
Statement
Input
User's
Data
Area
User's
Data
Area
Figure 6-1.
Input/Output Data Flow
11-6-3
M-5035
6.101
INPUT Statement
This statement
~irects
an operation to input da1a from the device associated
with the specified file name.
When tlds command is used to transfer data
into an entire table by means of whole-tahle
referencing~
the data is moved
sequentially word-by-word without regard to the defined table structure;
however, when all or part of a tahle is specified by means of .Item referencing,
the data transfer is performed hy items o If a FOHMAT declaration is referenced,
automatic conversion
o~curs.
Forma t
INPUT file-name receptacle-data-list format-name $
Explanation
INPUT
Specifies an INPUT operationo
Fi l'e Name
The name of a-standard file or the name of a nonstandard file that has been defined with a FILE
declaration statement.
Legal standard file names
for input are:
1.
OCM - specifies the,operator communication
medium.
2.
READ - specifies the operating system's input
device for punched card images.
'Receptacle Data List
One or more of the following CMS-2 data structures o
If more than one receptacle is to be specified, the
names, separated by commas, are gathered into a list
which is enclosed in parentheses.
1.
The name of a table, subtable, like-table or
item~area.
This name indicates that the entire
structure is to be used.
2.
The name of a major index of a table, subtable or
like-table.
:L
The name of a variahlf!.
M-5035
Change 2
110
A
speeifj(~
item reference of a table, subtable,
or like-table, which may be indexed by a variable
or a numeric parameter.
This indicates that
every word of this item is to be used.
5.
A field or fields of some specific item within
a table, subtable, like-table or item-area.
Multiple field references can be made to any
item specified; these references must be separated by commas.
6.
A series of items of a table, like-table or
subtable that may be modified by field reference(s).
This modification is accomplished
by bracketing the starting item number in parentheses followed by three periods followed by
the ending item number and bracketed in parentheses, such as:
HIGHT «A) ••• (B), MI, M2)
where Ml and M2 are fields within the table.
7.
A series of items in an array:
ARRAY «K,L,M) ••• (N,P,Q»
Every word in the referenced items is filled.
Format Name
Optional.
Refers to the name of a previously defined
FORMAT declaration.
If a format name is specified,
the data units in the receptacle data list must have
internal data attributes
conversion format type.
II-6~5
~ompatible
with the external
M-5035
Change 2
Examples
1
0
ITt If aJ.., fj lelA IBI 1M i'/I Ii I DI
I I
I
,
I I
I
I"
I I I , I I , I
,II
I
I
I
I
I I , I I I I
I
I
I
I I
I.
I
I:
In this example, one record is read from the device described by the FILE
declaration LBR and is transferred to fill each word of the table CAB.
2.
Iljhl81L,Ei J)lzlC. l1i 1/1131
I I I I I I I I -I I· I I ,., I
1101 ~I
1
I , I
, I
1, ,
I I
'I
I I I
I
I
I I
,
~:~~Q:~ :~JA:tr:E: ~I:t:~(~): ~: ::::: :::::::
I : : :
I
I:
One record is read from the device described by the FILE declaration IMAGE
and is transferred, filling each word of item 2 in table DICT.
3.
!l5D~,M'''I7i IEIDtRlMtfl j3,z,!>-", 101(1.3, ), ~I
Ifill LIEI ,:r111 pi ,HI Iii' I ,RI I2,DI 1""T,2 ,.;,.
I
,,
,I
1
,lOI lSI
I I
I
-I
I·'
I
I
I-
I I I I I I I I -II I I I I , I I I
"
I I I I I
I I I I I I
One record is read from the device MT2; assume that it is the Hollerith
string:
(20 characters)
When the format FORMA is applied to tbis
are:
MIOOR (0,0)
35°10
MIM>R (1,0 )
201
MlOOR (2,0)
MIOOR (3,0)
10
110
7778
11-6-6
string~·
the results in memory
M-5035
Change 2
6.1.2
OUTPUT Statement
The OUTPUT statement dire(~ts an operat.ion to output da1JJ to
associated with the file name.
the devir,e
Data transferred from an entire table by an
OUTPUT command using whole-table referencing is moved sequentially word-byword without regard to the defined table structure o
However, when all or
part of a table is specified using item referencing, the data transfer is
performed by items.
takes place.
If a FORMAT declaration is referenced, automatic conversion
Format
OUTPUT file-name source-data-list format-name $
Expla na ti on
OUTPUT
Specifies an
File Name
The name of a FILE declaration or a standard file.
OUTPU~
operation.
Legal standard files for OUTPUT are:
Source
D~taList
OCM
Operator communication medium.
PRINT
Systems output for printer listing.
PUNCH
Systems output for card punching.
A constant or one or more of the operands as
described for the INPUT statement.
If the FORMAT
declaration describes a Hollerith string only, the
source data parameter is not required.
If more than
one data unit is to be acted upon, the names are
gathered into a list, separated by commas and
enclosed in parentheses.
Format Name
Optional.
An operand referring to a previously
defined FORMAT declaration.
If a format name is
is specified, the data units in the source data
list must have internal data attributes compatible
with the external conversion format type.
11-6-7
M-5035
Examples
111
The data to be written on the device identified' in the file named PRINT
is contained in the variable DICT. The optional operand TERRY, refers
to a previously defined FORMAT declaration.
The data contained in the tables POS, SPEED, and 10 is to be written on
the device identified in the file named DATUM. The optional operator
TRUNC refers to a previously defined FORMAT declaration.
3.
In reference to the data structure of Example 3, paragraph 6.1.1, assume
that table MAJOR is the result of the INPUT command.
The values in MINOR (0,0) through MINOR (3,0) are transformed to the
Hollerith character string:
tJ,.
.t:.. 350 Illl 20 1 t:. i. Illl 1777 Il t:..
(20 cha racters)
which is then transferred as one record to the hardware device MT2.
6.1.3
FORMAT Declaration
The FORMAT. declaration describes the conversion of data between internal and
external forms. The external form is usually a Hollerith string containing,
in addition to the data, certa1n spa~ing and control information. Data
existing in this external form is referred to as ,formatted data and is
transmitted to and from an external device in this form.
When the user requires data conversion, he references the FORMAT declarative's
name in the INPUT or OUTPUT command. The FORMAT declaration is always referenced
by the ENCODE and DECODE statements when they are utilized ina program.
declarations may appear only in data designs.
11-6-8
FORMAT
M-5035
Forma t
Expla na t ion
FORM.'\T
Specifies the FORMAT DECLARATION.
Name
The identifier to he used to reference this FORMAT
declar~
tion.
t\ format descriptor.
Q.
, 1
form
~nd
The format descriptors indicate the
arrangement of data and the types of conversions
to be performed.
Numeric eonversion types are summarized helow.
Format DescriPtor
Internal Form
External Form
Fixed-point hinary
IW.d
Fixed-point decimal
Floating-point binary
Fw.d
Fixed-point decimal
binary
EW.d
Floating-point decimal
Ow.d
Fixed-point octal
Floating~point
Fixed-point binary
I nth eli s t
0
f forma t des c rip to r s; t hat follow s, w i san uns i g ned i nt eg e r
representing the maximum width (number of characters) of the field in the
external medium.
printer line.
Integer w must not exceed the number of characters in one
Descriptor d'is an unsigned integer representing thenumher of
characters in the field that appears to the right of the hinary or decimal
point.
The maximum width of the field w must include space for signs, radix
point~,
and exponent descriptions.
Hence, field d must he less than w.
The
d-field is optional if the internal fixed-point hinary value is an integer.
11-6-9
1\1-5035
Change 4
Format Descriptor
Iw~
d
Function
Specifies conversion of data between
internal fixed-point binary and an
external fixed-point decimal Hollerith
character string.
w
Fw.d
~
d+2.
For a positive value,
For a negative value, w
~
d+3.
Specifies conversion of data between
internal floating-point binary and
external
f~ed-point
positive value,
W
decimal.
L d+2.
For a
For a negative
value w L d+3.
Ewou
Specifies conversion of data between
internal floating-point binary and
external floating-point decimal.
The acceptable forms of input fields
for the E conversion (floating-point) are:
+0. mantissa E
,::00 mantissa E ~ exponent
I I"'!"6-1 0
M-5035
The mantissa may be of any ~agnitude;
the allowable exponent range depends
upon the object machine. The output
form for E conversion is:
!9.xxx ••. xxxE~ee
where:
d is the number of digits in
the mantissa. w includes all
characters. Thus, w ~ 7, where
the 7 accounts for the specific
characters ±p.E~ee of the above
output form.
Ow.d
Specifies the conversion of data
between internal fixed-point binary
and external fixed-point octal. For
a positive value, w must be ~ 2. For a
negative value, w must be ~ 3.
other formats descriptors that ma,y appear are described below.
Format Descriptor
Function
H (string of characters)
Specifies an alphanumeric field in the
form H(ABC), for example, where ABC
represents a string. For input, an H
(string) specification causes n characters to be skipped in the input record.
For output, the string of characters
specified within the parentheses is the
output image.,
Aw
Specifies the first w characters of an
alphanumeric data unit in a transfer to
or fr-:>m an input/output buffer. Aw appears
in the FORMAT declaration. The related
11-6-11
M-5035
Format Descriptor
Function
data unit in the input/output reference
can have more than w characters. The
remaining characters are ignored. If
the data unit has less than w characters,
the rightmos~ characters are truncated
on input and trailing spaces are inserted
on output.
Lw
Specifies the sam~ as Aw, only here the
last w characters of the data unit are
used. Everything else said under Aw
applies here.
wX
Specifies skip w characters of an input
record or insert w spaces in an output
record.
Tw
Specifies a position designator for the
buffer of a record input/output file. w
indicates the character position within
the buffer. The count starts with 0 at
the start of the buffer.
The FORMAT
statement can have many !'St one for every
data word or constant. T is illegal
for files having a length descriptor of S.
n format descriptor
Specifies repetition of a format descripter n times, such as n Ew.d.
Slash specifies end of a record or, when
used sequentially, indicates the number
of records to be skipped or inserted:
n+l consecutive slashes on input cause
n records to be skipped. 0+1 consecutjve
slashes on output cause n blank records
to be prod uced •
11-6-12
M-5035
Format
Format Descriptor
m(group of descriptors)
Specifies the repetition of a group of
format descriptors within the parentheses
m times. No other parentheses except for
H descriptors are allowed within the group
of descriptors.
Printer carriage
Appear in an H string.
control characters
spacing, page eject, etc.
They specify
These control
characters appear as the first Hollerith
character in the first word of each
record. If the character is not one of the
following, it is replaced with a blank.
Carriage-Control
Character
Operation
blank
Single space and print
line.
o
Double space and print
line.
Triple space and print
line.
Page eject and print
I
line.
H
Cancel headers, page
eject and print line.
A
Cancel headers, page
eject, print line and
save location and length
of line as 8 major header.
B
Cancel lower-level
headers, double space,
print line and save
11-6-13
M-5035
Carriage-Control
Character
Operation
location and length of
line as a minor header.
Cancel lower-level
headers, single space,
C
print line and save
location and length of
line as a minor header.
If classification, major header, and/or minor header lines are wanted, they
will be printed in the following order each time a page eject is necessary:
classification, major header with page number, minor header B, minor header C.
The page number will occur even if a major header is not used. It is not
necessary to specify consecutive levels of minor header information.
It is the programmer's responsibility to ensure that· the specified type of
format conversion is compatible with the declared data unit mode (for example,
F-type conversion should not be applied to integer data units). If the FORMAT
descriptors are exhausted and the target list not yet filled, the FORMAT,is
restarted.
Examples
1.
Given the external string of characters
350274-0162E+o50703 with format
the quantities s'tored on a read or decode statements are:
35, 27.4, -l.62XIO5 , 703
11-6-14
M-5035
2.
Given the internal quantities
3
417, -320, 0.536xlO and octal 627
with format
the string of characters resulting from an OUTPUT or ENCODE
statement is:
l417*******+O.536E+03~27
where the asterisks indicate that the value -320 cannot be encoded
within an F6.2 format descriptor.
3~
Given the internal qu~ntities
27, H(XY Z), 74. 51, H(JKLM)
with the format
,F,D,#t,M,A,T,
,ttIA,'"
,F 1'1·,2,"1 ,HI(,«,Re-~ 1'1 ,L,~,I 1 1
the string of characters resulting from an OUTPUT or ENCODE
statement is:
27.00RAGYZ 74.5IMODPJK
6.2
ENCODE AND DECODE OPERATIONS
The ENCODE and DECODE statements direct run-time routines to transfer data
internally from one area of the computer to another, while converting the data
from nonformatted to formatted (encoding) or vice versa (decoding). The
transformation is specified by a FORMAT declaration.
The ENCODE and DECODE statements are analogous to INPUT arid OUfPUT statements
that reference a FORMAT declarative, except that no transmission to an I/Odevice takes place, and the buffer area involved is a data unit specified by the
programmer. ,The rules previously discussed regarding formatted I/O also
apply to the decode/encode operations.
11-6-15
M-5035
Change 1
When inputting records of different types, a DECODE statement can be used to
reformat the data after the record type has been examined. The ENCODE statement can be used to format data that is to be modified before being output.
These statements are also valuable for debugging by simulating input/output
operations in memory.
The ENCODE statement specifies that the data contained in the data units
named in the source list is to be converted as specified in the named format
declaration and packed into a character string identified by the formatted
data-unit name.
The DECODE statement
spec~fies
that the character string identified by the
formatted data-unit name is to be converted as specified in the named format
declaration and placed in the data units named in the target list.
Format
ENCODE formatted-data-target unformatted-source-list
format-name $
DECODE formatted-data-source unformatted-target-list
format-name $
Explanation
ENCODE
Specifies the encoding operation of
converting data from unformatted to
formatted form.
DECODE
Specifies the decoding operation of
converting data from formatted to
unformatted form.
Formatted Data Target
The data-unit na:rp.e that will receive the formatted
character string (starting in character position 0).
This identifier may refer to a single word or
multiword data unit with Hollerith attributes.
11-6-16
M-5035
Change 2
Formatted Data Source
The data-unit name containing the
character string (starting in character
position 0) to be converted to
unformatted data. This identifier may
refer to a single word or a multiword
data unit with Hollerith attributes.
Unformatted Source List
One or more data units containing the
data to be converted to character string
form. If more than one data unit are
specified, they are collected together,
separated by commas, and enclosed in
parentheses. These data units must have
internal data type attributes compatible
with the external conversion format type.
Unformatted Target List
One or more data units that will receive
the unformatted data after conversion.
If more than one data unit is specified,
they are collected together, separated by
commas, and enclosed in parentheses. These
data 'units must have internal data type
attributes compatible with the external
version format type.
Format Narne
The identifier of the format.
11-6-17
con~
M-5035
Example
"- PIC 1- ,btl>, If 1 I , I I .1 I , . I I
I
I I I
I I I
I
L
,el
I I I I I I I I I
I , , I I I I I -,
, I I I I , I I I
I I ,
I I I
I
I
I
I
I
-,
I , I .
I .
I I I I I I I I
, 1
'I . I
I
I I I
I
I
I I I I , I I I I
I I
I
I
.
I I I I I I I·
I
I
I
In this example, the character string JOE· is to be packed with the
value of VRBLs AI, A2 and A3 as indicated by the format BILL.
The
result will be
JOE:
223GOBAC12.14
6.3, NONSTANDARD FILE CONTROL
The special file operators presented in the remainder of this section are not
to be used with the standard file names listed in Table 6-1.
In addition to the CMS-2 operating system standard file names and their
associated devices, each operating system provides other devices for the user.
These devices consist principally of magnetic tape and paper tape punch units.
The principal difference in using nonstandard devices versus standard devices
is the requirement for the user to describe the physical characteristics of
the data to be transferred and ·to state the name of the device on which input/
output operations are to occur.
These attributes are collected in a fermal
declarative called a FILE declaration and identified by a user-supplied file
name.
This file name has significance only within the user's program.
It
provides the linkage between the attributes described in the file declarative
5tatement and the run-time routines that interface with the Monitor to achieve
satisfactory input/output results.
11-6-10
Th«! followinu
d«~finilions
are necp.ssary hefore proceeding with th'e discussion
of nonstandard file control.
A group of adjacent., related
dat.a
items such as the individual
f'f1t tj~~
in a telephone book for name, address
and telephone number. This organization
has significance only to the user and
is not necessarily a physically definable
entity.
Physical record
A group of adjacent, related logical
records defined as a unit such as the
alphabetic groupings of telephone
book entries. On magnetic tape, a
physical record is delimited at the
beginning and end by inter-record gaps.
These gaps are recognizable by the
h~rdware device. A physical record
may (~ontain one (unblocked) or mo r .than one (blocked) logical records. '
Blocking is the technique used to reduce
the wasted space of inter-record gaps
between unblocked logical records.
Physical file
A group of adjacent, related, physical
records defined as a unit such as the
complete telephone book for one city.
On magnetic tape, a physical file is
delimited at the beginning and end by
an end-of-file mark (for the first
ph~sical file of a tape, it's beginning
is signified by a beginning-of-tape
mark). These marks are recognizable
by t'he hardware handling device. Thus,
the physical file comprises one or more
physical records.
11-6-19
M-5035
Peripheral file device
That mechanical device which is the repository
for a group of adjacent, not necessarily
related, physical files.
A file device may
contain one or more physical files as spact'
permits.
File-name
A unique, user-assigned name to provide
referencing from the dynamic input/output
command and control statements to the
run-time routines.
6.3.1
FILE Declaration
This declaration is mandatory for all input/output functions involving nonstandard file devices.
The
~ILE declar~tion
are to be processed.
defines the environment in which one or more physical files
The declaration assigns a file name for dynamic statement
referencing, identifies the symbolic name assigned to the actual hardware
device, and declares that all data to be
processe~
on the named hardward device
is physically organized as described in the declarative statement.
The FILE declaration indicates the hardware device and reserves two areas.
The first area contains the record description r the file status variable, device
address, space for keeping track of file and record positions, .nd in case of a
file having the length descriptor Sf the position pointers.
The second area
reserved is a buffer, equal in size to the maximum record that may be transmitted.
For record input/output the buffer area does not accumulate data for
blocking purposes, so that each INPur or OUfPUT statement causes immediate
communication with the device. If the file declaration contains the len'gth
descriptor S, data is accumulated in a fixed size stream buffer and output is
under control of run-time routines.
The number of words transferred between the buffer and the data area depends
upon the number of words specified in the data list of the input or output
statement rather than the record length.
are
request(~
by specifying a
~O-word
For example, if 50 words of input
table in an input statement and if the
input record is only 10 words long, the first 10 words of the input record are
II-6-20
M-5035
assigned to the first 10 words of the table. and the remainder of the table is
Sht
to blanks or 0 depending on the record type.
If 50 words of input are
requested and the input record is 100 words long, the first 50 words of the
input record would be transferred and the remaining 50 words would be lost.
The INPLn' and OmpUT statements, when referencing a FORMAT declarative, imply
either an automatic decode from the FILE declaration buffer area or an automatic encode into the FILE declaration buffer area.
The FILE declaration must occur in one of the user's data design areas.
ware device may be referenced in more than one FILE declaration.
A hard-
Standard
hardware units have implied FILE declarations; the user is not required to
declare them.
Format
FILE
file-name
type
maximum-no.-of-records
length-descriptor
maximum-record-size
hardware-name
states
WITHLBL
$
Explanation
FILE
Specifies a FILE declarative.
File Name
An identifier to be used to reference this
information.
Type
One of the following:
H - records are all Hollerith.
B - records are all binary.
Maximum Number of Records
I
An integer or tag that specifies the maximum
number of records that may be accessed in
a physical file. If 0 is specified, any
number of records may be accessed.
Length" Descriptor
One of the following:
R - the size of each record is equal to the
maximum length as defined by the record size
(rigid length).
I I -() "21
M-5035
v - The size of each record is determined by
the amount of data transferred to
from the
~nd
file buffer and is not to exceed the maximum
length as defined by the record size (variable
length).
S - The size of each record is rigid.
Data is
accumulated in the buffer gradually.
Maximum Record Size
An integer or tag that specifies the maximum
length of the record (meaning number of words
if the type is B and number of characters if
the type
i~
H).
If 0 is specified, the size of
the operand used in the
particul~r
input/output
statement determines the record length.
In
this case,' no buffer area is set aside, and
data is transferred directly
betw~en
area and the input/output device.
the data
Zero is
illegal with a length descriptor of S.
Hardware Name
The name of any external storage device in a
computer's environment.
Run-time routines will
provide direct interface with peripheral
equipment (printer, punch, magnetic tapes, etc.).
11-6-22
M-5035
Change 2
Examples of hardware names, which may vary
for each installation:
MT2
TTY
Magnetic tape input and output units.
Teletype.
An optional parameter that defines one or
more states, which may be tested between
input/output operations on this device. Each
state is a mnemonic enclosed in single primes
and corresponds to one of the ~umeric values
States
returned by the Monitor after each I/O
.
operation. (See paragraph 2.3.1.4 Volume I).
Testing one or more of these states may be
necessary to avoid an input/output abort
(see paragraph 6.4 for format to tes t s ta tes ).•
Optional. Indicates that this file has or
will have a label lor identification as its
first entry preceding the first record.
WITHLBL
Examples
1. ·lfi/Illti Ill6T.Et
I'
I
i
I
I
I I
I
1M 1,s,2fQ(l is 1/12101 Y'lT12 I' rBuLs,Yt '",
"If,O,R,MA,L'", I',E,O,FI"'I ,\,E,B1R,/, $1
The file LBR has a maximum of 3200 Hollerith-type records, whose
sizes are rigid (120 characters) .. The external storage device named
is MT2, whose possible states are 'BUSY't 'NORMAL', 'EOF', and 'ERR'.
2.
t8/1t.141
I
I , II
I(28s1JcJ t8 17f()/QI I \t1 191801 ""rtf, ,'",s1YI' 1,1
II I I I' 1601EI' I, IMlIIM''''L! 1$1
I I , 'I I I
I' WI6rM1' I,
I I I I I I
The file OBJC is a binary file containing up to 700 records with
the name OBJC as the first record. The record size is variable and
may have a maximum of 480 words. If the user tests an , EOF' hardware
state, Monitor hardware state-2 will be tested.
11-6-23
I
I
M-5035
6.3.2
OPEN Statement
Before data can be transmitted between a user's program and an external nonstandard device by means of the INPUT or OUTPUf statements, the run-time
routines must be informeo that any reference using the FILE declaration name
is legitimate and expected. The OPEN command instructs the hardware device
specified by the FILE declaration to be accessible for input, output or both.
E5tecution of an OPEN statement does not establish or guarantee the physical
readiness of the hardware device. In addition, a file that is open may not be
reopened until it has first been closed. That is, if a file is to be changed
from an input unit to a scratch unit, it must be closed and reopened as a
scratch unit.
Format
OPEN
file~name
action
$
Explanation
OPEN
Specifies an OPEN operation.
File Name
The identifier of the file .
.Action
One of the following:
INPUT
OlJIPUT
SCRATCH (both input and output allowed)
Example
108M 1l,t&eIIIA4AUIZ1
4,
I I
I
J
I I I I I I I I,
I
I I I I I I I I
This statement causes the file identified as LBR to be activated
and specifies use as INPUT only.
6.3.3 KNDFILE Statement
if a user wishes to group records together, he may form a physical file. A
physical file of data is any set of sequential physical records delimited by
11-6-24
M-5035
Change 1
an end-of-file mark.
These groupings may.be used for device positioning; a
device may cont.ain any number of these marks.
The ENUflLE statement is used to place an end-of-file mark on those hardware
devices to which it is applicable.· Writing an end-of-file automatically sets
to 0 the record count associated with the file name of the file declarative.
There is no change in the physical position of the hardware device as a result
of this command.
Format
ENDF1LE file-name $
Explanation
ENDF1LE
Produces an end-of-file mark on a
hardware device~
File Name
The name of a previously opened
nonstandard file. The parameter
OUTPUT or SCRATCH must be included
in the OPEN operation for this
file name.
Example
I, ,-,
I
I
I
I , , , , ,
I Ie J J
,EJUj,£, I,Lt4j
The file declaration LBR, specifying hardware device MT2, is opened
for both input and output.
The ENDF1LE operation causes an end-of-
11-6-25
M-5035
file mark to be placed on the hardware device MT2, the record count
for LBR is set to 0, and the file count is incremented by one.
6.3.4 CLOSE Statement
The CLOSE oper~tion deactiv~tes the specified file by setting an indicator
that this file is not activated. Standard devices cannot be closed. Closi~g
an dutput file having a length descriptor of S will also send the last unfinished buffer to output.
Closing a tape file does not imply rewinding the tape. A SET FIL (file) to 0
or -0 will rewind the tape. Setting to -0 will rewind tpe tape, release the
device, and close the file (see paragraph 6.5.1).
Format
CLOSE
file-name
$
Explanation
CLOSE
Specifies a CLOSE operation.
File Name
The identifier of the file.
Example
I I
This statement causes the file identifier as LBR to be deactivated.
6.4
DEVICE STATE CHECKING
In performing any input/output, various states may b.e flagged by the Moni tor.
These states might indicate such errors as end of input conditions either as
a hardware problem or system problem.
Each device may have various associated states that may be checked by the user.
Those states which are of interest to the user may be specified in the FILE
declaration by unique mnemonics enclosed in single primes.
1 1-6-26
M-5035
Change 2
The states may be tested by use
and this unique mnemonic.
cit th~'IF
statement containing the file name
The test checks equality between the current status
of the file and the value assigned to the unique mnemonic. All runtime I/O
operations are completed before returning to user's program.
It should be noted that this test is dependent upon the hardware and Monitor
system. The list of states appearing in the FILE declaration must correspond
to the numeric status values returned by the Monitor (see Volume I).
Format
IF
file-name
EQ or NOT
state
THEN
expression
Explanation
IF
Specifies an IF statement.
File Name
The name of a FILE declaration.
EQ or NOT
Specified relational operators.
State
Any mnemonic designated in the FILE
declaration. It must be enclosed in single
primes.
THEN
A CMS-2 connector word.
Expression
Any CMS-2 dynamic statement.
Examples
The status variable of the FILE LBR is tested.
If the condition indicated by the mnemonic 'NRM' is true,"a
transfer to ENJOB is executed.
11-6-27
$
M-5035
Change 1
2.
,Fj I,L,E,
,I,/t',Plr,c, ,H.,S;O,D,
I
,
I
I
I I I ."
I
I I
·1--
I
I
,R,
'JEiOJE! '",
1/ 1%")'
IM,T
e;
I ',E1RIRLSI 1',
, I
,
,
, , I ,
I
I
I ,
I
I
,
I I I
I
I
i I
I
I
lIB·btl'
r V'..
oU:lRIMI'
..
I I.JP , "
. !t!.1._
_
~
I
r$,
I'
I
I
I I I
The state for 'EOF' (Monitor hardware status code 2) in the file
defined by INPTC is tested.
to ALPHA is executed.
If the condition is true, a transfer
6.5 DEVICE POSITIONING
In order to retrieve data from a device more efficiently, the programmer may
separate .his data into one or more files or subfiles. The run-time routines
will recognize these files by end-of-file marks and maintain position counters
for the number of files passed and a counter for the number of records passed
within a given file.
The SET statement in conjunction with the functional modifiers POS (record
position), FIL (file position) and LENGTH may be used to physically position
a device, determine its present position or determine the length of a record •
. Positioning requests are not applicable to all devices and incorrect use of the
above modifie.rs will result in an input/output error indication.
6.5.1
POSitioning By Files
A unit may be positioned forward or backward by a 'number of files or subfiles.
The unit is always automatically positioned following the ead-of-file mark.
Format
SET
F1L(name)
TO
signed-integer-constant or data-unit-name
11-6-28
$
M-5035
Explanation
\ Specifies a Sb1' operation.
SET
Specifies the positioning (FIL) of the unit
FIL(name)
specified by the name of a FILE declaration.
TO
CMS-2 separator.
Signed Integer Constant
Specifies the number of files the unit is to be
or Data-Unit Name
pOSitioned.
The sign indicates the direction
of the movement:
+ forwarrl and - backward.
If
a data name is used, it must contain an integer.
A data-unit name containing a 0 will cause the
device to be positioned to the beginning,
If
-0 is specified, the unit is locked out from
further reference.
Examples
1.
If the variable LOCI contains a 4, the device referenced in file
declaration NARFLAG will be positioned forward four file marks.
The same statement may be used to backspace four
LOCI to -4.
fiI~s
by setting
If a request" is given to backspace more files than are
written on the device; the device is positioned at the beginning.
A request to backspace one file mark causes the tape to be positioned
at the start of the current file.
11-6-29
M-5035
2.
,",T ,FI3, ,3,01°,
lFI/ILIE',
IVIRI81l1
I
,
I
I
I I
,F,',L.IP e151
Ir
, , , " I ,I 1,
, , I ·1 , , , I
,R, ,i,LID, ,11 IT 11 j3, ,-$,
, ,il~
IU
I
,"
,I
·1
I
I
I
I 1I
Q,PIFIN, IM,T,FI3, IRIE',AI)I ~
J
I
I I I
,,
1
, 'I
,
,
I
, ,I
,, ,,,
)
,, , , , , , ,, ,,
I
i
IAI L, PI HIA,. I , ISltlTI I F I L IMIT IF I 3,) , ITIO, 1,;/1'll1 o ,s1 ~I
, , I I I , I , , II I
I
I
I' , I , I
,, ,
, -I , , I
I I I , , , I I
I I I
IS,E,T, , FI /,L,(I"'I T IF,"3 I) I IT,O, 1°1 ~I I
I ~EIT IA, I , 'I , I ,
,
I
I ·1
I ,
I I
I
I
, , ,.
1
1
I
I
I
I
I
1
I
,I
I
I
I
I
,
1
I
1
I _,
I
I
J
I
6AII\IMI AI.'
I
,
,
I
I(
1'
1
I
1
,
I
1-S,EITi I fi'l
I
,
,
I
,
,
L,{,H,TIF,'3, ), ,710,
I-,D I ·1\1
I
1
1
1
Statement ALPHA causes the hardware device Ml'13 to be positioned
forward as many files as indicated in the variable FILPOS~ Statement
BETA causes the hardware device MTl3 to be set to the beginning
position 0: By statement GAMMA, the hardware device is set to the
beginning, locked out from further reference, and the FILE MTF3 is
closed.
6.5.2
Each time, the file counter is adjusted.
Positioning by Records
A unit may be positioned forward or backward a number of records within the
current file. Attempted record positioning beyond the bounds of the current
file will cause the device to be positioned at the beginning or end of the
current file •. Record positioning should not be used with stream files.
Format
SET
POS(name)
TO
signed-integer-constant or data-unit-name
11-6-30
$
M-5035
Change 1
Explanation
SET
Specifies a SET operation.
POS
Specifies the positioning (POS) of the unit
named by a FILE declaration.
TO
CMS-2 separator.
Signed Integer Constant
Specifies the number of records to be
or backward spaced.
or Data-Unit Name
forwa~d
Examples
1.
In this example, the file named ~OOK is sp~ced fo~ward the number
of record positions contained in the variable named SCREEN.
2.
Iii' 1Lit,
l}fjA/tiIF II, L/ Sit, 18, ,D 1
I
I
1
I
"
I
I
I
I
I
I , I
I
I
I -,
1
I
1 1
I
I
,
I I
I I
I
It, 13,3'''1
I
,
1
I 1
1 , I
I
1
I
I
I
I
I
I
"'IT/il
1
I
I
,
I',
:-:3: :~ : : I : : : : : :: : : : :
eIPI~,IJI,MIAI4IFIIILIEI~1 ,IN,P,U!T"$,,., I
~:£:T: :P:O:$:{~:~:~:F:':L:~~): Irk:
l'IBIZi' I) I 'IN' .Rlte'l, ,
I'G,ol"I'1 II
I
II"
I',
The hardware device described as Mf4 is positioned three records
backwards, relative to its current position.
6.6
FILE AND RECORD POSITION DETERMINATION
The record file or subfile position within the current file can be determined
with the use of the POS or FIL modifiers.
Format
SET
data-unit-name
TO
FIL(name)
11-6-31
or POS(name)
$
M-5035
Explanation
SET
.Specifies a SET operation.
Data Unit Name
The location where record position is to be stored.
TO
CMS-2 separator.
FIL(name) or POS(rtame)
Specifies the file position (FIL) or record
position (POS) of the unit specified by the name
of a FILE declaration.
Example
,5/II.IEI li/SIRI 1M
rf l'l
13
,L,B,RIF",L ,
.xl
iVI~8ILI 1L.1~ItIP,OISI
e:1
,VIRI 8 I l 1
1·1
I'"
,,-tID ID I
1,tt,f ,2. 1
Iii&' ,1I1 r\1
I!,'I lUI 1$"
~I I
I,
I. I
I
I
I
I,
.I I
I
I I I I I I I I
I
I I
I
I
PIPIEi'" IL,'Ill ,RtF1AI])1 1$1' I
I
t
I,
I
I
,
,
I
I I I
I
I
~:f:T: :L:8~:;:'o:L: :~o: :~,~ :dL:~&~ ~: : :: : : ::: : :: :: : :
SIEjrl
R,Pl
1L.,8t
tSl
,TiOI
I
PetSI(IL,~RI)1 I~
I I I
I
I I
I
t I I , I
I
J
The current file or subfile position of the hardware device Mr2 is
stored in the data unit LBRFIL; the current record position within
this file is stored in LBRPOS.
6.7
RECORD LENGTH DETERMINATION
The length of the last record transmitted by either an INPUT or an OUTPUT
statement may be determined by using the functional modifier, LENGTH.
Format
SET
data-unit-name
TO
LENGTH(name)
11-6-32
$
M-5035
Explanation
SET
Specifies a SET operation.
Data-Unit Name
Specifies the location where the record length
is to be stored ..
TO
CMS-2 separator.
LENGTH(name)
Specifies the length of the previous record on
the unit specified by the name of a FILE
declaration.
Example
R,8,L,
E:T:
8
I
~E",NITjH, ,.; ,1,6, ,11, I~"
I
"
I
I
,
,
I,
:L:r:w:;ltt: :r:o: :L:£~~:d~:(:~:~:~:F: I:L~)~:
I,
J
: : :: :::: : :
DEVICE IDENTIFICATION OPERATIONS
, is sometimes desirable to make a check on a device (e.g., a tape unit or
.sk to make sure that the right unit is mounted).
The following two special
:atements are used for this purpose:
1.
DEFID Statement.
2.
CHECKID Statement.
lese commands are illegal on standard hardware devices .
. 8.1
DEFID Statement
EFID writes an identifier on an external device.
If the tape is not at load
()int when the DEFID command is ·given, the statement will be ignored.
Format
DEFID
file-name
STANDARD or (header description)
11-6-33
$
M-5035
Explanation
DEFID
Specifies a CMS-2 control word.
File Name
The identifier of a file that
references the external device for
which an ID block is desired.
STANDARD or
Header Description
The description Df the identifier
record to be written. If it is
standard, the header is written in
the local convention known to the
run-time input/output routine. If
a header description is given in
parentheses, the contents of the
parentheses are used as header. All
header record~ are a standard 30
words long.
Examples
A standard header will be written on the device referenced in the
file declaration LPR.
The header "INVENTORY SDIEGO ··1 JUL 71" wi 11 be wri t ten on the device
referenced in the file declaration LPR.
] I-()-3t1
M-5035
Change 3
6.0.2
CHECKID Statement
CHECKID checks an identifier on an external device. If the tape is not at
load point when the CHECKID command is given, the statement will be ignored.
Failing the check will result in an input/output error condition.
Format
CHECKID
file-name
STANDARD or (header des.cription)
$
Explanation
CHECKID
Specifies a CMS-2 control word.
File Name
The identifier of a file which references the external device on which the
identifier is to be checked.
STANDARD or
Header Description
Describes the wording against which
the identifier is to be checked.
Example
The,header record on the device referenced in the file declaration
LPR will be checked if it is in standard format.
II-6-35/n-6-36 mank)
M-5035
SECT [ON 7
COM .. I i.E-,/, [ME SYSTEM FAC I t, IT 1ES
The primnry function of the CMS-2 Compiler is the translation of sourCe stntpmf~nts
into machine (object) code.
To effect this trnnslation, cprtain convpn-
tions regarding the organization' of the source statements have been established
in previous sections.
These conventions pertain to system data designs and
systpm procedures as the organi,zational elements of a system.
sections, the header controls of a system are presented.
In the following
They contain informa-
tion specifying listing options, loading controls w system index registers,
inclusion of program debug features in the object code or other facilities that
effect the compile
operation~
A compile-time system comprises system elements and associated header rontrols
(see figure 7-1).
This concept establishes a method for obtaining a complete
or partial translation of a user's program.
The compile-time also signals
the initiation and the termination of the translation process.
For translation
purpuses, such a system is regarded as something complete in itself; all information necessary for a successful compile is specified within the system and in
accordance with the rules and facilities of the CMS-2 language.
7 • 1 ACCESSING THE COMPILER
To obtain the services of the Compiler requires use of a uniquely formatted
Monitor control card.
Furthermore. additional Monitor control cards are re-
quired to properly define the user's job processing requirements for the
Monitor.
These requirements might be one or more of the following:
compile;
load and execute; build a library; update a library; etc.
The $CMS-2 Monitor control card activates the CMS-2 Compiler.
Following this
Monitor control card are one or more compile-time systems (source input to the
compiler).
MINATE $.
Use of the Compiler is terminated by the CMS-2 statement:
TER-
The card formats of the Monitor control cards, their functions and their
placement in a job deck are discussed in Volume I.
_ ... .-r.... '
~
11-7-1
M-5035
Statement
Figure 7-1.
Elements of a Compile-Time System
I 1-7-2
M-5035
7.2
MAJOR AND MINOR HEADERS
Headers are classified
CIS
major or minor deppnding upon position and TClnue of
influence within a r.ompilt,-time system.
A major heClder consists of those
statements immediately following the SYSTEM statement (see paragraph 4.1.}) and
bracketed by the statement:
Format
END-HEAD
name
$
Explanation
END-HEAD
Specifies the end of the header.
Name
Optional.
The header identifier.
The major header statements contain control information that applies throughout
the compile of the entire system.
A minor header, on the other hand, is a
group of header statements immediately preceding a system element.
The parCl-
meters within a minor header are in effect only throughout the compilation of
the particular system element that the header precedes.
Minor headers are
optional if suffici:nt information is included in the major header.
Figure
7-1 illustrates the positions of major and minor headers.
Major and minor header may be retrieved from a CMS-2 library.
In this case,
the header statements are bracketed by HEAU and END-HEAD statements.
The format
of the HEAU statement follows:
Format
name
HEAD
comments
$
Explanation
HEAD
Specifies a set of header statements to supplement major header controls or establish minor
header groups.
Name
Optional.
The header identifier.
If the header
group is to be included on a library, the name
is required in order to identify the element on
the library and for subsequent retrievals.
II -7-3
M-5035
Change 5
Below is a list of available header statements, divided into four categories. These
statements will be defined and their usage described in following sections.
1.
Options header statements:'
OPTIONS
2.
Allocation header statements:'
BASE
.'
TABLEPooL
DATAPOOL
LOCDDPOOL
EQUALS
NIT EMS
3.
Library retrieval header statements:
LIBS
SEL-ELEM
SEL-8YS
SEL-HEAD
SEL-PooL
CORRECT
DEP
4.
Miscellaneous header statements:
SYS-INDEX
MEANS
EXCHANGE
DEBUG
I
CSWITCH..;.DEL
EXECUTIVE
CMODE
SPILL
CSWITCH-ON
CSWITCH-OFF
CSWITCH
END-CSWITCH
END-CSWITCHS
II-7-4
1't1-50~15
Change 5
The OPTIONS, SYS-INDEX,
and DEBUG statements are allowable only within a major
header. DEP statements are restricted to minor headers. All the remaining statement types may be used in either category of header. The major headers must include the OPTIONS statement. The statements of a major header may occur in any
order except for the OPTIONS statement, which should precede all others.
The comment features described in Section 3 are allowable within headers.
7.3
OPTIONS HEADER STATEMENT
Every compile-time system requires a major header containing at least the OPTIONS
statement. This statement should immediately follow the SYSTEM statement.
The OPTION S statement designates the types of output, the output units and the various
program listings to be generated by the compiler for a compile-time system.
Format
OPTIONS PI'
P2""
Pn $
Explanation
OPTIONS
Specifies the OPTIONS header.
Pl···Pn
Denotes optional parameters of the following types:
SOURCE
Source output and dispOSition.
OBJECT
Object options, output, and disposition.
LISTING
Listing dispOSition.
MONITOR
Execution under l\1onitor.
NONRT
Execution in a non-real-time environment
allowing calls to implicit run-time functions.
LEVEL(O) All error and warning messages are listed.
This is the default condition ..
LEVEL(l) \Varning messages are not generated.
l\lODEVR BL Allows impl icit definition of variables.
STRUCTURED Specifics that the system is written
according to CMS-2 structured programming
conventions.
1I-7-5
I
1\1-5035
Change 4
Any or all of these parameters may be specified in any order. If no parameters
are given or no OPTION S statement is included in the source input, the Compiler
outpufconsists only of syntax error messages. The first three controls' listed
above may be accompanied by subsidiary information in parentheses following the.
parameter. This additional information
~sdescribed
in the following paragraphs.
The presence or absence of some of this informaUon can affect the duration and
comprehensiveness of the compilation. The number of outputs requested may be
restricted by the installation r s peripheral configuration.
7.3.1
SOURCE Option
This parameter calls for the listing, punching and/or tape output of the
(edited) source statements input to the Compiler. The presence of this parameter on the OPTIONS statement indicates a request for source output; the
associated parameters indicate the disposition of this source.
Format
SOURCE (LIST, CCOMN, CSRCE, CARDS)
Explanation
SOURCE
Requests output of edited sotlrce statements.
LIST
Optional.
Indicates that disposi tion of source
output is hardcopy listing. This is the default
parameter and is only necessary if a hardcopy
listing is desired in addition to one or more of
the following parameters.
CCOMN
Optional.
Indicates that the disposition of
source is the output unit CCOMN.
CSRCE
Optional.
Indicates that
~isposition
of source is
the output unit CSRCE which is unloaded at the
end of the compile time system.
CARDS
Optional.
Indicates source output in the form
of punched cards.
II-7-6
M-5.035
Change 4
Any or all of these parameters may be specified in any order. Whenever either
CCOMN or CSRCE is requested, any hardcopy listing that results from either the
LIST parameter or the OBI ECT options will show the source statements numbered
as in a Librarian listing. This Compiler output may then be used in lieu of a
library listing of the source code.
l·~xampl
1.
(' s
15,9"',R,c., €a ,~ , I I
1'7-1 I I 1 I I It. 1 I 1 I
PI PI Ti I,01f6,
I I I I I
I
H.' q til'S I s a h a r d (' () PY 1 i s lin ~I () f
t h ('
1 I
,
I I I
SOLI r
(' t' i rfp 1I I
H('qUl'sls a hardcopy listinu nnd a plinchl'l\ t!t'C"
•
or
Ih(' sOllrc(' input.
3.
Bequests output of thl' source input to unit
s{'quent library updatf' run).
CU)~lN
(genendly for a suh-
Any hardcopy listing of the sourrt' will harp
statements numbered according to Librarian conventions.
7 .:L 2
OBJECT Opt ion
This parameter req'uests the Compiler to proceed all the way through its objprt
generation phases.
The
sub~idiary
information with this parameter specifies
special generation options, object-code listing forms, and disposition of
relocatable binary object-card decks.
NOTE
If OBJECT is not specified on the OPTIONS
sta.tement, the Compiler will perform the syntax
analysis phase only (producing syntax diagnostics)
but will not proceed into the code generation phases.
When SOURCE is present without OBJECT, the hardcopy' source listing will have syntax error diagnostics
interspersed with th,e source statements •
. 11-7-7
M-S035
Change 5
Fonnat
OBJECT
(Special-mode, list-options, CNV, CCQ\1N, COBJT, CARDS)
$
Explanation
OBJECT
Requests object generation phases of the compilation.
Special Mode
Optional.
List Options
One of the following:
CMP
Request a compool generation run.
OPT
Requests optimization of transient references.
Optional.
One or more of the following hardcopy output
options:
I
CR
Requests both local and global cross-reference
listings, which are alphabetized listings of the
identifiers defined within the compile-time systern, their assigned locations, and the locations
that reference them.
I
CRG
Requests a global cross-reference only.
CRL
Requests a local cross-reference only.
If CR,
CRG, and CRL are omitted, only cross-reference
, listings of unallocated identifiers are given.
SA
Requests symbol -analysis listings which provide
a list of identifiers categorized according to
declarative type.
Within each grouping, the
identifiers are alphabetized and accompanied by a
stnnmary description of· their respective
8M
attribut~s.
Requests a full symbolic output listing which pro ..
vides for the complete listing of the source
statements intermixed with the octal and nmemonic
representations of the generated machine code and
their corresponding addresses.
11-7-8
M-5035
CNV
Optional.
Specifies that fixed-to-float and
float-to-fixed numeric conversions are to be
provided by run-time routines rather than inline generation.
CCOMN
Optional. Indicates that disposition of relocatable binary object-code is the output unit
CCOMN.
COBJT
Optional.
Indicates that disposition of relo-
eatable binary object-code is the output unit
COBJT, which is unloaded at the end of the
compile time system and may be saved.
CARDS
Optional.
Indicates relocatable binary obj ect
code output in the form of binary punched-card
decks.
Any or all of the above primary parameters may be specified in any order.
r«lTE
The special mode parameter CMP requests the
creation of a compool output. This parameter
may be used only with compile-time systems
whose elements are system data designs and
headers. The compool output is identified by
the name of the last system data design and
consists of the definitions of all the data
design elements decoded into a format internal
to the Compiler. A compool may be placed on a
library tape and may be retrieved instead of
the corresponding source system data designs
for subsequent compile-time systems. Using
such a compoolsaves the compilation time
normally needed to process the source system
data designs.
The special mode parameter OPT requests
optimization of transient references. The
use of the parameter may result in the elements of a system being no longer independently compilable.
11-7-9
M-5035
Change 5
Examples
,gPa 17/,0."'3 to,e, :JjEjc, 7i
1.
,$, ,
I
I
,
,
,
I
I
,
I ,
I, ,
I "
,
,
I
I' ,
Requests diagnostic output from all Compiler ,phases; no other output will
be produced.
Requests a hardcopy listing of source and diagnostics from all phases of
the Compiler.
Adjacent to each source statement is the relocatable
location of the first instruction generated for 'that statement.
These
locations are useful if CR is also requested.
p,p,r;I,gNJSt
3.
I
IO,A~EjCITjGC,~,,1 rS,t1",Sltf l), ~11
,I II
,,
I
J
I
Requests a local and global cross-reference, symbol analysis, and full symbolic hardcopy listing, along with diagnostics, from all phases of the Compiler"
4.
Qe.lj l,aMs,
IS,O,U,R,C,Ei"
,O,Bllj fjC,7i(,C,MP",Cto,B,Ji7j"S.M.;,
il
Requests a source listing and a full symbolic listing for a compool generation compilation.
The compool and its corresponding relocatable binary
object code will be output on unit OOBJT, which will then be unloaded.
7.3.3
LISTING Option
This parameter specifies the disposition of the hardcopy listings produced by
the Compiler as a result of the parameters described in paragraph 7.3.2.
It
need only be specified if the hardcopy or printer, output is to be written onto
other output units instead of, or in addition to, being printed.
Format
lISTING (PRINT, CCOMN, ClIST)
11-7-10
M-5035
Change 2
Explanat ion
lISTING
Requests nonstandard hardcopy listing disposition.
PRINT
Optional.
Indicates that disposition of printer
listings is the printer.
This is the default
parameter and is only necessary if printer output
is desired in addition to one or more of the
following parameters.
CCOMN
Optional. Indicates that disposition of hardcopy listing output is the output unit CCOMN.
CCOMN may not be used if specified in OBJECT option.
ClIST
Optional. Indicates that disposition of hardcopy listing output is the output unit eLIST,
which is unloaded and may be saved at the end of
the compile time system.
Any or all of the above parameters may be specified in any order.
Examples
1.
~PI7j l,gNis.
fO,s,JjEje,Tj(StJ)I" ,LIIIS." 1,It't'dr I(,e IC,O,~N~), ,$,
Requests the full symbolic hardcopy output listing to be placed on unit
CCOMN rather than to be printed.
2.
Requests a hardcopy listing and a punched card deck of the source input.
The listing will be printed, as well as placed on the output unit CLIST.
7.3.4
MONITOR Option
The MONITOR parameter allows the compilation of statements that directly or
indirectly require access to the CMS-2 operating system (i.e., high-level I/O
and DEBUG statements). It also results in all testing of the special console
condi tions (e.g., KEY 1 , STOPS) to be simulated by the Moni tor. This parameter
11-7-11
M-5035
Change 3
should be specified only when the object code produced by the Compiler is to be
executed under Monitor control. See Volume I, Section 2 (Monitor) for simulated
settings of special console conditions.
7.3.5 NONRT Option
The N ONR T parameter indicates that the program· is to be executed in a non-real-time
environment and allows the generation of calls to implicit run-time functions
(exponentiation, BIT/CHAR, and fixed/floating point conversion). The MONITOR option
automatically implies the NONRT option. In the absence of NONRT (or MONITOR), all
impliCit references to these run-time functions will cause source warning messages
and/or object error diagnostics.
7.;3. 6 Two-Level Diagnostics
Error listings produced by the Compiler contain two categories of diagnostic messages:
serious errors which affect program execution and warning errors which may not affect
program execution. The LEVEL(l) option causes suppression of the listing of errors
in the warning category. A LEVEL(O) specification, or no specification of the LEVEL
option, causes errors in both categories to be listed. Regardless of level specified
or implied, errors in the warning category are not included in the COMPILE ERROR
Summary at the end of the compile.
7. 3. 7 MODEVRBL Option
The MODEVRBL parameter instructs the compiler to create local variable definitions
for any undefined data units appearing in dynamic statements where the syntax of the
statement allows references to variables. These implicitly defined variables are given
the attributes of the MODE VRBL declaration or the compiler's inherent mode (I 16 S)
in the absence of a MODE VRBL declaration.
II-7-12
M-5035
Change 4
7. 3
0
~
STHUCTURED Option
The STRUCTURED option informs the compiler that the system is written
. according to the Cl\IS-2 structured programming conventions.
The Compiler
will issue the warning message "NON-STRUCTURED STATEl\IENT" for the
each statement which violates these conventions. These statements include:
1.
Statement switch declarations
2.
GOTO statements
3.
Procedure declarations containing abnorlual exits
4.
Procedure call statements containing ahnormal exits
5.
It ETUHN statelnents containing an abnorlnal exit
6.
SET statements containing an OVERFLOW specification
7.
Procedure Switch call statements containing an INVALID
specification
1I-7-12A
M-5035
Change 4
7.4
ALLOCATION HEADER STATEMENTS
The Hllocat ion srheme inrorporated in the Compilf'r generally consist s of ttl£'
assignment of addresses to instructions and datH definitions in a sequentiHI
mHnner thHt reflects the order of the source stHtements.
All identifif'rs
thHt function as symbolic addresses Hre assigned locat ions arrordingly.
rasp of n data namp,
tIl()
]n th£>
sizp of the ar£>a reser\'pd is determined from its
definition in a declarative stHtement.
If the j)rogrHm subspquf>ntly sppcifies
a preset value for the data unit, the Compiler ueneratf's the preset valup
originHting Ht the location previously HllocHted.
The
requirem~nts
of a particular program or application package often require
departure from this standard allocation scheme used by the Compiler.
F6r this
purpose, various allocation header statements are provided in the CMS-2 language.
Since the effect of these allocation statements on a user program often involves
both the Compiler and the Loader, the reader should also refer to the description of the CMS-2 Loader in Volume I, Section 3, in particular, the AC and
CS d i rec t i ve s.
The words "allocation" or "relative allocation", when used to describe CMS-2
for the AN/UYK-7, will refer to the positioning of an individual data unit or
dynamic statement (TABLE, label, etc.) within a basic CMS-2 element
SYS-PROC).
(SYS~DD
or
The words "relocatable allocation" will refer to the posi 1ioning
(offset) of a CMS-2 element from its associated basic register content.
7.4.1
Pooling Statements
Two basic types of pooling statements exist.
The first type directs the Com- .
piler to divide a basic element into two separate elements for the purposes of
subsequent relocatable allocation by the Loader.
LOCUDPOOL and TABLEPOOL.
Statements in this group are
If it is ever required to treat local data designs
and/or tables as relocatable elements at load time, these statements must be
II-7-12B
M-5035
present, with their associated basic elements, SYS-PROC and SYS-DO respectively., during compilation of the source.
The second type of pooling statement includes those pool statements that are
associated with the basic CMS-2 elements.
They are BASE and DATAPOOL.
It is
necessary to include these pool statements with the source only if machine and
system-dependent information is included.
In general, pooling statements may occur in both major or minor headers.
Pool-
ing statements used in a minor header affect only the SYS-DO or SYS-PROC that
immediately follows.
(If a pool statement is used that is inappropriate, it is
ignored by the Compiler; e.g., LOCDDPOOL within the minor header of a SYS-DD
would be ignored.)
If a pooling statement occurs in a major header, it applies to all basic elements not having this pooling statement as a minor header.
All four of the
above pooling statements may appear in a header, but only one of each type may
be specified (i.e., two BASE statements may not appear in,the same header).
Each of the pooling statements allows an optional name to be given for the purpose of identifing the pooled element or group of elements.
This name defines a
compound section and appears in the CS Loader directive generated by the Compiler as part of the binary output.
A compound section informs the Loader
that relocatable elements are to be grouped together (see Volume I, Section :3).
If no name is given on
default names.
t~e
pooling statements, the Compiler will provide
They are as follows:
Pooling Statement'
Default Name
BASE
DATAPOOL
SYSP
LOCUDPOOL
LOCDD
TABLEPOOL
TA3LI~
Furthermore, if neither the BASE
SYSDD
~or
the DATAPOOL statements are provided
by the user, the Compiler will use the respective default names for the
compound section sperifications.
11-7-13
M-5035
One of the parameters appearing in all of the following pooling statements
specifies that the data or instructions in the pool be referenced using a
transient base register.
This parameter should be used only for extremely
large programs.
7.4~1.1
LOCDDPOOL Statement
The LOCDDPOOL statement instructs the Compiler to compile the local data designs with reference to a separate base (i.e., as a relocatable element).
If
'found in a major header, it instructs the Compiler to compile all local data
designs in this manner.
(A LOCDDPOOL also found in a minor header would be
redundant unless it had a different name, requested transient reference g or
suggested grouping under a different base register.)
If found in a minor header, only the local data designs of the associated
PROC will be compiled as a relocatable element.
S~S
All other local data designs
will be based relative to the base of the SYS-PROC as encountered within the
source.
Format
name
LOCDDPOOL
(Tv identifier)
optional-value
$
Explanation
name
An optional name assigned to this element or
group of elements.
This name defines a compound
section and appears in theCS Loader directive
generated by the Compiler as part of the binary
output.
LOCUDPOOL
Identifies a local data-design pool.
T, Identifier
An optional implementation aid.
normal conventions will be used.
If not presentv
If T is present,
it specifies that the local data designs covered
by this pool statement should be referenced
transiently.
The identifier, if present, spe-
cifies the AN/UYK-7 base register under which
11-7-14
M-5035
t.his p}pmf'nl may hf'
This
illlo(~Htpd.
inf()r·~
mation is passed on to thp Loader but may
be overridden at load time.
The identifipr
may be an EQUALS tag or a positive integer
constant.
The absolute allocation at which it is
Optional Value
desired that this element (or group of
elements) be located at load-time.
The
Compiler passes this information to the
Loader.
The Loader allows this value to
be overridden at load time.
Example
I
I I 1 I ,
I
I , ,
I
,
,
.II ·
, ,
I I I -,
,
I
I
I
I
I
, I I I I I
J I ,., I I I , J ,
J
I
I " ,.,
I
,
,
I
I
I
I
I I , , J ,
I ,
I ,.• ,
,
, I
I
1 I -,
I
1
I I ,
,
I
I, ,
, , I I I J
,
"
I
I,
I ,
I , ,
,
I I , 1 , I'
'"
I
I
l
I
,
I I I
1
I
I
This example represents a program which, because of system design,
found itself with a shortage of base registers.
Since the programmer
realized that he made few references to his own local data designs, he
commands' the Compiler to use a transient base
data is requested in his program.
regi~ter
whenever any local
He further commands the Compiler to
indicate to the Loader to use 56 as the transient register and to base
his local data at address 40000.
This can be changed at IGnd time.
11-7-15
M-5035
7.4.1.2
TABLEPOOL Statement
The TABLEPOOL statement instructs the Compiler to
with reference to a separate base location.
~ompile
all applicable tables
The TABLEPOOL applies only to
tables declared in a SYS-DD.
If this pool statement is present in the major header, it is applicable to all
tables declared in all SYS-DD's not having a TABLEPOOL statement in their minor
header.
If this statement is present in the minor header of a SYS-DD, it
applies only to tables declared in that SYS-UD.
Format
name
TABLEPOOL
(T, identifier)
optional-value
$
Explanation
Name
An optional name asSigned to this element or
group O:f element s.
Thi s name defines a compound
section and appears in the CS Loader directive
generated by the Compiler as part of the binary
output.
TAI3LEPOOL
Specifies pooling of all tables with reference to
a separate base location.
T, Identifier
An optional implementation aid.
If not present,
normal conventions will be used. If T is present,
it specifies that the tables declared in the
SYS-DD covered by this pool statement should be
referenced transiently.
The identifier, if
present, specifies the AN/UYK-7 base register
under which this element may be allocated.·
This
information is passed on to the Loader but may be
overridden at load time.
The identifier may be
an EQUALS tag or a positive integer constant.
11-7-16
M-5035
Change 2
Optional Value
The absolute allocation at which it is desired
that this element (or group of elements) be
located at load time.
The Compiler passes this
information to the Loader.
The Loader allows this
value to be overridden at load time.
7.4.1.3 BASE Statement
The BASE statement instructs the Compiler to compile system procedures with
reference to a sep~rate base location. This pool statement is considered to be
present in the major header by default.
If this pool statement is present in the major header, it is applicable to all
SYS-PROC's not covered with a BASE statement in a minor header.
Format
name
BASE
(T, identifier)
optional-value
$
Explanation
Name
An optional name assigned to this element or
group of elements. This name defines a compound
section and appears in the CS Loader directive
generated by the Compiler as part of the binary
output.
BASE
Specifies pooling of all instructions with refer-·
ence to a separate base location.
T t Identifier
An optional implementation aid.
normal conventions will be used.
If not present,
If T is present,
it specifies that the generated instructions
covered by this pool statement should be referenced transiently. The identifier, if present,
specifies the AN/UYK-7 base register under which
this element may be allocated. This information
is passed on to the Loader but may be overridden
at load time. The identifier may be an EQUALS
tag or a positive. integer constant.
'.., .~ .:~ ;.tl'~~~:;;;:.' ."IIIlIllIllI'l.
11-7-17
M-5035
Optional Value
7.4.1.4
The absolute allocation at which it is desired
that this element (or group of elements) be
located at load time. The Compiler passes this
information to the Loader. The Loader allows this
value to be overridden at load time.
DATAPOOL Statement
The DATAPOOL statement instructs the Compiler to compile system data designs
with reference to a separate base location. This pool
to be present in the major header by default.
is considered
stat~ment
If this pool statement is present in the major header, it is applicable to all
SYS-DD's not covered with a DATA POOL in a minor header.
Format
name
DATAPOOL
(T, identifier)
optional-value
$
Explanation
Name
An optional name assigned to this element or
group of elements. This name defines a compound
section and appears in the CS Loader directive
generated by the Compiler as part of the binary
output.
DATAPOOL
Specifies pooling of all data with reference to
a separate base location.
T, Identifier
An optional implementation aid.
If not present,
normal conventions will be used.
it specifies that the data
pool statement shbuld be
If T i's present,
design~
referenc~d
covered by this
transiently.
The identifier, if present, specifies the AN/UYK-7
base register under which this element may be
allocated. This information is passed on to the
Loader but may be overridden at load time. The
identifier may be an EQUALS tag or a positive
integer constant.
11-7-18
M-5035
Change 2
Op1.ionul
Valu(~
The
ahs()lu1.(~
thClt this
Hllor.ation nt whir.h it is
el(~m(~nt
(or uroup of (!lements) bp.
located at load time.
~nformation
d(~sif(~d
The Compiler passes this
to the Loader.
The Loader allows
this value to be overridden at load time.
7.4.2
EQUALS Statement
The EQUALS statement is used for two purposes:
the assignment of numeric
values to symbols and the specification of relative allocation.
If the EQUALS statement is contained in a major header or system data design,
the EQUALS statement applies throughout the system and the value will be
substituted wherever the name appears.
If the EQUALS statement appears in a
minor header or local data design, the value will be substituted only throughout the system procedure or data design which follows the minor header.
When the EQUALS statement is used to assign a numeric value to a symbol used
in the following procedures or data designs, the values used in the arithmetic
expression must be either constants or values previously defined by an EQUALS
st3tement, or previously specified in a system data design within the system
being compiled.
Arithmetic expressions appeio-:.·ing in EQUALS statements must be
simple, parenthesis-free expressiolls and are evaluated left to right without
precedence consideration.
Relative allocation is accomplished with the. EQUALS
statement where the right-hand side references data units.
Format
name
EQUALS
expression
$
Explanation
Name
The name of a data unit, or a tag for a numeric
constant.
EQUALS
Specifies that an allocation or value assignment
follows.
Expression
A simple, parenthesis-free expression representing a relative allocation or numeric valup.
The basic arithmetic operations of +, -,
11-7-}9
* and I
M-5035
are allowed. The operands in this expression
may be data unit names, tags defined by previous
EQUALS, and constants. Table 10-1 summarizes the
rules for legal final results (left side of
EQUALS) and legal intermediate results (binary
operations within the expression on the right
side of the EQUALS).
TABLE 7 ~l.
ONE
OPERAND
Constant (tag)
Relative (data
unit)
Constant (tag)
OPERATOR
+ _
I
OTHER
OPERAND
RESULT
(FINAL OR INTERMEDIATE)
Constant (tag)
Constant (tag)
Constant (tag)
Relative (data
unit)
Relati ve (data
unit)
Relati ve: (data unit)
Relative (data unit)
+ +
Relative (data
unit)
7.4.2.1
f~
EQUALS EXPRESSION SUMMARY
-
Constant (tag)
Defining a Tag
When neither the name on the left nor any of the names on the right of an
EQUALS statement are the identifiers of data units, the name on the left
becomes a tag for the numeric value represented by the expression on the right.
This tag may then be used in data declarations and dynamic statements and the
appropriate value will be substituted. If the expression on the right involves
data units (relative locations) and the result is an integer value, the tag
may be used in dynamic statements or other EQUALS statements but not in data
declarations.
11-7-20
M-5035
Exam~le
oft{
,
IFt:!!ltlIIIIL
#fNt
1
JEAu~,LIS, IFjWvi
,MAg,
,S,
IE,flIUIAI LIS
,3.2, . JI,
,,I
,f,
1 1
1 1 ,
,F,W,-IHtI!',- ,il ,$,
I J I ., , , I I 1 I I , , , I
"
I , I', , , , , , I , ,
I I ,
I
I
,V,R,8,L, IX, Al ,FaW, ,5, ,Hlw, IA /fAg, I,
, , ,, J , ,,
I,
J I ,
, , I , ," , , , I I ,
,S,E",li lx, ,Tjo, ,g., ifr "'IA~ .$,
,
I
J
I
I
I
,. I
J
1
I
I
I
I
I
J
I
J
I
,
1
I
The variable X is a 32-bit, signed, fixed-point data unit with 16
fractiona'l bi ts and an ini tial value of 15.
Execution of the SET state-
ment assigns the value 30 to the variable X.
·7.4.2.2
Establishing Relative Locations
The EQUALS ,stat ement m(lY he used to assign the location of
a
name relative or
equal to the locat.ion of another name.
The definit.ions of these names must
appear within the same system element.
The identifier used on the left side
of an EQUALS statement must be a data name for a table, like-table, item-area,
va.riable or switch.
The express,ion on the right involves data unit names,
tags, and const.ants.
If a data name appears on the left side of t.he EQUALS statement, no area for
the data definition is reserved by the Compiler.
During the allocation
pro~
cess, the allocat.ion count('rs are not altered; the affected delta definition is
removf'd from l.hf' normfll
data name appearing to
:lssiunm(~nt
t
sequence and is allocated relative to the
hf' right of the EQUALS.
(I f
the data
n~mp
ont he right
does not appear on the left or an EQUALS statement, its data definition receives normal allocation nnd reservation of area by the Compiler.)
label may not appear
011
the left of the EQUALS statement.
11-7-21
A statement
M-5035
Change 3
Example
Storage is allocated for B but is not reserved for A or C.
f
A occupies
the same location as B,and C occupies the next consecutive memory location.
7.4.3
NITEMS Statement
The NITEMS statement is a special case of the EQUALS statement as used to tag
an identifier to a constant.
Its purpose is to assign a value to a tag appear-
ing as the number-of-items specification in a vertical table.
Format
NITEMS
(identifier)
EQUALS
value
$
Explanation
NITEMS
Indicates a special case of the EQUALS statement.
Identifier
A tag used on a subsequent table declarative to
represent the number of items.
EQUALS
Specifies an EQUALS declaration.
Value
An integer constant or another identifier tagged
to a constant by a previous EQUALS statement.
The NITEMS statement provides an initial constant for the number of items of a vertical
table declaration using the tag and also provides a name to which another value may be
attached at load time; thus, the length of a table may be changed without recompiling the
I
program. As a result no fields of a table whose length is determined by a NITEMS tag may
be preset.
7.5
LIBRARY RETRI-EVAL HEADER STATEMENTS
Elements of a
compil~-time ~ystem
may be retrieved from CMS-2 libraries and
Compiler output tapes as part of the input to the Compiler.
h(~;HJf' r
nnd sys t(~m
el('mf~n t
These include
s r,onta i ni ng sourr,e statement sand compool element s
11-7-22
¥
M-5035
Change 5
wldch (tre compiled system data designs, in a format internal to the Compilpr.
The following parugraphs describe the control stn\('lIIcnIS nef'ded to
source elements and compools.
r('lril'Vf'
Additional control stntements are provided for
the purpose of correcting source elements during element retrieval.
These
library retrieval and correction statements may he used either in major or
minor headers or in place of system elements of a
cumpile-~time
system.
Library
features are described in Volume I, Section 4.
LIBS Statement
7.~.1
Prior to control statements that select elements from a lihrary, the library
must be identified by a LIBS statement.
Format
LIBS
internal-id
{external-id}
$
Explanation
LIBS
The statement identifier.
Internal ID
The name of the library or Compiler output.
External ID
Optional. Some external identification (such as tape reel
number) which will be output to the compiling system
operator. If not given, the internalID will be used.
When Compiler-produced outputs are used in library retrieval, the names CCOMN,
CSRCE orCOBJT must be used as the internal-ide The name used corresponds to
the one specified on the
OPTIO~S
statement when the tape was produced by the Com-
piler. Sources statements'may be retrieved from CCOMN or CSRCE; compools fromCCOMN or COBJT. If CCOMN is being used as library input and CCOMN has been
specified on an OPTIONS statement as an output file, the LIBS statement must include
an external-id other than CCOMN to distinguish between the two files.
7.5.2
Retrieval Selection Statements
Elements on a library are identified by name and an optional key. The key is required
if the elements selected have been given a key during library preparation. Element
keying provides a means of distinguishing between elements of the same name on a
library.
11-7 -23
l\1-5035
Change 4
The name of a source element for retrieval is the nanle specified on the H EA 0, SYS-DD
or SYS-PH()C statelnent.
The narne of a cornpool elernent is the name of the last
SYS-DD llsed to create the COlllpool. The name and the HEA 0, END-HEAU, SYS-DD,
E~D-SYS-I)(),
SYS-PHOCand
E~{)-SYS-PHUC
statetnents define and delirllit an
eicnlentduring the retrieval procpss.
Hetrieval of eleOlcnts from a library is achieved through selection statenH.mts which
specify thl' desired elerllcnts by name and/or key.
statements:
SEL-ELE:~I,
There are four types of Sf-: L control
SEL-SYS, SEL-IIEAD alld SEL-POOL.
Formats
SEL-ELEI\I
SEL-SYS
I
name
(key)
(key) ,
dep-option
$
dep-option
$
:$
Sf: L-IIEAI)
name
(key) ,
SEL-POOL
name
(key)
$
Explanation
SE L- E LE 1\1, SE L-SYS,
SEL-HEAD, SEL-PooL
Staternent identifiers.
Natne
Identifies the element desired for retrieval.
Key
Hequired only if the named element has a key
on the library.
If not required, the parentheses
and key are omitted; the key is considered blank.
Dep-option
Optional.
Specifies the level of dependent
element retrieval. A dep-option may be one of
the following:
ALL
retrieve all dependent
elements
ONLY
retrieve no dependent
elements
II-7~24
M-5035
Change 4
no-of-Ievels
retrieve the specified levels
of dependent elements
No-of-Ievels is an integer or an EQUALS defined
name of an integer. These integers have the
following interpretations:
o
all dependent elements, equivalent
to ALL
1
no dependent elements, equivalent
to ONLY
2
this element and one level of
dependencies
3
this element and two levels of
dependencies, etc.
If no dep-option is given, ALL is assumed.
This
parameter is used only in conjunction with libraries
and is ignored when retrieving from Compiler
output tapes.
The SEL-ELEM statement causes the retrieval of a specific system element and
possibly all its declared dependent elements; it may not appear in a major header.
The SEL-SYS statement requests the retrieval of all elements having the specified
key. All source elements are retrieved when the key is blank. The SEL-HEAD
statement causes the retrieval of the named major or minor header and possibly .
all corresponding dependent elements. The BEL-POOL statement causes the
retrieval of the named compoo!.
NOTE
SEL-SYS statements may be used in conjunction with
SEL-ELEM and SEL-HEAD statements. The order
of retrieval is dependant upon the order of the
elements on· the -library. A single correct' deck (with
elements referenced in their library order) may be
used to update elements called by a combination of
BEL statements.
n-7-24A
M-5035
Change 5
I
The BEL-POOL statement must appear in an unnamed major header of the compiletime system such that it precedes all user-defined identifiers except the system name.
Retrieval of a com,pool occurs immediately when requested. Retrieval of elements
specified in one or more consecutive select
state~ents
commences when one of the
following conditions occur:
a.
The Compiler detects the CORRECT statement.
b.
The Compiler encounters a CMS-2 statement other than the LIBS or
select statements.
c.
The number of consecutive select statements exceeds 60.
When retrieval is completed for a given set of requests and corrections, the
Compiler returns to the standard system input device for the rest of the user's
input to the Compiler.
7.5.3
Correcting Elements During Library Retrieval
Source elements may be corrected during the retrieval process;" compools may
not.
The corrections do not modify the library or Compiler output tape itself,
but only the elements as they are passed to the Compiler.
The name of the
element and the card image sequence numbers, as given in the library listing,
provide the reference points for making corrections in the form of deletion,
insertion or replacement of card images.
The Compiler listings produeed during
a SOURCE output onto CCOMN or CSRCE also provide the same card image sequence
numbers.
Corrections decks must be introduced by the statement:
CORRECT
$
which indicates that one or more of the elements (that are to be retrieved as
directed by preceding SEL control statements) are to be corrected.
Since
CORRECT is a CMS-2 statement, it may not start in card columns 1 through 10.'
The CORRECT card is followed by correction contr.ols (as described in Volume I.
Section 4) and CMS-2 statements.
The correction deck is terminated by the
II-7-24B
M-5035
Change 3
Librarian directive /ENDCOR .. Within a block of corrections,
th~
order of the
corrected elements must be that of the library or Compiler output tape.
7. 5.4 DEP Statement
For any given element of a compile-time system, the programmer may declare other
elements to be dependent or subordinate to the given element. Such a specification
of dependents may appear only in a minor header. An element may have a
maximum of 58 dependent elements. Any minor header source element is automatically
declared a dependent element of the associated system element.
The DEP statement has no direct effect on the compile process; the information is
simply passed through to the source or relocatable output. The dependent element
concept has' bearing primarily upon the Librarian process and the relocatable loader.
In library retrieval, whether of' source or relocatable elements, dependent elements
are retrieved automatically with the selected element unless otherwise specified by
the user. Furthermore, during relocatable loading, all declared dependent elements
must be satisfied.
Format
DEP
name
(key),. name
(key),...
$
Explanation
DEP
Declares a dependent element.
Name
,The name of another element such as a system
data design or sy stem procedure.
Key
An optional key value placed on the element.
7 . 5. 5 Key Specification
Various programmer selected outputs from the Compiler may be incorporated into
libraries. Elements on such libraries are identified by name and an optional key. The
name of an element output by the Compiler is automatically defined as the name given
11-7-25
I
M-5035
Change 3
on the associated HEAD, SYS-DD or SYS-PROC statement. Key specification provides
the programmer with the option of defining library element keys at compile time.
Key specification may be included in the SYSTEM, HEAD, SYS-DD, SYS-PROC and
SYS-PROC-REN statements (see Section 4). This section describes the key specification.
Formats
(key)
(key)*S
(key) *0
(key)*C
(key)*L
Explanation
Key
Alphanumeric identifier of not more than four
characters.
Specifies that the key is to be attached to a
S
source element.
o
The key is to be attached to an object element.
C
The key is to be attached to a compool. element.
L
The key is to be attached to a listing element.
More than one key may be specified on any of the applicable declarative statements; each
"(key)*element-type" is separated by a .comma. Key specification included in the SYSTEM
statement
applie~
to all elements of the designated type output for the compile-time system.
Key specification included in the HEAD, SYS-DD, SYS-PROC and SYS-PROC-REN statements apply only to outputs associated with that element. If system declared key specifications and an element declared key specification designate the same type of output, the
element key is used .. Finally, if no output type is attached to the key specification, all output
types are keyed; if no key specification is given, all output elements are keyed with blanks.
11-7-26·
M-5035
7.6
MISCELLANEOUS HEADER STATEMENTS
7. 6. 1 SYS-INDEX Statement
The SYS-INDEXstatement may be used only in a major header. This statementassigns
a unique identifier to a particular index register. This register is reserved throughout
the entire system for use wherever the identifier is referenced.
Format
SYS-INDEX n
identifier
$
Explanation
SYS-INDEX
Specifies that a system index is to be declared.
N
An integer specifying a machine index register
number from 1 to 5.
Identifier
A unique identifier to which the index register
is to be assigned.
Example
,S I '/,5, j I ,1Ij-A Ej X,
I~
I
IX, Plo,S, , ,$, , I I
I
,
,
,
,
, I
,
,
I
The index (B-register) 1 is assigned the name XPOS througbout the system compile.
7. 6.2
MEANS Statement
The MEANS statement provides a· method of character substitution during the compilation process; no permanent changes are made to the affected source statements.
Format
identifier
MEANS character-string
$
Explanation
Identifier
Indicates· where the substitution is to be made during
the compilation. The identifier appears in subsequent
statements (but never in another MEANS or EXCHANGE
statement).
MEANS
Specifies that a character substitution is to be
defined.
11-7-27
M... 5035
Change 2
Character Strong
. 'A string of characters that is to be used in
place of the identifier. It consists of all
characters between the term MEANS and the dollar
sign excluding the blank delimiter. It may
include other identifiers, constants or CMS-2
symbolic operators. Since the dollar sign
terminates the string, it may never appear within
the string as a character to be substituted.
The maximum number of characters is 132.
If the MEANS is contained in a major header, it applies throughout the system
and the character string will be substituted wherever the name appear's. If
the MEANS appears in a minor header, the string will be substituted only
throughout the system procedure or data design that follows the minor header.
character-string
Examples
character-string
The following statements illustrate the before and after effects of the
above character substitutions for the purposes of Compiler interpretation:
"'
e
,
,
,V,RlB'LJ IN,ts_IEl/I ,
IAIDTIS, I$J I I I I , I , ,
lA, 131.2, 151 ,Jla , I'
I$IEITI IBllXlplTI Ina OOflf:QI lit ICIO,EIEIFI
'IVt8J8ILI IMIA
I
,$,
I
I I
,
iii I
I I
I
I"~
7.6.3
Before:
After:
Before:
After:
EXCHANGE Statement
The EXCHANGE statement provides exactly the same capability as the MEANS statement, except that the specified character substitution appears in the source
output and Compiler listings.
Format
identifier
EXCHANGE character-string
11-7-28
$
'M-5035
Change 1
Explanation
Identifier
Indicates where the substitution is to be made
during the compilation.
The identifier appears
in subsequent statements (but never in
MEANS or EXCHANGE statement).
EXCHANGE
anoth(~r
Specifies that a character substitution is to be
defined.
A string of characters that is to be used in
Character String
place of the identifier.
It consists of all
characters between the term EXCHANGE and the
dollar sign 'excluding the blank delimiter.
It
may include other identifiers, constants, or
CMS-2 symbolic operators.
Since the dollar sign
terminates the string, it may never appear
within the string as a character to be
substituted.
The maximum number of characters
is 132.
7.6.4
DEBUG Statement
Various program checkout statements, as described in Section 8, may be inclUded
in'the system elements of a compile-tjme system.
essed by the Compiler.
These statements are pror-
Appropriate calls and parameters for the object-time
f
debug package are generated and included in the object-code output only if the
user so requests via the use of the DEBUG control statement in the major header
element.
Format
DEBUG
parameters
$
Explanation
DEBUG
Requests the Compiler to process those types of
program debug statements specified by the parameters.
Parameters
Consist of one or more of the following names
separated by commas~ DISPLAY v SNAP, RANGE,
TRACE, PTRACE, DELETE.
1I-7-2q
M~5035
Change 5
The DISPLAY, SNAP, RANGE, and TRACE parameters permit the compilation of the
corresponding types of source debug statements. If 'One of these parameters is not
included in the DEBUG header, the corresponding statements in the system elements
are ignored by the Compiler. The PTRACE parameter specifies that code is to be
generated during the compilation process to cause a print message to appear during
execution before every procedure call. The DELETE parameter specifies that all
debug statements not activated by the other parameters are to be deleted from the
source output and listings.
7.6.5
CSWITCH Declarations
The CSWITCH feature provides selective compilation of specified sequences of statements within a compile -time system. The CSWITCH selection declaration defines the
"on/off" setting. The CSWITCH bracket defines the sequences of statements. The
CSWITCH delete declaration instructs the Compiler to remove those sequences which
are "off. "
7.6.5.1 CSWITCH Selection Declaration
CSWITCH -ON defines the named CSWITCH sequences to be compiled.
CswITCH-OFF defines the named CSWITCH sequences to be ignored. This declaration is optional; a CSWITCH bracket sequence whose name has not been defined by a
CSWITCH selection declaration is considered to be "off. "
Format
CSWITCH-ON name-1, name-2, ••• , name-n$
CSWITCH-OFF name-1, name-2, •.• , name-n $
Explanation
CSWITCH-ON
Specifies that the listed groups of statements
are to be compiled.
CSWITCH-OFF
Specifies that the Ii sted groups of statements
are not to be compiled.
name-1, ..• , name-n
Nam es that identify the selected CSWITCH
groupsofCMS-2 statements.
II-7-30
M-5035
Change 5
A CSWITCH selection declaration may appear anywhere within a compile-time system
except within direct code and between a FIND statement and its corresponding IF data
statement. The CSWITCH name follows the standard CMS-2 local/global conventions.
The "on/off" setting of a CSWITCH name may be reversed at any time during the compile by including the opposite CSWITCH selection declaration. If the setting of a global
CSWITCH name is reversed within a system procedure (locally) it is reset to the global
setting after the END-SYS-PROC has been processed. If a CSWITCHselection declaration appears within a CSWITCHbracket sequence and reverses the setting of the CSWITCH
bracket name, the reversed setting does not affect processing of that CSWITCH bracket
sequence.
7. 6. 5.2
CSWITCH Brackets
The sequence of statements between the CSWITCH bracket declaration and the END- .
CSWITCH bracket declaration is to be compiled, depending on the "on/off" setting of
the CSWITCH name. The CSWITCH bracket may appear anywhere within a compiletime system except within direct code and between a find statement and its corresponding IF data statement.
Format
CSWITCH name $
END-CSWlTCH name $
END-CSWITCHS $
Explanation
CSWITCH
Brackets beginning of CSWITCH block.
END-CSWITCH
Brackets end of a CSWITCH block.
END-CSWITCHS
~erminates
name
A name of a CSWITCH block. Must correspond to
~
all CSWlTCH sequences.
name in a CSWITCH selection declaration.
CSWITCH brackets may be nested up to a maximum of 10 ("on" or "off'? with a last-on
first-off sequence. The name following END-CSWITCH terminates th·at CSWITCH name
ll-7-30A
M...;,5035
Change 5
sequence.
If the CSWITQI sequence is ·'0££," only CSWITCH warnings are diagnosed;
all other syntax checking is suspended tmtil the
END~CSWrTCH
bracket declaration
is encountered or the language boundary structure has been violated.
A CSWITCH
bracket declaration in a data design (local, global or auto), procedure, fWlction
or systern·procedureDRlst have the END . . CSWITCH bracket declaration prior to the
respective data design bracket (local, global or auto), END-PROC, END-FUNCTION
orEND-SYS-PROC declaration.
NOTE
A CSWITCH bracket declaration appearing in a header
(major or minor) will not be terminated until its corresponding END -CSWITCH bracket declaration, an ENDSYSTEM, a TERMINATE, or a monitor control card is
encountered. If the END -CSWITCH bracket declaration
is not encountered, the remainder of the source will not
be compiled when the CSWITCH bracket declaration is
"off. "
7 • 6. 5.3
CSWIT CH Deletion
The CSWITCH delete declaration may appear only in a major or minor header. If
in a major header, all sequences of "off" CSWITCH brackets following within the compile-time system are deleted from the listing and source outputs. If in a minor header,
all sequences of "off" CSWITCH brackets through the end of the following element are
deleted fro m the listing and the source outputs.
Format
CSWITCH-DEL $
7.6.5.4
CSWITCH Example
EXMPI SYSTEM $
•
•
CSWITCH-ON CSWAl, CSWA2 $
Major header.
CSWITCH-OFF CSWA3, CSWA4 $
END-HEAD $
SDDl SYS-DD $
1I-7-30B
M-5035
Change 5
CSWITCH CSWA2 $
CSWITCH-ON CSWB2 $
CSWlTCH CSWA2 is set "on" in the
•
•
major header; this sequence will
compile and CSWB2 will be set "on. "
END-CSWITCH CSWA2 $
•
•
CSWITCH CSWB2 $
•
•
Statements from CSWB2 to CSWA3
CSWITCH CSWA3 $
will compile. Statements from CSWA3
•
•
to END-CSWITCHS will be ignored.
END-CSWITCHS $
•
•
END-SYS-DD SDDl $
SPCl SYS-PROC $
LOC-DD $
CSWITCH CSWAl $
•
•
}
Will compile.
END-CSWITCH CSWAl $
•
•
CSWITCH CSWA3 $
Will not compile. END-LOC-DD
•
•
will produce END -CSWITCH MISSING
diagnostic.
END-LOC-nD $
n-7-30C
M-5035
Change 5
Will set "off" CSWA2.
CSWITCH-OFF CSWA2 $
PROCEDuRE PROCI $
•
•
CSWITCH CSWA2 $
•
•
Will not compile.
END-CSWITCH CSWA2 $
•
•
END-PROC PROCI $
•
•
END-SYS-PROC SPCl $
HEDI HEAD $
•
•
CSWITCH CSWA3 $
END-HEAD HEDI $
SPC2 SYS-PROC $
•
Will not compile.
•
END-SYS-PROC SPC2 $
HEDI HEAD $
END-CSWITCH CSWA3 $
n-7-30D
M-5035
Change 5
CSWITCH CSWA2 $
END-HEAD HED! $
SPC2 SYS-PROC $
•
•
CSWITCH CSWAl $
•
•
Will
CSWITCH CSWAa $
•
•
Will not
CSWITCH CSWB2 $
CSWB2 is
•
•
ignored even
compile
since
compile.
if it is "on. "
Will
compile.
END-SYS-PROC
has reset
CSWA2
to "on."
END-CSWITCH CSWB2 $
•
•
END-CSWITCH CSWA3 $
•
•
END-CSWITCH CSWAI $
•
•
END-SYS-PROC SPC2 $
HED2 HEAD $
END-CSWITCH CSWA2 $
END-HEAD HED2 $
SPC3 SYS-PROC $
II-7-30E
M-5035
Change 5
CS\VITCH CSWAI $
•
•
CSWITCH CSWA2 $
•
•
All will compile. END-
CSWITCH CSW:a2 $
CSWITCHS terminates
•
•
the sequence.
END-CSWITCHS $
•
•
END-8YS-PROC SPC3 $
END-SYSTEM EXMPI $
U-7-30F
M-5035
Change 5
7.6. 6
EXECUTIVE Statement
The EXECUTIVE statement may appear in a major or minor header and is used to inform the Compiler that the program generation is for use in the interrupt (executive)
state of the AN(UYK-7. (The Compiler requires this information when generating
control memory references to index registers and accumulators). The Compiler
assumes generation for the task state in the absence of this statement.
Format
EXECUTIVE $
Explanation
EXECUTIVE
Indicates eode generation to be executed
in the exeeuo. ve statement
ll-7-31
M-5035
Change 5
7.6.7
CMODE Statement
The CMODE statement may appear in a major or minor header and is used to inform the Compiler that octal is to be the implied mode for numeric constants
in the element or elements which follow. This statement provides for compatibility with other versions of CMS-2 in the method of expressing constants.
Format
CMODE
$
Explanation
CMODE
Specifies that the implied mode of numeric
constants is to be octal.
When this statement is included in a header, decimal constants must be
followed by a Dor must appear in parentheses 'and be prefaced by a D. Unmodified constants or constants enclosed in parentheses and prefaced by an 0
will be treated as octal constants.
Examples
~ I::%~:t~~~: ~: :f:~:~ ::I::::::::::::
7.6.8
I
SPILL Statement
The SPILL statement may appear in a major or minor header element.
Format
SPILL
$
Explanation
SPILL
I
Causes the Compiler to declare, at output time,
every identifier within each affected system procedure as an external definition.
11-7 -32
M-5035
Change 5
Tllis der.lnrat.ion primarily far.ilitates the patr.hing of result;)nt relor.atablf·
object code by permitting the use of symbolic addresses (such as statement
labels, procedure names or data names) to specify the locations to be patched.
This declaration does not alter the normal scope of identifiers during the
compilation process.
If sPILL appears in a m ajor header, all local identifiers will be declared as external
definitions at output. If in a minor header, only those identifiers in the following
element will be declared as external definitions at output.
11-7-33/11-7-34 (Blank)
M-5035
SECTION U
DEBUG STATEMENTS
A set of program checkopt statements provides the capability for flow analysis
and data display while an object program is being executed under control of the
operating system.
One or more types of program checkout statements may be
included in the source input. When the corresponding statement types are
enabled, tnese statements generate calls to debug package routines (see
paragraph 7.6.4). Debug package routines may'then be selectively activated
at program load time (see Volume I, Section 3 for usage of the CMS-2 Loader).
Therefore, the following three conditions must be fulfilled when one or more
debug capabilities are desired:
1.
The DEBUG header card must be present
with the desired debug aid as a parameter.
This card instructs the Compiler to generate
the code for that aid when encountered.
If the debug aid is not included in the
header statement, the Compiler will ignore
the debug aid and will not generate code for it.
2.
The debug aid, as discussed in this section,
must be located in the source program deck.
3.' The- desired debug' aid must be included as
a parameter on the $LOAD card (see Volume I,
Section 3). This parameter instructs the
Loader to set Monitor flags directing execution
of the instructions associated with that debug
aid. Absence of the debug aid parameter will
cause the instructions associated with that
missing parameter to be bypassed during program
execution.
11-8-1
The various types of program checkout statements and the results of enabling
these statements at compile and load time are described in the following
paragraphs.
8.1
DISPLAY STATEMENT
The DISPLAY statement allows the contents (image) of specified data units to
be output on the system output device in the appropriate format for that data
type.
Optional value conversion will be made if stated.
Format
name
DISPLAY
image
V(w,y), image V(x,y), .•• , image V(x,y)
$
Explanation
Name
Optional.
ment.
An identifier for this state-
If included, this identifier must
be followed by a period and is printed.
with the data units and their
co~tents.
This name is not a statement label and
therefore may not be referenced.
Image
REGS for machine registers or the identifier of a variable, table, subtable, liketable, item-area, or field. This dataunit reference identifies the image on
the printout.
The output format for REGS, table, subtable, like-table, and item-area words
is an II-digit octal number.
The data type for fields and
va~iables
is the same as the data type specified
for that data unit in its data declaration.
1I-8-2
M-5035
Changel
The format of t he out put is specified
below.
Format
Data Type
V(x,y)
A
120.8
I
120.8
B
The integer 0 or 1
S
The status constant
name
F
E20.8
H
Aw (w = number of
characters)
Optional.
Specifies the magnitude for
conversion for a field or variable.
magnitude must not exceed 15 bits.
Examples
Assuming M is a 4-word table, X is a Hollerith variable, and Y is a
. floating-point variable, the printout might appear as follows:
.M
046732115043
362341023456
265123245675
145676343210
X
OOG GONE
Y
0.34244632+07
11-8-3
The
M-5035
Assuming FIELD is an arithmetic field, the printout might appear as
follows:
BETA
TABL(ALPHA FELD) 432.06
t
3.
J7T~8J /"'6 !IIlfIV', ,Vi l&ili,
I,,
IFi'ltlL.U>, 1511>1£1,"'.1>, tIl ,1 10, lUI ,IJ I
ttl
1
I
I , I
,J,l, ",
I , I 1 , , I',
I
I I I , , I , , ,
I
1 I I I I I I
I ,
I
I
,
I
Iii
I
I
I
I
I
"
I
,
I
I',
I ,
I
I .,
~
CJ
14
31
I
I I
I
I
I
I
I
I
I
I
I
I
I
,
1
'-L1....J1L...-J-1-"I-JI~I.....L'--,-'..4...
I
loJ,)1 1o 111 0 111 0 10
0
I
I
I
I
,
"
I
I
I
I
I
I
I
I
",
-'---'I--'-.........""""'""-~~_.-__
I
I
10
I
.~ ~
1
3
0
I
Field
Magni tude
Bi t
l'osition He resented
20
I ·0.15625
21
I 0.3125
I
22
0.62[)
I 1.25
:!J
I
24
I 2.5
25
I 5
I 10
26
I 20
27
I
28
I 40
29
I 80
I
I
I
11-8-4
M-5035
Assume that the field SPEED had bit settings as indicated in the
illustration above.
To execute the display statement with the con-
version specification that bit 2° of field SPEED represents ,10, t.he
output would be:
KNOTS
NAV(O,SPEED)
6.25
where 6.25 is the summation of the binary bit values of 2
5
3
and 2
(5 + 1.25) respectively.
8.2
SNAP STATEMENT
The SNAP statement reserves an area image equivalent in size and attributes
to the data unit. The first execution of the SNAP statement causes the contents
(or
convert~d
value) of the data unit to be printed on the system output device
and stored in its reserved image area.
Subsequent
execu~ions
of the statement
cause a printout only if the contents of the data unit have changed.
Format
name
SNAP
image
V(x,y)
$
Explanation
Name
Optional. An identifier for this statement. If included, this identifier must
be followed by a period and is printed
with the data unit and its contents. This
name is not a statement label and therefore
may not be referenced.
Image
An identifier for a table, subtable, liketable, item-area, field, or variable.
The image output format is the same as
that described for DISPLAY (see paragraph
8.1) .
11-8--5
M-5035
Change 3
Optional. Specifies the magnitude for
conversion for a field or variable. The
V\X,y)
magni tude mus t no t exceed 15 bi ts •
Examples
1•
II I , I I ,
In
this example, snap ALPHA is always executed, while snap BETA is executed
only when Z is less than or equal to O. The IF statement serves only .
to place a condition on the snap; deletion of the SNAP parameter on the
DEBUG header would render the IF statement unnecessary. These same
considerations also apply to the use of the DISPLAY statement. (Note
that the debug statements should not be compounded.)
This example illustrates several aspects of SNAP statement usage.
2.
I
,rIA,SIL,E, ,f/IAI" I IVI 12, 1.1, IS, I
I~I t I EjLI)' ,(.1 0 lu 1R151 E, II,18, IYI
1E"'INI
~I-ITI AI 8, '-I t I IN,If,V, 1=it
I
, , ,I
I
I
Ii, 1{I"
,I ,I I ,I
I
I
1
I~I
I
I
I
,I
I
1
I
,eIIiS"SINtAPi NtAIVI(,OI"C,OJUIRS,E')1 ,V,lJI',OI,,7r),
I I
Ij,
At the time the SNAP is first executed, assume the bit configuration
for COURSE is as follows:
The output would then be:
CRS
NAV(O, COURSE)
33.75
11-8-6
M-5035
which represents the summation of the binary bit values, as specified
3
by V{360,14), of 2 and 22 (22.5 + 11.25 respectively). See paragraph
0.1, Example 3 for a detailed explanation.
8.3
RANGE DECLARATION
The RANGE declaration specifies that a data-unit value is to be examined to
determine whether it exceeds the values specified each time the data unit is
set.
This declaration can appear only within a data design.
Format
data-unit-name
RANGE
value l ..• value 2 . $
Explanation
Data Unit Name
A variable or field (floating-point, fixed-point,
or integer).
Value 1
The upper limit for this data unit.
Value 2
The range separator, used only if value 2 is specified.
NOTE
Only one RANGE declaration is allowed
per field or variable definition, If
the RANGE declaration references a
field, the declaration must be placed
within the table brackets.
Examples
Each time data is s~t into the data element DISTANCE, the range is tested.
If at any time the value is outside the range of 64 to 8, a printout to
that, effect is made s imj lar to the following:
DISTANCE EXrEEDS RANGE AT CALC + 2
where CALC is a statemant lahel and the statement causing the range to
be exceeded occurs two statements after CALC. (For the purpose of
statement counting, both the THEN separator and the $ terminate a statement.)
11-8-7
M...;5035
.)
Ii ,0 ,c ,- J) tb,
~,
,. I
I·, ,., , , I I I
j,-,AIBI'-I£' ,r,AIBILI IH,
,.t,
1'1
~J'
'P IRIO, Cl fl,)IM,RIEI th I" IM,fIR,O,C.1
I , I I
~I
I, ,,
J
1
1 I , I
I
I
~:Ut\:l:!:.: : 1~:::~:Y:T~:8:~ (:~::;:~:~:;,,):a:~:o:~i)(: :~ :~ :~:
II I II I I I
1E'1"'1:b 1 tll~IMll,il
If I
I I I I , I , I
I
::: :
I I I I I I , I I
If any occurrence of field FELU in table TABL is within the range, no
message is printed out.
If FELD is outside the range of values, the
.printout might appear as follows:
TABL
,,
,X
,,
,,
EXCEEDS
RANGE
IL,O,'-,- ,j),'D, ,$, ,I ,
IV,R,B,L, ,x, ,li ,/IJ~
IV,RIBII., ,t, ,A, 1/161
3.
I
(4, FELD)
I
I I
IL,A,B,i, .,
,,,,,
IU,
I'"
,~ I
IS,E',TI
,)(,
ITlo,
I
,3, ,$,
181 tJlN,tr, t, , 3,8, ~, , I , ,
1£!N,b,· , I-,O,c,-,) ,lll
I I ,
IPIK,OI,-,£,),U,R,E I Ip,R,O,C,&
,,,,
I
AT DUMLI+I
,,
,I
til
111+,7 ,$, , I ,
1
,,
If X is greater than 38, the printout might appear as follows:
X EXCEEDS
RANGE
AT LABI+O
I I -8-8.
I ,
I
I
M-5035.
H. tl
TRACE STATEMENT
The THACE statement generates a line to be printed on the system output device
for each executed statement that occurs between the TRACE and END-TRACE statements.
This line identifies the flow of execution by the most recent statement
label plus an increment of statements relative to this label.
counts statements whenever a $ or THEN is encountered.
following the TRACE statement should be labeled.
Format
TRACE
$
dynamic statements
END-TRACE
$
11-8-9
The Compiler
The statement immediately
M-5035
Example
,
I
I
I
,
IT,R,Aic,£. 6 1
•
I
,
,
•
I
I
I
I· I
I
I ,
I .,.
J « «
Assuming that Y is 0 and there are two occurrences of X in field FELD
of table TABL, the printout might appear as follows:
AAI + 0
AAI + I
AAI + 2
AAI + 3
BBI + 0
BBI + 1
BBI +3
BBI + 4
BBI + 0
BBI + 1.
BBI + 3
BBI + 4
BBI +0
BBI + I
11-8-1U
M-5035
BBI -+ 2
CCI + 0
If in the above example Y is not 0 and there are no occurf(~lIces of X
in field FELD of table TABL, the printout might appear as follows:
AAI + 0
AAI + I
AAI + 2
AAI + 4
BBI + 0
BBI + I
BBI + 2
CCI + 0
8.5
PROCEDURE TRACE (PTRACE)
The PTRACE parameter on the debug header provides a mapping of procedure
linkages by printing a message for every CMS-2 procedure call encountered.
Format
PTRACE
Example
Print('d output
shows
Ihe
eurrpnl proeedllf(' nalll('
and Ihf' (:nl1('d pro(,.,durt'
nam(! at each pToc.edure call as follows:
PROCEDURE
xxxxxxxxxx CALLING PROCEDURE yyyyyyyyyy
where xxxxxxxxxx is the current proced~re being executed and yyyyjyyyyy
is t.he proced1lt p t.o be, executed.
11-8-11/11-8-12 Blank
M-5035
Change 2
SECTION 9
DIRECT CODE
Direct code statements, or symbolic machine code instructions, are operations
which generally result in the generation of a single machine instruction.
The CMS-2 Compiler processes as direct code, a subset of the language defined
for the CMS-2 Assembler (see Sections 11 and 12). This direct code may appear
in both data designs and procedures, but it must be properly bracketed and
must follow a specific source card format.
The remainder of this section describes the direct code statement format, the
various directives available, and specific processing conventions. In
addition, this section describes the differences between the direct code
subset that may be embedded in a CMS-2 program for processing by the CMS-2
Compiler and the full assembly language capability available through the
C~IS-2
9.1
As sembler.
DIRECT CODE STATEMENT FORMAT
When one or more direct code statements appear in a CMS-2 source program,
they must be bracketed between two CMS-2 statements provided for that purpose.
These
state~ents
DIRECT
are described below.
$
Must immediately precede a sequence of
direct code.
CMS-2
.. $
Must immediately follow a sequence of
direct code.
The format for direct code statements apprearing in a CMS-2 program is slightly
different from that accepted by the CMS-2 !\.ssembler. The format is consistent,
however, with that of CMS-2 source cards in that card columns 1 through 10 are
strictly for programmer use and are ignored by the Compiler. The normal
direct code format consists of three fields delimited by spaces and connas.
Periods indicate the end of a coding line. Direct code statement is limited
to one card. The general card format is illustrated below.
11-9-1
M-5035
Format
CARD-ID
label
op-code
operand
Explanation
9.2
Label
Instruction label. Always starts in column 11
of a coding line. A space in column 11 indicates
no label. A label may consist of at least one
but not more than eight alphanumeric characters;
the first character must be alphabetic. It must
not be followed by a period.
Op Code
Separated from label field by at least one space.
May contain a mnemonic function code. A space
signifies the end of the op-code field.
Operand
Contains the elements of the function specified
by the op-code. Operand fields are separated by
commas. Line termination and comment fields are
acceptable and are indicated by a period followed
by a space.
DIRECT CODE STATEMENT REPERTOIRE
The CMS-2 Compiler will accept the full AN/UYK-7 machine instruction repertoire
as defined in Append,fx G. A more detailed description of these instructions
may b~ found in Section 12.
In addition to processing the symbolic machine language repertoire, the CMS-2
Compiler will accept several Assember directives and a variety of expressions
and constants as operands in the direct code statements.
9.2.1
Direct Code Directives
The following items define the CMS-2 direct code directives that are processed
by the CMS-2 Compiler.
11-9-2
M-5035
1.
ABS
Format
label
ABS
label
Explanation
Translates compile-time location counter value into an
ABS
object-time absolute address.
2.
BYTE
Format
BYTE
Explanation
BYTE
Redefines the embedded character size and number of
characters placed in an object word for direct code
character strings occurring subsequently within the
same CMS-2 element.
The number of characters to be packed into an object word.
The size of the character field in bits, not to exceed
16 bits.
3.
CHAR
Format
Explanation
C.
The octal code (000 through 377) that is to be redefined.
e.
The redefined value where current character e. becomes
1
1
1
new value e .•
1
11-9-3
M-5035
Change 2
4.
DO
Format
label
DO
e,
direct-constant-entry
Explanation
e
An integer defining the number of times the direct constant
is to be generated. If a label is specified, it shall
apply to the first word of generated data. The direct
constant entry must not contain a symbol.
5.
FORM
Format
Explanation
FORM
Describes a special word format specified by the
programmer. The word format may include fields of
variable length, where the length in bits of each field
is user-defined.
e.
1
The number of bits in a user-defined field.
The total
number of bits must be equal to or less than 64 and
the number of such subfields limited to 16. e i must be
less than 32.
The FORM directive may be implied.
FORM is illustrated below.
The format for utilizing the implicit
Format
11-9-4
M-5035
Change I
Only constants are accepted in Form reference sub-fields with the exception
of a name appei-lring in the last sub-field where that sub-field size is dcfil1('d
as 16 bits or greater.
When a value appearing in a Form reference sub-field
requires more bi ts than \Vas defined in the Form declaration the leftmost bi ts
of the value will be truncated when packing the resul ting constant.
Explanation
N.
Values to be packed into fields of word.
I
The Compiler
determines the number of bits required to contain each
value by dividing the word into n fields and forming
the word accordingly.
Format
RES
e
,Exp lana t i on
RES
Adds the value of the single expression in the operand
field to the current location counter value.
e
An expression that must result in a determinable
positive value.
11-9-5
M-5035
Change I
9.2.2
Constants
Constants accepted in direct code statements are:
1.
2.
Decimal numbers.
Octal numbers.
3.
Floating-point numbers.
4.
Double-word-Iength octal numbers.
5.
Double-word-length decimal numbers.
6.
7.
Character strings from one to eight characters in length.
Scaled decimal numbers.
Constants may be used in direct constant entry statements and in direct code
expressions.
9.2.2.1
The following paragraphs define CMS-2 direct code constants.
Decimal Numbers
A decimal number is converted to its binary equivalent and used in its binary
form for all computations.
The integer may consist of 9 digits if single
word ,U,C.IEj~ ,A, jr,Wp,-,h'lo,R,l), ,V,8,yU,Ei 1
'I ,-, ,E"f&U, 4, 1.., mOt , ,g9.3,7,1 ,/1.5jJjI,?j I, I I , , I
1+ISl/1~
1 ,-,
11-9-6
M-5035
Change 3
9.2.2.2
Octal Numbers
An octal integer is specified by preceding the first
digit with a O~ Each character of the octal integer
(0 through 7). Rules for evaluation are the same as
octal number may also be followed by the letter D to
result • .
(most signficant) octal
must be an octal digit
for decimal numbers. An
obtain a double-precision
Example
lte'I"31 I '-I
,ptBt9 D,U,C"E,5,
l-A3,5i" ,., ,pIR,OJl)tt,C.,E,S,
,0, olo,O,AO,o P,g I~,
,.3,?17,7,717,717t11~/,
I, ,, ,, ,, ,
I
I , I I I I J ,
,+p,7, ',Jj1,3,ZJI ID,!,2,JJ), I-I 'PlpJ9~U,C.,EjS, ,3",J11IJ~ 119/1.1,3,
J J I I I , 1 , I I l ' , J 11-' ,AlI/fA I , I I 1 PPIOIO,DlgOpepl/1
9.2.2.3
Floating-Point Numbers
A floating-point number must be coded as a single word decimal mixed number
conSisting of an integral part and a fractional Vart, and must include the decimal
point. Spaces are not allowed within the number. The number is converted to a
64~bit
floating-point number, formatted in memory as follows:
Sign of characteristic
S
Mantissa
where S is the sign of the mantissa.
1~-Y-7
Characteristic
I
M-5035
Example
,+~ .,.siif; i)~
1-, ,P,PiOJ?,Y.C, §51 pe,O,o,o,oe,o.oI.ZJ4,
, , I' , I -, ANA , , , , , ,I, ".q,z,z,',1,90 10 ,o, I
,
1- ,2,. tf,~,t", 1-, ,P,R,Otl> ,U,C,E'i 51 ,0,0,0 tOe'0,oI0r9J2" , I
I , I-, ,thNIA I , , , I .z.~,3,Sjs,' I, ~ 1, "7,'1,
-, ,pl~,oP,u,C,EiSI ,0,0,0,0,°,0,0,90 10,1, ,
1+,1,0,-1°"
, , ,,
,
,
" ,1f,Nt=A , , I I/,y 0, 0, '3 0,0,0, 010. 0,
,-,1 -,0,
,fl(,O,D, U,C,fi 51 IO,O,oeeee,golg I,
,
, , I ,It 7, '1, ~ " " 7,7,717, 7, ,
lAMA
,-,.,.3, , -, RR,O~U,CI§.51 13," ,'1,7, '7, 7,7,1,717,', ,
,I
, , I ,z, ~.3,/,DI".3,/,11'131· , ,
Ji,N..A
, "II I
i
I I I
1
I
I
I
I
1
I I I I I
I I
I ,
I
I
, I
I
The
I
*
+ and
I
I
-I
•I
"
* -
I
I
operators are accepted when declaring" a floating-
point constant.
9.2.2.4
Character Strings
When a + precedes a character string, the Compiler regards the string as a
constant; therefore, the number of characters between apostrophes may be from
one to eight. One to four characters yield one computer word; five to eight
characters yie Id two computer words. Characters are packed, right-j ustified,
within the generated words with leading binary zeros as required to pad the
word. The implied code for character strings in ASCII.
Example
,.,
,.,
'l'I
OI5i I
I P,&OI ~1L(1~1 Ei ~ IlI9/~OI'I~
ft-, 1/.A~ ,&£,'1 I I I
It, ,'IA,'-I &Ei~~E 1'1 I·' I P,RI~,"t1 ~ Ei§ lo~Ot2£,~",/,5i.2I~ I
I I I I I I , 1 I 11~1.l~9~413~OI5i I
I I
I I I I I I I I I
,
11-9-8
I
I
I
M-5035
Change 2
9.2.2.5
Scaled Decimal Numbers
A decimal or floating-point number followed by a
Compiler as a scaled, fixed-point value.
~::/N
The form of
shall be handled by the
scal~d
numbers is shown
below:
Format
Nl ~::/N2
Explanation
NI
May be a decimal or floatinu-point number.
N2
Shall be a decimal number.
The converted decimal number shall be aligned to a scale value indicated by
N2.
Example
9.2.2.6
Scaled Octal Numbers
An octal number followed by a IO/N shall be converted and shifted as specified
by the scale value following the
"~c/"
indicator.
The compiler will not test
the scale value for overflow but will simply perform a left shift circular
or right shift sign fill by a number equal to the scale value.
11-9-9
M-5035
Change 2
Format
Nl*/N2
Explanation
Nl
Scaled octal number
N2
Decimal number
If N2 is signed negative, Nl shall be converted and shifted right N2 bits.
If N2 is unsigned or positive then NI shall be converted and shifted left
N2 bits.
Example
9.2.3 Data Expressions
The data expression forms that are accepted by the CMS-2 Compiler are defined
below:
1.
Constant (as defined in paragraph 9.2.2).
2.
Numeric tag (identifier assigned a value by equals statement).
3. Operand -operator-operand (operand must be a constant in this form).
2
2
l
The operators allowed within data expressions are:
1.
+ (addition)
2.
- (subtraction)
3.
*
(multiplication)
11-9-10
M-5035
Change 2
4.
/ (division)
Mixed mode constants are not permitted in data expressions.
9.2.4
Literals
A literal in CMS-2 direct code is defined as a data expression contained
within parentheses.
Examples
(56)
('Cr\T' )
One or two object words result from evaluation of a literal.
allowed in literals are defined in paragraph 9.2.3.
9.2.5
Data expressions
Direct Constant Entries
The CMS-2 Compiler accepts data words declared in direct code that result in
one or two generated computer words. Character strings may require more than
two words. These direct constant entries shall consist of declared constants
as defined in paragraph 9.2.2, character strings, or data expressions.
A + or -sign in the operation field followed by one or more subfields in the
operand field signifies that a constant is to be generated. Whenever ,a + or
- sign appears as the first character of the operation field, any number of
spaces or no, spaces may separate the sign from the first operand. Subfields
are separated by commas. In generating constants, the Compiler uses the size
of the object computer word. If the operand field contains one subfield, the
signed value of the subfield is right-justified in the generated word. If
the operand field ,contains two subfields, two equal-length signed subfields
are generated with the values right~ustified within each field, and so forth.
The first subfield must be signed. Successive subfields may optionally be
signed. The absence of a sign implies a positive value. If variants of this
implicit equal subdivision of data words are required, the capabilities of
the FORM directive may be used to derive the desired format. This is
accomplished by referencing the FORM label in the operation field.
11-9-11
M-5035
Change 2
ExampH~s
1. 1-1/",3Iel~
,P,~OrbJU,C,€j5,
,3,7,',7,717,3,'1,','7,7,
,tB",-,~",2,,!t ,1-tl,S, ,-, ,PtRp,b)",C"c, s, ,9 I e,7"",.t,~7,.f,3t
I ,
I , I , ,.,
If the operand field contains just one subfield immediately followed
by a D, or if the constant is a floating-point number, the Comriler .
generates a double-length constant in two successive computer words.
The first generated word of the double-length constant will contain
the least-significant bits of the result,.
context is only meaningful when appended
2.
,+,
,',0,.,0, ,.1
I
I , I
,
, I I .,
I
I , I I , , ,.,
I ,
,
I
I
a numeric constant.
pI7,?,'1,'1,'1I'1,7,'1,'1t71 , , I , I , I I., ,
,., Ip,It,O,b,u, G§S, ,.3"~
7",Sj4,3t241J
II I , , I , ,
I,I , I
I I
~o
IPIKJOtP,U,c.,c,Sa ,OIo,999lggq?,o.11
J ' I I I I , , I ,I iJ.J9 0 ,999OPeel
rr,O,I,.l,3,4,5p1"1J,,S,i,3JZ,i~,
I
The letter D in this
, ,
I
I I ,., I"
,Sj',
"
, "
,/)19°,0,0 BD,90 ,l,2i
I
Character strings longer than eight characters may be entered as a
direct constant entry_
No character
s~ring
in CMS-2 may exceed 132
characters.
9.2.6
Instruction Expressions
The CMS-2 Compiler recognizes and processes simple expressions appearing in
the operand field of direct code instructions and in direct code directives.
Expression forms allowed are:
a.
Symbol (label, tag, $).
b.
Symbol
~
constant - If symbol-constant is used and the symOOl
externally
re~erenced,
see note at end o.f section 11.3.3.12.
~
11-9-12
..
IS
M-5035
ChClnge 2
c.
Constant + symbol.
d.
Constant.
e.
Literal.
A constant used in an instruction expression must be limited to a decimal or
octal integer.
The $ symbol is used only to reference the Compiler location counter.
The
contents of the location counter are accessed by coding the symbol $. $
signifies that the contents' of the location counter are to be substi tuted in
the expression.
Example
,.,
An alphanumeric label may be used within an expression.
The label
must conform to the rules for labels as described earlier; for
example, it must not exceed eight characters; it must consist of
alphabetic (A through Z) or numeric (0 through 9) characters and
the label must begin with an alphabetic character.
When the expression is evaluated, the value allocated to the label is substituted in the expression.
Numeric constant values may be equated to
labels by the CMS-2 high-level declarative EQUALS for use in direct code
expressions.
The high-level EQUALS statement allows simulation of the
parenthetical static expression capability in direct code.
An identifier that has a value assigned by an EQUALS statement is defined as
a tag.
Example
The tag VALl can be used in a simple expression carrylng an associated value of 7.5 when the expression is evaluated.
11-9-13
M-5035
Change 2
A sym,bol defined by a high-level MEANS or EXCHANGE statement may be referenced
in direct code. However, the character string to be substituted for the
symbol in the direct code issubj ect t,o the following restrictions:
a.
The character string may not contain a comma or a period (i.e., it
must represent a single term of a single direct code statement).
b.
The character string must be equal in length to the symbol. it replaces in direct code.
NOTE
Character substitution for a symbol defined in an EXCHANGE
statement will be performed for the purpo'se of statement
interpretation. However, no source card or listing editing
is performed.
Example
~~A:::i.~~::~:~E~T~fu1:i
f:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
l
,-I
I
I
I
,
, I , I
1 .I I I I
I I I
I I I ,.,
1
'"
I·'
I
I
I I
I
1
AA&~ ~+. ~.: :: :: : : I:::::::::I : : : : : : : : : l
IL,~ ,
tLXa,IPr4,RM"Ka3, ,.1
C1,\5,-,2, e ·1 .
I
.
~""'--I~
A : :
I I
I
I
I I I I , , I·' I
,!::-'-L-L....L-JL.-L........
The direct code statement would be assembled by the Compiler as:
LB 84, TAGll,
K3
11-9-14
.............
M-5035
Change 2
9.3
PROCESSING CONVENfIONS
The following conventions apply when processing direct code statements appearing in CMS-2 programs:
a.
Direct code statements, bracketed by DIRECT and CMS-2 may appear
within the following source program elements:
b.
1.
Procedures (PROCEDURE).
2.
System data designs (SYS-DD).
3.
Local data designs (LOC-DD).
The rules established for referencing labels within or from
.
.
outside procedures and data designs apply to direct code
segments.
The direct code statements assume the same refer·
encing and allocation characteristics as the program element
within which the direct code residcso
A direct code statement may be declared to preset a data unit
defined in a high-level declaration.
The direct code statement
must be labeled with the duplicate of the identifier of the
high-level "declarative and must not precede the high-level
declaration.
It must be given within the same data design.
Any direct code following the preset of a high-level data
unit is assumed to be part of that preset unless labeled
by an identifier duplicating another high-level definition.
11-9-];1
M-5035
Change 2
Example
I
I
I
I
I
I
I
I
I
I ,',
I J , ,
"
• I
I
I
I
,
,
I
I' I
I
I
1
,
I
I
I
I
J
I
J
I
I
I
I I
I
I
I
,
I'
I
I
I
I
"
I
I \ I
,
:::::::::I~~~=~Y:::-~)I ::E:K:A:~;'L:E: !~ :: :::
The computer word to which the variable NAMI is allocated will be
preset to the decimal number 625 declared 'in the low-level direct
constant entry.
c.
Direct code segments may reference other direct code segments
resident in the same SYS-PROC or SYS-DD.
d.
CMS-2 high-level statements may reference direct code statement
labels (GOTO or SWITCH only).
e.
CMS-2high-level statement may not reference data units defined
only by direct code statements.
f.
Direct code statements may reference data unit names (symbolic
addresses) defined by high-level declaratives. K-designators
must be coded explicitly.
II-9-16
M-5035
g.
Direct code statements may reference high-level statement labels.
h.
The rules of symbols, operator priority, and elements established
for direct code statements are independent of those applicable
to high-level statements.
i.
The following mnemonics, used to reference computer registers,
are recognized by the direct code processor:
j.
1.
Accumulators:
AO, AI, A2, A3,
2.
Index registers:
3.
Base registers:
4.
Quarter-word memory:
5.
Half-word memory:
L, U.
6.
Whole word memory:
W.
7.
K-designators:
A~~A5,
A6, A7.
BO, Bl, B2, B3, B4, B5, 86, B7.
SO, 51, 52, 53, 54, 55, 56, 57.
Ql, Q2, Q3, Q4.
KO, KIt K2, K3, K4, K5. K6, K7.
Direct code half-word instructions are packed together into one
word where possible. Labeled half-word instructions will
always be assigned to the upper half of the word. The following
tables illustrate the method for packing half-word instructions
(HW = half-word instruction, FW = whole-word instruction):
1.
Instruction
Nonlabeled:
Memory Assignment
HW
IiW
FW
FW
HW
HW
}
HW HW
11-9-17
M... 5035
Change 2
j .
2.
Labeled:
FW
FW
HW
HW
LABLI
k.
}
HW HW
FW
FW
HW
HW
LABLI
HW
HW
FW
FW
HW
HW
LABL2
HW
LABL2 HW
LABL3
HW
LABL3 HW
Spaces appearing between elements in operand fields of direct
code statements are ignored except where specifically defined
as a delimiter, as illustrated below:
MOD
M
+
on
RAD
+
R
Spaces ignored.
AD
Illegal because of spaces within
element itself.
1.
Labels of direct code in system data designs are treated as
global labels by the Compil~r.
m.
When referencing procedures declared by high-level statements,
the direct code instructions must be the same as the instructions
generated by the Compiler for a high-level procedure call.
n.
A direct code statement that contains an explicity coded sdesignator (base register) may contain only a constant in the
Y-field.
Table 9-1 summarizes the values and symbols that may appear in direct code
struction subfields and in direct constant entries.
11-9-18
in . .
Table 9-1.
a
~
~
I
y
Instruction Sub-field Valid Forms
k
b
s
ak
af4
sy
m/h
I
w
p
I)
Oc ta I dig i t
x
x
x
x
x
2)
Q (1-4)
x
x
x
x
x
3)
ttL" (=1)
x
.x
x
x
x
4)
"U" (=2)
x
x
x
x
x
S)
"W" (=3)
x
x
x
x
x
6)
A, B, C, n,H, K,
S (0 - 7)
x
x
x
x
x
7)
NTAG (=0 - 7)
x
x
x
x
x
8)
MEAN/EXC (2)-6) above)
x
x
x
x
X
9)
Integer Sl77
x
x
x
x
10)
NTAG
x
x
x
x
II)
"ALL) (= 177777)
x
12)
C(O - 17)
x
13)
In tege r
14)
NfAG s 177777
x
15)
Y operand $ Y
x
e
DeE
Lit
..0
I
.....
-.0
(~I77)
S
177777
16)
Integer So77
17)
~
Integer or Integer
x
n3
::r'1
1»U'1
x
x
::so
cCw
(t)U'1
N
x
Table 9-1.
(continued)
n3:
::r.
01
Q,)
a
x
~
Relocatable Identifier
Integer
x
20)
Relocatable Identifier
x
21)
$::!:, Integer
x
22)
Li teral: (Constant,
NTAG, data express.)
x
19)
k
b
s
ak
af4
sy
m/lJ
1
24)
MEAN/EXC tag
25)
Constant
p
e
OCE
Li t
x
x
X
x
x
x
x
x
x
x
-.0
I
N
0
26)
Const
[;]
Const (no mix)
27)
Char String S132 chars
28)
Integer
~37777
~4000
:s 0
r.Q
C'D
x
23>- NfAG
w
N
Integer + Relocatable
Identifier
18)
1-4
1-4
I
y
x
(BCW)
x
(BCWE)
x
RTAG - Identifier equated to identifier.
NfAG - Identifier equated to a value.
e
- data expression
Identifier - includes RTAG
w
01
M-5035
Change 2
The following items. identify additional capabilities ayailable under the CMS-2
Assembler which are not included in the direct code capability of the CMS-2
Compiler.
1.
section declarations in the label field are not
allowed (direct code is compiled under the existing high-level
Addres~ing
allocation environment).
2.
Macros and related directives are not allowed (including macro
name and statements, paraform usage, and macro reference lines).
3.
Library retrieval from direct code is not allowed.
4.
Labels of direct code externalized by postfixing an asterisk
to the label are not allowed.
5.
The CMS-2 Compiler does not process direct code statements
containing expressions using parentheses.
6.
7.
The following directives are not acceptable as direct code:
a.
END
b.
SEGEND
c.
LINK (can use the high-level EXTREF statement instead)
d.
Loader directives
e.
LLT
f.
LCR
g.
LIST, ELIST, and NOLIST
h.
OnD and EVEN
i.
PXL
j.
WRD
k.
RF$
1.
EQU (can use the high-level EQUALS
(~:'AC,
::;CS, etc.)
state~ent
instead)
SETADR and LIT literal directives are not allowed (the Compiler
controls when and where to dump the literals).
11-9-21/11-9-22 Blank
M-5035
Change 3
SECTION 10
COMP II.ER OUTPl JTS
A variety of hardcopy or listed outputs is available from the CMS-2 Compiler.
The method of selecting these various outputs using the OPTIONS statement is
described in Section 7. The purpose of Section 10 is to explain the various
li~ting formats, page headers, and column descriptors.
10.1
SOURCE LISTING FORMAT
The source listing provides a record of input to the Compiler. This listing
consists of a page header for each listing p'age containing the element name
and number, the date of the compilation and a page number.
....."
If the source· listing is requested by a SOURCE option and no OBJECT option,
the format is as follows:
Meaning
Column Heading
CARD ID
Columns 1 through 10 of the card
image.
SOURCE STATEMENT
Columns 11 through 80 of the card
image (the CMS-2 source statement
field) •
ERROR COND IT ION
An error message for any syntax
errors detected in the source statement.
If the source listing is requested by a SOURCE option and an OBJECT option
(no 8M), the body of the listing consists of several columns, the contents of
which are explained below.
Column Heading
ERR
Meaning
Used to indicate errors that occurred
in the adjacent source statement. A
list of these errors, their meanings
and identifying numbers that appear
in the error column is given in
AppendixE.
11-10-1
M~5035
Change 3
S
Base register numter.
AC
Address counter number.
LOC
The relat~ve memory location (in
octal) of the first instruction or ,
data word generated for this statement.
LABEL
The label associated with the source
statement or the first 10 characters
of the input statement.
STATEMENT
A character field containing the
remainder of the CMS-2 source statement.
CID
Four characters of the card ID
(columns I through 4).
SID
Four characters of the card 10
,representing the statement number
(comumns 5 through 8).
CR
The remaining two characters of the
card 10.
10.2 SOURCE AND MNEMONIC LISTING FORMAT
·1
The source and mnemonic listing (8M) provides a record of the source
iaput to the Compiler as well as a side-by-side mnemonic and octal representation of the machine instructions generated for the source statements. This
listing consists of a page header for each listing page containing the system
procedure or system data-design name, the date of the run, the number of the
element being compiled, the page number, and the type of element. The body
11-10-2
M-5035
of the listing consists of several columns, the contents of which are
described below.
Meaning
Column Heading
ERR
Used to indicate errors that occurred
in the adjacent source statement.
A
list of these errors, their meaning,
and identifying numbers that appear
in the error column is presented in
Appendix E.
S
Base register number.
AC
Address counter number.
LOC
The relative m~mory location (in
octal) of the data or instruction
(13 bits), or the operand of the
instruction.
FUNCTION
The first half of the data or
instruction containing the operation
(upper 16 bits left-adjusted).
x
Flag for external reference (R) or
transient reference (T).
LABEL
The label associated with the source
statement or the first 10 characters
of the input statement.
STATEMENT
A character field containing the
remainder of the CMS-2 source statement.
CIO
Four char~cters of the card 10 that
appeared on the card aS50ciat~d with
the statement (columns I through 4).
11-10-3
M-5035
Change 5
I
SID
Four characters of the card 10
representing the statement number
(col umns 5 through 8).
CR
The remaining two characters of the
card 10. May contain·a flag (R)
in column q if the source statement
references a reserved word (see
Append ix D).
LOCAL CROSS-REFERENCE LISTINGS
The local cross-reference (CRL or CR) listing provides a record of each symbol de10.3
fined in the system element; the listing shows the location of each symbol and all re-
I
ferences to that symbol. Also included in the list are global symbols defined in other
elements but referenced within the current element. If no CR or CRL is requested,
only unallocated identifiers and references are listed. The listing contains a page
header at the top ci. each page. The header shows the name of the system procedure,
the date of the run, and page number. The body of the listing consists of several
columns, as follows:
Column Heading
Meaning
AC
Address counter number.
S
Base register number.
LOC
Gives the relative location, in octal,
of the following label. A location
of all sevens denotes an allocation
error.
LABEL
The label to which the references
apply. The labelS are printed
alpha bet i Ca 11 y • The s ymbo 1 ")~';c******"
denotes a genetation error in referencing an identifier.
I I -10-4
M-5035
Change 5
EXT
This column identifies t.he label as
being defined as local or external to
the system procedure (blank means
local to the system procedure, D
means external definition, M means
local, implicitly MODE defined in
the system procedure, R means
external reference, T means
transient reference).' If not blank,
the label will also appear in the
global cross-reference listing.
REFERENCES
A set of octal addresses within the system
procedure that shows the location of each
instruction using the preceding label. The
word NONE appears if there were no
references to the label. The references are
given in the same format (AC S LaC) as the
location of the referenced identifier.
10.4 GLOBAL CROSS-REFERENCE LISTING
The global cross-reference (eRG or CR) listing provides a record of each global element defined in the system, showing the name of each system element that referenced
it. The global cross-reference appears at the end of the compile.
The listing consists of a header at the top of each page; the header contains the name
of the system, the date of the run and the page number.
The body of the listing consists of several columns, as follows:
Column Heading
EXT
Meaning
The label is an external reference.
The definition is presumed to be
given in another compile-time system.
11-10-5
I
M-5035 .
10.5
LABEL
The label of the element referenced.
Labels are printed alphabetically.
DEFINED IN
The name of the system data design
or system procedure that contained
the element.
REFE RENCED BY
The nam~ of each system procedure
that referenced the label.
SYMBOL ANALYSIS FORMAT
The symbol analysis (SA) option provides information as to the USAge of the
symbols in the system compilation. The analysis utilizes the following categories (the items in the individual categories are printed in alphabetical
order) :
a.
Files.
b.
Formats.
c.
Tables (including subtables, like-tables,
d.
Switches.
e.
Variables.
f.
Procedures-functions.
g.
Index registers declared locally.
item-areas~fields).
A header, printed at the top of each page, gives the heading SYMBOL ANALYSIS
and the identifier as either a SYS-OU or SYS-PROC name. Each of the above
categories is headed by the category type and bracketed with lines of asterisks.
The following are descriptions of the headings for the various categories:
a.
Files:
The general heading is FILES DECLARED.
Column Heading
NAME
The columns are:
Meaning
The name of the files.
11-10-6
M-5035
MU
The file mode:
II - Holler i t.h •
B - Binary.
The record type:
TP
V - Variable length.
F - Fixed length.
5 - Stream.
C0<1f~.
HRDWR
The hardware
MXSZ
The maximum record size.
MXRCU
The maximum number of records.
NSTC
The
numb~r
of associated status
constants.
b.
Forma t.s:
The general heading is FORMAT STATEMENTS.
heading sets of two
headin~Js
There are eight
idpnt iCHl
each as described below:
Column Ileading
NAME
The n::lI:w of t.he format.
XT
If declared, the external
icl('ntifil~r,
R, for external reference or IJ for
external defini.tion.
c.
Tables:
Th(~
firsl
tab Ie.
seUrTJerll or the print
Jilll~
id(~ntirips
the table or
The sec 0 nd s e g me n tid e n ti fie s t h (~ a t.t r j IJ u t. p s
assoeiated tabln.
as soc ita I ed at t r;
[HI
Th(~
I (,~s
0
a~suei;""ll
f the t tJ h I ('or
third segment. identlfi('s the fields and Iheir
•
11-10-7
M-5035
Column Heading
Meaning
TABLE-NAME
The name of the prime table being
described.
ASSOC
NAME
The name 'of a subtable, like-table
of item-area associated with the
prime table.
ASSOC
TYPE
One of the following:
SUB - Subtable.
LIKE - Like-table.
ITEM - Item-area.
TP
Denotes the type of the prime table:
H - Horizontal.
V - Vertical.
A - Array.
NI
TM
If the length of the table is
variable (specified by a NITEMS
statement) ,this eolumn will contain NT.
PACK
NDIM
Denotes the packing usage on fields
for horizontal or vertical tables
or denotes the number of dimensions
if an array; this may be NULL,
MEDIUM or DENSE or an integer from
I to 7.
ADD
MOD
Indicates whether the table is
addressed directly (DIR) or addressed
indirectly, (IND).
11-10-8
M-5035
Specifies the number of words per
WDS/
ITEM
item.
INDEX-NAME
Gives the name of the major index
for the table or the associated
table.
NO. ITEMS
DIMS. SIZE
The number of items if H (horizontal>
or V (vertical)
t
or the size of the
dimensions if A (array).
EXT
Designates whether the table or
associated table is externally
defined (D)
(R)
t
t
externally referenced
or transiently referenced (T).
START
ITEM
The item number at which the
FIELDS
Applies to the remainder of the
associated table starts.
headings.
NAME
The name of the field.
TP
Defines the field type:
F - Floating-point.
B - Boolean.
H - Holleri th characters.
A - Arithmetic fixed-point.
I - Integer.
SN
Indicates whether the field type
is S for signed, U for
unsigned~
or blank if neither S nor U apply.
Starting bit position in the word.
START
BIT
11-10-9
M-5035
WORD
LOC.
The word number by which the field
NO. BITS
OR CHARS
Designates ihe number of words for
is addressed.
multi-word fields, the number of
bits for types F, A, or I, the
number of characters for type .H, .
or the number of status constants
for type S.
FB
d.
Fractional bits.
Switches:
The general heading is SWITCHES.
The columns are:
Co 1umn Head ing
Meaning
NAME
The name of the switch.
TYPE
One of the following:
S - Statement switch.
P
Procedure switch.
IT - Item switch.
NO. PTS
Gives the number of switch points.
EX
Defines the external specifications:
R - Externally referenced.
T - Transiently referenced.
D - Externally defined.
SHSW-CVRBL
Indicates the name of a shared
switch; if the switch is an item
switch (IT), the compared variable
is given.
11-10-10
M-5035
Change 3
Thf(~(~
INPUT
e.
(!olumns of input parnmelHrs
PARAMETERS
if switch type P.
OUTPUT
PARAMETERS
Three columns of output parameters
if switch type P.
Variables:
The general heading is VARIABLES.
The columns are:
Column Heading
Meaning
NAME
The name of the variable.
TYPE
Gives the variable type:
F - Floating-point.
B - Boolean.
S - Status.
I - Integer.
A - Arithmetic fixed-poi n t.
H - Hollerith.
EX
Defines the external specifications,
if any:
D - Externally defined.
R - Externally referenced.
T - Transiently referenced.
M - Implicitly and locally defined.
SN
Specifies whether signed (8) or unsigned
(U).
FB
Fractional blts.
NO. CHAR.
BIT
The number of characters, bits, or
status constants depending on type.
11-10-11
I
f.
Proced ures -F unc ti ons :
The general heading is PROCEDURES-FUNCTIONS.
Column Heading
g.
The columns are:
Meaning
NAME
The procedure or function name.
TP
Either P (for procedure) or F(for
function) •
INPUT
PARAMETERS
Four columns listing the input
parameters.
OUTPUT
PARAMETERS
Four columns listing the output
EXIT
The names of
parameters.
an~
abnormal exits.
Index Registers Declared Locally:
The general heading is LOC-INDEXES DECLARED.
Column Heading
The columns are:
Meaning
NAME
The name of the local index declared
for the current system procedure.
REG
The B-register assigned to the
above ,symbolic name, or the letter
T if a temporary cell is assigned.
PROCEDURE
The name of the procedure
i~
which
the local index is defined.
10.6
COMPILER ERROR SUMMARY
At the end of each compile-time system for which the OBJECT option is used, a
summary of errors is listed.
The name of each element, its element number
within the compile and the number of syntax/generation errors and the number
of allocation errors are listed.
The syntax/generation errors are individually
listed at the front of t.he eompile listing.
11-10-12
Th(~
allocation errors are flagged
M-5035
in
th(~
source (and mnemonic) list.inu where t.hey
occurr(~d
and art.! al!'lo lbdc'd
in the local cross-reference.
11-10-13/11-10-14 Blank
M-5035
SECTION 11
ASSEMBLER
11.1
ASSEMBLER FUNCTIONS
The Assembler accepts symbolic source code in eO-column card image format
and translates this coding into an object machine language suitable for
loading into the AN/UYK-7 Computer memory via an object-code loader program
(see Section 3 of Volume I). The Assembler operates in conjunction with the
Monitor to provide programmers with a level of programming assistance not
ordinarily associated with an Assembler class of language processors.
The Assembler capabilities include:
a.
Macro directives as well as other directives which enable the
programmer to control the assembly process in a positive way via
conditional assembly.
I
b.
A powerful set of directives which enables variable bit-field
definitions, character substitution, segmentation, and so forth.
c.
The ability to handle multiple addressing sections (counters) for use
in segmenting and assembly-time allocation control.
d.
Printer side-by-side listings of the symbolic source code and also an
edited representation of the generated object code.
e.
Optionally selected printer listing of all alphanumeric labels
referenced within the source code. The labels are separated into
internally referenced labels and those which can be referenced from
another program.
f.
Optionally selected printer listing of all alphanumeric labels crossreferenced with their respective addresses.
g.
Evaluation of arithmetic and logical expressions.
h.
Relocatable object machine code output which employs full binary card
image format (960 punches per aO-column card).
11-11-1
M-5035
i.
All Assembler-detected errors in source statements are flagged when
encountered.
The $ASM card commands the Monitor to place the Assembler in memory and
initiate its execution.
In operation, the Assembler scans the. subsequent symbolic input code twice.
The first assembly pass performs a pseudo-generation primarily to record any
programmer-defined r.'tacro sample code and to define forward referencing. The
second assembly pass simultaneously produces the object code and the program
listing.
When referenced in the program, generation for macro
sampl~
code is
carried on as a subassembly of the main program. Figures 11-1 and 11-2 show
the basic functions performed during the first and second passes, respectively.
Jl.l.1
Input Language
Structur~
Inputs to the Assembler consist of programmers prepared symbolic coding
statements. The programmer has one basic unit available when constructing
symbolic code on the coding sheet. This unit is the operation which may
consist of three parts:
1.
Label.
2.
Statement.
3.
Notes.
The label and notes are generally optional attachments to the statement and are
always separated from the statement by.at least one space. In order to apply
notes t the statement must be terminated by a period (.).
Format
I
I
I
A program written in the CMS-2 Macro Assembler Mnemonic Language consists of
action statements.
Their structure is discussed in the following paragraphs.
11.1.1.1 Label
Within the progranuning language, the labels consist of 1 to 8 alphanumeric
characters.
o should
The first character of any label must be a letter.
The letter
also be used with caution as any character of a label because of the
iI-I1-2
M-5035
Library Source
Source Tape
Intermediate
Source Tape
In ut
or
Source
Cards
Input/Output
Syst em (Part
of Monitor)
_ _ _--.._... or
Intermediate
Assembler
Source In
Input/Out put 1 - - -.... Core Storage
Controller
~
Macro Sample
in Core
Storage
Figure 11-1.
Translator
Item Table
in Core
Storage
Assembler Pass 1 Data Flow
11-11-3
M-5035
Object Tape
Intermediate
Source Tape
Monitor
Object Cards
or
- -.. Side-by-Side
Listing
In termed i a te
Assembler
Source in
'Core Storage ....._ _ _ _..... Input/Output
Controller
Macro Sample
In Core
Storage
Translator
Figure 11-2.
Item Table
in Core
....._ _ _ _• Storage
Assembler Pass 2 Data Flow
11-11-4
M-5035
visual difficulty in distinguishing it from zero.
A label is used to identify
a statement which may be referenced by another.
11.1.1.2
Statements
Except for purely comment statements, programmers are normally concerned with
three basic fields of a coding line: 1) label field; 2) operation field;
and 3) operand field(s). A line of coding is defined as a logical symbolic
statement not necessarily confined to a single physical line; for example, a
logical line may extend over several cards.
11.1.1.2.1
Fields.
Fields are delimited 'by at "least one space following the
last character of the field. There can be no spaces between characters of an
element or expression within a field or the Assembler will interpret the
space as the end of the field. The label field is always assumed to start
in column 1; if there is no label field, its absence is indicated by at least
one space starting in column 1.
Subfields. Any field may consist of one or more subfields
separated by a comma and terminated by a space. There can be no spaces between
the characters of a subfield or between the subfield and its terminating. comma.
The Asserrrbler interprets the first space as terminating the current field.
11.1.1.2.2.
To the Assembler, a comma indicates that another subfield follows; therefore
the last subfield coded does not terminate with a comma, since a space
terminates both the field and the last subfield. Any number of spaces may
intervene between a terminating comma and the first character of the next
subfield, since the Assembler was alerted that another subfield will follow.
11.1.1.2.3' Omission of Subfields.
The first subfield must always .be expressed
If the programmer desires to omit this field, he codes a zero followed by a
comma. (A coded zero' is not legitimate as the fi rst .subfie ld of the labe 1
field).
11-11-5
M-5035
Intermediate subflelds may be.omitted by coding two successive commas, ot commaspace..;.comma, or cornrna-zero-comma. The Assembler interprets any of these
representations as assigning a zero value to the subfield •. Trailing subfields
ma~ be omitted by following the last ~xpressed subfield with at least one
space. The Assembler assigns a zero value to any missing subfields~.
ll.1.1.2.4
Statement Continuation.
A logical coding line may be interrupted
at any point (~xcept between apostrophes) by coding a semicolon (;) as the
next character and continuing the line on the next physical line: i.e., next
card. The Asse!i.bler ignores any characters following the semicolon on the
interrupted line and continues its scan starting with column 1 of the next card.
The sequence of coding on continuation statements must fOllow the syntax
rules governing fields and sub-fields.
11.1.1.2.5
Statement Termination and Notes.
Programmers may include notes as
part of their coding lines by following the state~nts with a period followed
by at least one space. The period space combination, except when it appears
between apostrophes, causes the Assembler to stop scanning for additional
fields or subfields. If a coding line involves a fixed number of fields
and subfields and all are encoded on the line, programmers may add notes without
the preceding period space combination, since the Assembler ceases scanning
when the last required field or subfield is evaluated. A coding line may be
nothing but a notes line. In this case, the period space must precede the
first character of the notes. Any number of spaces or no spaces may precede
the period.
11.1.1.2.6 Blank Card Images.
Blank cards (source statements containing no
non-space characters) are given a source line number but are otherwise ignored
by the ASRembler. It is important n6t to include blank cards within macros
since this results in slowing up the expansion of them, whenever called.
11.1.1.2.7 Language Structure Summary.
Spaces delimitiields.
A comma
delimits a subfield except for the la$t encoded subfield which terminates
with a space. A semicolon (except when it appears between apostrophes)
denotes line continuation, causing the Assembler to continue its scanning with
11-11-6
M-5035
the first character of the continuation line.
A period space combination
(except when it appears between apostrophes) signals the Assembler to terminate
line evaluation.
11.1.1.3
Notations Used In This Section
Whenever a statement or operation is described in this section, a uniform
system of notation is used to define the structure. This ~otation is not part
of the language, but is a standardized notation that may be used to describe
the syntax (construction) of any programming language, thus providing a brief
but precise means of explaining the general patterns that the language permits.
It does not describe the meaning of the statements or operations but merely
describes the structure; that is, it indicates the order in which operands
must appear, the punctuation required and the options allowed.
11.1.1.4
Coding Control Statements
Control statements direct system performance rather than user program generation. Conunents, printer page control and product directives are in this
category.
11.1.1.4.1
Comments..
A comment is a special type of operation which may appear
.anywhere within a source program. The usage of a comment is optional. A
comment in the source program does not produce any generation and is detected
by the system under the same form as notes in a language statement; that is,
following a period and at least one space.
Format
11.1.1.4.2
Printer Page Control.
If the first character of a language statement
is a slash (/), the printer listing will be ejected to the top of the next page.
The character may precede a label, a statement (in absence of a label) or singly
on a separate card im~ge.
11-11-7
M-5035
Format
II,
III
It
I I
,",0 mE,S, ,
1·1 I I ,., , I
,
11.1.1.5
I
Directives·
There are two forms of directives:
I)
those that direct the system and prod-
ucts to perform specific functions, and 2) those thatdirec~ the Assembler
generation. Within the Assembler generation, the dIrective is a predetermined
mnemonic coded in the operation field of a language statement.
These directives take the same form as the language structure of paragraph 11.1.1.
Format
CODE:
f.cDIRECTlVE
1 .1
11.1.2
Addressin~
Sections
The Assembler provides the programmer with the ability to assemble program
sections which are intended to operate a~ a sin'gle program unit, but which, for
segmenting purposes, the programmer may consider discrete. A simple example
is the case of any program unit consisting of instructions and data. One good
purpose for keeping them separate is to take advantage of hardware overlap in
accessing data from within instructions (see Section 3, Volume 1 of this
document) .
Il~I.3
Segmentation
Segmentation is accomplished through use of· the SEGEND and PXL directi ves.
SEGEND is used when assembling back-to-back segments. PXL is used to output
11-11-8
M-5035
externally defined labels to be, us~d as source input in programs assembled at
some other time.
11.1.4 Assembly Base Addresses
rhe Assembler initially sets all initial address counters to zero. The base
address of any address counter can be set to some other value by beginning
coding for that counter with a SETADR directive. When generating code for the
AN/UYK-7 this may have the effect of biasing the base register number on all
references to words associated with that address counter. In generating code
for non-base register machines, address counter values may have a direct
correlation to physical memory addresses.
11.1. 5 Conditional Assembly
Sometimes it is desirable to code a program on a modular basis. Certain
sections of the
progra~
may not Qe needed at any given time. Whether to omit
or include this code may be based on a condition known at assembly time.
This leads to what is sometimes called conditional assembly which can be made
by two methods:
a.
Any given source statement can be generated dependent on the
setting of a condition known at assemhly time. This can be done
by coding the statement as part of a DO line, where the DO count
is the result of the condition (either 0 or 1).
b.
An instruction or series of instructions can be effectively overridden or included in object output by following these instructions
with a negative reserve (RES) directive, dependent on the result of the
condition. If the result of the condition is one, the specified number
of previously generated lines of code are overlain by those following
the negative reserve line.
II-11-9
M-503S
Format
II. 1.6 Library USa(le
Source library' programs can be included within the calling program at the pqint
at which they are called.
1 1. 1 • 7
Ma c ro s
Often programs require repetition of sequences of coding not necessarily
identical hut similar enough so th~t repetition of the coding becomes mechanical.
A device wi thin the Assembler which generates such sequences is called a macro.'
The Assembler stores the
.,.HC fO
sample code when 'encountered and generates this
coding whenever the pro"edure is called upon.
The Assembler modifies the lines
generated in accordance with pnrameters supplied in the calling line/-reference
J j ne .
1]-11"..10
M-5035
Change 1
lI.l.R
Expressions
An expression is an elementary item or series of
elpmf~nts
connprted hy opf'rntors;
which, when evalu~ted, results in a binary value, a floRting point number or
a memory reference addresse If more than one element is included within an
expression, they must be separated from one another by operators. An
elementary item is an expression containing only one element.
11.1.9
Assembler Generation
The Assembler generates object code in accordance with the capabilities of the
AN/DYK-7 Computer instructions.
11.1.9.1
Ful1~Word
Full words are generated from computer instructions, data words, FORM reference
lines (see paragraph 11.3.3.8), and character strings. ORe d'ata word can produce up to two computer words of object code. A character string can generate
a variable number of computer words.
11.1.9.2
Half-Word
If a number of successive half-word (16-bit) instructions are encountered by
the Assembler, they are packed two per word. When a half-word is encountered
between two full words or is the last of an odd number of successive haifwords, it is generated in the upper half-word and the lower half-word contains
zeros.
11.1.10 Temporary Storage
Two modes of temporary storage are available: 1) magnetic tape, or 2) computer memory. The standard mode is storage on magnetic tape. Small programs
can be assembled using core memory as temporary storage (see paragraph 11.2.1).
11-11-11
M-5035
Change 1
11.1.11
Assembler Output
Output from the Assembler consists of relocatable object code. This output
is in a format recognized by the Object Code lnader and may also be composed
of Loader directives passed on through the Assembler source input language.
11.1.12
Assembly Time Allocation
Allocation of address sections can be achieved at assembly time by including
~bject Code Loader directives in the source input to the Assembler (see Section
3, Volume I of this document).
11.1.13
Linking
Values corresponding to labels can be made available to some independently
processed code by suffixing the labels with an asterisk. Conversely. symbolic
program names not defined within the current program can be referred to, and the
necessary information is saved to provide a link to the program which defines
them. The current program simply declares these names in the operand field
of a LINK directive •
.11.2
CONTROL CARD
Generally a card containing an asterisk (lie) in COlUDDl I is considered by
the Assembler to be a control card. One exception to this rule is when
column 2 conta~ns a space (blank). This combination is used to achieve assignment ofa particular line of coding within a macro to a label found on the
macro reference line (refer to paragraph 11.4). Those non-Assembler control
cards found between the first card and assembly terminating END card are
transmitted to the output code when they are encountered.
11.2.1
Start Assembly (ULTRA)
Each program submitted for assembly must begin with the ULTRA statement.
11-11-12
M-5035
Change 3
Format
*ULTRA ,
source-option, object-option, listing-option name; version
Explanation
Source Option
One of the following (option: R maybe used with MIS):
I
M - Memory will be used as the intermediate device.
·S - An ISCM tape will be·built which contains the source.
It will be used as the intermediate device.
Blank - A scratch tape will be llsed for the intermediate
device. This is the default option for source.
R - Source will be resequenced.
Obj ect Option
Any logical combination of the following:
D - Disable obj ect output.
S -. An ISCM tape will be built which contains the object
output of the assembly(s). This output will be
saved for the user.
P - Object output will be in the form of binary
punched-card decks.
E - An ISCM tape will be built which contains the object
output of the assembly(s). This option should be
used when the user wants to assemble, load, and
execute his program but does not want the object
output saved after hls.job has been run. This is
'the default option for object and is necessary only
if this. option is desired in addition to one of the
other obj ect options.
II~11..;13
I
M-5035
Change 3
Listing Option
Any combination of the following:
S - An ISCM tape will be built which contains the sideby-side listing output..
H - The side-by-side listing will be output to the printer.
This is the default for listing and is necessary only
if this option is desired in addition to the above listing
option.
Name
A one to eight-character name which will be used to build
the obj ect output program: ID and the library element
IDs for ISCM tape output(s).
Version
A one to four-character version which will be used to
build the object output program ID and the library element
IDs for ISCM tape output(s).
For options which request output on an ISCM tape, the ISCM tape will be given the
following internal
and external names:
,
Field
Option
Source Option
S
ASOURCE
Object Option
S
AOBJECT
E
ACOMMON
S
ALIST
Listing Option
Internal and External Name
No spaces are allowed on the label field between *ULTRA and the three following
subfields nor can any be present between the program name and version.
The resequencing option causes the last twelve columns (69-80) to be overlaid with a
period-space, four character name, four character ,number (starting at 0001), and two
spaces. The four character name is taken from the first four characters of the element
name specified on the *ULTRA card. The final two spaces allow for insert numbers
when the assembler Is not resequencing.
11-11-14
M-5035
Change 3
Examples
1*IUIIJTIRJAI,ISIRla Is I ITIEI SITIPIRIOIGI I, I I I I I I I I
I
I
I I I I I I I I
The ISCM ASOURCE and AOBJECT tapes will be built, the element will be named
TESTPROG, and the source will be resequenced on the ASOURCE tape with
.. TESTxxxx6 6(-6= space, x = number) in columns 69-80
The programmer has the' added option of specifying what is to be overlaid in
columns 69-74.
By immediately following the R with a left parenthesis, any
combination of six or les's characters, and a right parenthesis, the characters
(as many as specified) in columns 69-74 would be overlayed with the Information
between the parenthesis,
Example
The ISCM ASOURCE and AOBJECT tapes will be built, the element will be named
TESTPROG, and the source will be resequenced on the ASOURCE tape with
REEFxXXX66
in columns 71-80
Assemblies may be stacked back-to-back for Assembler input. The Assembler detects
the end of a given assembly through the occurrence of an END or SEGEND directive.
The parameters following the *ULTRA are evaluated for the first *ULTRA card only
and are then effective until the stop assembly card (*OFF) is encountered. The name
and version on the first *ULTRA card of each source program is used as the name
and version for that source program.
Assemblies requesting source, object, or listing output should always include a
name on the *ULTRA card to allow element identification. If no name or version
is supplied, spaces will be used.
II-11-14A
I
M-5035
Change 3
11.2.2
Stop Assembly (OFF)
The last program to be assembled (or only program if there is
bu~
one) ter-
minates with the following card:
ltO'FIE'.1 I INIQITIEISI
II
I I I I'
I., i i '
11·,·11.11 11·1
:::OFF appears in the label field and all other fields are empty.
11.2.3
Disable Object Output Code (OFO)
If no object output is wanted for one or more of a number of stacked assemblies,
U-11-14l3
M-5035
a programmer codes within the source deckts) the following statement:
I I
.OFO appears in the label field and all other fields are empty.
If no object output is wanted for all the stacked assemblies, a '0' is coded
.
in the object options subfield of the first ~:;ULTRA card, thus eliminating the
need for ~::OFO cards in each source deck.
\
11.2.4
Sample Deck Using Control Cards
figure 11-3 and 11-4 show sample source decks to illustrate the use of Assembler
and Moni tor cant ro 1 cards.
END
*ULTRAA ~ TXP t I
$ASM
Figure 11-3.
Sample
D~ck
Using Control Cards
SOURCE STATEMENTS
11.3
A source statement is a coding line not nec·essarily confined to a single
physical line; for example 9 a logical line may ext~nd over several cards.
Except for purely comment lines, programmers are normally concerned with three
basic fields of a coding line: 1) label field, 2) operation field, and
3) operand field(s).
11.3.1
Label.Field
The label field must start in column 1 of the source line.
of a line of symbolic coding may· contain:
a.
An address counter declaration.
b.
A symbolic label.
11-11-15
The label field
M-5035
c.
An address counter declaration followed by a symbolic label.
d~
An asterisk (*) in place of a symbolic label.
If an address counter declaration and a label appear in the label field, the
address counter declaration is coded first fOllowed by a comma (,); then the
label is coded as in line 2 of the example shown on the next page.
The label field may be preceded by the control character slash (I), 'which
causes the ASsembler printer listing to be ejected to the top of the next page.
If the slash control character is' uSrd, it must be coded in columnl, and the,
label field must then start in column 2. A space in column 1 (or in column 2
if column I contains a slash) implies that the label field is empty.
Examples
11.3.1.1
Labels
A label is a means of identifying a symbolic coding line. Normally a label is
giv~n the'current value of the active address counter.
L~bels associated with
EQU, FORM, GO, DO, MACRO, NAME and LIT ha've unique interpretations which are
explained for these directives under paragraphs 11.3.3 and 11.4.
A label may consist of up to eight alphanumeric characters. The first character
must be alphabetic (A through Z). Subsequent characters may be any combination
of alphabetic or numeric characters (0 through 9) or $.
An asterisk (toe) may follow a label without intervening spaces. Asterisks so
used do not count as a character of the label. If a label outside of a macro'
is suffixed with an asterisk, the label is externalized (defined as level 0).
This label then becomes available outside the program.
11.!J.,1.:'!
Refer to paragraph
for an explanation of the siunificance of starred labels within macros.
II-11-H>
.
\
M-5035
NEXT JOB
$JOB, ••••
$SEQ,123M0~2
$TRA, LABEL
~SE-L---E-L-M-P-R-O-G-l--~
Transfer control
to LABEL.
Select object code
by name (PROGl).
Library select the
ta pe to load (ACOMMON ) •
Ca 11 the Loader.
...a...----
......
$LOAD, PI, P2, .........~:....---
::;OFF
I JOB
ASSEMBLY
PROGRAM
Externalized label (LABEL).
~;AC,P1,
~:ULTRA
$ASM,U
Figure 11-4.
P2, P3, P4
PROGI
4I-~----
Call the Assembler.
Sample Deck to Assemble, Load, and Execute a Single Program
11-11-17
M-5035
,
'
11.3.1.2
Address Counter Declaration
The first time an address counter is declared, it has the relative value of
zero.
Subsequent declarations of the same address counter cause the associated
generation to continue at the next sequential address, regardless of how many
other address counters 'were declared in between. A declared address counter
controls the generated coding until another counter is declared. If no address
counter is declared, the entire assembly is under control of address counter
zero.
Format
S
(e)
Explanation
e
The desired address counter 0=31. If an address counter
is used in conjunction with the LIT'directive, the active
address counter is not changed (see paragraph 11.3.3.14).
"11.3.1.3
Leading Asterisk
(*)
An asterisk (*) may be coded in the label field in place of a symbolic label,
within macro definition coding.
During macro
ex~ansiont
this causes the label
coded on the macro reference line to take on the value of the active address
counter corresponding to the line containing the leading asterisk. ' The
leading asterisk must be followed by a space, and can only be used within
a macro definition. The asterisk must only appear once within a particular
macro.
11.3.1.4
Half-Word Instruction LabelS
The computer instruction repertoire includes a group of half-word (16-bit)
instructions as well as full-word (32-bit) instructions.
An Assembler-
generated object word may, therefore, contain either a single 32-bit instruction
or two 16-bit instructions.
The, programmer codes each half-word instruction as
11-11-10
M-5035
a single source input
s~atement.
Two half-word instructions may not be coded
as one source statement.
The Assembler will collect two sequential half-word instrurtions into a
si~gle
object word with the first occupying the most significant (upper) half and
the second occupying the least significant (lower) half.
A single unpaired
half-word instruction will be placed in the upper half of the object word and
the Assembler will pad the lower half with a no-operation instruction.
instruct~ons
Only those half-word
which will occupy the upper half of an object
word (as described above for the Assembler's pairing convention) may be labeled.
CODING
Examples
SIDE - BY - SIDE
000010
000011
000012
000013
000013
000014
1 0 4 3 0 0
LA
FLIP
7 140 5 0
2 443 0 0
000014
FLOP
GOOF
7 1 453 0
6 240 I 0
HOR
SA
HAND
HLC
Line l·is assemuled at relative address 000010.
4,GOOF,W
4,5
4,GOOF,W
4,3
4,8
LINE
LINE
LINE
LINE
LINE
I
2
3
4
5
Line 2 is assembled into the
upper half of relative address 000011; the lower half will be a no-operation.
Line 3 is assembled at relative address 000012.
Lines 4 and 5 are assembled
at relative address 000013 and 000014 respectively, with the logical
instructiori in the
half of each word.
upp~r
half and a no-operation instruction in the lower
The label FLIP has a value of 000011; label FLOP has
a value of 000013.
Line 5 violates the half-word labeling convention;
fore, references to GOOf have a value of 000014.
11.3.2
there~
Operation Field
\
The first non-space (rrn-blank) character following the label field is assumed
to be the start of the operation field except when that character is a period
or a semicolon.
(A period space
si~nifies
signified line continuation.)
11-11-19
line termination; a semicolon
M-5035
the operation field may contain:
a.
A computer-instruction mnemonic function code.
b.
An Assembler directive.
c.
The label of a previously defined FORM directive.
d.
A label already defined as an entry point to macro codingo
e.
+ or - followed by a data word. (When the operator is + or spaces may separate the sign from its related operand.)
f.
An apostrophe. (When an apostrophe is the first non-blank
character following the label field, the remainder of the line
through the terminating apostrophe is assumed to be a character
string. )
In any event, except as noted in items e) and f) above, a space following any
character except a comma signifies the end of the operation field.
Whenever a symbolic line results in generation of a computer word, the value
of the controlling address counter is increased by one. An exception to this
is the RES directive which causes the counter to be modified by the value .
derived from the expression in the operand field.
11.3.2.1
Processor Instruction Mnemonics
Processor instruction mnemonic codes consist of up to four alphabetic
characters. All half-word instruction mnemonics begin with an H.
11.3.2.2
Input/Output Controller Command Mnemonics
Input/Output Controller GRAM CODING LINES
A
B
+Al, Dl
+A2, D2, D3, D4
REFERABLE BY B AND MAIN PROGRAM
AVAILABLE OUTSIDE' A
AVAILABLE INSIDE A ONLY
REFERABLE BY A AND MAIN PROGRAM
REFERABLE ONLY BY B
REFERABLE ONLY BY C
DEFINED FOR MACRO D
C REFERENCES NESTED MACRO D
UNDEFINEQ'FOR MACRO C
DEFINED FOR MACRO C
BREFERENCES'NESTED MACRO C
UNDEFINED FOR MACRO B
DEFINED FOR ~ACRO B
DEFINED FOR p!!ACRO B
MAIN PROGRAM REFERENCES MACRO A
MAIN PROGRAM' REFE RENCES MACRO B
DEFINED FOR MAIN PRlGRAM
UNDEFINED FOR MAIN PROGRAM
II-II-52
M-5035
'Change 2
11. ti. 4. ~
Macro Reference Lines·
Macro reference lines (calls upon'macros) are coded following the normal
Assembler syntax governing fields arid subfields. A macro r~feience line may
be labeled. The label is normally equated to the address of the first word
generated from the macro, but may be equated to any line within the macro by
coding an asterisk only in the label field of the line. The macro is called by
writing the entry label {from the MACRO or a NAME line} in the operation field,
followed by as many parameters as may be required in the operand field. Parameters are organi zed into fie Ids and subfie Ids according to the requi rement s
of the macro. Subfields of the operand field are assumed to be parameters of
field 1, field 29 and so forth, in left-to-right order. Any subfield maybe
preceded by a single
referenced macro.
ast~risk
to be used as a conditional value within th2
An address counter declaration may be coded on a macro reference line. This
declared address counter will supercede any address counter declaration made
on the macro directive line. (See also Paragraphs 11.3.1 and 11.5.)
11.4.4.6 Complex Macros
Macro capabilities provide an extremely powerful technique for controlling
Assembler generation. Macros c~n b~ simple or complex limited only by the
programmer's ingenuity. The example which follows of a more complex
macro may be used to generate for data word lines assuming a 32-bit object
I
word size.
Example
II-II-53
j
;'
M-5035
Change 2
The following macro example generates an overlapped bit-field object word for
an l8-bitobject word.
Example
11.5
ADDRESS COUNTER DECLARATIONS
The Assembler provides for 32 address counters, and anyone may be refere~ced
or used. Grouping of constants an~/or instructions under a given address
counter may be more convenient or meaningful for segmenting purposes or for
collecting coding groups at load time. A specific address counter is declared
by coding in the label field:
Format
$ (e)
Explanation
e
The address counter number (0 through 31).
At the start of an as sembly, the Assembler assumes address counter 0 is active.
All address counters have an initial value of zero. A declared address counter
(counter 0 if no other has been declared) remains active until a new address
counter is declared and all coding following the· declaration is controlled by
that counter (assembled relative to zero). Coding resumed under a previously
declared counter continues at the next sequentia~ address following the last
one used under the counter.
II-II-54
M-5035
Change 2
•
Examples
11.6 EXPRESSION STATEMENTS
An expression is an element or a series of elements connected by operators
which, when evaluated, produce as a final result a binary value, a floating
point number, or a memory reference address. The final value may be used as
a word(s) of data in memory, as a subfield of an instruction word or data word,
or as a parameter for an Assembler directive.
An element is a grouping of characters which is recognizable to the Assembler
as an entity and can be replaced by a binary val~e, a floating pOint number,
or a memory address. An element may be: 1) a symbolic name, (a label); 2) a
decimal, oetal, or floating point number; 3) the contents of an address counter;
or 4) a literal item enclosed by parentheses. A detailed discussion
of element follOWS.
An operator is a special mathematical symbol defining the operation to be perfo·rmed on the operands immediate ly preceding and immediate ly following the
operator. An expression need not include any operators if it consists of only
one element; however, if more than one element is included within an expression,
they must be separated by operators.
Expression evaluation is normally performed in a single-precision mode (singleprecision normally being 32 bits, unless altered by the WRD directive). However, if any numerical element of an expression is terminated by the letter D,
the remainder of the evaluation shall be performed in a double-precision mode,
with a double-precision result generated.
An expression is terminated by either a comma or a space; therefore these two
characters cannot be included within an expression. The one exception to this
rule is the use of character strings as elements.
in the following paragraphs.
II-II-55
These are further explained
M-5035
Change 2
11.6.1 Labels
An alphanumeric label may be used as an element' within an expression. The
label must conform to the rules for labels as described in paragraph 11.3.1~1;
for exampl&, it must .not exceed eight characters; it must consist of alphabetic (A through Z) or numeric <0 through 9) characters, or $; and the label
must begin with an alphabetic character~
When the expression is evaluated, the value allocated to the label is substituted in the expression. If the label is undefined at the time the expressi'-III
is evaluated, it is assigned a value of 0, and a U error flag appears on the
assembly Ii sting adj acent to the line referencing the undefined label.
Example
11.6.2
Address Counter
The contents of any address counter used by the program may be referenced in
an expression by coding the symbol, $ or $(e). $ signifies that the contents
of the current (active) address counter are to be substituted in the expression:
$(e) signifies that the contents of the address counterspecified.by eare to
be substituted. e must be an octal or decimal number, or an expression
resulting in a binary value.
II-II-56
M-5035
Change 2
Example
11.6.3 Decimal Number
A decimal integer may be used as an element within an expression. The decimal
number is converted to its binary equivalent and used in its binary form for all
further computations. The integer may consist of any number of decimal digits;
however the final binary value represents only the least significant bits of
the number as determined by the object word size. The sign of the number is
the leftmost bit of the final o~ect word. The first (most significant) digit
of the coded decimal number must not be zero (0). If the decimal number is
immediately followed by the letter Of a two-word binary equivalent shall be
generated.
Example
11.6.4 Octal Number
An octal integer is specified by preceding the first (most significant) octal
digit with a zero (0). Each character of the octal integer must be an octal
digit (0 through 7). Rules for evaluation are the same as for decimal numbers.
An octal number may also be followed by the letter 0 to obtain a double-precision
resul t .•
I
II-II-57
M-5035
Change 2
Example
11.6.5 Floating Point Number
A floating point number may be used as an element in an expression. The number
must be coded as a decimal mixed number consisting of an integral part and a
fractional part, and must include the decimal point. Spaces are not allowed
within the number. The number is converted to a 64-bit (regardless of the
declared word length) floa-ting point number, formatted in memory as follows:
Least significant 32 bits
Mantissa
S
Most significant 32 bits
Sign of characteristic
Characteris tic
S is the sign o!the mantissa.
Example
11-11-58
M-5035
Change 2
11.6.6 Fixed Point Number
A fixed point number is an expression element containing only an integral part,
and hence does not include a decimal point.
referred to as a signed pure binary number.
This type of number is often
11.7 DATA MODES
Since expressIon evaluation 'is essentially an arithmetic process, the elements
within an expression (with the exception of character strings) must be able
to be identified with a unique numerical quantity. This numerical quantity
may exist in one of two formats: 1) a signed pure binary number; or 2) a
floating point number. The resultant or final value of the expression is
either a binary value or a floating point number. (The final value may be
truncated to fit a specified subfield or word size at the time the generated
object code is produced in its loadable form.)
All internal expression evaluation is performed in one of these two modes
(either binary or floating point). If the expression involves both binary
. values and floating point va~ues, internal data conversions are performed
(for example, binary to floating point, floating pointtto binary) so the
evaluation can be carried out.
11.7.1 . Literals
A line of coding without a label field, without leading or trailing spaces~
and entirely enclosed in parentheses is called a line item" A line item may
only be a symbolic computer instruction, a data word, a macro reference line,
or a FORM reference line. The object word(s) (either one or two) generated
for the line item is called a literal and is stored in a literal pool. The
Ii teralpool address is then substituted for the parenthetical expression in
the parent line. The line item must be the only element within the expression
being evaluated, and must not be preceded by a + or - sign. If the first
subfield of a data word line item is a symbolic name~ the name should be preceded
by a + or - to avoid possible confusion with a symbolic computer instruction,
see paragraph 11.7.2. Six levels 01 parentheses (for example, five line items
nested within line items) are allowed. A double-precision literal constant
may be generated by terminating the numeric constant within the parentheses by
II-II-59
M-5035
Change 2
the letter D.
If the line item is a character string, up to two words can be
generated.
Example
11.7.2
Data Words
The Assembler recognizes two distinct types of data words: 1) constants,
resulting in either one or two generated computer words; and 2) character
strings, resulting in one or mOre generated computer words containing character
codes.
11.7.2.1
Constants
A + or - in the operation field followed by one or more subfields in the
operand field signifies that a constant is to be generated. Whenever a+ or appears as the first character· of the operation fi'eld, any number of spaces or
no spaces may separate the sign from the first operand. Subfields are separated
by commas. In generating constants, the Assembler assumes the size of the
object computer word. If the operand field contains one subfleld, the signed
value of the subfield is right-justified in the generated word. If the operand
field contains two subfields, two equal-length signed subfields are generated
with the values right-justified within each field,and so forth. The first
subfield must be signed. Successive subfields may optionally be signed. The
absence of a sign implies a positive value. If variant~ of this implicit
11-11-60
M-5035
Change 2
. equal subdivision of datn words are required, the capabilities of the FORM
directive may be used to derive the desired format.
Example
If the operand field contains just one subfield immediately followed lJY a 0,
or if the constant is a floating p.oint number, the Assembl::;rgenerate~ a doublelength constant in two successive computer words. The first generated word of
the double-length constant will contain the least significant bits of the
result. The letter 0 in this context is only meaningful when appended to a
numeric constant.
Examples
11~7.2.2
Character .Strings
Strings of characters which can be represented by the Assembler's imbedded
character set (with the exception of the apostrophe) may be encoded by
enclosing the entire character string between apostrophes. The apostrophe
is not included in the allowable characters because it is the control character
delimiting the string. A semicolon between apostrophes is treated as a character, not as a line continuation symbol. Similarly, a period space combination
between apostrophes is treated as two characters and not as a line termination.
The Assembler's internal character set is the USA Standard Code for Information
Interchange, commonly referred to as ASCII code. Unless directed to the contrary
by the CHAR and BYTE directives, the Assembler will right-justify each ASCII-
II -11-61
M-5035
Change 2
coded character within an eight-bit field, up
t~
a maximum of four characters
per generated word.
If the first non-blank character of the operation field is an apostrophe, all
subsequent characters up to, but not including the terminating apostrophe are
packed l,eft-justified into as many successive computer words ~s are required
to accommodate the string. Any remaining partial word is padded on the right
with space characters. If the object word size is not evenly divisible by
the declared character length (see paragraphs 11:3.3.2 and 11.3.3.3), the unusable bits'will app~ar as binary zeros in the rightmost bit positions of the
generated object word.
If a + precedes a character string, the Assembler regards the string as a
constant; therefore, the number of characters between apostrophes may be from
one to eight. One to four characters yield one computer word; five to eight
characters yie ld two computer word s • Characters are' packed right-justified
within the generated words with leading binary zeros as required to pad the
word. However, if two computer words are generated, the character string is
regarded as a double-length constant and the leading character codes will
be in the second word.
Examples
Refer to paragraph 11.3.3 for descriptions of the BYTE, CHAR, FORM and WHD
di recti ves. These directi ves may be used to deviate from the imbedded obj ect
word length and eight-bit 'character framework.
11.8 OPERATORS
The Assembler provides 14 mathematical operators which define the exact sequence
and manner in which elements are to be combined within an expression during
evaluation. These operators serve essentially the same purpose as those
M-5035
Change 2
encountered within a normal algebraic expression.
Similar to the rules of algebra, which assign a priority to each of its operators
(for example, multiplication is performed before addition), the rules for
expression evaluation a~sign a priority to each of the 14 operators recognized
by the Assembler. These priorities may be overridden by using parenthetical
grouping,.in the same way that parenthetical grouping is used in an algebraic
expression. The rules for evaluation are discussed in greater detail under
Operator Priorities (see paragraph 11.8.2).
Each of the 14 operators falls into one of three classes: 1) arithmetic,
2) logical. or 3) conditional. Arithmetic operators have the highest priority;
conditional the lowest.
11.8.1
Symbols
The operator symbols as well as their relative priorities are listed in Table
11-1.
Table 11-2 summarizes the data formats allowed with each operator, and the
format of the resultant value. Note that the table is divided into four
columns,labeled First Item, Operator, Second Item, and Result. If the entries
under First Item and Second Item for a particular.~operator specify both binary
and floating, the corresponding value for that item may be either data format;
however, the result is in the format specified under the Result column. The
actual evaluation is performed in the mode specified for the result.
11-11-63
M-5035
Change 2
TABLE 11-1.
OPERATORS AND PRIORITIES OF OPERATORS
Relative
Priority
Operator
6
*+
A *+ B is equivalent to A* lOB
6
*-
6
·1
A * -8 is equivalent to A * 108
A * I 8 is equivalent to A * 2
5
•
Arithmetic product
5
I
Arithmetic quotient
5
II
Covered quotient
4
+
Meaning
8
Arithmetic sum
Arithmetic difference
4
3
••
Logical product (AND)
2
++
Logical sum (OR)
2
Logical difference (EXCLUSIVE OR)
1
EQUALS ,conditional
A=B has value 1 if true; 0 if not true
1
>
GREATER THAN conditional
A > B has value 1 if true; 0 if not
true
1
<
LESS THAN conditional
A < B has value 1 if true; 0 if not
true
11-11-64
M-5035
t";ln~lC'
TABLE 11-:'!.
Fi rs t 1 , pm
<
Hinnry or flont i
++ , ::...- ,
Bi nfl ry
Binary or float.ing
Hi nary
Bi nary
Bi nary
Bi nary
Floating
Flonting
Floating
Floating
Flo~ting
-+ , -
Flnntinu
+, -
•,
Binary
+,
ICc
+, -
•,
n~l
Rinary or f loa t i n~l
~:+,
Binn}'y
*'
I '
,
.
,
*
.'
Floating
«()
Binary or floating
Binfll"y
n~l
Hp su 1 t
>
••
•
Fl 0<1 t i
Second I tern
Operfltor
Bi nfll'y or float inH
"
U,\TA MOUES FOR OPEHATOH ITEMS
Bi nary
(Greater Than).
The greater than operator results in a value of I
if the quantity on the left is strictly greater than the quantity on the right;
otherwise, the resultant value is O•
.' Example
11.8.1.3.3 «Less Than). The less than operator compares the value on the left
with the value on the right and sets the result equal to a I' if the left-hand
quantity is less than the quantity on the right; if it is not less, the resultan t va I ue is O.
11-11-69
M-5035
Change 5
Example
11.8.2 Operator Priorities
In the absence of parentheses, individual operator priorities determine the
order in which elements are combined within an expression. Evaluation is
performed left to right if two or more operators 'with the same priority occur
within the same expression.
Table 11-2 shows that ::;+, :::_, and ::) have the highest priority' (6), and =,>,
and < the lowest (1). Thus, within a given expression, elements separated by
one of the three exponential operators are combined before anyone operation
is performed. Comparison' of values within an expression is done last (such as
is done when anyone of the th'ree condi tional operators is encountered).
Example
I
I
I
11-11-70
M-5035
Change 2
11.8.3 . Parenthetical, Grouping
The normal sequence of evaluation within an expression may be altered by using
parenthetical grouping; that is, enclosing certain portions of the expression
within parentheses to override the normal rules of evaluation. The effect is
to evaluate that portion of the expression within the parentheses as though it
were the only expression on the line, independent of any elements or operators
occurring outside of the parentheses. The value resulting from this evaluation
is then substituted as an element in the entire expression, and the evaluation
is continued.
Up to five levels of parenthetical grouping are allowed. When encountered, the
expression within the innermost set of parentheses is evaluated first.
11.8.4
Relocatability
The final value resulting from the evaluation of an expression may be a memory
address reference and. as such. may be potentially relocatable; fo~ example,
the memory address may be modified at load time. General rules which govern
whether the result of an expression shall be relocatable or not are:
a.
A floating point value is never relocatable.
b.
The value resulting from a logical or conditional operation is not
relocatable.
c.
Only the + and - arithmetic operators yield a result that is
relocatable; The one exception to this rule is multiplication
or division of a relocatable quantity by +1.
Tables 11-3' and 11-4 summarize t\hese rules for reloctability.•
11-11-71
M-5035
Change 2
TABLE 11-3.
First Item
RELOCATION OF BINARY ITEMS
Operator
Second Item
Binary or floating
<, -, >
Binary or floating
Not relocatable
Binary or floating
++, --,
Binary or floating
Not relocatable
Not relocatable
+,
-
Not relocatable
Not relocatable
Relocatable
(binary)
+,
-
Not relocatable
(binary)
Relocatable
Not relocatable
(bi nary)
+, -
Relocatable
(bi nary)
Relocatable
Relocatable
+,
-
Relocatable
Not relocatable
Binary or floating
ace
Bi nary or floating
Not relocatable
Binary or floating
*+, *- t
Binary
Not relocatable
,
I
/,
~(*
II
11-11-72
M-5035
Change 2
11.9
The
ASSEMBLER OUTPUTS
Ass(~mblcr
produces on1y relocatahle object output.
The 1o:ation of the ob-
ject program then becomes a load-time determination. Assembler object code
format is described in Volume I, Section 3 as part of the inputs to the Object
Code Loader.
Along with the relocatable object code, the Assembler passes to the Loader the
number of errors that occurred during the assembly (see Volume 1, paragraph
2.2.3 for loading). The number passed to the Loader does not include the number of T errors or R errors (see paragraphs 11.9.2.5 and 11.9.2.6).
Conc~rrent
with the source language translation and output of the loadable
machine code, the Assembler produces a side-by-side assembled program hardcopy
listing.
11.9.1
Side-By-Side Listing
This side-by-side listing contains:
1)
a sequential decimal source language
statement number; 2) each source language statement together with any generated
addresses; 3) object code resulting from translation of the statement; 4) Assembler-detected translation errors and warnings included along with the statement in error. By means of Assembler directives, the progranuner can suppress
all or any part of the side-by-side listing. Another Assembler directive permits the programmer to control the editing of the generated machine code into
logically discrete fields.
11.9.2
11.9.2.1
Error Codes
Expression (E)
Expression errors result from illogical expressions such as a decimal digit
. within an octal number; element type inconsistent with arithmetic operators;
expression improper in context, such as a GO line used outside a macro or a DO
coun~ in excess of 216 _1, or unequal number of left and right parentheses.
11~9.2.2
Duplicate (D)
Duplicate errors
values. A label
defined prior to
first and second
result "from labels defined more than once with different
used in an expression affecting an address counter is not
its use resulting in a different addressing sequence in the
assembly passes.
11-11-73
M-5035
Change 2
11.9.2.3
Undefined (U)
. An undefined error results from any of the following three conditions:
1.
A reference made to a label which was not defined in the program.
2.
A reference made to a label that was not externalized properly
by a calion a macro.
3.
11.9.2.4
A failure to suffix labels of macro entry points with an
number of asterisks.
a~equate
Instruction(l)
An Instruction error results when the Assembler encounters:
a.
A MACRO or EQU directive which has no label.
b.
A SEGEND within a MACRO.
c.
More than one coded subfield in field zero of a MACRO reference
line ,called via a MACRO name.
d.
A nested LIB directive ora LIB directive within a MACRO.
e.
A LIBS directive retrieved from a library.
11.9.2.5
Relocation (R)
A Relocation error results from an arithmetic or logical operation being performed on a reloctable value which destroyed its reloctability.
11.9.2.6 Truncation (T)
A Truncation error occurs when the final va·lue of an
expres~ion
does not fit in
the destined bit field of an object word, resulting in the Assembler truncating
the
left~most
bits of the value in order to make it fit the field.
11.9.2.7 Overflow (0)
The Overflow error occurs when memory available for the Assembler tables is
exhausted.
11.9.2.8
Name (N)
A Name error occurs when the Assembler encounters a name which contains more
than eight characters.
11-11-74
M-5035
Change 5
11.9.2.9
Level (L)
A Level error results from an expression containing a parentheses nested more
than five levels or from more than 64 SETADR lines appearing in this assemhly
or from an incomplet.e MACRO definition retrieved from a library.
11.9.2.10
Floating Point (F)
A Floating Point error occurs under any of three circumstances:
1. The divisor in a requested floating point divide operation is
zero.
2. A floating point operation during evaluation of an expression
yielded characteristic underflow. Characteristic underflow
occurs whenever the characteristic is less than -32767.
3..
A floating point operation during evaluation of an expression
resulted in characteristic overflow. Characteristic overflow
occurs whenever the characteristic exceeds +32767.
11.9.2.11 Warning (W)
A warning results when alabel is used with a half-word instruction which is assigned
to the lower halI ofa computer word.
11.9.3
I
Generation Formats
Assuming the editing listing option has been selected, a number of generated words,
values, or half-words appear.
They are:
S FIELD CODED EXPLICITLY. 000120 14 0 0 0 0 0 00265
AO, CLASIV, , , SO
AA
S FIELD NOT CODED (SY COMIDNED). 0002"05 52 0 0 0 0000211
LBJ
B7,FETCH
FULL-WORD (ON-LINE CONSTANTS OF EQU VALUES). 001140 37700000377
00000000001
Al
EQU
1
ll-11-75 "
I
I
M-5035
Change 5
HALF-WORD INSTRUCTIONS. - .
000123 71 0 2 0 0
000123 61 11 0 1
HAN
HLCI
Ao,AO
010+Bl,AO
11.9.1 Listing Of Labels
The Assembler provides programmers via the LLT directive, with an alphanumericall)
sorted listing of source statement labels and corresponding Assembler-generated
addresses or values. Listed labels are those defined at levels 0 and 1. LLT
labels do not include 'MACRO, NAME, FORM, and LIT line labels.
11.9.4.1
Level 0
Level 0 labels are those names which are made available to
load time to some other independent'ly processed code.
11.0~4.~
Level
anoth~r
program at
1
Level 1 .labels are those names encountered on the main program level.
11.9.4.3
LLT Sample Listing
A sample of the listing produced by the Assembler after processing a LLT
directive appears below:
*
LIST LABEL TABLE •
LEVEL 0
AO
A3
BI
B4
B7
BEGIN1
00000000000
00000000003
00000000001
00000000004
00000000007
0000062
00
Al
A4
B2
B5
BCOUNT
BUFF
00000000001
00000000004
00000000002
00000000005
00000000002
00
0000150
A2
A7
B3
B6
BEG
BUFFLAG
00000000002
00000000007
00000000003
00000000006
00000000007
00
0000125
AGAIN2
BWAIT2
CHARCK
0000402
0000355
0000444
LEVEL 1
ADD
BWAIT
CBUFF
0000353
0000347
0000544
11.9.4.4
00
00
00
AGAIN1
BWAITO
COIV
0000275
0000262
0000521
00
00
00
Undefined Labels
Names or symbols encountered during the assembly which are not defined are
listed:
UNDEFINED SYMBOLS
PRDIR
II-11-76
00
00
00
M-5035
Change 2
11.9.4.5
Cross Reference Listing
A crossreterence listing can be produced at the end of an assembly if an LCR
directive has been previously encountered by the Assembler. This listing consists of labels, address counter values, and address counters where these labels
a·re referenced. A sample listing is shown in figure 11-5.
11.10
ASSEMBLER DIAGNOSTICS AND STATUS
Several categories of error.a encountered during the assembly process cause an
error message to be output to the standard hardcopy device, These errors fall
into one of four classes: 1) Assembly; 2) Assembler Internal; 3) Library
calli and 4) Peripheral.
11.10.1
Assembly Errors
If an assembly error occurs during the assembly process, the following status
messages will appear on the standard hardcopy devices:
ASSEMBLY ERRORS
xx
xx
EXl!lanation
XX
IT
YY
YY
Any one of the followi og:
0
Overflow
U
Undefined
D
Duplicate
E
Expression
T
TruncatIon
R
Relocation
I
Instruction
L
Level
N
Name
F
Floati ng- Poi n t
The number of errors of type XX that occurred in the assembly.
11-11-77
~3:
:;rQlc.n
::sO
eeW
('Dc.n
N
I-o!
!-oj
.....I
.....
LIST tRuSS R~FERlNCE TA8LE
Ll
1J0lJO£J~
00
Ll
(IUU014 OU
Ll
L2
L?
OUUOOl
07
L2
L3
UOOUU2 ns
L3
L4
IIUU012 00
L4
L4
UU0017 00
t:5
L';
UOOO£J4 15
L5
nOOO04
(100006
1100001
IIUOOU2
000002
(100013
oU0020
fJl
no
15
r:7
fll
no
L1
L2
L~
L3
Let
L~
vOOOOO
lJOOOO7
000015
lJUOO02
fJUOO03
UUOO03
lJ~
liO
LO
l~
l'5
III
Ll
L2
L3
L3
L4
L5
(10
J
-'l
co
Figure 11-5.
Sample Cross-Reference Listing
OUOOOO
000000
OU0010
uU001&
0000U3
OUOOUet
£J7
01
00
00
U7
05
L.1
L2
L.3
L.4
L"
L5
000000
000001
000001
000011
000003
000004
15
O~
01
00
15
07
M-5035
Change 2
ILLOGICAL SOURCE INPUT SEQUENCE
This message occurs when the Assembler has read a sentinel statement. This only
occurs when an illogical sequence of source cards is input to the Assembler.
NOT ENOUGH UNASSIGNED TAPES
The Assembler is unable to obtain enough tapes to assemble with the requested
output options.
11.10.2
Assembler Internal Errors
11.10.2.1
Core Overflow
The core overflow error occurs when the Assembler item table macro sample
storage area, memory intermediate storage area, or literal origin stack overflows.
No recovery is possible.
11.10.2.2 Level Overflow
The level overflow error occurs when the number of nested macros exceeds 29.
No recovery is possible.
11.10.3 Library Call Errors
The following message is typed if the Assembler is unable to locate a called
source library element on the assigned library medium:
****.
LIB
REF
ERROR
S
name (vers)
Explanation
S
Name (vers)
Denotes source library.
The called library element name (version).
After the typeout, the Asserribler continues without soliciting a response from
the operator.
11.10.4
Peripheral Errors
The following peripheral error indications are received by the Assembler from
the Centralized I/O Program or the Standard Input Program, and no recovery
11-11-79
M-5035
Change 2
is possible (the MN field in the messages is the name of the device involved
in the error):
I/O ERR MN END OF FILE
A tape mark has been read while reading from the input.
I/O ERR MN UNREC ERR
A tape error has occurred and recovery procedure was unsuccessful.
function was retried five times without success.
The tape
I/O ERR MN ILLEG PROC
An illogical function has been requested (such as a magnetic tape read forward
when the tape is positioned at the end of tape, or a pass backward function
while the tape is positioned at the beginning of tape).
I/O ERR MN STRG END
End of tape was detected during a magnetic tape function or while using core
memory as intermediate storage, or there was not enough core memory available
to store the source program.
In the second case, MN in the· message will be
MM.
I/O ERR MN NOT ASS1GNED
An I/O function was requested on a logical unit which had been removed from
the current equipment configuration ..
11.11
SOURCE DECK ORGANIZATION
Figures 11-6 through 11-10 illustrate example structures of source decks.
·OFF
END
ASSEMBLER SOURCE
DECK
Figure ll-().
Source Deck Organization for a Single Program
11-11-80
M-5035
Change 5
*OFF
END
/ENDCOR
lEND
OPTIONAL,
CORRECTION
DECK
Figure 11-7.
Source Deck Organization for Assembling Using
Library Input.
11-11-81
M-5035
Change 2
ASSEMBLER SOURCE
DECK FI RST SEGME
Figure 11-8.
Th.iS card indicates
dependent programs
{
or segments.
Source Deck Organization for Two or More Dependent
Programs ~r Segments
ASSEMBLER SOURCE
DECK FIRST PROGRAM
Figure 11-9.
ThiS card indicates
....._ _ _ _ _ _ . independent programs
{ or segments.
Source Deck Organizat'ion' for Two or More Independent
Programs or Segments
11-11-82
M-S035
Change 2
END
·ULTRA
Figure 11-10.
11.12
Source Deck Assembly Time Allocation
SPECIAL CONSIDERATIONS
a.
Only the first *ULTRA Assembler control statement has any effect on
the mode of intermediate storage or on the name recorded
on the object code program ID images. Subsequent *ULTRA statements
are passed over by the Assembler.
b.
When coding for the CMS-2 Assembler, it is desirable to keep label
lines (lines containing only a label) separate from coded machine
instructions. This allows shifting the label line without altering
any other line(s}.
c.
If a number of successive half-word (16-bit) instructions are
encountered (under the same address counter) by the Assembler, they
are packed two per word. The fi rs t half-word encountered after
the address counter has been activated/reactivated is packed into
the upper half of the generated word.
11-11-83
M-5035
Change 5
d.
Generation of half-word in-line constants or literals is always in the lower
half of the word with no packing.
e .. If LLT and LCR directives have been encountered and no reference is made
to a relocatable label within the assembly, the label will be flagged with NR.
f.
The assembler call $ASM, U indicates the, ULTRA/32 keypunch code is to be
used when interpreting source statements for the assembly. lfthe U is not
present, the keypunch code specified in the $JOB command is in effect.
Note: ULTRA/32 keypunch code is not interchangeable with the 026/029
keypunch codes; See special character codes for options in Appendix A.
n-ll-S4
M-5035
SECTION 12
INSTRUCTION
12.1
REPERTOln~
AN/UYK-7 COMPlJI'ER FUNCTIONS
The UYK-7 is a general purpose, multi-state, multi-processor, multi-I/O
processor, stored-program
co~puter.
Some of the features of this computer
relevant to a programmer arc:
a)
High-speed memory with a cycle time of 1.5 microseconds and a capacity of
16,384 words expandable with more memory banks to 262,144 words.
b)
Memory banks containing 16,384 words each that can be addressed by the
arithmetic processor(s), the I/O processor(s), and external devices with
proper hardware adaptation o
c)
A portion of memory is
non~destructive
critical instructions and constants.
readout (NORO) for storage of
This storage provides the facility
for automatic recovery in case of a system failure or program fault and
for automatic initial loading of programs.
d)
A 32-bit word length allowing for storage of one full-word instruction or
two packed half-word instructions.
e)
Ability to address a 32-bit whole-word, 16-bit half-word, or 8-bit quarterword with no difference in execution time.
f)
Use of parallel, one's complement, subtractive arithmetic.
g)
Use of single
~ddress
instructions with the provision for address mOdifi-
cation via seven index registers and eight base registers.
h)
Floating point and double prevision fixed point arithmetic functions.
i)
Memory protection, in segments of up to 65,536 words, under both program
and manual control.
j)
An indirect addressing capability.
k)
Any field of a word addressing capability.
1)
Provision for connecting a remote operating console.
11-12-1
M-5035
m)
A manual/program addressable breakpoint register which may be set to stop
or interrupt program operation at any point.
n)
Interrupt and task states each with their own associated registers.
0)
A status register which contains information concerning the current status
of a processor.
p)
Interrupt status or definition code capability.
q)
Provision for half-word instructions.
r)
Privileged instructions which can only be executed in the interrupt state.
s)
Eight arithmetic accumulators provided to allow parallel and cumulative
computation.
t)
A processor capable of retrieving the current operand and the next
instruction in parallel if located in different memory banks.
u)
Five different types of instruction formats.,
v)
A processor decremental monitor clock, an IOC incremental realtime clock,
and an IOC decremental monitor clock.
12.1.1
12.1.1.1
The
Register Format and Usage
Program Address Register
progra~
address register (P) holds the.address of instructions to be
executed by the computer. This register holds 19 useable bits. Bits 19
through. 17 (P ) hold a base register designator, 0 through 7, while bits 15
s
through 0 (P D) contain a displacement value, relative to the address contained
in the designated base register. Bit 16 is not used.
P Register Format
11-12-2
M-5035
12.1.1.2
Addressable Registers, Control Memory
Table 12-1 gives the control memory address assignments for the central
processor.
Accumulator register format
A
Base register fnrmat
s
Index register format
B D
Where:
B5'= base register designator.
BD ='displacement value.
When actually used for indexing, only the 16 bits of BD are used.
16 is not used.
11-12-3
Bit
M-5035
TABLE 12-1.
CMR Address
0-710*
11-17*
20-27·
CENTRAL PROCESSOR CONTROL MEMORY ADDRESS ASSIGNMENTS
Register Selected
Task Accumulators (Registers
Register Size
0~7)
Unassigned (Addressabl~)
Task Index (Registers 1-7)
Task Base (Register 0-7, Addressable
in Interrupt Mode Only}
32 bits each
19 bits
19 bits each
18 bits each
Unassigned (Not Useable)
Brea kpoi nt
100-107*·
}
·
(Addressable in Interrupt Mode Only)
20 bits
Active Status
23 bits
Interrupt Accumulators (Registers 0-7)
32 bits
110**
Central Processor Monitor Clock
111-117~,c~~
Interrupt Index (Registers 1-7)
Interrupt Base (Registers 0-7)
19 bits (clock
. only 16 bits)
19 bits each
18 bits each
Unassigned (Not Useable),
*
**
DSWand leW
20 bits each
160-167**
Storage Protection Registers
(Registers 0-7)
21 bits each
170-177**
Segment Identification Registers
(Registers 0-7)
21 bits each
Task mode CMR address.
Interrupt mode CMR address.
11-12-.4
M-5035"
Change 5
Breakpoint register format
BPI = when set, compares BPA with instruction memory address.
BP0 = when set,compares BPA with operand memory address.
If both BP
and BPI are set, both operations are performed.
O
BPA = an absolute address, up to 18 bits.
Central processor monitor clock register (CPMCR)
Not
Used
CPMCR
The CPMCR, when activated, is decremented at the rate of 1024 counts per
se£ond. A class II interrupt is generated when its value changes from zero
to a negative value by hardware decrementation. If bit 15 is set, the clock
is deactivated.
Initial condition word register (ICW)
The four ICW registers contain entrance addresses for the four interrupt
classes. ICWS contains a base register designator and bits 15 through 0
" (ICWU) contain a displacement value.
II -12-5
I
M-5035 .
Designator storage word registers (DSW)
DSW (P Register)
DSW (Active Status Register)
DSW (Interrupt Status Code)
The twelve DSW registers are in sets of three; each set is used for one
of the four interrupt classes.
During an interrupt sequence, Ps of the P
register is stored in DPS ' and PD of the P register is stored in DP D" Bits
19 through 0 of the Active Status Register are stored in DSWASR ' while the
Interrupt Status Code is stored in DSW ISC •
Storage protection registers (SPR)
10 .. II 17
..
15JI~llsI121IlJlolll'T7T'T5T .. TsI211Io
R
IR
I
IA
OW
I
OR
1
I
11-12_';
T
I
M-5035
The eight SPR registers correspond to the eight task base registers.
a
R is
value, defining a segment of memory with a starting address
displacC'm(~nt
contained in the
corrcspon~ing
task base register.
A final address is this
address plus the value in R. This segment is then the only memory area
accessible by the corresponding base register. The allowable types of
operations within such a segment are defined by bits 20 through 16.
The
following operation is allowed when these bits are set:
Bit 16 (IR) - Use of interrupt index and base registers in indirect
addressing.
Bit 17 (IA) - Use of indirect addressing.
Bit 18 (OW) - Operand writing.
Bit 19 (OR)· - Operand reading.
Bit 20 (I)
- Instruction execution.
The SPRs are loaded by executing the LOAD BASE and MEMORY PROTECTION
instruction (05 4).
The lower 21 bits of the contents of the operand address
+1 are loaded into an SPR.
Segment identification registers (SIR)
The eight SIR registers correspond to the eight task base registers.
SIRS
SIR D
base register designator.
a displacement value.
These registers are loaded with the effective operand address of the LOAD BASE
and MEMORY PRUfECTION instruction (05 4) which loads the correspondIng base
register.
11-12-7
M-5035
Change 3
12.1.2
Modes of Operation
The AN/UYK-7 Computer can be operated. in one of two modes of operation:
1) the executive (or interrupt) state or 2) the task state. Both states can
be manually or program initiated. Four bits of the ~ctive status ~egister
specify the state the computer is in according to Table 12-2.
TABLE 12-2.
AN/UYK-7 COMPUTER MODES OF OPERATION
Active Status Reg i ster Bi ts
2
19
0
0
0
0
1
12.1.2.1
2
18
0
0
0
1
0
217
0
0
1
0
0
2
0
1
0
0
0
PrOcessor State
16
Task state
Executive state
Interrupt class III state
Interrupt class II state
Interrupt class I state
Interrupt State
In the interrupt
sta~e,
the computer has the following characteristics:
a)
The computer can reference any memory word which has been locked out.
b)
The computer uses the interrupt set of accumulators, index registers,
and base registers.
c)
The computer can come to a stop condition.
12.1.2.2
Task State
In the task state, the computer has the ,following characteristics:
a)
The computer can reference any memory word which has not been locked out.
b)
The computer uses the task set of accumulators, index registers, and base
registers.
11-12-8
M-5035
c)
The int.errupt state set. of registers cannot be referenced.
d)'
Privileged instructions will not be executed.
e)
The task set of base registers can be modified only under certain conditions.
12.1.2.3 Active Status Register
The active status register (see Table 12-3) is a 23-bit register (one for each
processor) showing the current environment relative to that processor at any
moment.
TABLE,12-3.
Bi t Number'
22-20
19
18
17
16
15
14
13
12
11
10
9'
8
7
6-4
3
n
ACTIVE STATUS REGISTER
Designator
CP identifier
State I }
Under
State II
Hardware - see Table 3-2
State III
Control
State IV
Upper/lower
Class I lockout
Class II lockout
Class III lockout
Base(s) register selector
Accumulator and index register selector
Memory lockout inhibit
Load base enable
Boot st rap mode
Not allocated
Fixed point overflow indicator
Compare
designators
,11-12-9
M-5035
Upper/lower control - bit 15
The upper/lower control bit is s~t when al,l upper half-word instruction
has completed execution and is cleared when a whole word or a lower
half-word instruction has completed execution.
Class I lockout - bit 14
Locks out class I interrupts when set.
Class II lrickout - bit 13
Locks out class II interrupts when set.
Class III lockout - bit 12
Locks out class III interrupts when set.
Accumulator/index register selector - bit 10
Thissele~tor
is set in the interrupt mode and cleared in the task mode
to select which set of A and B registers the active program may acce~s.
Special base register selector - bit 11
This selector is set when entering the interrupt mode and cleared in the
task mode to select which set of base registers the active program may
access.
Memory lockout inhibit - bit 9
The l-:-bit memory lockout inhibit (bit 9) is set (inhibit mode) j.n the
interrupt mode and cleared (memory lockouts used) in the task state.
Load base enable - bit 8
Allows use of Load Base and Memory Protection instructions in task state
when set.
Bootstrap mode - bit 7
Set manually to enable access to NORO memory during bootstrap load.
bit is cleared under program control by execution of the following
instructions: Interrupt Return, or Enter Executive State.
11-12-10
Thjs
M-5035
Spare bits - bits 4-6
Bits 4 through 6 are programmable spare bits.
Fixed point overflow indicator - bit 3
Displays the
sta~us
of fixed point overflow (is set if overflow
oc~urred).
This bit is tested and cleared under program control by execution of
following instructions:
t~e
Jump on Overflow, and Jump on No Overflow.
Compare designator - bits 0-2
The compare designator (bits 2,1, 0) display the status of the compare
instructions as specifIed in the descriptions of individual instructions.
The status word designation is as follows:
a)
Bit 2 == 0 unequal case
= 1 equal case
b)
Bit 1 = 0
= 1
c)
less than
greater than
within limits
= 1 outside, limits
Bit 0 = 0
11-12-11
.
M-5035
12.2
AN/UYK-7
INSTRUCTION FORMATS
There are five different types of instruction formats: three are full-word
formats and two are half-word formats. Half-word instructions do not have' any
memory reference parts because these instructions deal mainly with data
manipulations between various registers.
The AN/UYK-7 Computer is a' self -modifying, one-address computer • Although one
reference or address is provided for the execution of an instruction, this
reference or address can be modified automatically during a programmed sequence.
The references are modified by using the index registers and the base registers
which contain previously stored constants. The final operand address is the
result of adding together the 18-bit content of the selected base register
plus the 16-bit content of the selected index register, and the 13 bits of the
immediate operand field of the instruction.
An instruction or data address is coded using octal notation with each octal
digit denoting three binary digits.
The instructions are read sequentially
from memory except after jump instructions or interrupt situations.
In-
these cases, the sequential execution of instructions resumes at another location in memory.
Each of the instructions in thr repertoire is assigned to a format class
according to the operational characteristics of the instructions.
three full-word (32-bit) formats (Formats I, II, and III) and two
There are
half~word
(16-bit) formats (Formats IV-A and IV-B). The paragraphs which follow specify
the formats and the type of instructions assigned to each.
12.2.1
Format I Instructions
The instructions of format I have the following word format:
1'11012112112112'
f
ut24111 ulzllzo "1 11 117
a
k
" 151 14 111 121111101111171115(411121'10
b i
s
11-12-12
y
M-5035
These inst.ructions basically require two operands:
1)
an arithmetic or index
register specified by the 3-bit a-field and 2) an operand address y-designator.
The effective operand address y is formed by adding the content of an index
register specified by the 3-bit b-field, the 13-bit displacement y-value and
the content of a base register specified by the 3-bit s-field.
The 3-bit
k-field .is used to control operand interpretation (see paragraph 12.3.3).
The one-bit i-field of the instructions is used to specify indirect addressing.
·The f-field (6-bits) is the ,major function code. There are no subfunction
codes in this format class.
There is a group of Format I instructions in which the a- and k-designators are
interpreted as a combined unit. In these cases, whole-word operands are assigned and ak specifies either a control memory address or a bit position within a
computer word.
12.2.2
Format II Instructions
Format II instructions have the following format:
.II'01 29121127 lze 2112-1 21 2212'1 20 I'lllll7 " Isi l-l1• 121" 11011 II 17 I_ 151_1 .121 I 1o
a
f
i
b
f2
s
Y
Whole word operands (k = 3) are hardware assumed in Format II. instructions.
Thus, the k-fields are used as a subfunction code labeled f • The other fields
2
of the Format II instructions are used in the same manner as in Format I.
12.2.3
Format III Instructions
Format III instructions have the following word format:
'Ilso129Iall2712' ula-ln 22121 ao 1'1'11 17 " 1511-11. 121" 1101'11171-1 514 r.1 z I 11o
f
a
f3 ~
b
i
s
Y
Again only whole-word operands are specified or assumed in Format III instructions. Thus, the k-field is divided into two parts: l)a 2-bit subfunction
code l~beled f3 and 2) a single bit labeled k for which zero is the only legal
entry. The other fields of Format III instructions are used in the same manner
as for Format I.
11-12-13
M-5035
12.2.4
Format IV-A Instructions
Format IV-A instructions have the following word format:
15(14(15(12111110
_11(1
f
a
f
a
11514
f4
slall
b
0
i
b i
The instructions of For~at IV-A require two registers (index or arithmetj~) and
are used for register-to-register transfers and arithmetic operations.' The 3bit a-field and the 3~bit b-field specify one of eight accumulators or eight
index registers respectively. The 3-bitk-field is used as a subfunction
code labeled f . Except as specified in the individual instructions, the
4
i-field of the instruction is unused in Format IV-A instructions.
12.2.5
Format IV-B Instructions
Format IV-B instructions have the following word format:
f
a
m Shift
Desi na tor
The Format IV-B instructions use the 7-bit m-fie~d to specify a shift count.
the 3-bit a-field is used to specify ene of the eight accumulators whose data
is to be shifted for shift instructions.
The m-field value is interpreted as follows: if the upper bit of the m-field
is set and bit 5 of the m-field is cleared, the shift count is contained in
the B-register specified by bits I through 3; if the upper two bits of the
m-fieldare set, the shift count is given in the A-register specified 'by bits
1 through 3. If neither of these cases apply (upper-most bit of m equals zero),
then the shift count is contained in the lower 6 bits of the m-field (maximum
shift permitted is 63 places).
11-12-14
M-5035
12.2. ()
If i
~
Jndi rect Word
1, the 20 least significant bit positions of an instruction (b, i, s,
and y fields) are replaced with the 20 least significant bit positions of (Y).
The 12 higher order bit positions of (Y) are used to specify indirect addressing options.
The interpretation of the indirect control word is:
11110 2111111711'115 14121112111110 11111117 I' 11114111 121" 1101 t 1117 1-1114111 z II 10
c
w
P
b
i
s
y
Explanation
c
Control designator specifying the type of
addressing that will occur.
c=lO
For indirect addressing only.
c=01 2
For single character addressing.
c=112
For sequential character addressing.
c=00, bi t 29=0:
Indirect addressing where bits 17-19 indicate
the base register and bits 0-15 the 16-bit displacement.
c=OO; bit 29=1:
Indirect addressing where bits 17-19 indicate
the index register and bits 0-15 the 16-bit
displacement.
Indirect addressing shall continue as long as i = 1 with indexing capability
at each cascaded level. When i = 0, the indirect addressin~ will terminat~
a~d the current instruction will be interpreted in the normal manner.
When i = 0 and c = (01 2 , 11 2 ), the remaining ten positions of the indirect control word are interpreted and character addressing will occur. In this case,
the p- and w-designators are interpreted as follows:
p - bit position designator which specifies the least significant bit
position of the variable-length character field.
w - character length designator which specifies the number of bits of the
character field based at p.
11-12-15
M-5035
When a character has been read from memory by character addressing, it is
placed in the appropriate arithmetic register, right-justified, and zero-filled.
If c
= 112,sequential
character
add~essing
is specified.
The indirect control
word is updated for subsequent addressing of the next character field and then
stored back in main memory.
12.2.7
I/O Commands Formats
I
.
The IOC will read the command from memory and begin its execution upon receipt
of the command address from the central processor.' The I/O format is:
1'llOllIlal ll7lu 1511 4 15111121110 It
f
k
j
II
'111111111' 4 1'11 ' 21"1'01'111111111411121'10
mc
y
Explanation
f
Function code of the .command.
k
Partial word designator.
j
Channel number (0-15).
c
Chain flag.
m
Monitor flag.
y
Absolute 18-bit address of the operand (buffer
control words, external function words, etc.).
The buffer control words specify the limits of the buffer of data for input/output and the desired mode of transfer (a word at a time, half-word at a time,
and so forth). Buffer control words are in two formats: normal mode and ESI
mode.
12.2.7.1
Normal Mode
The normal mode format is:
Final Address
Compare Bi ts
Y
11-12-16
M-5035
12.2.7.2
E5I Mode
The ESI mode format is:
k
Final Address
Compa re Bi ts
y
Explanation
y
Initial lO-bit buffer address.
Final address compare bits
Initial buffer address plus the buffer's
length minus 1 truncated to the required
number of bits to fit the field.
k
12.3
Partial word designator.
SYMBOLIC CONVENTIONS
For symbols, registers, and terms used in the computer instruction
descrip-
tions, see Table 12-14.
12.3.1
f- Function Code Designator
The f-designator always occupi.es the most significant 6 bits of the instruction.
It specifies or determines the type of instruction to be performed. All unused major function codes are illegal instructions and, if executed in the
upper half-word, will cause an illegal instruction interrupt.
12.3.2
a - Arithmetic Code Designator
The 3-bit
a-designator specifies which one of eight A-registers an instruction will use or reference. The accumulator designation i3 as ff)ll'l/r,:
-t
a) 000
AO
2
-t
b) 001
A
2
1
t
c.) 010
A2
2
-t
d) 011
A3
2
e) 100 -+ A4
2
-t
f) 101
A5
2
11-12-17
M-5035
g)
110
h)
1112
2
....
A6
....
A7
NOTE
There are two groups of accumulators.
One group is associated with the task
state and the other with the interrupt
state of computer operation.
I I -12-10
M-5035
TABLE 12-4.
INSTRUCTION REPERTOIRE SYMBOL DEFINITIONS
Definition
Symbol
(
)
( )
II
x
;.
+
=
i:
>
~
<
s
0
,
Content or the quantity
Complement of the quantity
Absolute value
Compare
Multiply
Divide
Minus
Plus
Equal
Not equal
Greater than
Greater than or equal
Less.than
Less than or equal
Logical AND or logical product defined as:
Tltr
l
000
101
Inclusive OR or logical sum defined as:
o4t~ I~~
Exclusive OR or logical difference defined as:
rttt
l
001
I
I 0
a
Instruction field designating an accumulator or
index r e g i s t e r . ·
A
Accumulator designated by the a-field.
a
Accumulator designated by the b-field.
11-12-19
M-5035
TABLE 12-4.
INSTRUCTION REPERTOIRE SYMBOL DEFINITIONS (continued)
Symbol
af
4
Definition
Instruction field designating the combined a- and
f 4 -fields use to specify a control memory register.
ak
Instruction fiel~ designating the combined a- and
k-fields used to specify a bit position or a control
memory register.
b
Instruction field
lator register.
B
a
desi~nating
an index or accumu-
16-bit index register designated by the
a-fi~ld.
10-bit index register designated by the b-field.
c
Instruction field designating indirect addressing
word type or the chain flag in "input/output controller commands.
C
Input/output channel.
CA
Capable of indirect word character addressing.
Cj
Input/output channel designated by the j-field.
CD
Hardware compare designator.
CMR
Control memory register.
DSW
Designator storage words.
e
Operand field of the HK pseudo instruction.
EF
External function.
EI
External interrupt.
f
In~truction
field designating the major function
code.
Instruction fields designating sub-function code.
i
Instruction field designating indirect addressing
or interrupt control memory addressing.
I J -12-20
M~5035
TABLE 12-4.
Symbol
INSTRUCTION REPERTOIRE .SYMBOL DEFINITIONS
(continu~~d)
. Dcfi ni t i on
I/O
Input/output.
IOC
Input/output controller.
j
Instruction field designating an I/O channel.
k
Instruction field partial word designator.
kj
Instruction field designating the combined k- and jfields used to specify a bit position or control
memory register in IOC instructions.
1
Operand subfield of buffer control word pseudo
instructions.
Instruction field designating a shift count or
monitor flag in an IOC command.
n
Used as a subscript indicating a bit position; for
example, (A ) .
a n
NI
Next instruction.
OD
Overflow designator.
p
Indirect word bit position designator.
P
Program address register, 20 bits.
PI
Privileged instruction executable only when the
processor is in the interrupt {executive} state.
RPT
Capable of being executed in the repeat mode.
RTC.
Real-time clock.
s
Instruction field designating a base register.
SIR
Segment identification register.
SPR
Stored protection register.
11-12-21
M-5035
TABLE 12-4.
INSTRUCTION REPERTOIRE SYMBOL DEFINITIONS (continued)
Symbol
sy .
Definition
Instruction field representing
s~
·and
y~fields
in
combination.
U
U regist~r (program control register).
w
Indirect word character length designator.
y
Instruction operand field deSignating an address
or value.
y
Effective address formed by Y + (B b ) + (Ss).
y.
Effective operand as qualified by k (and/or p and
w when
12.3.3
applicable)~
k - Operand Interpretation Code Designator
I
The k-designator determines what part of the wordi referenced by an instruction
is to be used. Wh~n k #0, bits 15 through 13 sp~cify abase register. If
the k-designator specifies an upper I)r lower halfl-word, the l6-bit operand will
be sign-extended to 32 bits. If the k~designatorl specifies a quarter-word, the
8-bit quarter-word will be zero extended to 32 bifs. If the k-deslgnator
.\'-i
.
I
specifies the whole word, the full 32-b.. it. word willI be used •. The genera. I
interpretation of the k-designator is specified ip Tables 12-5, 12-6, and 12-7.
, 11-12-22
M~5035
TABLES ]:2-5.
OPERAND INTERPRETATION
GENEHAI~
TO ARITHMETIC)
M~mory to Arithmetic
k De s i g n B t () r
i
=0
k =1
k =2
k =3
I
k
i
s y+( Bb )
....
A15 -0
Sign extended
(y 15-0)
.... A15 - 0
Sign extended
i
i
(Y31-16) -
A15 - 0
(Y 31 - 0 )
A31 - 0
-
Zeros extended
.... A7_0
!(Y 23 - 16 ) .... A7_0
.... A7_0
\(Y 31-24)
Zeros extended
(Y7 -0)
=5
-
Sign extended
A7_0
k = 4
k
(Mf~MORY
(Y 15-8)
1
1
k
Zeros extended
I
k = 6
=7
Zeros extended
I
'I
1
TABLE 12-6.
k
k
k
k
k
k
k
k
GENERAL OPERAND INTERPRETATION (ARITHMETIC TO MEMORY)
'I
Designator
Arithmetic to Memory
1
I
=0
=1
=2
Not use(i
=3
=4
=5
(A 31 - 0 >
=6
I
1
(AlS-O>j
(A
-
-
i
- )!
1S 0
(-A 7 -0)
....
-
(A _ )
7 0
-
(A 7 -0)
YI5 - 0 ; Y31-16
Y31 - 16 ; Y1S-0
Y31 - 0
Y7 - 0 ; Y31 - 8
YI5 - 8 ; Y31 - 16
Y7 - 0
Y23 - 16 ; Y31 - 24
Y15 - 0
k
=7
(A
_ )
7 0
i
-
Y31 - 24 ; Y23 - 0
11-12-23
,-
-
-
Unchanged
Unchanged
Unchanged
Unchanged
Unchanged
Unchanged
Unchanged
Unchanged
M-5035
TABLE 12-7.
GENERAL OPERAND INTERPRETATION (NORMAL REPLACE INSTRUCTION
INTERPRETATION)
Normal Replace Instruction' Inte'rpretation
k
k
=U
=1
Not used
Rea d :
Stor~:
( Y15 -0 )
..... A15 -0
(s i 9 n ex· ten de
1) ·
i
Store the lower 16 bits of the
operand in bits 15-0 of
I
address Y leaving the upper 16 bits df the contents of address Y
I
unchanged.
I
I
k
=2
Read:
Store:
3l - 16 ) ..... A15 - 0 (sign extentl4d).
Store the lower 16 bits of the operand in bits 31-16 of
(Y
j
address Y leaving the lower 16 bits ~f the contents of address Y
unchangedo
. i
I
k = 3 Read:
Store:
k
=4
Read:
I
(Y 3l - 0 )
-t
A31 - 0
I
I
Store the 32 bit operand at
~ddress
Y.
(Y 7 - 0 ) .... A7 _0 (zero extended) ~
I
Store: Store the lower 8 bits of th~ operand in bits 7-0 of
address Y, leaving the upper 24 bitslof the contents of address Y
unchanged.
I
!
i
k =
5 Read:
(Y
15 - 8 ) .... A7_0 (zero extended~.
I
Store:
Store the lower 8 bits of th~ operand in bits 15-8 of
address Y, leaving the remaining
unchanged.
k
=6
bit~
of the contents of address Y
I
i
!
Read:
Store:
- ) ..... A _0 (zero extende~).
23 16
7
I
Store the lower 8 bits of th~ operand in bits 23-16 of
(Y
!
address Y, leaving the remaining bit. of the contents of address
I
Y unchanged.
k
=7
Read:
Store:
(Y
i
I
I
) ..... A _0 (zero extender).
7
31 24
Store the lower 8 bits of th~ operand in bits 31-24 of
-
I,
,
the operand in bits 31-24 of addressi Y, leaving the lower 24 bits
I
of the contents of address Y unchang~d.
11-12-24
M-5035
b - Index Heqister Code Uesiqnator
l:!.:\.·)
The
:~-hil
h-desiunator specifics which of tht!
modify the operand address y-designator.
indexing loops in a program.
ind(~x
registers wi 11 he used t.o
B-registers arc generally used for
In addition, the B7-register serves as a
repeat counter and the BO-register indicates a register which always contains
zero.
There is a group of index registers for each state of the computer.
12.3.5
i-Indirect Address Code Designator
The i-designator is set by coding an asterisk (*) before the y field.
The i-
designator of the instruction word controls the use of indirect addressing and
variable-length character addressing during execution.
If i
= 0,
the instruc-
tion will function normally.
12.3.6
s - Base Register Code Designator
The 3-bit s-designator is used to modify the 13-bit operand address y-designator
to form Y
= Y+
Bb + 5 s '
The base registers addressing
techn~que
is as
follows:
»
....
5
(Add
(50) to y + (B
....
51
(Add
(51'> toy + (B
c)
010 2 ""
52
(Add
(52) to y + (B »
b
d)
011
....
53
(Add
(53) to y + (B »
e)
10° 2 ""
54
(Add
(54) to y + (B »
b
f)
101 2 ""
55
(Add
(55) to y + (B b »
g)
110
....
56
(Add
(56) to y + (B b »
h)
111
....
57
~Add
(57) to y + (B »
a)
000
b)
001
2
2
2
2
2
0
b
b» .
b
b
There are two sets of eight base registers, one for each of the task and interrupt states of the processor(s).
12.3.7
The
y - Operand Code Designator
o~era~d
y-designator is either a l3-bit value (zero extended) if k # 0, or
,
'
a l6-bit value (sign extended) when k = O. In the first case, the y-designator is
part of the final operand addressi in the other case it is a constant.
11-12-25
M-5035
12.3.8
f2,f3' f4'
~
Subfunction Code
Designat~rs
In an effort to minimize the number of different function codes, various
instructions have subfunctions in all or part of the normal k-designator field.
In place of the k-field, a whole-word interpretation of the operand is hardware
ass umed.
12.3.9 m - Shift Counter Field
This is a 7-bit field used in half-word shift instructions to specify the
number of data bits in an A-register that will be moved either to the right or
to the left.
12.3.10
m - Monitor Interrupt Code Designator
This is a special designator for input/output controller instructions consisting of a I-bit monitor flag that, if set, will cause the IOC to transmit an
interrupt to the processor when a buffer is terminated.
12.3.11
c - Chain Flag Code Designator
This is a special deSignator for input/output controller instructions consisting of a I-bit chain flag that, if set, indicates to the IOe that another
command follows. When the operation specified by this command terminates, the
chain shall remain active.
12.3.12
i-Channel Number
This is a special designator for input/output cqntroller instructions consisting of a 4-bit field specifying which channel (0 through 15) the associated
IOC command is to be performed on.
12.4 COMPUTER-INSTRUCTION REPERTOIRE
The assembler recognizes and generates for an idbedded computer-instruction
repertoire associated with the AN/UYK-7 Compute~ System. All mnemonic computerinstruction lines have the general format:
Label
Mnemonic Function
: Operand
Use of a label is always optional. An asterisk :(f,c) preceding the y field
specifies indirect addressing and causes the Assembler to set the i-field of
the generated instruction word to a one.
II
-12-26
M-5035
For convience of programming, the coding sequence of the operand subfield(s)
does not necessarily correspond to the field order of the generated instruction.
The material contained in this section presents the instruction repertoire in
condensed form for reference purposes only. Programmers requiring more detailed
information concerning the hardware operation should consult the appropriate
hardware· specification document.
Note that the mnemonic function code for all half-word instructions begins with
the letter H.
For ease of reference, the
in~tructions
are grouped according to their
function into eleven major categories as follows: Load and Store, Arithmetic,
Jump, Comparison, Logical, Shifts, Control Memory References, Interrupt
Handling, Miscellaneous, Extension Mnemonics and Input/Output.
Within each group, instructio~s are arranged alphabetically by name. Format
I and Format II instructions are character addressable and repeatable except
as indicated. There is some unavoidable overlap in the above classification.
For example, some of the logical type instructions involve arithmetic operations.
The list which follows may be consulted for corresponding names,
mnemonics, and groups.
11-12-21
M-5035
MNEMONIC
AA
AB
AEI
AFC
AIC
ALP
ANA
ANB
AOC
NAME
GROUP
-
ADO A
ADO B
Arithmetic
ALLOW ENABLE INTERRUPT
ACTIVATE EXTERNAL
FUNCTION CHAIN ON Cj
ACTIVATE INPtIT CHAIN
ON Cj
Arithmetic
Interrupt
Input/Output
Input/Out put
ADO LOGICAL PRODUCT
SUBTRACT A
(Add Negative A)
Logical
SUBTRACT B
(Add Negative B)
Arithmetic
ACTIVATE OUTPUT CHAIN
Input lOut put
Arithmetic
ON Cj
AXC
ACTIVATE EXTERNAL INTERRUPT CHAIN ON Cj
Input/Output
BC
COMPAHE BIT TO ZERO
Comparison
BCW
BUFFER CONTROL WORD
Extension
BCWE
BUFFER CONTROL WORD ESI
Ext ensi on
BS
SET BIT
Miscellaneous
BZ
CLEAR BIT
Miscellaneous
C
COMPARE
Comparison
CG
COMPARE GATED
Comparison
CL
COMPARE LI MITS
Comparison
CM
COMPARE MASKED
Comparison
CNT
COUNT ONES
Miscellaneous
CXI
COMPARE INDEX, INCREMENTED
Comparison
o
DIVIDE A
DOL1~LE ADD A
DOUBLE SllliTRACT A
(Uoubl(! Add Negntive A)
DOt13LE COMPAHE
DOUBLE JUMP A NOT ZERO
Arithmetic
DA
DAN
DC
UJNZ
11-12-20
Arithmetic
Arithmetic
Comparison
Jump
M-5035
NAME
GROUP
DJZ
DL
DOUBLE JUMP A ZERO
DOUBLE LOAD A
Jump
Load & Store
DS
DOUBLE STORE A
Load & Store
FA
FAN
FLOATING POINT ADD
FLOATING POINT SUBTRACT
(Floating Point Add
Negative)
FLOATING POINT SUBTRACT
WITH ROUND (Floating
Point Add Negative with
Round)
FLOATING POINT ADD WITH
ROUND
INITIATE EXTERNAL FUNCTION BUFFER ON Cj
FLOATING POINT DIVIDE
FLOATING POINT DIVIDE
WITH ROUND
FLOATING POINT MULTIPLY
SET EXTERNAL FUNCTION
MONITOR INTERRUPT
REQ UEST ON Cj
FLOATING POINT MULTIPLY
WITH ROUND
ADD (SUM)
All.OW CLASS II INTERRUPTS
STOP PROCESSOR
SUBTRACT (DIFFERENCE)
Add Negative (Difference)
AND
COMPARE, REGISTER
COMPAllli Bb WITH Ba
COMPARE LIMITS, REGISTER
COMPARE MASKED, REGISTER
COMPLEMENT A
Arithmetic
Arithmetic
MNEMONIC
FANR
FAR
FB
FD
FDR
FM
FMIR
FMR
HA
HAl
HALT
HAN
HAND
HC
HCB
HCL
HCM
HCP
11-12-29
Arithmetic
Arithmetic
Input/Output
Arithmetic
Arithmetic
Arithmetic
Input/Output
Arithmetic
Arithmetic
Input/Output
Miscellaneous
Arithmetic
Logical
Comparison
Compari son
Compari son
Comparison
Ar it hmet i c
M-5035
MNEMONIC
HO
HOCP
HOLC
HDRS
HDKZ
HOSF
HK
HLB
HLC
HLCI
HLCT
lIM
UNO
HOR
HPI
HRS
HRT
HRZ
HSCI
HSCT
HSF
HSIM
HSTC
HWFI
HXOR
NAME
GROUP
Arithmetic
DIVIDE REGISTER
Arithmetic
DOUBLE COMrLEMENT A
Shift
DOUBLE SHIFT LEFT
CIRCULARLY
Shift
DOUBLE SHIFT RIGHT
FILL SIGN
Shift
DOUBLE SHIFT RIGHT
FILL ZEROS
Miscellaneous
DOUBLE SCALE FACTOR
Extension
HALF-WORD CONSTANT
' Load & St ore
LOAD 8a WITH 8b
Shift
SHIFT LEFT CIRCULARY
Cont rol Memory
LOAD INTERRUPT CMR
WITH A
Control Memory
LOAD TASK CMR
WITH A
Arithmetic
MULTIPLY REGISTER
Extension
HALF WORD NO-OPERATION
Logical
INCLUSIVE OR A (Logical
Sum)
Interrupt
PREVENT CLASS III
INTERRUPTS
Shift
SHIFT RIGHT FILL SIGN
Arithmetic
SQUARE ROOT
Shift
SHIFT RIGHT FILL ZEROS
Control Memory
STORE INTERRUPT CMR
INA
Control Memory
STORE TASK CMR IN A
Miscellaneous
SCALE FACTOR
STORE 1/0 MONITOR CLOCK Miscellaneous
Miscellaneous
STORE REAL TIME CLOCK
I nt errupt
WAIT FOR INTERRUPT
Logical
EXCLUSI VE OR A ( Logical
Oi fterence)
11-12-30
M-5035
IB
IBS
IBZ
ILTC
IMIR
JBNZ
10
IPI
ITSF
IW
GROUP
NAME
MNEMONIC
INITI ATE I NPIIT BUFFER
ON Cj
SET BIT
CLEAR BIT
LOAn REAL-TIME CLOCK
SET INPUT MONITOR INTERRUPT REQUEST ON Cj
INDEX JUMP (Jump B not
zero)
INITIATE INPUT/OUTPUT
INTERPROCESSOR INTERRUPT
TEST AND SET FLAG
INDIRECT WORD
INDIRECT WORD, SPECIAL
INDEX
INDIRECT WORD, CHARACTER
INDIRECT WORD, CHARACTER
INCREMENT
INDI RECT WORD, SPECIAL
BASE
JUMP
JUMP CONDITION SETTING
JUMP EQUAL
JUMP EVEN PARITY
JUMP GREATER THAN
JUMP GREATER THAN OR
EQUAL
JUMP (I NPUT / OUTPUT )
JUMP LOWER
JUMP LESS THAN OR EQUAL
JUMP LESS THAN
JUMP A NEGATIVE
JUMP NOT EQUAL
JUMP NO OVERFLOW
/
1M3
I\«:
IWCI
IWS
J
JC
JE
JEP
JG
JGE
JIO
JL
JLE
JLT
IN
JNE
JNF
11-12-31
Input/Output
Input/Output
Input lOut put
Input/Output
Input/Output
Jump
Miscellaneous
Interrupt
Input lOut put
Extension
Extension
Extension
Extension
Extension
Jump
Jump
Jump
Jump
Jump
Jump
Input lOut put
Jump
Jump
Jump
Jump
Jump
Jump
M-5035
MNEMONIC
JNW
JNZ
JOF
JOP
JP
JS
JSC
JW
JZ
LA
LB
LBJ
LBMP
LCI
LCT
LDIF
LICM
LIM
LLP
LLPN
LM
LNA
LSUM
LXB
M
MP
MS
NLP
GROUP
NAME
JUMP NOT WITHIN LIMITS
JUM P A NOr ZEHO
JUMP OVERFLOW
JUMP ODD PARITY
JUMP A POSITIVE
JUMP Sy + B
JUMP STOP CONDITIONAL
SETTING
JUMP WITHIN LIMITS
JUMP A ZEHO
LOAD A
LOAD B
LOAD B AND JUMP
LOAD BASE AND MEMORY
PROTECTION
LOAD INTERRUPT CMR
LOAD TASK CMR
LOAD DIFFERENCE
LOAD IDe CONTROL MEMORY
LOAD, ENABLE IOC MONITOR
CLOCK
LOAD LOGICAL PRODUCT
LOAD LOGICAL PRODUCT
NEXT
LOAD MAGNITUDE
LOAD NEGATI VE
LOAD SUM
LOAD A & INDEX B
MULTIPLY A
MEMORY PROTECTION
SELECTIVE SUBSTITUTE A
SUBTRACT LOGICAL PRODUCT
(Add Negative Logical
Product)
11-12-32
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
;Load & St ore
Load & Store
Jump
Load & Store
Control Memory
Control Memory
Load & Store
I nput/Out put
Miscellaneous
Logical
Logical
Load & Store
Load & Store
Load & Store
Load & Store
Arithmetic
Extension
Logical
Logical
M-5035
MNEMONIC
NOOP
OB
OMIR
OR
PEl
RA
RALP
RAN
RD
RI
RJ
RJC
RJSC
RLP
RMS
RNLP
ROR
RP
RSC
RXOR
SA
SB
SC
SCI
NAME
NO OPEHATION
INITIATE OlITPUl' BUFFEH
SET OlITPlIT MONITOH
INTERRUPT REQUEST
INCLUSIVE OR (SELECTIVE
SET)
PREVENT ENABLE INTERRUPT
HE PLACE ADD
REPLACE A + LOGICAL
PHODUCT
REPLACE SUBTRACT
(Replace Add Negative)
REPLACE DECREMENT
REPLACE INCREMENT
RETURN JUMP
RETURN JUMP CONDITIONAL
RETURN JUMP STOP CONDITIONAL SETTING
REPLACE LOGICAL PRODUCT
REPLACE MASK (SEL. SUBSTITUTE)
REPLACE A - LOGICAL
PRODUCT (Replace Add Negative Logical Product)
REPLAC,E INCLUSIVE OR
(Replace Selective Set)
REPEAT
REPLACE S~LECTIVE CLEAR
REPLACE EXCLUSIVE OR
(Replace Selective Complement)
STORE A
STORE B
SELECTIVE CLEAR
STORE INTERRUPT CMR
11-12-33
GROUP
Extension
I nput / Ou t. put
Input/Output.
Logical
Interrupt
Arithmetic
Logi ca I
Arithmetic
Arithmetic
Arithmetic
Jump
Jump
Jump
Logical
Logical
Logical
Logical
Miscellaneous
Logi ca 1
Logical
Load & Store
Load & Store
Logical
Cont rol Memory
M-5035
MNEMONIC
SCT
SDIF
SICM
SLP
SM
SNA
SSUM
5XB
5Z
TBS
TBZ
TFB
TIB
TOB
TSF
TXB
XB
XMIR
XOR
XR
XRL
XS
ZA
ZR
NAME
STORE TASK
STORE DIFFERENCE
STORE IOC CONTROL MEMORY
STORE LOGICAL PRODUCT
STORE MAGNITUDE
STORE NEGATIVE
STOHE SUM
STOHE A AND INDEX B
STORE ZERO
TEST BIT SET
TEST BIT CLEARED
TERMINATE EXTERNAL FUNCTION BUFFER ON Cj
TERMINATE INPUT BUFFER
ON Cj
TERMINATE OUTPUT BUFFER
ON Cj
TEST AND SET FLAG
TERMINATE EXTERNAL INTERRUPT BUFFER
INITIATE EXTERNAL INTERRUPT BUFFER
SET EXTERNAL INTERRUPT
MONITOR INTERRUPT
REQ UEST ON Cj
EXCLUSIVE OR (SELECTIVE
COM PLEMENT )
EXECUTE REMOTE
EXEClITE REM(YfE LOWER
ENTER EXECUTIVE STATE
CLEAR A
CLEAR B
11-12-34
GROUP
Control Memory
Load & Store
Input lOut put
Logi cal
Load & Store
LOnd & Store
Load & Store
Load & Store
Extension
Input/Output
Input/Output
Input/Output
Input/Output
Input/Output
Miscellaneous
Input/Output
Input/Output
Input/Output
Logical
Miscellaneous
Miscellaneous
Miscellaneous
Extension
Extension
M-5035
Change 1
12.4.1
Load and Store Instructions
Generally, load instructions load a register or rt!gisters with:
1)
th(' con-
tents of memory; 2) the contents of memory plus or minus the contents of im
accumulator register; or 3) the contents of memory in absOlute magnitude or
complemented.
In format I instruction, k is the normal read designator.
instructions store the following in memory:
or registers; 2)
registers; or 3)
plemented.
1)
Store
the contents of a register
the sum or difference of consecutively numbered accumulator
an accumulator register in absolute magnitude or com-
The following are the formats for load and store instructions:
DOUBLE LOAD A
)'l''1Z!l'I, zr IZl u12-1 n n12 '1 ° "1'11'7 " '51'-I's "I "I ,01'J 11 71'1 51 41 sI I I ' 10
'
n
05
4
b
i
s
DL
Y
a,y,b,s
Not character addressable.
Not repeatable.
Load the double length register (formed with the lease significant half
in A and the most significant half in A +1) with the content of the
a
a
double length memory word, formed with the least significant half as (Y)
and the most significant half as (Y + 1).
OOUBlE STORE A
"l'~ztlZlIZ7II'
02
ula-In ul"IIO "1'11" " 111'-1"
()
7
b
i
'~1I1'01',11 7J '1 51 4 1s I zI
s
y
Not character addressable.
Not repeatable.
11-12-35
'1 0
DS a,y,b,s
M-5035
Change 1
Store the content of the double length register (formed with the least
significant half in Aa and the significant half in A + ) at the
a l
double length memory word (formed with Y as the least significant half
and Y + I as the most significant half).
LOAD A
a
10
y
k
b
i
s
y
LA a,y,k,t,s
s
y
LXB a, y , k, b , s
-A.a
Load A with Y.
a
J~JjEX
LU ..\lJ ..\.\ND
11
a
B
k
___ ---l. •..•.. .____ "_
y - ., " (B.)
a
lJ
·1
1 -.. B
h
Not rl:'peat.able.
Load Aa
~ith
Y and add one to (B ).
b
LOAD B
!'1sOTziTzlfzifn ulz.lu utzllzo "T'll,1' II ',TI411! lifliTlo\'\ll1TITaj41 sTzTi fo
20
a
I
k
b
i
s
y
LB a,y,k,b,s
w_
Y .... B
-.
lhe
M
~
suh-field specifies an index register.
Load B with Y.
a
If 8
a
is 8 , the effect is a no-operation.
0
11-12-36
M-5035
Change 1
LOAU BASE ANU MEMORY PROTECTION
"i,Tiolz'tlzllulze u1z.123 ZZ[I'lZO 111'1117 II ,sl'.I" 'zl''I,01111(1('1 s141' I z I'
OS
4
;)
b
i
s
(0
Y
LBMP a,y,b,s
Y - Sa
Y + 1 - SPR a
S - SIRa 19-17
y + (Bo)
- SIRa 15-0
b
Not character addressable.
Not repeatable.
This instruction loads the task state base register, specified by the afield, with the lower 18 bits at address Y, and loads the Storage Protection Register specified by tha a-field, with the lower 21 bits of
address Y + 1.
The Segment Identification Register, specified by the a-
field, receives the s-field value in bits 19 through 17 and the sum of
y+
(BD~
in bits 15 through O.
This instruction can be executed in the
task state under the following conditions:
1.
Bit 0 of the Active Status Register must be set.
2.
The s-field must equal seven.
3.
The a-field must not equal seven.
A violation of these conditions shall cause a privileged instruction
int~rrupt
(class II).
The following condition applies to this instruction in both the task and
interrupt states:
The'17-bit relative address quantity, y + (BO)b must be an even number.
Its violation shall be an illegal instruction error causing a class II
interrupt.
11-12-37
M-5035
Change 1
LUAD B
WITH B
b
n
I'
I ,.
r ,T 2 J
I
I
I I
J10
-r-T7
7-1
312
3
H
(B
'I s I"
II
°
j
h
IILB a,b
) - Ba
t)
Thp
a sub-field specifies an index register.
Load Ba with (B b ). If Ba is Bo' the effect is a no-operation.
n ,H is cleared to zero.
o
If Bb is
a
U }t\/l J) I FFERENCE
31
T,01u12l1z "\21 uh"{u ulZllzo "\"1 '1 " 15114jl' 121"1101'1117111114111 zI' 10
k
()
12
Load
a
Y
,
LDIF a,y,k,b,s
(A ) i = (A ) f
y - (A ) ..... A
-
s
i
b
a+1;
a
a
Aa+l with the difference formed by subtracting (Aa) from
I.
remnins unchanged.
LOAD MAGNITUDE
"T,0InI2lIz 7121 ulz 41u ulzllzo "1 )'7
"
17
k
()
b
I' 1511411' 121"110I'J 1171-1114111 zII 10
i
s
LM a,y,k,b,s
y
-A a
Load A with the absolute value of
a
LOAD NEGATIVE
"I,oInf2l1Z1(z, z51z 4Tu ulz1fz o "1 1'7
"
] /,
"
k
lJ
I.
I' 11'1'41'1 121"1101'1111111114111
i
s
y
Z
1'10
LNA a,y,k,b,s
Y' - A
Cl
l.oaci t\
Cl
wi th the logical complement (ones complement) of Y.
I 1-12-38
(A )
a
M-5035
Change 1
LOAU SUM
31\30\21\21\ 21 121 u\z.\n uT2 11zo "1 '11'1 II IsII.I" 'alII I'01'1111 11\ a\4 I ' \ z \ ' \ 0
k
a
l~
h
i
LSUM a,y,k,b,s
y
s
-Y + (A a ) - Aa +1; (A a ).1 = (A a ) f
Load A + with the sum of I and (A a ).
a 1
(A ) remains unchanged.
a
STORE A
31\3012l\ZII21\2I u\Z 4 ln Ullllzo "1 11 '1 ,. 'sl'·I" Izl" 1'01. Til 7T. Ta14 1' \ 2 I' 10
'
()
s
k
y
b i
24
SA a,y,k,b,s
(A ) - Y
a
Store (A ) at Y.
a
STORE A AND INDEX B
3113012l\111 21 lz, ulz 41n 1211'110 "1'11 '7 ,. 'Sl '.[1' 'aI' , I'0 I., I 171.1a I 4 III 2I ' I0
25
II
k
b
i
s
y
SXB a,y,k,b,s
Not repeatable.
Store (Aa) at Y; add one to (B ) and store the sum !n the Bb register.
b
STORE B
311Io121lz112112. u\a4\n 12111 lao "1 11,7 ,.
'
a
k
b i
23
"r'·l"
s
,aT"T,ol. TIT 7T. TSI.III 2I ' 10
y
(B ) -
a
y.
The a sub-field specifies an index register.
Store (B ) at Y .
a
II-12-:l9
SB a,y,k,b,s
M-5035
Change 1
STUHL IHFFEHENCE
311)0129121127121 2~124123 221 Zl lzo 1'1 11 111 II 1!l11411)
0:2
6
()
h
1~llllol'11111~I!l14Islzl
s
j
I 10
SDIF a,y,b,s
y
~---------
Subt
rClC t
(Aa)
from C'(1+1).
The resul t is noted rtt
Y
and Aa+lo
(A )
a
remnins unchrtngedo
STORE
~lAGNITl!DE
SM a,y,k,D,s
Stor e the mel 9 nit u de
0
f (A )
el
~t
Y.
STORE NEGATIVE
'I1,01n1zel27l21 ul z41n zz111 1zo 1t111111 II 1511411) Izl"II01' 111' I I 151 41 s I z II 10
20
k
()
b
i
s
SNA a,y,k,b,s
y
(A )' - Y
rt
Telke the complement of (A ) and store the result in Y.
el
STORE SUM
________
~
__
~
5
b
____-L____
Add (Aa) to (A + ).
a l
unchanged.
~
s J __ _ _ _ _ _ _ _ _ _y_ _ _ _ _ _ _ _ _ _
____
~
SSUMa,y,b,s
The result is stored in Aa+land Y.
11;..12-40
(A ) remai ns
a
M-5035
Change 1
12.·1.:2
Tht·sc·
Arithml'tic Instructions
i~:sl rllc'i()n~ chnn~,('
Sl)('(~ifipd
ttw conU'nl.s of a
rf'~JistC'r
or r(luislc'rs
accordinu to the operation sppcifif'd, except for ttw replacp instructions
which also modify the contents of memory.
Some instructions in the LOAD AND
STORE and LOGICAL sections also involve arithmetic operations.
ADD A
311501nlllll1l21 ul2-ln 1212 '(20 "1'11"
1·1
k
(]
b
'I
i
III'-I's
'~"1,01'111111ItI415rzr'To
s
y
AA a,y,k,b,s
(A ) + Y - A
a
a
Form the sum of (Aa) and
¥b and store the result in Aa.
ADD (SUM)
151 1_1']1 12 1"1'0 .J I t 1 11 5/ 4 3/ Z I' ?1
71
1
a
b
i
llA a,b
Form the sum of (Aa) and (A b ) and store the result in Aa.
ADD B
]1150In/lIll1l21 ul2-ln ul2'lzo 111'11"
21
a
k
b
'I
i
'II'-I's Izi "110111111 III It 141 1I z II r0
s
Y
AB a,y,k,b,s
(B a ) + -Y - Ba , where reference is to an index register in sub~field a.
If Sa is Bo ' the effect is a no-operation. k is normal read.
COMPLEMENT A
151'-111112111110 '111
70
'
II III- 31zl1 0
a
2
b
i
HCP a
(A )' - A
a
a
Complement (A ) and store the result in A .
a
a
11-12-41
M-5035
Change 1
UIrIUE A
311301u12l1271za 2512 .1 23 2212 '1 20 "1"1 11
,n
h
k
()
( . \ () -.-',1' Aa ) •
'I
'51'.1'5 Izl"llol'l_P 11 1'1 4 15 1z1 '1 0
j
r :. . Aa ;
s
U a,y,k,b,s
y
rf'mn i nder ..... A
H+]
IJi\'id(' I hi' content of t h(' dOllu1(' length register (formed with the least
si~lnifican1
half in Aa and tIl(' most significant half in A + ) by Y. The
a 1
quot ient is stored in A and the remainder in A I" Uivide overflow
a
a+
shaJ I occur if the quotif'n1. exceeds 31 data bits and one sign bit.
DJ\,IUE HI·:C;lSTEH
'51'.('51 12 1,,110 -'1'1 ' II ~l. 31 zI'
/.\
()
II
I
0
i
1m
[J,
h
(~ () -+l' A) ~ CAb) - A() ; rf'mainder - Aa+l
,
Divide the double length
n~gister
(formed with (Aa) as the least signi-
ficant half and (A +]) as the most significant half) by (A ). The
a
b
quot ient is stored in Aa and the remainder' in A + " (Ab)i = (Ab)f if
a l
a I band a+1 t b.
DOtJBLE ADD A
os
b
s
DA a,y,b,s
y
Not character addressahle.
Nol
r('IH-'atahlc.
Form the sum of the content of the double length register (formed with
t 1](' ]('ast significant half in Aa and the mostsignificatn half in A + )
a l
and the content of the doublf' length memory word (formed with the least
significant half at Y and the most significant half at Y+ 1).
I('nst siunificant half of
th(~
Store the
n'sult in A and the most significant half
a
1 J -l2-12
M-5035
Change 1
UOUBLE COMPLEMENT A
1'1 "lis 112111110 '111 ' -I' ,_ I I Z II
70
3
()
0
B[iep a
i
h
Complement the double length register (formed with (A ) as the leRst
a
significant half, and (A a + ) as the most significant half} and store the
1
most significant half of the result in Aa+l and the least significant
half in
. Aa .
OOUBLE SUBT RACT A
05
2
b
s
..L-_--L.-'--_~
DAN a,y,b,s
Y
_ _ ._ _ _ _ ._... _ _ _ _ __
Not character addressable.
Not repeatable.
Subtract the content of the double length memory word (formed with the
least significant half at Y and the most significant half at Y + 1) from
the content of the double length register (formed with the least
signif~
icant half in Aa and the most significant half in Aa+ l ). Store the least
significant half of the result in Aa and the most significant half in
Aa+ l •
FLOATING POINT ADD
311501111 ziia '111 ulz-In Uli l l20 1'1.11 11 II ISl14rl3
06
n
0
b
i
s
1~lijl~.T'1111Isl-lllzll
Y
Not character addresable.
Not repeatable.
11-12-43
10
FA a,y,b,s
M-5035
Change l'
Compare thp characteristic stored at Y with the characteristic located in
the lower 16 bits of A. The mantissa located at Y + 1 or the mantissa
a
located in Aa+l is tlH'n shifted, depending on the comparison of the
characteristics.
+ 1) is then added to (A + ). The normalized shift
a l
count is t.hen subtract(~LI from, or added to the final characteristic 10(Y
cat.pd in A •
a
. FLO,\TI;'\(; POI:'-JT AUD WITH
HOl~ND
fj\ rl
Cl,
Y , b , s·
Not character addressable.
Not rep{'atab1e.
Compare the characteristic stored at Y with the characteristic located
in the lower 16 bits of A.
The mantissa stored at Y + I or the mantissa
a
located in Aa+l is shifted, depending on the comparison of the characteristics.
The final mantissa is
round~d
as required.
The normalized
shift count is subtracted from, or added to, the final characteristic
located in A .
a
FLOATING POINT DIVIDE
31130129121121128 25 124123 2211 1120 111 1'1 17 II 1511411S 121"11011 I '17 II 151 .. 131 2 II 10
.)
U()
()
,)
b
i
S
Y
FD a,y,h,s
Not character addressable.
Not repeatable.
Sllbt
ract t he characteristic located at Y from the characteristic located
in the lower 16 bits of A. The mantissa located in A I is then divided
a
~
hy the mantissa located a1 Y + 1. The. final mantissa located in Aa+1 is
norma] izcd right one place if necessary and the characteristic adj usted
accordingly.
J] -12-4,1
M-5035
Change 1
FLOATING POINT DIVIDE WITH ROUND
7
U6
s
b
y
FU H
(l,
Y, 1>, s
Not character addressable.
Not repeatable.
Subtract the characteristic located at Y from the characteristic located
in the lower 16 bits of Aa.
The mantissa located in Aa+l is then divided
by the mantissa located at Y + 1. The mantissa located in Aa+l is normalized right one place if necessary and the characteristic adjusted
accordingly.
The final quotient mantissa, (A + ), is rounded as required.
a l
FLOATING POINT MULTIPLY
r--r.
'~ 1":~O:"9Iz'lz11z.
06
nlz-In Ull11 Z0 1'111111 II Isj ,-jls
(l
2
h
i
'2j"jlol II IUI-lsI"lsl z111c
s
y
FM a,y,L,s
Not character addressable.
Not. repeatable.
Add the characteristic located at Yto the characteristic located in the
lower 16 bits of Aa.
The mantissa located in Aa+l is then multiplied by
the mantissa located at Y + 1.
The final mantissa located in Aa+l is
normalized left one place if necessary and the characteristic adjusted
accordingly.
FLOATING POINT MULTIPLY WItH ROUND
FMR a,y,b,s
Not character addressable.
Not repeatable.
M-5035
Change 1
Add the characteristic located at Y to the characteristic located in the
IOl\'('r }() bits of Aa'
The
mantissa located in Aa+l is then multiplied by
thf' mantissa located at Y + 1. The mantissa located in Aa+l is norma I ized left one place if necessary and the characteristic adjusted
accordinuly.
Thc final mantissa,
(A + ), is then rounded as required.
a l
FLUr\TI\(; P!)I\T St:BTRACT
]11]01 291"1 21 121 2512·lu 221 Zl lzo 11111117 II 1511.(1] 1211 q 10111'1 7III '1 415 I z III °
(II )
- -- --
-
--
il
I'
t>
s
i
Y
FAN a,y,b,s
..
Not character addressable.
Not repeatable.
Compare the characteristic stored at Y with the characteristic located in
the lower 16 bits of A. The mantissa located at Y + 1 or the mantissa
a
located in Aa+l'is then shifted depending on the comparison of the charact.t~ristics.
is then subtracted from the (A + ). The normalized
a l
shift count is then subtracted from, or added to, the final characteristic
(Y + 1)
located in A ,
a
FLOATING POINT SUBTRACT WITH ROUND
5
11]01211 nl 27 In 2512·lu 2212 1120 "1 1'1 17
() I)
:1
5
h
II
j
1511.11] 12111110 II I '1 7I-I 5141 5 I 2I I 10
s
Y
FANR a,y,b,s
Not character addressable.
Not. repeatable,
Compare the characteristic stored at Y with the characteristic located
in
lower III hits of A. The mantissa located at Y + I or the mana
tjssa ,located in Aa+ I is shifted depending on the comparison of the
characteristics. (Y + 1) is then subtracted from(A + ). The final
a I
manf issa is rounded as required. The normalized shift count is then
tlH~
suhtracted from, or added to, the final characteristic located in A •
a
I I -12-46
M-5035
Change 1
Mll.TIPLY A
3,13012112112 'In nT241n ul 21 1zo Itllll17 I- 1111_11' Izl"llo f t f I f 7I_ 1'1-1 , I z II 10
,10
()
k
i
b
y
s
.-
~1
Cl, Y, k , b , ~;
Multiply (A ) by I, store the leClst signific,Rnt half of the double length,
(1
result in AR' and the most significant half in ACl+lo
MULTIPLY REGISTER
1'11411'1'21"110 .1117 -1'1- 3121 1 0
74
a
0
j
11
~.b
HM
M~ltiply
(Aa) by (A ). The least significant half of the double length
b
result is stored inA , and the most significClnt half in Aa + · (Ab)i =
l
a
(Ab)f if a 1 band a+l # b.
REPLACE ADD
Si
lsoTu12lTuT2I uTz-ln ulzllzO 1'1 11 111
'i
a
i
34
k
b
111'4115 ,zl"IIO It I I (1 (-( 'I 4 J SJ Z II J0
s
Y
RA a,y,k,b,s
Y + (A ) - Y and A +1;' (A ). = (A )
-
a
a
a1
af
Form the sum of ! and (A >, and store the result at Y and A
•
. a
a+]
remains unchanged.
I 1-12-47
(A )
a
M-5035
Change 1
HLPL\CL INCRE\lENT
___ L
s
_;_1- - 1 . . . _
~
y
Lo ad
t\
y
~---~~--~--------------------~
HI a,y,k,b,s
I - A{] and Y
with I, then add one to (A ) and store the result at A and Yo
(1
a
a
REPLACE DECRE'lENT
k
Y - I
--+
y
s
b
RD a,y,k,b.s
A and Y
a
Load A wi th
a
r.
then sub trae t one from
(r\ )
a
and s tore the resul tat A and Y.
a
REPLACE SlJBT RACT .
'IJJOl211 Zll 27121 nl2 41n UI21[ZO
a
36
IIJ
k
lll 11
II
h
i
l'll411S 121" 110 I • I I 11 I lIs 141 SJ 2J I 1 0
s
Y
RAN a,y.k,b,s
-Y - (A a ) - Y a nd Aa +1; (A a ).1 = (Aa) f
Subtract (Aa) from
unchanged.
ro,
then store the result in Y and A + .
a l
(A ) remains
a
SQUARE ROOT
l'lI41ISI'21"1IO 11117 lis 14 S\z II 0
74
a
h
i
HRT a,b
Calculate the squ:.re root of fhe content of the double length register
(formed with the- most significant half in Aa+ I and the least significant
half in AaL The result is stored in Ab and the residue is stored in
Ab+lo
(A +1). = fA
a
J
)
a+ 1 f
if a+l
1:
band a+l
:f b+l
if a :f b and a :f b+l
lI-12-tlB
M-5035
Change 1
SUBTRACT (UJ FFEHENCE)
',sri-II'I,zl"llo 11111 'I ~ 14 31z r I 0
n
71
2
i
h
. l:AN n, h
(A ) - (A ) - A
a
b
a
SUBTRACT A
,,130fu lzII 11111 nil-In 12111\10 11111111
a
13
k
II I~I
b
i
14113 121"110111'11 1'1 ~ I 41 3I 11110
s
ANA a,y,k,b,s
Y
(A ) - Y - A
a
-
a
Subtract Y from (A ) and store the result inA.
a.
a
SUBTRACT B
31 130lulzalulll nlz-In ZZl111z0 111 1'1 11 I' 11.11-113 111"1 10111'1111111-1 3I IT ITo
a
~~
k
(B ) - Y ..,.. B
8
-
a
b
i
s
Y
ANB a,y,k,b,s
a = index register
Subtract Y from (B ) and store the result in B.
a
a
is a no-operation.
11-12-49
If B is B t the effect
a·O
M-5035
Change 1
12.4.3
Jump Instructions
There are 20 jump instructions and all are Format III. Zero is the only
possible value in the K field of an assembled jump instruction, so the
Assembler ignores any value in the k sub-field of a corresponding source line.
In the descriptions below, Y is regarded as a relative address formed by
adding
b )15_0 to y zero extended. If the jump is taken, this quantity is
transferred to P(15-0) and the s-designator is transferred to P(19-17). If the
jump is not taken, the next instruction in sequence is executed.
(B
JUMP
s
h
3
y
J y,k,t,s
y - P
Jump unconditionally to address Y.
INDEX
JC~lP
~ll,ojnl21121j2'
2512-123 nl21 20 "1'11'7
<,
.J",
r:
(J
If (B a )
If Ba
I
~
)
h
'I
i
'511_(" '21"1,01'llj71111141112111o
s
JBNZ a,y,k,b,s
Y
0, then (B ) - 1 - B , and jump to Y.
= B0 ,
a
a
If (B a )
= 0,
take NI.
the effect is a no-operation ..
DOUBLE JUMP A NOT ZERO
"110119121121121 251 2-1 23 n12' 20 "1 111'1 'I '51'-('3 '2("llol'1111111514131211{0
50
,)
3 ) h
s
i
Y
DJNZ a,y,k,b,s
If (Aa+l' Aa) ~ 0, jump to Y.
where (Aa+l' Aa) is the contents of
by Aa+l and Aa'
I I -12-50
~he
double length register formed
M-5035
OOUBLE JUMP A ZERO
51T50TullllulZl ul1 41n 21111 10 1'11'117 II 11114115 111"llol'I'1 7 1-111 415111ITo
a
SO
2
)
h
s
i
y
DJZ a,y,k,b,s
If (A a + , Aa) = 0, jump to Y.
l
where (A a + , Aa) is the contents of the double length register formed
1
by Aa+l and Aa·
JUMP A NEGATIVE
SITsoIullllUIZI ull·ln 21111 10 "11'117 II 11)14)IS 111"1101 '1.!7 1-!11 4151 aT 110
a
51
1
P
s
i
b
y
JN a,y,k,b,s
If (A ) < 0, jump to Y.
a
JUMP A NOT ZERO
51150Iulll[U[Z1 ul1 41n 21111 10 1'1 111 17
a
51
3
p
b
II
11114111 11111110111'17 I-I 1141 5[ a II r0
s
i
y
JNZ a,y,k,b,s
If (A ) 1 0, jump to Y.
. a
JUMP A POSITIVE
5tl501ulilluiZi ula 41n 21111 ao 1111'117
51
a
If (A )
a
0
~
p
b
II
11114111 111"llolll.!71111141 I I I II 10
i
s
y
JP a,y,k,b,s
0, jump to Y.
JUMP A ZERO
II [lolulallulll ul1 41n 21111 20 1'11'117 II 11114111 121"1 10 111'1 7 Illl)4ls h II 10
51
a
If (A )
a
2
= 0,
p
b
i
s
y
jump to Y.
11-12-51
JZ a,y,k,b,s
M-5035
JUMP .CONDITIONAL SETTING
31130121121127121 ul2 41n nlll 20 "1'11'1
3
a
53
'51'41" 121"1'01'11111_111411121' 10
s
i
b
)
II
JC a,y,k,b,s
Y
If the value of the a sub-field, (1, 2, or. 3) corresponds to a manua 1
switch which has been selected, then jump to Y.
SPECIAL
a-VALUE
FUNCTION
PERFORMED
1
2
Jump if switch 1 is selected
Jump if switch 2 is selected
Jump if switch 3 is selected
3
JUMP CONDITIONAL STOP SETTING (PI)
"11012112'121121 25(241n nlll 20 "1"('1 I_ 151'41" 121"110 (. I '1 1 (- I 51 411( 21110
53
3p b i s
a
JSC a,y,k,b,s
Y
If the value of the a sub-fie·ld (4,5,6, 'or 7) corresponds to a manual
switch setting, then stop the,processor, and transfer Y to P.
FUNCTION
PERFORMED
SPECIAL
a-VALUE
Always stop, then jump.
Stop and jump if switch 5 selected.
Stop and jump if switch 6 selected.
Stop and jump if switch 7 selected.
4
5
6
7
JUMP EVEN PARITY
"l'01u(2'121(2' ul241n nlll 20 "11'1'1
;'0
a
0
b
b
II
i
1511411' ,21111,0('1111 1-1514( .( 21110
s
Y
JEP a,y,k,b,s
If the logical product of (Aa) and (A a + ) contains an even number
l
of binary ones, jump to Y.
11-12 -52
M-5035
JUMP EQUAL
I'IJolnla'luJu nla-l u lulll ao 1'111111 .. 111 1_1 11 lal" J101'1 11 II J114) II a II 10
'
;,
;,:\
0 h ~ s
Y
JE y,t,b,s
If CD is set to equal, jump to Y.
JUMP GREATER THAN
3113OJZt121jUJU ulz-lululll 20 "1 11 111 .. 1111-J13 lalllllol'l '1' I' I • 14 ' S I a 'I 10
11
53
0
b
~
s
Y
JG y,k,b,s
If the CD is set to greater than, jump to Y.
JUMP GREATER THAN· OR EQUAL
31Isolnlz·lz1IZ. nlz-Iuluizi zo 1'1 11 111 .. 1'1 14 113 lal li llol' III' Ill s1 4) s la 111 0
15
53
0
b
s
i
Y
JGE y,k,b,s
If the CD is set to greater than or equal, jump to Y.
JUMP LESS THAN
311s01ZtlZIlUlu ulz-lululz I 20 "111111 .. Isll-113 lall II 10 1' III' IIIsl41 s 1111 10
21
53
0
b
~
s
Y
JLT y,t,b,s
If CD is set to less than, jump to Y.
JUMP LESS THAN OR EQUAL
sllsolnl2'l u lu zslZ4lul22lz I zo "11111' II Isl1411S lal"llol' 1'1' III t 141 s I a II 10
25
53
0
b
i
s
Y
JLE y,k,b,s
If CD is set to less than or equal, jump to Y.
. JUMP LOWER
Jllsol ZtIZl1Z11al uJz-lu 12121 ao "1'11 17 .. Isl1411s lal"llol' Ill' IIIsl41 s1 zJ 110
52
a
3
l>
b
i
s
Y
JL y,k,b,s
Y - p.
L
'
Jump to the 16-bit instruction contained in the lower half of the word
whose
addre~s
is Y.
11-12-53
M-5035
JUMP NO OVERFLOW
,11,0Inlzll21 l21 ulz41nluizi zo 11111117 II Is114!1' IZ!II!10!1!'17 1_11141 • I ZII 10
00
53
0
b
~
s
Y
JNF y,k,b,s
If the 00 is not set, jump to Y.
JUMP NOT EQUAL
'1 1101 n! "121111 ulz41nlulz1 zo "111 !11
53
01
0
b
II
11!14!11 IZ! II!IO!I!II" 1-1114111 ZII 10
s
i
Y
JNE y,k,b,s
If the CD is set to not equal, jump to Y.
JUMP NOT WITHIN LIMITS
'1IIolnIZll u l21 ulz 41nlulzl 20 '11 111 11 II 15114111 121"1 10111'171-lsI411IzI I I0
31
53
0
b
~
s
Y
JNW y,k,b,s
If the CD is set to outside limits, jump to Y.
JUMP ODD PARITY
:!1~'oritri'lzr111
ulz 4!n U!ll zo 1.!11!11
a
50
1 0
b
II
i
IS!14!IS IZ!II!10!.!.!1 !I! 5!4111 z II 10
s
JOP a,y,k,b,s
Y
If the logical product of (Aa) and (Aa + > contains an odd number of
l
binary ones, jump to Y.
JUMP OVERFLOW
sllsolnlzllulZ. ull4lulUIZI ZO 1'1 111 11 I- 11114!11 IZ!II!101'1111 I_III 41 II ZII 10
50
04
0
b
~
s
Y
If the 00 is set, clear 00, jump to Y.
11-12-54
JOF y,k,b,s
M-5035
Change 5
JUMP SY + B
31110lulzIII11u ululu uIzl 10 "111117 I' 11114111 111"1 10 1'111 711 I 114111 Z II 10
52
2
n
)
h
i
s
Y
JS s,y,k,b
Jump to Y, where Y in this case is defined as the address formed by
the 16-bit sy-field and indexed by (B b )15-O. The base register
designator, (B b )17-l9' is transferred to P17 - 19 . An example of
usage of this instruction is as an exit from a subroutine entered
through the LOAD B AND JUMP instruction.
JUMP WITHIN LIMITS
3111011111111 iJu ull-[uluI21 201'1 111 17 II 1.1 '4)1' 111"1101'1111 1'1.141.1 Z II 10
53
35
0
b
s
~
Y
JW y,k,b,s
If the CD is within limits, jump to Y.
LOAD B AND JUMP
SII,oll'IIII21111 ull·lu ull' 10 1'1 11 111
52
o0
a
b
I' '11141"
i
s
tll"IIOltII111'1114Islzll [0
LBJ a,y,k,b,s
Y
The a sub-field specifies an index register.
Load B with the
a
contents of P (address of NI).P19-l7 ... Ba 19-17' P15 - 0 .. Ba 15-0·
Jump to Y. If B = B , no address is saved and an unconditional jump to Y occurs.
a
0
RETURN JUMP
11)10111111121111 1SI141ul nil I 10 "1'11" 'I "1141" 111''1'01'1111 1'111 4Islal' 10
53
02
0
b
P, (address of NI)
~
s
Y
-I. Jump to Y+l.
11-12-55
RJ y, I< , b, s
I
M-5035
RETURN JUMP CONDITIONAL SETTING
IIIIolz t lzel:t1lz, 2512 4 125 2212.1 20 Itll'117
a
53
.2
0
b.
It
i
15114111 121111101 t 1117 1.111411 12 II 10
s
RJC a, y , k , b ,s '
y
If the value of the a sub-field (1,2, or 3) corresponds to a manual
switch which has been selected, then execute the Return Jump,
(see RETURN JUMP instruction).
FUNCTION
PERFORMED
SPECIAL
a-VALUE
Return jump if switch 1 is selected.
Return jump if switch 2 is selected.
Return jump if switch 3 is selected.
I
2
3
RETURN JUMP CONDITIONAL STOP SETTING (PI)
1111012912'127121 1512 4125 22121 20 11111117
a
53·
2 0
b
II
i
15114111 121"1 101.1.1711111411121110
s
Y
RJSC a,y,k,b,s
If the value of the a sub-field (4,5,6,7) corresponds to a manual
switch which has been selected, then stop before executing the
Return Jump (see RETURN JUMP instruction).
FUNCTION
PERFORMED
SPECIAL
a-VALUE
4
5
6
7
Always stop before execution of
Ret urn Jump.
Stop if switch 5 is selected,
Ret urn Jump.
Stop if switch 6 is selected,
Ret urn Jump.
Stop if switch 7 is selected,
Return Ju~p.
11-12-56
M-5035
Change 1
1:2.;1.4
instructions involvinq Comparison Operations
All the instructions in this,group set the compare designator according to
conditions indicated.
They are usually followed by one of the jump instructions
which act upon the condition of the compare designator.
,II'olulZII Z7 lz1 nlz-In zzlz'IIO 11111111 " 1511-111 121" 1101'1111 I. 11141 112 (I
44
a
(A):
a
k
b
i
s
y
!; set CD
Compare (A ) with I, and set the CD to:
a
Equal, if (Aa) =
Une~ual, if (Aa)
X
¥X
Greater than or equal, if (Aa )
Less than, if (A ) < X
a
~
X
COMPARE, REGISTER
'51'-11'('21 11 110 '1111 .'SI4 'I Z II 0
74
4 b
i
a
HC a,b
Compare (Aa) with (A ), and set the CD to:
b
Eq ua l, if (Aa) = (-\)
Unequal, if (Aa) ¥ (A )
b
Greater than or equal, if (Aa)
Le sst han, i f (A a) < (A )
b
~
(A )
b
11-12-57
(0
C a,y,k,b,s
M-5035
Change 1
COMPARE Bb WITH Ba
74
a
7
b
HCB a,b
i
Compare (B ) with (B ), and set the CD to:
a
b
Equal, if (Ba) = (B b )
Unequal, if (Ba) ~ (B b )
Greater than or equal if (B ) ~ (Ba)
b
Less than, if (B b ) < (Ba)
COMPARE BIT TO ZERO
)11501nI2l121121 nl2-ln u121lzo 1'11'117 II Isl14111 121 11 110 1' 1'17 111114111 aT 110
a
42
(Y)
ak
: 0:
k
s
i
b
BC ak,y,b,s
y
set CD
Not character addressable.
The ak-designator specifies the bit of (Y) to be compared to zero where
O$ak~31.
Test the bit specified by the ak-designator; then set the CD to:
Equal, if (f)ak= 0
Not equal, if (Y)
ak
10
COMPARE GATED
IIlloln12l12 112. 15124121 2112 1120 1'1 1'1 17 II IsI14111 121 I I1101' 1'1 7 1III14111a I I10
47
a
k
b
(A
i
s
CG a.y,k,b,s
y
a+1); set CD
Compare the absolute value of Y - (Aa) with (Aa+1)v and set the CD to:
Equal, if I!
Unequal, if
,! -
(Aa)1
= (Aa +1 )
(Aa)1
# (A a +l )
Greater than or equal, if I! - (Aa)1
Less than, if
11: -
(Aa)
I
<:
(A a +1 )
11-12-58
~ (A a + )
1
M-5035
Change 1
COMPAHE INUEX, INCHEMENT
1'llolnIZllz712. nla-In Ull'12O '11'11" ,. '11'-111 '21"1101'111711111411121 I 10
43
a
k
i
b
s
Y
CXI a,y,k,b,s
If (B ) ~ X, 0 - B and set CD outside limits:
a
a
If (B ) < XV (B ) + 1 - B and set CD within limits.
a
a
a
a - equals B register designator.
Set the CD for outside limits and clears B if (B ) ~ Y.
a
aincrement (B ) by one and set the CD for within limits.
a
COMPARE LIMITS
a
45
( A)
a'
(A
k
a+1
)
.s
i
b
y
y. set CD
-'
Compare (Aa) and (A + ) with
a l
X.
Within limits, if (A +1) > Y
~
a
-
Set the CD to:
(A )
Outside limits, if Y < (Aa) or !
a
~
(A a + 1 )
COMPARE LIMITS,· REGISTER
,
0
i
HCL a,b
Compare (Aa) and (A + ) to (A ) and set the CD to:
a l
b
Within limits, if (A + ) > (A ) ~ (Aa)
a 1
b
Outside limits, if (A + ) ~ (A ) or (A ) < (Aa)
a l
b
b
11-12-59
Otherwise,
CL a,y,k,b,s
M-5035
Change 1
COMPARE MASKED
1lllolzlllIlnl21 ulz-(n zzl211zo 11111117 II 1511-111 Izl li llollll17 Illsl"l I I zI I} 0
46
a
(A
a+l
k
b
s
i
Y
CM a,y,k,b,s
): (A )0 y. set CD
a
-'
Compare the logical product of (Aa) and Y with (A + ) and set the CD to:
a l
Equal, if (A +l ) = (Aa) 0 !
a
Unequal, if (A a + ) f:- (Aa) 0 !
l
Greater than or equal, if (A a +l ) ~ (A a ) 0 y
Less than, if (A a +1 ) < (Aa) 0 !
COMPARE MASKED, REGISTER
1511-1 111 121"1 10 11'17 Ilsl- 11211
74
a
(A +
a l
6
)0 (Aa) :
0
HCM a ,b
i
b
(A ); set CD
b
Compare the logical product of (A ) and (A + ) with (A ) and set the
a l
b
CD to:
a
Equal, if (A a +1 ) 0 (Aa)
Unequal t if (A a +l ) 0 (Aa)
=\
f
Ab
Greater than or equal, if (A a +1 ) 0
Less than, if (A + ) 0 (Aa) < Ab
a 1
II-12-W
(Aa) ~ \
M-5035
Change 1
DOUBLE COMPARE
Sllsolz'lululz, nll·ln ulzillo 1.11.111 I' 1II1411s 111111101.1.-111.111 41 SI z II 10
05
()
3
b
i
s
DC a,y,b,s
y
Not character addressable.
Not repeatable.
Compare the content of the double length register (formed with the least
significant half in Aa and the most significant half in Aa+ l ) with the
content of the double length memory word (formed with (Y) as the least
significant half and (Y + 1) as the most significant half), and set the
CD to:
Unequal, if (A
a+l
9
A ) ta
(y
Greater than or equal, if (A
+ I, Y)
a+l
,A)
a
Less than, if (A a + , Aa) < (Y + 1, Y)
l
11-12-61
~
(Y + 1, Y)
M-5035
Change 1
12.4.5
Instructions Involving Logical Operations
The following instructions perform a variety of logical operations involving'
register and memory:
ADD LOGICAL PRODUCT
S'il5olnlz'I21lz' nlz41n ull'lzo '11"1''1 'I '51'41 ,s ,zl"I,olll'I'I III 5141 5121' 10
01
4
()
b
i
s
y
ALP a,y,b,s
Add to (A a +l ) the logical product of (Aa) and Y and store the result Aa+l"
AND
1'1'41 151'21"1 10 11'1'1 11514 5121'
71
a
5
b
0
HAND a,b
i
L-
Form the logical product of (Aa) and (A ) and store the result in Aa.
b
(Ab)i=(Ab)f. Logical product or logical AND is defined by the following:
o
I
o
1
o
o
o
1
EXCLUSIVE OR (SELECTIVE COMPLEMENT A)
01
()
3
b
i
s
y
XOR aty,b,s
... A
a
Complement the individual bits in A corresponding to the ones in It
a
leaving the remaining bits in A unaltered.
a
11-12-62
The result is stored in A .
a
M-5035
Change 1
EXCLUSIVE OR A
'51'-1"1'21"1'0 '1'1 ' 115J4 'j21'
'i 1
n
3
0
i
h
HXOR a,b
-- Aa
Form the logical difference between (Aa) and (A ). The result is stored
b
in A. Logical difference, exclusive OR q or selective complement is
a
defined by the following:
o
1
001
1
1
0
INCLUSIVE OR (SELECTIVE SET A)
.11,0Iulall27lal asla 41n 22111 lao 1'1 11111
01
0
a
y
-
E9
(A)
a
b
'I
i
'11'4111 121"1101'111'111'14J I JaI' L0
s
y
OR a,y,b,s
.. A
a
Set the individual bits of A corresponding to ones in Xv leaving the
a
remaining bits in A unaltered. The result is stored in A .
a
a
11-12-63
M-5035
Change 1
INCLUSIVE OR A
1511-IIS1121 11 110 • 1'11 _1514 S12 II 0
71
a
0
HOR a, b
i
b
Form the logical sum of (Aa) and (A b ). The result is stored in Aa'
(Ab)i = (Ab)rif a f. band a+l =j:. b. Logical sum, inclusive OR, or
selective set is defined by the following:!
o
I
o
0
I
1
I
1
LOAD LOGICAL PRODUCT IN
SI
Aa
Tsolz'II'111f21 251 141n 2211'1 10 1'1 1'1 11 " 1511411s 121"110\'1' r1 I- I 5141 S 12 II Io
01
5
()
Y
-
0 (A)
a
b
s
i
LLP a,y,b,s
Y
A
a
Form the logical product of (A ) and Y.
a
The result is stored in A .
a
LOAD LOGICAL PRODUCT IN Aa+l
IllI01zlIz·1 1111• ulZ4lzs 1211 1110 Itll'111 I_ 11114111 121"11°1_1'111_)514111 I II 10
01
7
()
b
s
i
y
LLPN a,y,b,s
Y (;) (A ) - AI; (A ) i = (A ) f
a
a+
a
a
Form the logical product of (Aa) and Y.
(Aa) is unchanged.
11-12-64
The result is stored in Aa + •
1
M-5035
Change 1
REPLACE A - LOGICAL PRODUCT
SI1s0129LZllZ 71u zslz&In 2211 11zo 1'1111 11 II 1511&11S 121111101'(111 111 51 4J SI Z II (0
()~\
j'
(,
h
i
s
Y
HNLP a,y,h,s
Subtract from (A a +l ) the logical product of yand (A ), then store the
a
result in Y and A + .
a 1
REPLACE A + LOG I CAL PRODUCT
'11,olnlzlluIZI ulz~Iu 22111 1zo 1'1 11 117 " 15 11&1 I' ,zll'l lol'11171 1 Isj4jslzl l lo
03
'-I
()
h
s
i
Y
RALP a,y,b,s
Add to (A a + l ), the logical product of I and (A ); then store the result
a
in Y and Aa+l"
REPLACE EXCLUSIVE OR (REPLACE SELECTIVE COMPLEMENT)
sll,olnIZllula. as12~n 221 1'1 ao I'IIIL 11 " Isll&jIS 121"11°1'1'11111s141'lz(11°
3
03
a
b
i
s
y
Y
e
RXOR a,y,b,s
Y and A
a
(A ) a
Not character addressable.
Complement the individual bi ts in Aa corresponding to ones in I, leaving
the remaining bits' in A unaltered.
a
The result is stored in A and Y.
a
REPLACE INCLUSIVE OR (REPLACE SELECTIVE SET)
s11101a'1alIa 1111 ula~u 2211 'lao 1'1 111" 1'15J 14 111 I2JI IJ 101'1 11 1 1'151 4I SI z I I 10
03
0
a
Y $(A )
-
a
~
Y
b
i
and
A
s
Y
ROR a, y, b, s
a
Set the individual bits in Aa corresponding to ones in I, leaving the
remaining bits in A unaltered. The result is stored in A and Y.
a
a
11-12-65
M-5035
Change 1
REPLACE LOGICAL PRODUCT
11)101nl21J2712' 25J2 4 )23 ulzI120 1'1 1'1 11 I_ 15114111 121" 110 I • I • l' I • I 5I 41 1I 2II I 0
03
5
tl
b
s
i
Y
HLP a, y, b ,S
Load Aa+l with the logical product of Y and (A ); then storp the rpsult
a
at Y.
REPLACE SELECTIVE SUBSTITUTE A
1'1 1012112'127121 2512 4 123 ulzI120 1'1"1 17 I_ 15114111 121"1101'1'1'1_/5/413/2/110
03
2
()
b
For each bit,
s
i
Y
HMS a,y,b,s
which is equal to one in A v substitute the nth bit of
a
Y for the nth bit of the Aa +l . The result in Aa+l is stored at Y.
hv
REPLACE SELECTIVE CLEAR
11110121121127(21 25124123 ulzIJzo 1'1 1'1 11 .. 151 14 113 12(11110 I' (. l' I-I 5 I 41 3I 2 II 10
03
1
()
h
.. _ ..
0 -y t
(A )
a
~
_-
s
i
--
._-_.
Y
Y and A
a
Clear the individual bits in A corresponding to ones in X, leaving the
a
remaining bits in A unaltered. The result is stored in A and 4.
a
a
SELECTIVE CLEAR A
01
1
a
(A )
a
0 yt
-
...
b
s
i
y
SC a, y ,b, s
A
a
Form the logical product of (A
. a ) and the complement of -Y, The result is
stored in A. Selective clear is defined by the following:
a
o
1
o
1
o
o
1
o
I I -12-6()
M-5035
Change 1
SEl.ECTfVE SllASTTTlITE
01
il
,)
s
h
""
MS a,y,b,s
For each bit, n, which is equal to one in A , substitute the nth bit of Y
a
for the nth bit of Aa+ .
l
STORE LOGICAL PRODUCT
,. f,oIZ9I21I27I11 25IZ4I21 ul2 11zo 1'1 11 1" 11 151'.1" •z1"11 oJ • I I 11 I , I 51 4 I sfa1.1 0
02
il
4
b
i
s
Y
Store at Y the logical product of (Aa) and (Aa+ll.
SLP a,y,b,;)
The contents of the
A-registers are unchanged.
SUBTRACT LOGICAL PRODUCT
01
6
b
i
s
y
Subtract from (A + ) the logical product of (Aa) and
a 1
stored in Aa + .
1
11-12-67
NLP a,y,b,s
X.
The result is
M-5035
Change 1
12.4.6 Shift Instructions
DOUBLE SHIFT LEFT CIRCULARLY
1511·1151121"jI0 - l' 17
I
5
51 z 1I
4
0
63
a
HDLe a,m
63
a
10
(J
b
0
63
a
1 1 0
b
()
m
HDLe a, b,l
m
1
2
HDLC a,b,2
normal shift count
shift count in Bb
shift count in Ab
Shift the content of the double length register (formed with (A ) as the
a
least significant half and (A + ) as the most significant half) to the
a l
left circularly, where the shift count is specified by the m-field.
DOUBLE SHIFT RIGHT FILL SIGN
15114115112111110 _1'1 7 • 5 4 :s 1211
67
a.
67
a
67
a
0
HDRS aim
m
m
10 U
b
0
HDRS a,b,l
b
0
HDRS a,b,2
1
2
1 1 0
normal shift count
shift count in ~
shift count in Ab
Shift the content of the double length register (formed with (A ) as the
a
least significant half and (A + ) as the most significant half) to the
a 1
rigbt m places, end-off with sign filion the l~ft. The maximum allowable
shift count is 26 -1 = 63.
DOUBLE SHIFT RIGHT FILL ZEROS
151141111121"110 '1'17
65
a
65
a
I
514 51211
0
HDRZ a,m
m
m
10 U
b
0
HDRZ a ,b, 1
1
2
65
a
1 1 0
b
0
normal shift count
shift count in Bb
shift count in Ab
HDRZ a,b,2
Shift the content of the double length register (formed with (A ) as the
a
least significant half and (A + ) as the most significant half) to the
a l
right, end-off anc fill with zeros on the leftv where the shift count is
specified by the m-field. The maximum allowable shift is 26 -1 = 63.
11-12-68
M-5035
SHIFT LEFT CIRCULARLY
11114111112111110
11'1 '
62
a
62
a
62
a
•
1
.. 'I Z II
0
m
HLC a,m
m
10 U
1 10
b
0
HLC a ,b, 1
b
()
HLC a,b,2
1
2
normal shift count
shift count in Bb
shift count in Ab
Shift (A ) left circularly where the shift count is specified by the
a
m-field.
SHIFT RIGHT FILL SIGN
15114111112111110
11'1'
66
a
66
a
66
a
•
5 4
'j211
0
HRS a,m
m
10 U
m
b
0
HRS a,b,l
b
()
HRS a,b,2
1
2
1 I 0
normal shift count
shift count in Bb
shift count in Ab
Shift (A ) to the right, end-off with sign filIon the left, where the
a
shift count is specified by the m-field.
6
2 -1 = 63.
Example of right shift, sign fill
~,
m = 9.
r~
:1:000111111000001111100 III 000 1111
:: t:~_______~..
'-----~
LlJ))))J)J.~OOOIIIlllOOOOOIIIIIOOl
11-12-69
The maximum allowable shift is
M-5035
.,
SHIFT RIGHT FILL ZEROS
1,(1-11'112111110 -1'1'
a
64
'I zll
4
0
HHZ a,m
m
64
a
10 0
b
0
HRZ a,b,l
64
a
1 10
b
0
HRZ a,b,2
m
I
2
normal shift count
shift count in Bb
shift count in Ab
Shift (Aa) to the right, end-off and fill with zeros on the left, where
the shift count is specified by the m-field .. The maximum allowable shift
is 26_1 = 63.
Example of right shift A2 , m = 9.
(A2 l
i
froOOllllllOOOOOlllllOOlllOOOllll
I
:~
'-
iQ~QQOPPP~1pOOllllllOOOOO-l-ll-l-l-O~
11-12-70
M-5035
12.4.7
Instructions Referencing Control Memory
There are eight instructiQns referencing control
memory~
four are Format I
full-word instructions, and the other four are half-word instructions, Format
lV-A.
The instructions which refer to the interrupt set of registers are
all privileged instructions (PI) while the other instructions are privileged
for certain control memory address reference.
LOAD INTERRUPT CMR
(PI)
ulz~Julzzlzllzo
"1'0129l2l 1271Z'
ak
55
Itll'117 I'
b
i
utll~ll'llz
s
"110 It 1,, 7 I- I a 141 , I z II
y
r
0
LCI ak,y,b,s
Y - CMR
The a-designator and k-designator form a six-bit (central processor)
control memory address (100-177)8 of the interrupt mode registers as
follows.
6FFECTIVE ADDRESS
I
HARDWARE
ASSIGNED
ak-VALUE
1
1
•
1
1
1
t
1
1
CONTROL MEMORY REGISTER
,
00
01
CMR address 100
CMR address 101
26
27
30
CMR address 126 (56 )
CMR address 127 (57 )
CMR address 130 (unassigned)
(AO)
(AI)
+
;
•
75
16
77
CMR address 175 (SIRS)
CMR address 176 (SIR )
1
CMR address 117 (SIR6 )
7
Load the CMR address (specified by the special ak-value) with !.
NOTE
In the repeat mode, ak + 1 ~ ak. This instruction
is not interruptable in the repeat mode.
11-12-71
M-5035
LOAD INTERRUPT CMR WITH A (PI)
61
i
HLCI
afLlb
~------~.------~~--~
specifies an accumulator register;
i (bit 0 or 16) = 1
b
The a-designator and k-designator form a six-bit address in (central
processor) control memory in conjunction with the i-designator to access
control memory locations as follows:
i
=1
af t1 VALUE
CONTROL MEMORY REGISTER
CMR address 100 (AO)
CMR address 101 (AI)
00
01
•
•
•
26
27
30
CMR address 126 (S6 )
CMR address 127 (S7 )
CMR address 130 (~nassigned)
75
76
77
CMR address 175 (SIRS)
CMR address 176 (SIR6 )
CMR address 177 (SIR 7 )
•
Load the CMR address specified by the af4 -designator wi th (Ab)"
11-12-72
M-5035
Change 1
LOAD TASK eMU
sllsolnlllll'lu u)ululul111lo 1-1 1'1 17 IIIIII·IIS 121"1101-1'17 I_ I !t 141 sI 211 To
:.ill
nk
b
i
s
LeT ak,y,b,s
y
Y - CMR
The a-designator and k-designator form a six-bit (central processor)
control memory address (0-77 ) of the task mode registers as follows:
8
The a-designator and k-designator form a six-bit (central processor)
control memory address (0-778 ) of the task mode registers ns follows:
CONTROL MEMORY REGISTER
ak-VALUE
00
01
CMR address o (AO)
CMR address I (AI)
26
27
30
CMR address 26 (S )*
CMR address 27 (S6)*
CMR address 30 (uAassigned)
57
6X
7X
CMR address 57 (unassigned)
Breakpoint*
Active status
•
t
t
t
Load the CMR address (specified by the special ak-value) with
1_
NOTE
In the repeat mode, ak + 1 ~ ak. This instruction is
not interruptable in the repeat mode.
This instruction is privileged when repeated.
• Addresses 60-778 and 20-278 are addressable in the interrupt mode
only.
11-12-73
M-5035
Change 1
LOAD TASK CMR WITH A
I
61
0
i HLCT af ,b
b
--------~--------~--~
4
specifies an accumulator register
i (bit 0 or 16) = 0
b
The a-designator and f - designator form a six-bit (central processor)
4
control memory in conjunction with the i-designator to access control
memory locations as shown below.
i
=0
SPECIAL
Af4 VALUE
00
01
t
26
27
30
t
56
57
6X
7X
CONTROL MEMORY REGISTER
CMR address o (AO)
CMR address 1 (AI) ~MR addresses
20-27 access~
(5)
ible in interCMR address 26
(56)
rupt
mode only
CMR address 27
CMR address 30 (u~assigned)
+
CMR address 56 (unassigned)
CMR address 57 (unassigned)
Breakpoint (accessible in interrupt
mode only)
Active status (accessible in interrupt mode only)
Load the CMR address specified by the af4-designator with (Ab).
11-12-74
M-5035
Change 1
STURE INTEHRUPT CMR (PI)
ak
h
i
s
y
. _ _ _ _ _" - -_ _ _ _--L_----JL......L_ _L--_ _ _ _ _ _ _ _--.J
SCI llk,y,b,s
(CMR) - Y
The a-designator and k-designator form a six-bit (central processor)
control memory address (100 through 177)8 of the interrupt mode registers
as follOWS:
EFFECTIVE, ADDRESS
HARDWARE
ak-VALUE
ASSIGNED
1
!
1
1
1
•
1
I
CONTROL MEMORY REGISTER
00
If
CMR address 100 (AD)
CMR address 100 (AI)
26
27
30
CMR address 126 (5 )
CMR address 127 (56)
CMR address 130 (uAassigned)
!
•
+
CMR address 175 (SIRS)
CMR address 176 (SIR6 )
CMR address 177 (SIR7 )
7S
76
1
77
Store t he content of the CMR address (specified by the ak-value) at Y.
NOTE
In the repeat mode. a k + I - ak. This instruction
is not interruptable in the repeat mode.
11-12-75
M-5035
Change 1
STORE INTERRUPT CMR IN A (PI)
1511.113112111110 t
60
I • I 7J • I 5 I 4
sf
4
3121
b
1
0
i
(CMR) - Ab
b specifies an accumulator register; j i
(bi t 0 or 16) ::: 1
The a-designator and the f4-designator form a six-bit
<
(cen~ral
pr0cessor)
control memory address in conjunction with the i-designator to access
control memory locations as fOllows:
i ::: 1
5£4 VALUE
00
01
+
CONTROL MEMORY REGISTER
CMR address 100 (AO)
CMR address 101 (AI)
~
26
27
30
CMR address 126 (S6 )
CMR address 127 (S7)
,
CMR address 130 (unassigned)
75
76
77
CMR address 175 (SIRS)
CMR address 176 (SI R6 )
CMR address Iii (SIR"'9)
I
~
Load Ab wi t h (CMR f ).
a 4
~
M-5035
Change 1
STonE TASK CMR
56
nk
s
i
b
seT ak,y,b,s
y
(CMR) .... Y
~orm
The a-designator and k-designator
a six-bit (central processor)
control memory address (0 through 77)0 of the task mode registers as
follows~
ak-VALUE
CONTROL MEMORY REGISTER
CMR address o (AO)
CMR address I (AI)
00
01
~CMR addresses 20-27
addressable in
i nt errupt mode only
CMR address 26 (S)
CMR address 27 (S~)
CMR address 30 (unassigned)
•
+
26
27
30
t
•
57
6X
CMR address 57 (unassigned)
Breakpoint (accessible in interrupt mode only)
Activate status (accessible in interrupt mode only)
7X
Store the content of the CMR address (specified by the ak-valuel
.
:,
NOTE
•
• C'.~. \,
. ."
--~
......
.... --.....
.....:
.
•
•
,-,
o
"
•
.
~
.,
..
~
'
"
...... ' , :
,.
• ',R." ..
,'.:
..
flip
p..
'
• •
. .. ..
:'.:' -
..
'
~
...
I i"::'12-77
....
"
. '.
.. .
..
..
:!
;.:.....
...
. . ' -. •
..
"
....
..
,
.
~t
,
Y.
M-5035
Change 1
STORE TASK CMR IN A
15\1.11'112111110 -\11'1 6 15 14 'izil 0
.. f -4
60
c.
i
b
(CMR) - Ab
b
specifies an accumulator register;
i (bit U or 16)
=0
The a-designator and f -designator form a six-bit (central processor)
4
control memory address in conjunction with the i-designator to access
control memory location as follows:
i = 0
af 4 VALUE
CONTROL MEMORY REGISTER
CMR address o (A )
CMR address 1 (AD) {CMR addres ses 20-27
1
addressable in
interrupt mode only
CMR addriss 26 (56)
CMR address 27 (57)
CMR address 30 (unassigned)
00
01
+
26
27
30
.~
~
CMR address 56 (unassigned)
CMR address 57 (unassigned)
Brea~Qoint (accessible in interrupt mode
only·f
.
- Active status (accessible in interrupt
mQde •only1 _.~.
~
56
57
6X
7X
..
Load Ab with (CMR f ).
a 4
.....
•
.
.
•
.. ....
.1'*. ..••
..
..
11-12-78
M-5035
12.4.8
Interrupt Handling Instructions
These are all privileged instructions, and none are
chara~ter
addressable or
repeatable.
ALLOW CLASS III JNTERRUPTS
Isll-IIS 1121"1 10
77
(PI)
1111' II \ I- s 1111 0
5
0 0 HAl
0
Release the lockout for input/output Class III interrupts .. This shall
not affect the individual channel interrupts enable/disable logic as set
by AEI and PEl instructions.
11-12-79
M-5035
ALLOW ENABLE INTERRUPT (PI)
07
a
I
b
AEI
sy
a,sy~b
The a-designator specifies which IOC will receive the enable interrupt
information:
SPECIAL
a-VALUE
0
I
2
3
4-7
IOC TO RECEIVE ENABLE
INTERRUPT INFORMATION
IOC
IOC
IOC
IOC
Not
#()
receives enable interrupt
ttl receives enable interrupt
#:2 receives enable interrupt
tt3 receives enable interrupt
used
The s-designator in conjunction with the y-operand forms a 16-bit syfield. The 16-bit sy-field enables interrupts on a channel basis in the
specified IOC as follows:
SPECIAL
sy-VALUE
sy
sy
sy
sy
sy
sy
sy
sy
sy
sy
sy
sy
sy
sy
sy
sy
(bit
(bit
(bi t
(bi t
(bit
(bi t
(bi t
(bi t
(bi t
(bi t
(bit
(bit
(bi t
(bit
(bi t
(bit
FUNCTION PERFORMED
AT SPECIFI ED IOC
=I
=I
2) = I
3) = I
4) = I
5) = I
6) = I
7) = 1
8) = 1
9) = I
10) = 1
11) = 1
12) = 1
13) = 1
14) = 1
15) = 1
0)
Enable
Enable
Enable
Enable
Enable
Enable
Enable
Enable
Enaole
Enable
Enable
Enable
Enable
Enable
Enable
Enable
1)
channel
channel
channel
channel
channel
channel
channel
channel
channel
channel
channel
channel
channel
channel
channel
channel
0
I
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Enable the interrupt request for each IOC channel specified in the 16-bit
sy-field.
11-12-80
M-5035
INTERPROCESSOR INTERRUPT
(PI)
I PI sy. b
A class II interrupt is generated for each processor selected by the syfield after Bb modification.
The processor number is bit-encoded in the
lower 18 bits of sy + (B b )15 as follows:
16-bit result of sy + (B b )15-O
15 14
8
7
6
5
4
3
1
oI
Interrupt Processor No. 0
Interrupt Processor No. I
Int errupt Processor No. 2
Not used
Self interrupt
control bit
2
Interrupt Processor No. 3
Interrupt Processor No. 4
Interrupt Processor No. 5
Interruot Processor No. 6
Interrupt Processor No. 1
I
I
I
I
I
I
I
1
This instruction interrupts all processors whose corresponding bit is set
as indicated above. If bit 15 is set, and if the processor executing
this instruction is selected to be interrupted, then the processor executing the instruction will ignore the interrupt. If bit 15 is clear
and the processor executing the instruction is selected to be interrupted,
then the interrupt request will occur.
11-12-81
M-5035
INTERRUPT RETURN
(PI)
31 1301 2'1 zel21l21 251 24123 2212 1120 1.(,.,'7 ,. '51'4}'31'2 "1'01-1.171115141 312" 10
07
0
5
0
~
0
IR
0
Return control to the processor state designated by the DSW corresponding
to the state control field in the active status register.
PREVENT CLASS III INTERRUPTS
(PI)
"1'4( '31'21"1'0 _1'1 7 11'14 31zl' 0
77
0
4
0
0 HPI
Lock out the input/output class III interrupts.
The interrupts are held
pending until this lockout is removed.
PREVENT ENABLE INTERRUPT
07
a
b
2
(PI)
sy
PEl a,sy,b
--------~----~------~------------------------~
The a-eesignator specifies which IOC will receive the disable interrupt
information:
loe TO RECEIVE DISABLE
INTERRUPT INFORMATION
SPECIAL
a-VALUES
receives
receives
receives
receives
Not used
loe
loe
loe
loe
0
1
2
3
4-7
11-12-02
#0
#1
#2
#3
disable
disable
disable
disable
interrupt
interrupt
interrupt
interrupt
M-S035
Change 1
The s -des igna tor in conjunction with the y-field forms a 16-bit sy-field.
Th(~
I ()-bi t
sy-field disables interrupts on a channel hnsis in the spf'ci-
fied IOe as fo llows :
sy-VALUE
sy-VALUE
FUNCTION PERFORMED AT
SPECIFIED ION
sy (bit 0) = 1
sy (bi t 1 ) = 1
Disable channel 0
Disable channell
~
~
sy (bit 14) = I
2y (bi t 15) = 1
Disable channel 14
Disable channel 15
Disable the interrupt request for each IOC channel specified in the
16-bit sy-field.
WAIT FOR INTERRUPT
(PI)
l'li-IIS 112)11110 ')'1 ' '1'1-
~
77
0
6
1211
()
0
1
HWFI
This instruction causes the computer to stop referencing memory until an
interrupt occurs (any class not currently locked out). After an interrupt
request is detected, the processor honors the interrupt, saving the
address of the instruction following the wait for interrupt.
from the interrupt, normal processing continues.
11-12-83
Upon return
M-5035
Change 5
12.4.9
Miscellaneous Instructions
CLEAR BIT
31130129111127121 2512-123122121120 111 1'1 11
32
iik
b
II Isil-IIS
12["1 10 111'1 1 111&1-11121 110
s
i
BZ
y
ak,y,b,s
(Y) ak
() -
Not character addressable.
The ak-designator specifies the bit of (Y) to be cleared, where
o sak
s31.
o
02
Numbe r
0
s
b
y
crIT a Y b , f,
I
I
f "1' s" in Y - A
a
Count the bits in ! which are set to one and store the count in AH .
OOUBLE SCALE FACTOR A
1511-11'112111110 -1'1 115(_ '1211 0
'
h
i
a
70
1
Normalize (A
a+
HDSF a,b
l' A ); normalized shift count .... Ah •
a
Shift the content of the double length register (formed with (A ) as the least
a
signficant half and (A
1) as the most significant half) to the left circularly
a+
until normalized. The required shift count is stored in~. If a or a+1
the registers shall be normalized with no shift count available. If (A
I
i
= 0 or all 1 's,
the resultant shift count is 63.
11-12-84
a+
= b,
l' A )
a
M-5035
Change 1
EXECUTE HEMOTE
o
U"
I.
•>
h
s
Execute instruction at!;
y
(P) is unchanged.
Not character addressable.
Not repeatable.
Execute the whole-word instruction or two half-word instructions which
is at !, without changing (P).
EXECUTE REMOTE LOWER
o
02
h
- -.....
Execute ins I ruct ion
s
~---"""
at. ~ .. ;
Not
character addressahlc.
Not
rep~atahle.
y
...
----_._------'
(P)
XHL y,b,s
is unchanged.
t-:xpcute the low(;r hair-word jnstruction at I, without chan!}ing
(1').
ENTEH EXECUTIvE STATE
o
U7
o
b
sy
XS
sy,b
Interrupt to executive entrancp address.
Not character addressable,
Not repeatable.
The s-desi\Jnator and t.he y-designat or are combined to form a H>-bi t
sy-field which, after B modification, is used as follows:
YO-I~
form the intprrupt code word.
Switch control to the interrupt state and transfer control to the executive entrance address as determined by the initial condition word pointer
associated with the Class IV interrupt state.
11-12 -85
M-5035
Change 1
INITIATE INPUT/OUTPUT
(PI)
111501u12l12 7121 ul241n 2212 1120 1'1 1'1 17 " 1511 4115 121")101'1'1 7111' 141 s 1z 1110
07
4
II
b
i
s
I () r., y , b , s
y
---
Not character addressable.
Not repeatable.
The a-designator specifies which JOC will'
as
recei~e
the processor command
follows~
SPECIAL
a-VALUE
IOC to RECEIVE
COMMAND ADDRESS
0
10C tt{) receives address
IOC #1 receives addr!~s s
IOC ~ receives address
IOC #3 receives adress
Not used
1
2
3
4-7
Provide the IOC specified by the a-field with the absolute address Y
(address of the first command in an input/output program sequence).
i
•
11-12-86
M-5035
Change
I UC MON I TO H CLOCK
07
a
( 1'1 )
h
3
sy
LIM a, sy ,b
Y ..... mo nit 0 r c 10 c k
Not character addressable.
Not repeatable.
The a-designator specifies which IOC monitor clock will be entered with Y:
IOC MONITOR CLOCK
TO BE ENTERED WITH Y
a-VALUE
o
IOC
IOC
IOC
IOC
1
2
3
#0
#1
#2
#3
Not used
4-7
The s-designator and the y-field form a 16-bit sy-field which, after
B modification, is used to load the lOG monitor clock specified by the
a-value.
If the 16-bit sy-field (after B modification) is negative, the monitor
clock in the specified IOC is disabled; if the 16-bit sy-field (after B
modification) is equal to zero, the IOC monitor clock (that was entered
with zero) generates a Class III interrupt in an attempt to interrupt
any central processor conrtected to the IOC; otherwise, the IOC monitor
clock is counted down in the normal manner at the rate of 1,024 counts
per second.
11-12-87
M-5035
Change 1
REPEAT
.. ~"tlz·121Iz. Hl z41Z3 221 21 120
07
I II J 7 J 6 r~ I -I 3 rzI
11111117 I'I~ 114113112111110 I
6
a
b
j
I
RP a,sy,b
:;y
---
Repeat NI
(B-)
r0
t.imes or until test condition is satisified.
I
Not character addrt'ssable.
Not repeat.able.
The a-dpsianator controls thp repeated instruction termination conditions
as
·'-fo 110ws:
NON-COMPARE
INSTRUCTIONS
a-VALUE
Terminate if A :f 0
Terminate if A = 0
Terminate if A ~ 0
Terminate if A < 0
Do not terminate
Terminate if A contains
an even nUIT!ber of binary
ones.
Terminate if A contains
an odd number of binary
ones.
Do not terminate
0
1
2
3
4
5
6
7
COMPARE
INSTRUCTIONS
a-VALUE
The b-dpsi
t0 ~
to <
to ~
2
3
·1
5
6
Terminate if CD set toOL
7
Terminate if CD set to WI..
USt'
if
if
if
if
if
if
set
set
set
set
set
set
Terminate
Terminate
Terminate
Terminate
Terminate
Terminate
0
1
of S() on ff'pluce inst.ruct ions
liS
follows:
I f b f. (),
?
@
XS-3
Equiva1ent-1004M
or (1004 REX)
(37)
A-I
Standard
Card Punch
0-5-9
12-5-8-9
blank
12-7 -8
7-8
M-5035
ASCII
Character
ASCII
Code
XS-3
Equivnlent
Standard
Card Punrh
24
25
2h
27
30
12-4
12-5
31
32
33
34
44
12-h
12-7
12-8
]2-9
11-1
45
46
47
50
51
11-2
11-3
11-4
11-5
11-6
120
121
122
]23
] 24
52
53
54
65
66
11-7
11-8
11-9
0-2
0-3
U
V
W
125
]26
67
70
0-4
0-5
] ...
')1
X
130
131
71
72
73
0-7
132
133
1:14
13:i
136
74
17
15
01
00
0-9
12-2-8
0-2-8
11-2-8
11-7 -8
l:n
00
0-5~8
A
H>1
B
C
f)
102
10:)
1(),I
E
10;1
F
10()
G
H
I
.1
]07
K
L
M
N
0
P
Q
R
S
T
Y
Z
c:
I
J
•
•
]]()
11]
11:2
] l:~
114
11;;
1] 6
117
12-1
12-'-2
12~3
0-6
O-A
A-2
M-5035
Change 5
SPECIAL CHARACTER CODES FOR THE OPTIONS DECLARATION
Standard Card
Punch
U (ULTRA)
029
026
046
053
053
12
042
042
047
7-8
075
075
076
6-8
047
047
072
5-8
0100
047
047
4-8
043
075
075
3-8
072
072
053
2-8
077
077
051
0-7-8
076
076
0134
0-6-8
0137
0137
050
0-5-8
045
050
050
0-4-8
054
054
054
0-3-8
0134
0134
012
0-2-8
0136
0136
015
11-7-8
073
073
073
11~-8
051
051
0135
11-5-8
052
052
052
11-4-8
044
044
044
11-3-8
0135
0135
042
11-2-8
041
041
075
12-7-8
053
053
074
12-6-8
050
050
0133
12-5-8
074
051
051
12-4-8
056
056
056
12-3-8
0133
0133
0100
12-2-8
A-:YA-4
(Blank)
M.;.5035
APPENDIX B
SlJMMAHY OF SYSTEM STATEMENTS
'.1
NOTATION OF STATEMENTS AND OPERATIONS
Wherever a statement or operation is discussed in this appendix, a uniform
system of notation is used to define the structure. This notation is not a
part of CMS-2, but is a standardized notation that may be used to describe the
syntax (construction) of any programming language. It provides a brief but
precise means of explaining the general patterns that the language permits.
It does not describe the meaning of the statements or operations; it merely
describes structure; that is, it indicates the order in which the operands
must appear, the punctuation required, and the options allowed.
The following rules explain this standard notation:
1.
2.
·3.
4.
A word wri tten in lowercase letters represents the type of entry to
be made by the programmer. This word may be hyphenated.
name
denotes an entry of a name.
data-uni t-name
denotes an entry of a data uni t name.
A word written in uppercase letters or special characters denotes an
actual occurrence of that word or character in the language.
name DISPLAY data-unit-name $
This example denotes the entry
of a name followed by the entry
of the reserved word DISPLAY
followed by an entry of a data
unit name.
Braces{ } are used to denote a choice. The units from which a choice
may be made are stacked vertically within the braces. At least one
of the units within the braces must occur in the statement.
This example indicates that either REGS
REGS
}
{. da ta -un it-name .
or a data unit name must appear in the
statement.
Square bracke t8 [ ] are used to denote options. When one uni tis
enclosed in brackets, the unit mayor may not appear. When more than
one unit is enclosed in brackets, anyone of the alternative units may
B-1
M-5035
. or may not be chosen to appear. In either case, it is possible that
no unit may appear. It is generally not possible that more than one
unit will appear.
This example indicates that a name may
[name ]
appear in the statement format. lIow5.
The use of
•
ever, this unit is not required.
denotes tha t the type of entry i ndi-
• ••
cated by the word preceding
•
••
may appear one or more times
in succession, where each entry is delimited by the word preceding.
This does ~ot imply that all entries should be identical. It does
imply, however, that all entries should be the same type of entry
indicated by the word preceding the three dots.
, • data unit name • • •
This example indicates that one or more
data unit names may occur in succession as entries, separated by commas.
Thus, the following would be a legal
entry: ALPHA, BETA, GAMMA
B.2
MONITOH STATEMENTS
$SE() ,
ddd [non-numeric-nonspace-non-$ character] [$ [comments]]
$JOB [; [user identification], [project identification], [time limit in decimal],
[page limit in decimalJ.
[~sJ
.
B-2
[26JJ [$ Lcomm"ntsJJ
M-S03S
Change 5
$1-:01 [$ 1(~()mrnnntsJJ
$ENDJOB l$ [comments]]
$CMS-2 [$ [comments]]
$ASM [, U] [$ [comments]]
$UTILITY [$ [comments]]
$LIBEXEC [$ [comments]]
$LOAD [,
$A. REG [
•
•
t
$BREG [ ,
TRACE
PTRACE
SNAP
RANGE
DISPLAY
I
• • • ] [$ [comments]]
roct~l
J ••• ]
number
Ldeclmal number 0
J ]
octal number
• [ deClma
. 1 numb er D · · ·
$KEYSET [. • [g;F] ••• ]
$CALL,
[$ [commentsj]
[$ [comments J]
[$ [comments]]
address section name
+ {octal number
}]
external definition name [ . - decimal number D
bound section name
[
+ {oc tal number
B-3
decimal number
}~
J
[$ [comments]]
M-5035
$TYPE, message
$HALT, message
$REMARK, message
address section name
}
{ external definition name
$TRA,
bound section name
[
[{+}- {octal
number
}]
decimal number D
+
{doct~~
eClma nlUmbebr
numer}]
[$ [comments]]
I
0
H
Q
$DUMP.
D
C
IC
[rJ · •
OC
HC
QC
DC
CC
address section name
}
{ external definition name
bound section name
[{+}- {octal
number
}]
decimal number D
[+ {~~~~a~u~~er n}]
13-4
• • • [$ [comments]
M-5035
address section name
{
$SNAP,
extc rna 1 de r j ni ti on name
oe tn 1 numhe r
{ dec ima 1 numb\.! r
}
bound section name
octal number
{ decimal number
I
o
H
Q
o
C
IC
OC
HC
QC
[decimal dumps count]
DC
CC
[decimal dump frequency ] , [ decimal start dump count]
{:~~~::l s~~:!~~ t~:~ naE}
(
L$
~} {~~~~a~u::er D} ]
[+
bound section name
octal number of words
}
{ decimal number 0 of words
$PATCH
[{
• ••
{octal number
} ]
decimal :number 0
[$ [commentsJJ
[comments])
Pa tch S ta temen t:
external defi ni ti on .name
[{~}
bound section name
[
{address section name
}
+
D} ]
{ oc tal number
decimal number D} ]
{octal number
decimal number
I, • up to twe 1 ve oc ta 1 d i gi ts • • •
0, • up to eleven octal digi ts • • •
(.. K, • up to thi rteen octal digi ts • • •
. C, (character string)
B-5
I
[$
Lc omme n t s j J
M-5035
SIP,
Tl
T2
T3
T4
T5
T6
T7
T8
CR
KB
PR
SOP,
Tl
T2
T3
T4
T5
T6
T7
T8
CP
PP
SHC,
Tl
T2
T3
T4
T5
T6
T7
T8
HP
KB
Tl
T2
T3
T4
T5
T6
T7
T8
CR
CP
HP
Tl
T2
T3
T4
T5
T6
T7
T8
CH
CP
HP
KB
KB
PR
PP
PH
PP
$ASG,
[$ [commen ts ] ]
0
H-6
M-5035
Change 5
I
$LDUYK-20[$ [comments]]
$FORTRAN [$ [commentsjj
$SYSMAKER [$ [comments]]
B.3 LOADER STATEMENTS
Table Size Declaration:
TSD, .name = decimal integer ••• [$ [comment]]
Library Selection:
LIBS, .internal library
naillC
[
(external library name)]
••• [$ [ commen t] ]
Element Selction:
SEL-ELEM [element name] [(key)] [
[$ [comment]]
Loader Options Select:
LOPTIONS • r~g~~El. •• [tg~~~CT 1
lNOMA~
SAVLODGOJ
B-7
'i :
ALL
} ]
ONLY
decimal integeI
M-5035
Combine Elements Selection:
~:~~~~g~L}
{
[Section name]
[ (octal digit)]
BASE
LOCDDPOOL
, • element name ••• [ (octal integer)]
[ $ [c 0 mme nt ] ]
End Card:
END L$ [commentJJ
B.4
LIBRARIAN STATEMENTS
/LIST
/BUILD
internal-library-name
/EDIT
old-internal-library-name [ (old-external-library-name)J
[, new-internal-library-nameJ
/ENDLIB
/TAPlD
, . internal-tape-name [ (external-tape-name)] • • •
/RELEASE
, • internal-tape-name [ (external-tape-name)] • • •
/HISTENT
notes
IADD
name [(key)]
~ (~l
] ~nternal_tape-nam;Y~~=xternal_tape-name)~
[NOLlST]
B-8
M-5035
ALI,
/CUI'Y
name
l (key) j
[.
[n ] [TilRIl
name L]
SUB-TABLE
maximum-number-of-items
[label]
SWAP
initial-item-number
[major-index-name]
data-element • data-element
name
SWITCH
name
[
( name-a,
•• switch-point
•••]
name-b
s ta tement -npme
{ procedure-name
[ , statement-name]} $
[ • procedure-name]
constant
statement~name
$
constant
procedure~name
$
name
SYS-DD
[comment]
name
SYS-PROC
name
SYS-PROC-REN
[comment]
$
$
[comment]
$
8-23
[THEN
I
$
statement]
$
$
M-5035
H
V
A
label
VARY
(type)
}
wo rd s - pe r - it em
NONE
MEDIUM
UENSE
(type)
words-per-item
NONE
MEDIUM
OENSE
loop-index
THRU
final-value}
{ WITHIN name
[INDIRECT]
number-of-items
LINDIRECTJ
[FROM
, . d imens ion • • •
initial-value]
[±J
[BY
increment]
$
NOTE
FROM, THRU, WITHIN and BY may appear in any
order.
EXTREF
EXTDEF
( TRANSREF
I
I
number-of -bi ts
{~}
A
number-of-bits
{~}
S
list-of-status-constants
number-of-characters
H
B
F
number-of-fractional-bits
[(R)]
[P constant]
[V(x,y) J $
8-24
[major-index-nameJ
$
M-5035
B.7
ASSEMBLER STATEMENfS
Start Assembly (ULTRA) Card:
D
p
*ULTRA [[.
[~][. ~! [ ·[Hi] J]]
PS
SP
Stop Assembly (OFF) Card:
*OFF
Absolute Directive Card:
ASS
label
Byte Directive Card:
BYTE el [,e2]
Character Directive Card:
CHAR
,_ (c,e} - - -
DO Directive Card:
(label] DO e , (statement)
END Directive Card:
END
B-25
[name [. verSionJJ ]
M-5035
Equate Directive Card:
label' EQU
e
EVEN Directive Card:
I~VEN
OUD
Directive Card:
ODD
FOHM Directive Card:
label
FORM
, • tel • • •
List Cross Reference Table Directive Card:
LCR
Library Select Directive Card:
LIBS
, . linternal-name} [(external-name)] • • •
Library Element Directive Card:
LIB
, • [ na me] [( ve r s ion) J • • • .
LINK Directive Card:
LINK
, • (name} • • •
LIST Directive Card:
LIST
ELIST Directive Card:
fLIST
B-26
M-5035
B.7
ASSEMBLER STATEMENTS
Start Assembly (ULTRA) Card:
o
p
*ULTRA [[.
[~] ~i [ ·[Hi] ]]]
[.
PS
SP
Stop Assembly (OFF) Card:
*OFF
Absolute Directive Card:
ABS
label
Byte Directive Card:
BYTE el [,e2]
Charac ter Di recti ve Card:
CHAR
, . [c ,e) • • •
DO Directive Card:
[label] 00 e , (statement}
END Directive Card:
END
8-25
[name [. version] ] ]
M-5035
Equate Directive Card:
label' EQU
e
EVEN Directive Card:
EVEN
ODD Directive Card:
OUD
FORM
Uirective Card:
label
FORM
••
te} • • •
List Cross Reference Table Directive Card:
LCR
Library Select Directive Card:
LIBS
•• linternal-name} [(external-name)] • • •
Library Element Directive Card:
LIB
, • [ na me ]
L(ve r s ion) J • • •
LINK Directive Card:
LINK
•• (name} • • •
LIST Directive Card:
LIST
ELIST Directive Card:
FLIST
B-26
M-5035
NOlIST Directive Card:
NOlIST
J]
literal Directive Card:
f$
L
(e) [, label
label
lIT
Punch External labels Directive Card:
PXl
Reserve Directive Card:
[label]
RES
e
Relocation Field Directive Card:
RF$ e , . (h, I t c} • • •
Segment End Directive Card:
SEGEND
Set Address Directive Card:
SETADR
e
t.
[a] • • •
Word Directive Card:
WRD e
8-27
M-5035
MACRO Directive Card:
label [~(] MACRO
[e,[,e ]]
2
MACRO Name Directive Card:
label [*] NAME [eJ
GO Directive Card:
GO label
8-20
M-5035
APPENDIX C
SUMMARY OF SERVICE ROUTINE CALLING SEQUENCES
Request Packets Reference Words
I'
IW Ytbts
o
S
mod. 0 Y portion of pkt. address
Standard Input Request Packet
function code
status
user code
data ad~ress (in indirect word fo~at)
number of characters
Standard Output Request Packet
1')10)1')1'11111'11111.11111111'110["1"1'11" "1'.1 111 111" L,01'1' 1 ttJ II • till I I I 0
user code
da ta addres s (in indirect word format)
number of characters
Standard Hardcopy Output Request Packet
data address (in indirect word
number of characters
C-l
fO!'ll8t)
IWS YtS
M-5035
Change 3
Tape Assignment/Release Packet
Tape Control Selection Packet
Device
Get Device NamePacket
Centralized I/O Request Packet
I
I
.111011....1.'1••1..1•• ....111 '1101'.1'.1"1'.
,. ,. "1'11"1'°1'1' '1'111.11111'1
0
logical unit
no.
R
CC
user
code
data add res s (same forma ts as in request packet addr.)
number of words read/
skip count/number of words
deposit user code
search identifier/deposit data address
operation
s ta tus
C-2
M-5035
Change 3
Scatter /Gather Centralized ·1/0 Request Packet
SllsolulzelnlztJulz. UJUIZIIZ~ltll'11711' 15 ,. 151121"1101'"
Word 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
operation
(015 or 016)
status
~
IV C
user
code
711151.1' pi ' 10
l~ical
un t no.
V///U/////////i/////////ULfLL
number of areas in this
gather write/scatter read
data address of first area (same format as req. pkt. )
number of words/
character s in this area
data address of second area (same format as req. pkt. )
number of words/chars.
data address of third area, if one (same format as req. pkt. )
number of words/chars.
data address of fourth area, if one (same format as req. pkt. )
number of words/chars.
data address of fifth area, if one (same format as req. pkt. )
number of words/chars.
data address of sixth area, if one (same format as req. pkt. )
number of words/chars.
Service Request Call
Type of Packet
Centralized I/O Request
XS 0
nv (packe t add re s s )
Centralized I/O request packet
Standard Input Request
XS lOa
IW (packet address)
Standard input request packet
C-3
M-5035
Change 3
Service Request Call
Type of Packet
Standard Output Request
Standard output request packet
XS 118
IW (packet address)
Standard Hardcopy Request
standard hardcopy request packet
XS 128
IW (packet address)
Tape Assignment/Release packet
Tape Assignment/Release Request
XS 3
IW (packet address)
Tape Control Selection packet
Tape Control Selection Request
XS 2
IW (packet address)
Get Device Name Request
Get Device Name packet
XS 1
IW (packet
~ddr,ess)
Check Simulated Jump Key 1 Selection Request
None
XS 40
8
return if simulated key 1 is "on u
return if simulated key 1 is "off"
Check Simulated Jump Key 2 Selection Request
None
XS 418
return if simulated key 2 is "on"
return if simulated key 2 is "off"
C-4
M-5035
Change 3
Type of Packet
Sprvice Request enll
rhf'ck Simulatf'd ,lump Key 3 Splection Request
XS ,1'>'-8
re turn if simula ted key 3 is "on"
None
re turn if s imula ted key 3 is "off"
Check PTRACE Selection Request
XS ,13
None
8
return if not selected
return if selected
Check TRACE Selection Request
None
XS ,148
return if not selected
re turn if selec ted
Check OISPLAY Selection Request
XS .15
None
8
re turn if no t se lee ted
return if selected
Check RANGE Selection Request
XS 46
None
8
return if not selected
return if selected
Check SNAP Selection Request
None
XS 478
re turn if not se lee ted
return if selected
Check Floating Point Error Request
None
XS 508
return if floating point error has occurred
return if no floating point error has occurred
Terminate User Program Req1!est
XS 518
None
or
XS 528
C-5
M-5035
Change· 3
Type of Packet
Service Request Call
Current Time Request
None
XS 608
IW (address where data is wanted)- data occupies one word
Current Data Request
XS 618
IW (address where data is wanted) - data occupies two words
C-6
None
M-5035
Change 5
APPENDIX D
CMS-2 COMPILER RESERVED WORD LIST
The following symbols are compiler reserved words and may not be used as identifiers
in a CMS-2 program.
ABS
DECODE
FUNCTION
OCM
SPILL
ALG
DEFID
GOTO
ODDP
STOP
AND
DENSE
GT
ONLY
SWAP
BASE
DEP
GTEQ
OPEN
SWITCH
BEGIN
DffiECT
OPTIONS
SYSTEM
BIT
DISPLAY
HEAD
OR
TABLE
BY
ELSE
IF
OUTPUT
THEN
CAT
ENCODE
INDffiECT
OVERFLOW
THRU
CHAR
END FILE
INPUT
OVERLAY
TO
CHECKID
END
INTO
PACK
TRACE
crnc
EQ
INVALID
POS
UNTIL
CLOSE
EQUALS
LENGTH
PRINT
USING
CMODE
EVENP
LIBS
PTRACE
CNT
EXCHANGE
LOG
PUNCH
VARY
COMMENT
EXEC
LT
RANGE
VARYING
COMP
EXIT
LTEQ
READ
VRBL
CORAD
FIELD
MEANS
REGS
WHILE
CORRECT
FIL
MEDIUM
RESUME
WITH
CSWITCH
FILE
MODE
RETURN
WITllN
FIND
NITEMS
SAVING
XOR
DATA
FOR
NONE
SET
DATAPOOL
FORMAT
NOT
SIflFT
DEBUG
FROM
tD
t
I
tH
to
Not allowed as a tabular identifier or function.
D-l
I
VALID
SNAP
I
M-5035
Change 2
NOTE
Programmers expecting to make use of CMS-2 run-time
routines (high-level input/output, debug, and math
routines) should avoid the use of identifiers beginning
with R T to prevent duplication of identifiers. Any
duplication of identifiers, globally defined within the
run -time library, would not be detected until load time.
D-2
_..
,.-
M-5035
Change 3
APPENDIX E
COMPILER' ERROR MESSAGES AND LIMITS
Source Errors and Warning Messages (Warnings Flagged with *)
I
The following error messages appear as a result of errors detected by the source
syntax analysis phase of a compilation (OPTIONS SOURCE):
*0
DEBUG REQUffiES MONITOR
A DEBUG statement is only processed if the MONITOR OPTION has
been specified.
1
I
IDENTIFIER GT 8 CHARS
Attempt to define an identifier greater than eight characters long.
2
LITERAL GT 132 CHARS
Hollerith or literal constant greater than 132 characters.
3
RESERVED WORD USED AS ID
illegal use of reserved word as an identifier.
4
CHARACTER NOT RECOGNIZED
illegal ASCII input character.
5
DECIMAL POINT MISPLACED
Erroneous use of period not in a constant or illegal label definition.
*6
I
COMMENT TERMINATED BY $
Double prime comment not completed before end of statement.
7
INCORRECT OCTAL CONSTANT
The digits 8 or 9 appear in an octal constant.
8
MISPLACED SEL-POOL
Identifier definition appears prior to SEL-POOL statement.
E-1
M-5035
Change 3
9
ILLEGAL INTEGER TAG
Symbol or constant must bean integer.
10
NO STATEMENT TERMINATOR
Missing $ statement terminator.
11
IDENTIFIER MISSING
Missing name in a data unit declaration.
12
DUPLICATE IDENTIFIER
Attempt to define a previously defined identifier.
13
OUTSIDE TABLE BOUNDS
Subtable not contained within table; field not contained within item;
or multi-word field in a horizontal table.
14
NO DESCRIPTIVE OPERATOR
Missing descriptive or separator term.
15
ILLEGAL IN MINOR HEADER
Statement is not allowed in minor header (must be placed in major header).
16
TOO MANY DIMENSIONS
More than seven dimensions in an array declaration.
*17
COMMA MISSING
Comma missing in statement.
*18
OVERLAY PARENT MISMATCH
Data units on right of overlay exceed size of parent data unit.
19
DUPLICATED OVEHLAY
Data unit appears on right of more than one overlay.
£-2
M-5035
Change 5
20
OVEIlLAY SE()lJENCE EHHOH
Ua t. a un ito n rig h t () f
21
0 v{' r I it Y il PPt' a rc ~ don
1(~ f t
0f
pre v i 0 u S
0
ve r 1n y •
UNDEFINED IDENTIFIER
Referenced dnta unit hns not been previously defined.
22
SCOPE CONFLICT
Definition of a global procedure with local parameters.
23
STATEMENT NOT RECOGNIZED
Statement placed in the wrong type of element or within the wrong type
of declarative brackets.
24
ILLEGAL OPTIONS .
CCOMN has been designated the output unit for both LISTING and OBJECT
options - options that are produced simultaneously.
Only the OBJECT
option is produced: the LISTING option on CCOMN is ignored.
*25
PARENTHESIS MISSING
Parenthesis missing within statement.
26
SUB/LIKE-TABLE PROHIBIT
Subtable or like-table declared in an array.
27
ILLEGAL OVERLAY DATAUNIT
Illegal data unit appears in overlay.
28
ILLEGAL OVERLAY PARENT
Specified data unit may not be used as a overlay parent.
29
DUPLICATE RANGE
More than one range statement for the same data unit.
30
PRESET NOT ALLOWED
Data unit preset not allowed in AUTO-DD or on an externally
referenced data unit.
E-3
I
M,-5035
Change 5
31
ILLEGAL HARDWARE NAME
Illegal hardware device name specified infile declaration.
32
ILLEGAL FORMAT DESCRIPTOR
Illegal conversion descriptor specified in format statement.
33
MORE THAN 1 LEVEL NESTED
Format descriptors nested (parenthesized) to more than one level.
34
ILLEGAL IDENT REFERENCE
Illegal use of identifier in an expression.
35
I
ILLEGAL srZE DESCRIPTOR
Illegal data unit size attribute (e. g., Hollerith over 132 characters, table defined
with 0 words per item, too many bits for I- or A-type.)
*36
END BRACKET MISPLACED
Misplaced or missing END - statement.
*37
STATEMENT REQUIRES MONITOR
MONITOR OPTION must be declared for processing of this statement.
*38
CNV REQUffiES NONRT
Processing of a CNV statement requires the NONRT (or MONITOR) OPTION.
39
SYSTEM LIMIT nn EXCEEDED
One of the following compiler limitsdenoted by nn has been exceeded. The code
nn has the following values:
1.
Constant conversion limit was exceeded; the value of the constant lies outside the decimal limits (IE57, IE-3S) or the octal limits (IE77, IE-52).
2.
The number of nested subexpressions within the Boolean condition of an IF
statement may not exceed ten.
3.
The number of libraries requested for retrieval may not exceed ten.
E-4
M-5035
Change 5
4.
The number of operands in a DISPLAY statement has exceeded the compiler
limit. The card column indicator in the error output listing points to the
operand which first exceeds the limit. This and following operands should be
written as a separate DISPLAY statement. The limit may be calculated as
follows:
a) Allow 3 + n words for each operand, where n is the number of words required
to contain the operand as a character string;
b) the sum of the above may not exceed 94.
5.
The maximum number of exit parameters per PROCEDURE declaration is ten.
6.
The
lllll'~ her
of format descriptors exceeds 94 or the number of ope rands of
an input/output list for INPUT, OUTPUT, ENCODE or DECODE statements
exceeds 94. (For each operand that is a Hollerith constant, also add in the
number of ·words required to contain the constant value.)
7.
A maximum of seven levels of subscripting and function calls per operand is
allowed.
8.
An item beyond item 255 was specified in a field preset.
9.
The length of a dynamic statement is too long for the compiler to process
properly. This may be due to the complexity of an expression or an abundance of embedded notes.
10.
The maximum number of elements declared dependent of another is 58.
11.
A VRBL declaration may define no more than 25 names.
12. . The offset of a sibling overlayed data unit relative to its parent data unit must
not exceed 65535 words.
I
13.
More than 250 elements.
14.
Symbol table overflow -- number of global and local identifiers.
15.
Field defined or complier packed beyond word 255.
16.
More than 15 combined nested VARY and BEGIN blocks.
E-4A/E-4B (Blank)
I
M-5035
Change 5
17.
More than 10 nested VARYs.
18.
CC»1ENT (or "-type comment) between FIND and IF DATA too long.
19.
CG1MENT (or "-type comment) between last TIffiN clause and ELSE
clause too long.
20 through 29.
30.
Not used.
A dependent retrieval level greater than 255 was requested.
255
is assumed.
31.
A magnitude value greater than 32767 was specified in a magnitude
specification.
32767 is, assumed.
E-5
M-5035
Change 5
I
I
*40
OVER 10 NESTED CSWITCH BRACKETS.
Nesting of CSWITCH brackets exceeded.
41
ILLEGAL EXTERN MODIFIER
Illegal or misplaced EXTREF, EXTDEF or LOCREF declaration.
* 42
END DEClARATION MISSING
,Missing program structure EN D- declaration.
43
HEADER NOT RECOGNIZED
Unrecognizable or illegal statement appearing in a header.
* 44
END HEAD MISSING
END-HEAD statement missing after major header.
*45
FUNCTION RETURN MISSING
Return statement missing from function.
46
ILLEGAL EXIT PARAMETER
nl~gal
47
name specified as a formal exit parameter.
COMPOOL REQUEST IGNORED
Requested COMPOOL generation run not made due to detection of SYS-PROC
statement.
48
INCOMPATIBLE DATAUNIT
Expression operands do not conform to data unit type restrictions or do not fit
context required by operator.
* 50
NO DEF CHECK PERFORMED
No structural compatibility checking between external compiler-packed table
definitions.
E-6
M-5035
Change 4
51
FILE TYPE MISSING
Type descriptor missing in file declaration.
* 52
CMS-2 BRACKET MISSING
CMS-2 statement missing as terminator for a direct code block.
53
VALUE SIGNIFICANCE LOST
The most significant bits have been lost during alignment of a numeric constant
used as a variable or field preset or a value block value.
54
TOO M~NY STATUS CONSTANT
More than 12 status constants associated with a data unit.
55
DUPLICATE ALLOCATION
Symbol appears on the left of more than one EQUALS statement.
56
ILLEGAL ALLOCATION
Attempt to establish EQUALS allocation via a constant (absolute
allocation) or illegal
57
EQU~LS
expression.
LIBS NOT DEFlNED PHIOR
Library selection statement appearing prior to a LIBS statement.
58
nnnnnnnn NOT HETRI EVED
The request element, named nnnnnnnn, WRsnot fOllno in Rny of thp dpclared libraries.
*59
FIELD LIST MISSING
No fields specified for a compiler packed table.
60
WRONG ARGUMENT COUNT
Procedure call parameter list mismatched.
E-7
I
:\1-5035
Change 3
HI
FORl\IAT NOT INDICATED
:\Iissing fornlllt statement rpference in ENCODE/DECODE statenu'nt.
...
( )")
\\'OHD :\IOHE THAN 12 CIIAItS
~all1e,
():~
identifier, or symhol more than 12 characters.
:\1 U ST BE FUB :\IAT N A :\11<
Syntax requirt's name to IH'
I
'()·l
:l
format statement reference,
\\'HONG END NAI\IE
Incorrect naille on END- statement.
U5
SYNTAX
Erroneous statenlent syntax or punct uation.
{iG
COl\IPILEH PHOBLEl\I, SYNTAX
Syntax of statement cannot he analyzed by compiler.
y
G7
INCOHHECT END KEY\\,OHD
\\'rong EN D- bracket stat ement used.
• GIj
!'JO SYSTEl\1 DECLAHATION
:\Iissing 8YSTE1\1 declaration as first statement of source input .
.. (j!)
NO EN D-8YST E 1\1
;\Iissing END-SYSTEI\J statplllent
.. 70
SYNTAX
Syntax of statement not correct.
.. 71
OPTIONS ST1\lT MIHSIN(i
Options statenlent missing from Jnajor header.
output.
E-8
Syntax diagnostics will he only
1\1-5035
Change 4
t
7~
PAHAl\I PROCESSED AS VnUL
Paranleters are not allowed in function definitions.
7J
PROCEDUHE I/O LIST ERROR
Procedure call paranleters do not match procedure definition.
7-1
ILLEGAL KEY TYPE
Key type not legal for this element.
75
DUPLICATE KEY
KEY previously declared.
7H
ELEIV[ENT KEY GREATER 4 CHS
Library element key is greater than four characters.
+<
77
l\tIISPLACED STATEl\IENT
A misplaced or extraneous EN D statement has been encountered at a point
in the progranl where all VARY declarations and their END delimiters have
been paired.
*78
VALUE PRECISION LOST
The least significant bits have been lost during alignment of a numeric constant
used as a variable or field preset or as a value block value.
79
ILLEGAL DECREMENT WITHIN
nlegal VARY containing explicit FROM and WITHIN parameters with a
negative BY parameter.
*80·
32D UNSIGNED DATA UNIT
Variable is 32 bits unsigned (requiring 2 words).
E-9
I
M-5035
Change 4
81
ILLEGAL FORWARD REF
Forward reference PROCEDURE and FUNCTION calls may not have STATUS
constants as input or output parameters.
82
TOO MANY PARAMS LISTED
More parameters listed in call than specified in definition.
*83
TRUNCATED TO INTEGER
Scaled value has been truncated to an integer value where integer is syntactically
required.
84
MEANS OR EXCHANGE GT 132
Character string in MEANS or EXCHANGE statement greater than 132 characters.
85
NESTED MEANS OR EXCHANGE
Referenced MEANS or EXCHANGE name contains another MEANS or EXCHANGE
I
name in its substitution string.
*86
NON-STRUCTURED STATEMENT
The current statement violates CMS-2 structured programming conventions.
* 87
CONSTANT PRECISION LOST
Precision bits of converted constant in the decimal range of 1E-24 to lE-38 or
the octal range of lE-32 to IE-52 have been lost.
88
ILLEGAL EQUALS
Illegal operator or operands in EQUALS expression.
* 89
ILLEGAL LEVEL REQUEST
LEVEL OPTION argument must be 0 or 1.
90
DUPLICATE REGISTER
PARA METER registers duplicated.
E-10
M-5035
Change 4
91
VARY VRBL IS THRU VALUE
VARY loop index is the same data unit as the THRU clause data unit;
hence, an illogical VARY statement.
92
DEFINITION MISMATCH
External definition or external reference does not match previous external
definition or reference.
93
DUPLICATE SYS-INDEX
Definition of an index register as a system index which has already been
declared as a system index.
* 94
IDENTIFIER EXTERNALIZED
Local identifier definition which has been made global because of a
previous external reference.
95
STATUS CONSTANT GT 8 CHAR
More than eight characters specified in a status constant.
96
MONITOR CONTROL READ
Missing TERMINATE statement; hence Compiler attempts to read a
Monitor control card.
97
TYPE NOT SPECIFIED
A FOR-type was not specified for a FOR-expression which requires an
explicit type specification.
98
ERROR LIMIT EXCEEDED
More than 100 syntax errors if options OBJECT requested or more than
1000 syntax errors if options SOURCE requested.
E-IOA
I
M-5035
Change 5
99
DUPLICATE VALUE
The same value was specified more than once for the same FOR block o
100
VALUE MISSING
A value is not present on the BEG1N statement of a value block.
101
VALUE BLOCK MISS1NG
A BEGIN with associated value is not present following a FOR statement
or a value block which is not the last value block of a FOR block.
102
1NCOMPATIBLE TYPE
The type of an operand (numeric, Boolean, status, or Hollerith) is not
compatible with its associated operator or operator.
103
MISPLACED VALUE BLOCK
A BEG1N with an associated value is present in a context other than
immediately following a FOR statement or another value block.
104
CONDITIONAL NOT BLOCKED
A decision statement not enclosed within BEG1N-END brackets is
present in the compound statement of another decision statement.
I
*105
UNCOMPLETED CONDITIONAL
The compound statement of a. decision statement was not completed at
the end of the containing block, procedure, or function.
I
*106
CONSTANT TRUNCATED
The rightmost characters have been truncated during alignment
of a Hollerith constant used as a variable or field preset or as a
value block value.
E-10B
M-5035
Change 5
107 ILLEGAL REGISTER
A register other than 0 through 7 was specified as a PARAMETER register.
~109
NO END-CSWITCH xxxxxxxx
Named. CSWlTCH does not have a corresponding END -CSWITCH bracket declara-
tion.
*110 NO CSWITCH FOR TmS END
END -CSWITCH bracket declaration does not have corresponding CSWITCH bracket
declaration.
E-ll
M-5035
Change 3
, Object Errors and Warning Messages (Warnings Flagged with *)
The following additional error messages may appear in a compilation which
goes through the object code generation phase (OPTIONS OBJECT):
I
200
INCOMPATIBLE DATA TYPES
Attempted assignment or comparison of incompatible data unit type.
201
ILLEGAL OPERAND REF
Operand reference illegal in context used in statement.
*202
ABS OF UNSIGNED DATA
Absolute value of unsigned data unit requested.
203
DIRECT CODE SYNTAX ERROR
Illegal or undefined operand, operator, or separator in a direct code
statement.
204
SYSTEM LIMIT nn EXCEEDED
One of the following compiler limits denoted by nn has been exceeded.
The code nn has the following values:
20.
The allocation table for generated labels has overflowed.
A maxi-
mum of 1000 generated labels ,per system procedure is allowed.
This error may also occur for cases of more than 96 generated
labels for a given procedure.
21.
Compiler use and allocation of temporary words have exceeded
certain limits which, depending upon the distribution of temporary word usage and number of procedures, range from 2460 to
3840 temporary words per system procedure.
22.
A maximum of 1536 binary constants can be generated per system
procedure.
23.
A maximum of 4800 words of Hollerith constants can be generated
per system procedure.
24.
A maximum of 4000 indirect words can be generated per system
procedureo
E-12
M-5035
Change 3
205
REMAINDER NOT AVAILABLE
SAVING remainder specified in statement without fixed-point division.
206
STMT REQUffiES NONRT OPT.
Run-Time call will be generated. This requires the NONRT (non-real time)
option to be present. It is present by default if the MONITOR option is used.
207
I
EXTERNAL DEF MISMATCH
External reference does
, not match subsequent external definition.
208
UNDEFINED IDENTIFIER
Forw.ard reference to an identifier which is not subsequently defined.
209
SYSTEM ERROR
Notify CMS-2Y maintenance personnel.
210
COMPILER ERROR
Compiler or undetected hardwaie error.
211
TRANSREF IN P-SWITCH
Illegal transient reference to procedure in a P-SWITCH.
212
TOO MANY FRACTION DIGITS
Too many fractional digits specified in a direct code constant.
213
NON-NUMERIC CONSTANT
I1lega1constant or improper punctuation ia a direct code statement.
214
TOO MANY CHARACTERS
Illegal MEANS or EXCHANGE character substitution in a direct 'code
statement.
215
ILLEGAL CHARACTER
Illegal ASCII character appearing in a direct code statement.
E-l~~
I
M-5035
Change 3
216
UNRESOLVED EQUALS STMT
Reference to an EQUALS tag which is not resolvable at the time of reference.
217
ILLEGAL FORM PARAMETER
Illegal parameter in a direct code FORM statement.
218
FORM LABEL MISSING
Label missing from direct code FORM statement.
I
* 219
RIGHT TERM TRUNCATED
Truncation of operand has occurred.
220
ILLEGAL SPECIAL COND
Illegal STOP special condition specified on GOTO or RETURN statement.
221
COMPILER PROBLEM, SYNTAX
Syntax of statement cannot be analyzed by compiler.
I
222
PARAMETER TRANSFER ERROR
Statement results in alteration of contents currently held in PARAMETER
register.
Allocation Errors
The following codes may appear on the output listing to flag allocation errors:
A
Allocation error. Reference to an undefined label or incorrect program
allocation.
C
Compiler error. Incorrect instruction generation or undetected hardware
error.
Library Retrieval Errors, Messages and Operator Messages
Bee paragraph 3.4.2. 3 and 3.4.2.4 in Volume I.
E-14
M-5035
Change 5
Compiler Limits
In addition to the various compiler limits given in the explanation of the preceding error messages, the following limits are described here:
Generated Indirect Words
Compiler generated indirect words are locally defined within system procedures.
A maximum of 4,000 indirect words can be generated per system procedure.
words are grouped into 100 blocks of 40 words per hlock.
These
Within each block,
all indirect words are unique.
Generated Binary Constants
Compiler generated binary constants are locally defined within system procedures.
A maximum of 1,536 binary constants can be generated per system procedure.
These constants are grouped into 32 blocks of 40 constants per block.
Within
each block, all constants are unique.
Generated Hollerith Constants
Compiler generated hollerith constants are locally defined within system procedures.
A maximum of 4,800 words of Hollerith constants can be generated per
system procedure.
per block.
These constants are grouped into 32 blocks of 150 constants
Within each block, all Hollerith character strings are unique.
Identifiers
The compiler dictionary for user defined identifiers contains a minimum of 10,240
words and a maximum of 32,768 words. The minimum sized dictionary is standard
I
for a 49K ANjUYK-7 configuration. The number of dictionary words per identifier
is variable depending upon type of identifier. The normal entry is six to nine words
(see Table E-1). The dictionary is divided into a global segment and a local segment.
Table overflow occurs whenever the size of the global segment plus the global hash
table plus the largest local segment exceeds the size of the dictionary. The compilation is terminated at this point.
E-15
I
M-5035
Change 5
TABLEE-l DICTIONARY ENTRIES
Number of Words Per Entry
Types of Identifier Dictionary Entries
1)
I
I
I
I
I
abnormal exit name
n=5
2) auto data name
n=7
3) cswitch name
n=3
4) data pool name
n=8
5) display label
n=6
6) equals name
n= 5 +2p
7) dum my loop, label
n=4
8) exchange name
n= 5 ~rc:j
9) field name
U= 6 + 2s
10) file name
n = 8 + 2s
11) for block
n = 3 + 2s
12) format name
n=7
13) form label
n=7
14) function name
n =7+i
15) header name
n=4
16) index switch name
n=7
17) item -area name
n=8
18) item switch name
n=7
19) like-table name
n=9
20) local data name
n=7
21) local index name
n=7
22) local pool name
n=8
23) major index name
n=8
24) means name
n=5
25) nitems name
n=5
26) procedure index switch name
n = 7 + max (i, 0)
27) procedure item switch name
n=8+max(i, 0)
28) procedure name
n = 8 + max (i, o)e
29) program base name
n=8
E-16
if:j
M-5035
Change 5
Number of Words Per Entry
Type of Identifier Dictionary Entries
30) ranged data name
n=9
31) statement name
n=7
32) sub-table name
n=9
33) system data name
n=4
34) system index name
n=4
35) system name
n=4
36) syste m procedure name
n=7
37) table name
n
38) table pool name
n=8
39) value block
n=5
40) variable name
n = 7 + f + 2s
=9 + d + t
Legend:
c
=
num her of characters {C : 3}s an integer such that[C : 3] ~ C : 3
d = zero for horizontal or vertical tables
= number of dimensions for an array
e = num her of exit parameters
f
= 1 for fixed ;>oint data
= 0 otherwise
i
= number of input parameters
n = number of dictionary words per name
o = number of output parameters
p
=number of names in the equals expression that are relocatable
s = number of status constants
t
= 1 with table typing
= 0 without table typing
E-17
I
(1 + 2 s)
I
M-5035
Change 2
Generated Labels
Compiler generated statement labels are locally defined within system procedures.
A maximum of 1,000 generated labels per system procedure is allowed. Each
procedure is limited to 128 generated labels; the ~orst case is 96 generated
labels for a procedure that follows one with 32 or fewer generated labels.
Whenever one of these limits is exceeded, the remaining generated labels assigned
to the offending procedure or system procedure will be unallocated.
Generated Temporary Words
Compiler generated temporary words are locally defined within system procedures.
A maximum of 32 blocks of temporary words can be generated per system procedure.
The maximum number of temporary words per block is 120.
The length and starting
address of a temporary block is established at the end of a procedure if the
number of reserved temporary words is at least 80 or at the end of the system
procedure.
The number of temporary words per procedure is at most 120 and 40
for the worst case.
Depending upon the distribution of temporary words and the
number of procedures, the best case maximum number of temporary words per system
procedure is 3,840, the worst case is 2,460.
Cross Reference Errors
*****COMPLETE GLOBAL CROSS REFERENCE UNAVAILABLE
TOO MANY ELEMENTS*****
Whenever the number of elements per compile is 160 or greater, a global
cross reference cannot be produced. The local cross reference for each
element will still be available and printed. The major header and all
system data designs and system procedures are counted as elements; minor
headers are not inCluded in the element count since they are considered
as part of the succeeding system element.
*****LOCAL CROSS REFERENCE INCOMPLETE*****
This message may appear at the end of a local cross reference listing.
It indicates that the table for collecting reference data .overflowed and
no more references for that element were collected.
E-18
M-5035
Change 2
*~:~U::~CERHOR
EI'K;OUNTEHElJ DUllING CROSS HEFEHENCE DATA
COLLECTIONf.:~:f.(f.n::
This message may appear at the end of a local cross reference listing.
It indicates that an invalid condition was detected during cross
reference data collection and was caused by a compiler error.
~:*f.C~C*TOO
MANY IDENTIFIERS FOR SORTING -- NOT OUTPUT
GIVEN)::)::;::~C):;
This message informs the user that he will not receive his requested
cross reference or symbol analysis output because there are too many
identifiers for
the compiler alphabetized identifier table.
Tape Errors
The user is notified of tape related errors detected during compilation.
Error
messages are provided on the standard hardcopy device and on the operator
communication device.
**~C~;~CMAG
TAPE ERROR UNIT Tn name
This message is printed on the standard hardcopy device for any unrecoverable hardware errors or compiler detected checksum errors.
Tn
identifies the offending tape unit and the name identifies which compiler output tape or compiler scratch tape encountered the error.
normal range of n in Tn is I through R.
The tape names are:
The
compiler
outputs, CCOMN, CSRCE, COBJT, CLIST; compiler fCRATCHm (internal compiler scratch numbers m = I . . . , 4); and COMPOOL input (for COMPOOL
and TO, the SEL-POOL
req~est
could not be satisfied; if Tn is a normal
tape unit, a bonafide error was detected).
****~~OMPILE
TERMINATED
This companion message to the one above states that the tape error or
the checksum error detected against one of the compiler scratch tapes
necessitates termination of the compilation.
E-19
M-5035
Change 3
*****OUTPUT TERMINATED
This companion message to the first one above states that the tape error
detected against CCOMN, CSRCE, COBJT, CLIST, or COMPOOL necessitates
that output to that tape be discontinued.
Compilation and optional outputs to
other tapes will be continued.
*****WRITE ERROR Tn
This message on the operator communication device informs the operator or
user. that an unrecoverable hardware error has been detected during a write
operation to tape. Tn designates individual tape units Tl through T8.
*****CHECKSUM ERROR Tn
This message on the operator communication device informs the operator or
user that an unrecoverable hardware error 9r a compiler detected checksum
error has been detected during a read operation from tape. Tn designates
individual tape units Tl through T8.
(A TO tape designator may indicate a
SEL-POOL request that could not be satisfied. The assigned tape number is
not available to the compiler under such circumstances. )
Run-Time Errors
The following error messages are printed by the rUQ. time programs during execution
of the CMS-2 debug and high-level I/O operations.
During a Debug DISPLAY or SNAP operation, the following error messages are printed
in place of the expected results:
** INVALID DATA REFERENCE **
An illegal data unit was referenced.
Legal data 'units are an array, field, item,
REGS, sub-table, table, and a word reference.
** INVALID STATUS **
A data unit, with status attributes, has a status value without its corresponding
status constant.
E-20
M-5035
Change 3
:le*
INVALID USE OF MAGNITUDE
**
A magnitude was specified on a non-numeric data element.
Errors detected by the run-time high-level I/O operations are flagged by a one line
location message and a one line description message.
The run time abort message
will repeat the location message. The location message has the following format:
ERROR IN RTxxxx RTDSL AT yyyyyyyy LOGICAL UNIT zzzzzz.
where RTxxxx
- Name of run-time routine detecting the error.
yyyyyyyy
-
zzzzzz
- Hardware device name.
Core address of the first entry in the Run-Time Data
Specification List (RTDSL).
The error description message, with its symptoms and disposition, are as follows:
ALREADY OPEN
A file was OPENed twice without an intervening CLOSE statement - job abort ..
BAD READ FOR FORMATTED INPUT
An unrecoverable hardware error has invalidated the input data prior to
internal conversion - job abort.
BAD WRITE FOR FORMATTED OUTPUT
An unrecoverable hardware error is detected while outputting a formatted
message - job abort.
BUFFER SMALLER THAN DATA UNIT
The formatted buffer or source data unit is smaller than the decoded target
unit during a DECODE or formatted INPUT operation - job abort.
The cumulative character position counter of the converted data unit is
larger than the literal buffer or target unit on an EN CODE or formatted
OUTPUT operation - job abort.
E-21
M-5035
Change 3
DATA EXHAUST/END OF TAPE
An End of Tape (EOT) mark has been detected on a previous INPUT or OUTPUT
operation - job abort.
END ITEM SMALLER THAN START ITEM
A ranged data element specified by the form «a) ... (b», has an ending item
(b) smaller than the starting item (a) - only the starting entry is processed.
ILLEGAL FORMAT SPECIFICATION
Incompatible structure within the RTDSL's associated with the specified
operation - job abort.
Data is incompatible with format specification.
ILLEGAL INPUT CHARACTERS
Input characters for an I, E, and F format contains a character other than
a "+", "_", "blank",
If. " ,
or a number 0 through 9 - flush the target data unit
with zeros.
Number of octal characters (for a 0 format) exceed 21 - flush the target data
unit with zeros.
LABEL INCORRECT
The first record of a tape file doesn't match the specified label during a
CHECKID operation - job abort.
LOST FILE REFERENCE
A file data unit specification wasn't located as the first entry in the parameter
list associated with a file operation - job abort.
NOT AT LOAD POINT
A magnetic tape fUe was not at load point during a CHF;CKID or DEFID
operation - job abort.
E-22
M-5035
Change 3
NOT OPEN
A file operation was requested before the file was OPENed - job abort.
NaT OPENED AS INPUT OR SCRATCH
A file operation (CHECKID, INPUT, OUTPUT) was requested before the
user-defined file was OPENed as an input or scratch file - job abort.
NO AVAILABLE TAPES
No available tape units remaining.
NOT OPENED AS OUTPUT OR SCRATCH
A file operation (DEFID, ENDFIL) was requested before the user-defined
file was OPENed as an output or scratch file - job abort.
OUTSIDE TAPE PHYSICAL FILE
An End of Tape (EOT) mark was detected while positioning a file - job abort.
OUTSIDE FILE BOUNDARY
A file operation (INPUT, POS) was requested which either exceeds the
number of records declared for that file or an EOT mark was detected job abort.
OUTPUT NUMBER TOO LARGE
Number of converted characters exceeds the width specified by the format
descriptor - flush the formatted target data unit with an ASCII character (*).
PROGRAM TERMINATED BY RUN TIME 10
Job abort message.
E-23
lM-5035
Change 3
UNRECOVERABLE HARDWARE ERROR
The monitor has detected an Unreco'verable Hardware Error (UHE).
For a current unformatted INPUT or OUTPUT statement, processing will
continue as normal with one exception.
If a
multipl~
read or a multiple write
operation occurs as a result of a single INPUT or OUTPUT statement on a
stream file, job abort will be invoked.
Job abort will be invoked for all current formatted INPUT and OUTPUT
operations, file and record positioning (FIL, POS).
****
USER ERROR DISPLAY FLOATING POINT MAGNITUDE E+21 EXCEEDED
Display table allows only E+21 characters to be displayed.
****
USER ERROR MAGNITUDE E-22 EXCEEDED--TRUNCATION OCCURRED
Display table allows only E-22 characters to be .displayed.
E-24
M-5035
APPENDIX F
SUMMARY OF ASSEMBLER ERROR CODES
E 'Error Code
Expression errors result from illogical expressions such as a decimal digit
within an octal number; element type inconsistent with arithmetic operators;
express ion improper in con text such as a GO I ine used outside a MACRO or a DO
count in excess of 2 16 _1.
D Error Code
Duplicate errors result from labels defined more than once with different
values. A label used in an expression affecting an address counter is not
defined prior to its use resulting in a different addressing sequence in
the first and second assembly passes.
U Error Code
An Undefined error results from a reference made to a label which is nowhere
defined in the program. A reference is made to a label which was not externalized properly by a (A.+l )'" Y
II
X
X
02
5
SSUM
a,y,b,s
STORE SUM
(Aa) + (A.+l)-+Y
and AI +l : (Aa)i =
(Aa )r
II
X
X
02
b
SDIF
a,y,b,s
STORE DIFFERENCE
(Aa +I ) - (Aa )'" Y
and Aa+l: (Aa) i
(Aa)e
II
X
X
02
7
OS
a,y,b,s
DOUBLE STORE A
(Aa+l,A.)
03
0
ROR
a,y,b,s
REPLACE INCLUSIVE OR
(Y)
RSC
a,y,b,s
03
Y + I, Y
II
ED (Aa ) ... Y and Aa
II
X
X
REPLACE SELECTIVE CLEAR
(Y)' O(Aa)"'Y and Aa II
X
X
X
03
2
RMS
a,y,b,s
REPLACE SELECTIVE
SUBSTITUTE
For (Aa)n = I'!n"' Y
andA.+ l
1I
X
03
3
RXOR
a,y,b,s
REPLACE EXCLUSIVE OR
4
RALP
a,y,b,s
REPLACE A+ LOGICAL PRODOCT
(Y)
(Aa )"'Y and Aa II
(A + ) + (Y.) 0 (A )'" II
a l
a
Y and Aa+l
X
03
X
X
03
5
RLP
a,y,b,s
REPLACE LOGICAL PRODUCT
(Y)
0 (A.) -+Y and Aa
II
X
X
03
6
RNLP
I,y,b,s
REPLACE A- LOGICAL
PRODUCT
(Aa +}) - (Y)
Y and AI+l
0 (Aa) -+ II
X
X
03
7
TSF
y.b, s
TEST AND SET FLAG
Set
i
G-l
CD; 1 "'Y31
II
X
M-5035
Processor Instructions
Function
Codes
O~
0
05
2
05
Mnemonic
(Continued)
Instruction
Delcription
Forma t
DL
a,y,b,s
OOUBLE LOAD A
(Y + I, Y)· A.+I,A.
II
DA
a,y,b,s
DOUBLE ADD A
(Y+'1, Y) + (A.+ , A.) •
1
A.+1 , A.
II
DAN
a,y,b,s
DOUBLE SlETRACT
-
(A.+ 1 , A. )
(Y + 1, Y) •
II
(Y+l,Y);
II
HPT
PI
CA
A.+1 , A.
05
3
DC
a,y,b,s
DOUBLE COMPARE
(A a +1 , AI)
Set CD
05
4
LBMP
B,y,b,s
LOAD B4SE AND ME.\lORY
PROTECTION
! . Sa;!!!
04
SPR a :
I
04
II
SIR. 19-17; Y + (BO)b SIR. 15-0
Ob
0
Of>
FA
a,y,b,s
FLOATING POINT ADD
fAN
a,y,b,s
FLOAT! NG POI NT SIJBTRACT
(A a +1 , Aa) + (Y + I, Y) Aa +1 , Aa
(A a +1 , Aa) - (Y + 1, Y) -
II
II
Aa +}, Aa
lib
2
FM
a,y,b,s
FLOATI NG POINT MIJLTI PLY
06
3
FD
a,y,b,s
FLOATING POINT IJIVIDE
Ob
4
FAR
a,y,b,s
FLUATING POINT ADD WITH
ROUND
Dt>
5
FA~R
B,y,h,s
FLOATl NG POI NT SIJBTRACT
WlTH ROUND
06
6
FMR
B,y,b,s
06
7
FDR
07
0
07
0
(A.+ 1 ,
Aa) x
(Y
+ I, Y) -
II
(Y
-+
I, Y) -
II
Aa+l' Aa
(A a +I , Aa)
+
Aa+I' Aa
07
+ 1.
Y) result
II
+ I, Y) result
II
FLUATING POINT MULTIPLY
WITH ROUND
(Aa +I , Aa) x (Y + I, Y) Aa +1 , Aa; r,ound resul t
II
8,y.b,s
FLOATING POINT OI\iIDE
WITH ROUND
II
X5
sy,b
ENTER EX EC I;},} VE 5T ATE
(AA+l' Aa) + (Y + I, Y) Aa + 1 , Aa; round result
Interr,upt to Executive
Entrance Address
I PI
sy,b (a=1 ) INTERPROCE550R INTERRUPT
Allow selective interrupts
to other processors
II
X
AEI
a,sy,b
AI1.0W ENABLE INTERRUPT
Enable Interrupt Request
for lOG Channel Specified
a
Disable Interrupt Requelt
for IOG Channel Specified
a
Y
lOG a Monitor Clock
AD DR , Y=y + eBb) + (5 )
_ lOG
S
II
X
II
X
II
X
II
X
X
07
2
PEl
a,sy,b
PREVENT ENABLE INTERRUPT
07
3
LIM
a,sy.b
07
4
IO
a.y.b,s
LO AD, EN ABLE I OC MON nOR
CLOCK
INITIATE INPl'T.iOL'TPlJr
07
~
lR
07
b
RP
LA
J()
(A a +1 , Aa) -+ (Y
Aa +I , Aa; round
(A a+1 , Aa) - (Y
Aa+l' Aa; round
04
II
I NTERRIiPT RETIJRN
Return to Processor St.te
designated by D5W
II
lI,sy,b
REPEAT
Repeat NI (B7) times Or
until telt condition is
sati died
II
B,y,k,b,s
LOAD A
-Y -
G-:!
.
A
X
X
M-5035
Processor Instructions (Cont 1nued)
function
Codes
Mnemonic
Ins true t i O'n
Description
for-
RPT
PI
CA
l1li t
11
LXB
a,y,k,b,s
LOAD A AND INDEX B
X -+Aa i (f\) +l-+f\
12
LDIF
a,y,k,b.s
LOAD DIFFERENCE (Y-A)
X
X
13
ANA
B.y.k.b.s
ADD NEGATIVE A
X
X
14
AA
a.y.k.b.s
ADD A
X - (Aa )-+A a +1
(A ) - X-+ Aa
a
(Aa) + X-+ Aa
X
X
1;,
LSUM
a.y.k.b.s
LOAD SUM (Y+A)
X + (Aa) -+Aa+l
X
X
It»
LNA
a.y,k.l.J,s
LOAD NEGATIVE
X' -+Aa
X
X
17
LM
a.y.k.u.s
LOAD MAGNITI:OE
I xl
X
X
20
LB
a.y.k.b.s
LOAD B
X
X
21
AB
a.y.k.u.s
ADD B
X
X
22
ANB
a.y.k.b.s
SUBTRACT B
X
X
23
SB
a.y.k.b.s
STORE B
y ... B
a
(Ba) + -Y-+Ba
(B ) - y ... B
a
a
(Ba )"'Y
X
X
X
X
X
-+ Aa
(A )-+ Y
a
(Aa) -+Y;
24
SA
a.y.k.u.s
STORE A
25
SXB
a.y.k.b,s
STORE A ANn INDEX B
26
SNA
a.y.k,b,s
STORE NEGATIVE
(A )'-+Y
a
X
X
SM
a,y,k,b.s
STORE MAGNI ruDE
\Aal"'Y
X
X
32
8Z
al<.y.b,s
CLEAR BIT
O-+Y n ; (n = ak)
X
33
BS
ak,y.b.s
SET BIT
I"' Yn i (n = ak)
X
34
RA
a,y,k,b.s
REPLACE AUO
X + (A.) "'Y and Aa+l
X
X
3!'i
RI
a,y.k.b.s
REPLACF. INCREMENT
X + 1 ... Y and Aa
X
X
36
RAN
a,y.k.b,s
REPLACE SUBTRACT
X
X
37
RD
a,y.k.b.s
REPLACE DECREMENT
X
X
40
M
a.y.k.L.s
MULTIPLY A
X - (Aa) ... Yand "a+l
X - 1... Y and Aa
X x (Aa)-+ Aa+l' Aa
X
X
·11
0
a.y,k,b,s
DI \'1 OF. A
(A8+1• Aa) ~ X-+Aa i
Remainder ... "a+l
X
X
·12
BC
ak.y,b,s
CO~ARE
(Y)n: 0: Set CD to equal
if (Y) n = 0 and nonequ&l if (¥)n f. (l.(n=ak)
X
·13
eXI
a,y.k,h,1
CO\1PARE INDEX INCREMF.NT
(B ) : X if (B;l) ~ X,
a
O-+LI. set CLI to OL; if
(B ) < y, (Ba) + 1-+ Ba'
a
set CD to WL
X
'(
44
C
a.y.k.b,s
COMPARE
CAa) : Xi Set CO
X
X
45
CL
a,y.k.h.s
COMPARE L1MITS
X
X
·16
CM
a.y.k.h.s
COMPARE MASk.EU
(Aa) , (Aa +1) : Xi Set CD
(A3+1 ) : (Aa) 0 X; Set CD
X
X
47
CG
8.r,k.h.s
COMPARF GATED
IX -
X
X
.,.. ..'
BIT TO ZERO
(Aa)
(~)
I:
+
1-+~
X
(A8 +1 ); Set
CD
50
0
JEP
a.y.k.b.s
If (A + ) 0 (Aa) even,
8 1
jump to 1.; else NI
JUMP EVEN PARITY
G-3
III
M-5035
Processor Instructions
Functlon
Code,
50
Mnemonic
Instruction
(Continued)
Format
Oe.cription
0 (A.) odd,
I: else NI
JOP
.,y,k,b,s
JUMP ODD PARITY
a.y,k.b,s
DOUBLE JUMP A ZERO
If (AI +1 , AI)
0
jump to I: else NI
III
If (A + , AI) ~ 0,
I I
jump to 1: else NI
III
jump to
50
2
DJZ
50
3
DJNZ
I,y,k,b,s
DOUBLE JUMP A NOT ZERO
51
0
JP
a,y.k.b,s
JUMP A POSY TI VE
III
It (A&+l)
=
~
If (A.)
0, jump to.!;
III
III
e1ae NI
51
51
2
IN
a,y,k,b,s
JUMP A NEGATIVE
If (A ') < 0, jump to X:
JZ
8,y.k.b,s
JUMP A ZERO
If (AI)
I
else NI
= O.
jump to
!;
III
If (Aa) ~ 0, jump to
!:
III
else NI
51
3
JNZ
I.y.k,b,s
JUMP A NOT ZERO
else NI
52
0
LBJ
a,y.k.b.s
LOAD B AND JUMP
(P)-+Ba • jump to
r
III
(X-+P)
S2
JIIa
a,y,k,b.s
JUMP B NOT ZERO
If (B.)
> 0,
(B ) - I
a
-+ B , jump to
a
else NI
III
I:
= (Bb)+sy
52
2
JS
sy,k,b
JUMP SY + b
!
52
3
JL
y,k,b,s
JUMP L(JIJER
Jump to
S3
0
JNF
y,k,b.s
JUMP NO OVERFLOW
If 00 not set, jump to
else NI
53
01
JNE
y.k.b.s
JUMP NOT EQUAL
If CD set ~, jump to X:
else NI
53
10
Jor
y,k,b,s
JUMP OVERFL(JIJ
If 00 set, jump to
else NI
53
11
JE
y,k,b.s
JUMP EQUAL
~f CD ,let
else NI
53
21
JG
y,k,b,s
JVMP GREATER THAN
If CD set >. jump to
else NI
1:
III
53
31
JGE
y.k.b,s
JUMP GREATER THAN OR EQUAL
If CO set ~, jump to
else NI
X;
III
53
~I
JLT
y.k.b.s
JUMP LESS THAN
If CD set < , jump to
I:
III
X:
III
.1:
III
!
III
III
Lower
=.
I:
.!;
jump to
III
III
III
I:
III
else NI
53
51
JLE
y,k,b,s
JL'MP LESS THAN OR EQUAL
If CD set S , jump to
else NI
53
61
JNW
y.k. b. s
JUMP NOT WITHIN LI MITS
If CD set OL. jump to
else NI
:,:\
71
JW
y.k. b. s
JUMP WITHIN LIMITS
I f CD aet WL. jump to .I:
else NI
III
53
2
RJ
Y,k, b. 5
RI':TIJRN Jl1MP
(P) ... !.
III
!
+ I+P
RPT
PI
CA
M-5035
(Continued)
Processor Instructions
function
Cod ••
Description
Instruction
Mn_oni~
ForIIIIt
53
2
RJC
8,y,k,b,s
RETURN JUMP CONDITIONAL
SEtTING
If jump key, 'et, (P)
"'X, X + I ..P: ehe NI
III
53
2
RJSC
8,y,k,b,s
RETURN JUMP, STOP
DITJONAL SETT1NG
(P)"'y, X + l-+P; it
stop key let. stop:
else NI a
III
J3
3
J
Y,k, b, 5
JUMP
X... P
III
JC
a,y,k,b,s
JUMP CONDITIONAL SETTING
If j umP
a set, Jump to
else NI
III
1.;
X.. P ;
if Stop KeY set,
a
stop; else NI
III
53
53
3
~
54
CO~-
RPT
PI
CD
fD
a>
fD
JSC
a,y,k,b,s
JUMP, STOP CONDITIONAL
SETTING
LCT
ak,y,b,s
UlAD TASK CMR
X"CMR
X
ll'
X
X
X
t7:>
X
X
5;1
LCI
ak,y,h,s
LOAD INTERRUPT CMR
X "'Interrupt CMR
56
SCT
ak,y,b,S
STORE TASK CMR
(CMR)
5i
SCI
ak.y,b,s
STORE INTERRUPT CMR
(Interrupt CMR) -+1
STORE TASK CMR IN A
(CMR) ... A
b
(Interrupt CMR) -+ Ab
IV-A
IV-A
X
(A ) -+CMR
b
(A ) . . Interrupt. CMR
b
Shi ft (Aa) left. end
around
IV-A
9J
IV-A
X
hO
HSCT
60
HSCI
af ,b
4
af 4' h
STORE INTERRUPT CMR IN A
"'1
61
HLCT
af 4h
LOAD TASK CMR WITH A
61
HLCI
af 4b
LOAD INTERRUPT CMR WITH A
a,m
a, b,l
a,b,2
SHIFT LEFT CIRCLLARLY
a,m
a, b,l
a,b,2
DOUBLE SHIFT LEFT
CIRWLARLY
Shift (A&+l' A8 ) left,
end around
a,m
a, b,l
a, b,2
SmFT RIGHT FILL ZEROS
Shift (A ) right, end off, IV-8
a
zero fi 11 on left
DOUBLE SIIlF'T RIGHT fiLL
ZEROS
Shift (A + , Aa) right,
a 1
end off, 7.f'TO fill on
left
IV-B
SHIn RtGHT FIl.l. SIGN
Shi ft (A ) riqht eond (Iff.
J
sign fi 11 on left
IV-8
Shift (..\ a ... l' Aa) riyht,
lIon
left
IV-B
Normal i:re
shift
IV-.\
A ).
ihp. (~
:1'''': . a '
(:ount .... Ab
I V-\
HL~
62
HLC
HlC
HDL~
63
HDLe
HDLC
H~
64
HRZ
HRZ
HD~ a,m
65
HDRZ
a,b,l
a.h.2
IfRS®
a,m
I10RZ
60
67
70
0
BRS
HRS
HDRSJ:>
HDRS
HDRS
a,b.2
a,m
a, b,l
8.b,:!
OOtBLE SHIFT kiGHT FILL
nSF
a,b
SCAlE FACTOR
a. b, I
SIG~;
CA
~
IV-B
IV-B
end 0:'(. si~tn fi
(A,) ;
co'.'··· ...... AI)
HDSF
70
D[Il;BLI': SCALE F!i.l::rOR
a,b
~orllUl
shif~
70
2
HCP
:1
COMPL.E~ENT
iO
~
HD(P
a
[)(}!'BI E COMPU.MrNT A
71
0
HOR
a,h
INCLt:S1VE OR A
.\
(1\
Priv11 eI,Jed hUructi on
G>
Privtlel,Jed in.truction if
208 ~8f4 ~ ~7A
C])
if4s8~7.
b()H ~
a f 4 c 77 ,
8
(;-.1
a+1
. A )'
A
A
a .... "~'l' a
_--_ _--
(At!) Ef>
.......
__
.
M-5035
Processor Instructions (Continued)
function
Mnemonic
Instruction
Forllll t
De.cription
RPT
PI
Codes
71
HA
',b
ADD (SUM)
(A.) + (\)
004
A.
IV-A
004
A.
IV-A
004
A.
IV-A
71
2
HAN
',b
SUBTRACT (DIFFERINCE)
(A.): ('\);
Set CD
IV-A
74
7
HCB
',b
COMPARE B. WITH Bb
(B.) :(B ); Set CD
IV-A
77
o
HSlM
',b
STORE I/O MONITOR CLOCk (IOC. Monitor Clock)
HSTC
',b
STORE REAL-TIME CLOCk
(IOC. RTC) ... '\
77
.004
b
004
'\
IV-A
x
1 V- A
77
4
HPI
PRE VENT CLASS I I I
INTERRUPTS
Lock out Cl,sl III
Interrupts
lV-A
x
77
5
HAl
ALLOW CLASS III
INTERRUPTS
Allow Cl,sl III
Interrupts
lV-A
x
77
b
HALT
STOP PROCE;SOR
Stop Processor Oper.tion.
IV-A
x
77
b
HWFI
WAIT fOR INTERRUPT
Stop referencing lIIelllory
until interrupt occurl
IV-A
x
CD
G)
@
1=1
Privll1'1ged taltruction if 4 c
8 C
Privileged instruetion it b0
s af 4 c 77 8 , 208 c .f4 c 278
8
7.
S.. Ut tutructions hIVe three possible forlllltl:
f
f
is Ihift count)
',111
(III
I,b,l
(shitt count inB )
b
",b,2
(Ihitt eount i n \ )
G-6
CA
M-5035
Extension Instructions
Function
Instruction
Memoni c
•
NO OPERATION (Full Word)
STORE ZEROS
o ... !
x
NO OPERATION (Half Word)
(Bo> ... Bo
20
ZB
CLEAR B
20
NOOP
23
SZ
3
HNO
c =2
IW
y,b,s
INDIRECT WORD
c = 1
IWe
y,w,p,b,s
INDIRECT WORD CHARACTER
c =3
IMCI
y,w,p,b,s
INDIRECT WORD CHARACTER
INCREMENT
IWS
sy,b
INDIRECT WORD, SPECIAL
BASE
IWB
sy,b
INDIRECT WORD, SPECIAL
INDEX
MP
r,i,or,ow,ia,ir
HK
e
HAU -WORD
Bew
y,l
BUfFER CONTROL WORD
BCWE
y,
c
= 0,
bit
c
29=0
= 0,
bit
29=1
1. k
RPT
x
x
x
ZA
74
Forllllt
o ... A.
o ... B.
o ... Bo
CLEAR A
10
y,k,b,s
Description
e~STANT
BUFfER CONTROL WORD ESI
G-7
IV-A
PI
CA
M-5035
Input/Output Controller Ins true tlons
Function
Mnemonic
Instruction
OllcrSpUon
10
IB
J.y,k,c,m
INITIATE INPUT BUFFER ON Cj
Ini t1lte input butter on CJ
11
OB
j,y,k,c,m
INITIATE OOTPt:T BUFFER ON CJ
In1th te output butter on Cj
12
FB
jfy,k.c,m
INITIATE EF BUFFER ON Cj
Inlt1lte EF butter on Cj
13
XB
j,y,k,c,m
INITIATE EI BUFFER
= 0)
TIB
j,c,m
TERMINATE INPUT BUFFER
TOB
j,e,m
TERMINATE OUTPUT BUFFER ON Cj
Terminate output buffer on Cj
TFB
j ,c, m
TERMINATE EF BUFFER ON Cj
Terminate EF butter on Cj
TXB
j,c,m
TERMINATE EI BUFFER ON Cj
Terminate EI butter on Cj
(k
= 1)
= 2)
= 3)
= 0)
IMIR
j ,c
SET INPUT MONITOR INTERRUPT
REQUEST ON Cj
Set input monitor interrupt
request on Cj
15 (k
= 1)
OMIR
j ,c
SET OUTPUT MONITOR INTERRUPT
REQUEST ON Cj
Set output monitor interrupt
request on Cj
15 (k
= 2)
FMIR
j.c
SET EF MONITOR INTERRUPT
REQ:JEST ON Cj
Set EF monitor
on ·Cj
IS (k
= 3)
XMIR
j.c
SET EI MONITOR INTERRUPT
REQUEST ON Cj
Set Ell monitor interrupt reque.t
on Cj
16 (k
= O)
= })
= 2)
= 3)
=O)
= 1)
AIC
j .y, c
ACTIVATE INPUT CHAIN ON Cj
Aetivate input ehain on Cj
AOC
j .y.e
ACT! VATE OUTPUT CHAIN ON CJ
Activate output ehaSn on Cj
AFC
j.y. c
ACT! VATE EF CHAIN ON Cj
Aetivate EF chain on Cj
AXe
j,y.c
ACT! VATE £1 CHAIN ON Cj
Activate EI ehain on Cj
TBZ
kj.y
TEST BIT CLEARED
It (Y)kj
TBS
kj.y
TEST BIT SET
If (Y}kj '" 0, skip; else NI
20
JIO
y,e
JUMP (INPUT/OUTPUT)
Y.... Chain Pointer
22
LICM
kj.y,e
LOAD IOC CONTROL MEMORY
(Y} ....
IOC Control Memory address kj
23
ILTC
y.c
LOAD REAL-TIME CLOCK
(Y} ....
RTC
24
SICM
kj ,y.e
STORE IOC CONTROL MEMORY
(lOC Control llemorY\j ... Y
25
IDS
kj.y.e
SET BIT
1.... Ykj
26
IBZ
kj.y.e
CLEAR BIT
O.... Ykj
27
ITSF
1 fC
TEST AND SET FLAG
clear~A:
14 (k
1-1 lk
14
(k
14 (k
15
16 (k
16 (Il
16 (Il
17 (m
17 (m
G-8
~
Cj
~
Initiate EI butter on Cj
Cj
Terminate output butter on Cj
= 0,
Int~rrupt
reque.t
skip; else NI
I .... Y • if (Y}~l .a. originally
.kip;
Ie NI
M-5035
Change ii
APPENDIX II
CMS-2 SYSTEM TAPE DUPLICATION
Addition~l
copies of the CMS-2 system tape may be
m~de
by the
followin~l:
Form~t
$.10B
$SYSMAKER
I
ENDSYSBD
$END.I0B
input name, output namp
.Explanation
input name
One to eight character name of the system tapp
be copied.
to
To copy the system tape that is curn'ntly
running, code the name CMS2SYST or leave this fif'ld
blank.
output name
One to eight character
copy is to be written.
n~me
of the tape on which thf'
If this field is not Slwcifipd,
the copy will be written on a tape
Example
"JIGS
I I I II I I I I I I
~fN,D,l,OIBI ,
I
I , ,.,
I
,
This would duplicate the system tape IN on to tape OUT
H-l/H-2 Blank
nam~d
NEWC0PTP.
M-5035
Change 2
APPENDIX I
SYSTEM MODIFICATION
INTRODUCTION
1.1
There are two basic methods of modifying the
CMS-2.
-bil
Sf'1
fi(~ld.
The op<'raLion is allowed if the bit is s('I.
Bi t Numbpr
~
4
:~
2
1
Type
I
on
ow
fA
IH
IR = 1 - Allows the use of interrupt
index and base registers in
indirect nctctressing~
IA
1-15
=1
- Allows indirect actdressinu.
M-5035
Change 2
ow = 1
-
Allows operand writing.
OR = 1 - Allows operand reading.
I
= 1 - Allows instruction execution.
NOTE
If the memory protection code is not specified
(default mode), the SYSMAKER inserts a code
of 36 for type 2 or4 records (instruction
records) or a code of 16 for type I or 3
records (data records)o
A 1 indicates that the corresponding record
has no initial length. The SYSMAKER
puts no data on tape. The record name
appears in the segment directory; and
when the segment requests the Monitor to
expand the record, the record is given
space in memory (if dynamic).
Length
I .2.1.4
Loader Ini tiate Card
The loader initiate card commands the SYSMAKER to transfer control to the
Object Code Loader (described in Volume I, Section 3
of the User's Reference
Manual). The cards following the Loader initiate card are inputs to the
Object Code Loader until an END card appears. Then the Loader returns
control to the SYSMAKER.
Format
LOAD
counter release code
Explanation
Counter Release Code
A code that informs the SYSMAKER whether
or not the SYSMAKER is to use previously
derived data during the current processing
and whether or not the SYSMAKER is to save
the data (such as bound data or linkage
tables) as follows:
Blank - Compute new tables as required
and discard when finished.
1-16
M-5035
Change 2
- Sflve load information for npxl
loader command.
:.! - Use
}o;ld
information generatpd by
previous IOlldnr processing llnd s;)\'('
currenl
lOlld informal ion for
111'\.1
loader command.
:\ - Use load information <]enpral!'d hy
pn'violls loader
pr()r,f!Ssjn~1
nnd
di scant when f ini shed.
NOTE
Wh e n II :2 0 r :3 j sus ed nolo;) de r
directives or END card follow o
I
1.2.1.5
Example Build or Insert Requests
Loader directives
May have an object deck
1-17
M-5035
Change 2
Loader dirp.ctives
May have an object deck
Loader directives
May have an object deck
l:::::~:S:y :S:a:D: \ : : : : : : : : : l :::
I : : : : : \ : : : : : : : : :
l ::
The last card indicates the end of input to the SYSMAKER (see paragraph
I.2.~).
The above (!xample cffeetjvely adds a new r.omponent (number 0) behind
component S to the system on tafH~ SYS0:36 and placp.s the new system on lapp.
SY~~\7.
The new componpnL consisls of three segments.
1-180
M-5035
Change 2
Loader direcl ives
May have an object t1pck
I ::
:::~:S~ :':9:1: : : : ::: : :
J : : : : : :
: : : : : : : : :
The last. card indicates the end of input 10 the SYSMAKER.
examp Ie cffec t i ve ly adds a new segmen t (number t})
: : : : : :
i::
The above
to componen t
n
on t
(1(lP
SYS~J7 and places the new system on tape SYS0:JO.
I.2.2
R(~plllCP Funetion
Thp r<~place function is the process which replnces old spuments with
ones.
The new
f(~cords
of' tlte
sevmf~nt
nt'\\'
retain all old tiirf'ctory infornllank
when the routine is to move the componl'nt
con t a i n i n9
1. he s (~g me n t
position.
If
the
Asg Name
eomp
s
t () a
new r e III I i v(.\
t.his field contains data,
£los field
must be
b'lank.
An up to fOllr character name or version
the routin(' assigns to the
np\\!
tape.
name appears in the second word of the
res i den t tHrec tory.
1-23
This
M-5035
Change 2
The up to eight chari1cl('r nflme of ttw input
Input Tape
t.ape thilt the SYSMAKER is to use in the
console messag('s.
If this fi{'ld is blilnk,
the routine will use
th(~
current system
tape.
~Ion
The nbsolute oelal
Loc
of Ih('
~lonilor
nddr{'~s
of
Ull'
sli1rl.
b()olslfi1P load an'a.
The
current. Monitor is alwi1Ys boot('eI inlo the
upper aren of memory.
This
valU(~t
hen
specifies the bottom of the resident
~lonitor
load area and the top address
available to the non-resilient
If this fipld is blank, the
assumes address
routin(~s.
rou1.in(~
o.
NOTE
The SySMAKER uses the output tape, assign
name, input tape, and Monitor octal load
data on the first card processe,d after the
$SYSMAKER card. The rputine ignores these
fields on subsequent cards; therefore, these
fields may be left blank.
Examples
Move component number 5 to a position just behind component number 8.
Notice lhal fields Seg No. and Seg Pos are blank on this card as they
mus t be for a move componen I ~~ommand.
Move segment 3 of componc'n! () !o () position just hehind
number~.
s(~gmcnt.
Noticp that field Comp Pos is blank on this card as it must.
be for a move s('gmcnt. command.
1-24
M-5035
Change 5
I.2.tl
The
Delet.e Function
dl~h~te
funct ion prcv(\nl s specified (',omponents or segments from appearing
on !.he new system tape; thus, deleting t.hem from
th(~
neW systpm.
The
SYSMAKER, after processing an initiate delete card, removes all directory
references to the specified component or segment. An initiate delete
commands thp routine eit.her to remove an entire component or to remove one
segmen t of a
componl~n I •
Format
DELETE
output tape, comp no., seg no., asg name, input tape, mon loc,
resdir offset, asg 2 name.
Explanation
Output Tape
The up to eight character name of the output
system tape the SYSMAKER is to use in the
console messages. If this field is blank,
the routine assumes the name NEWSYSTP.
Comp No.
The number assigned to the component that
the SYSMAKER is to delete from the new
system or the number of the component
containing the segment that the SYSMAKER is
to delete from the new system.
Seg No.
The number of the segment within the
component specified by the Comp No. field
the SYSMAKER is to delete from the new
system. If this field is blank, the
routine deletes the entire component
specified by the Camp No. field.
Asg Name
An up to four character name or version
the routine assigns to the new tape. This
name appears in the second word of the
resident directory.
1-25
I
M-5035
Change 2
The up to eight character name of the
input. t.ape the SYSMAKER is to use in
Input Tape
the console messages. If this field is
blank, the routine will use the current
syst.em tape.
The absolute oclal address of the start
of the Monitor bootstrap load area. The
current Monitor is always booted into the
Mon Loc
upper area of memory. This valu~ then
specifies the bottom of the resident
Monitor load area and the top address
available to the non-resident routines.
If this field is blank, the routine
assumes address O.
Resd i r Offset
The offset from the beginning of the boot
block (first jump cell) to the first address of the resident directory. If this
field is blank, the input system tape offset will be assumed.
Asg 2 Name
A name or version, up to eight characters,
which the routine assigns to the new tape.
This name appears in the fourth and fifth
words of the resident directory. The two
assigned names are output upon completion
of each job in the accounting summary.
NOTE
The SYSMAKER uses the output tape, assign
name, input tape, resdir offset, and Monitor octal load point on the first 'card
processed after the $SYSMAKER card. The
rotitine ignores these fields on subspquent cards; therefore, these fields may
be left blank.
1-26
M-5035
Change 2
I .2.5 End of Input
The SYSMAKER continues to buiJd a scratch tape containing all of the
changes to the old system required to produce the new system until the
routine processes an end of input card. The routine then copies the rest
of the input tape onto the scratch and uses the accumulated change data to
produce the new system.
Format
ENDSYSBD
1.2.6 System Tape Patching
The System Tape Patching routine reads system patch statement cards (see
paragraph 1.2.8), processes system patch cards, and outputs a new system tape
with all patches inserted. After the SYSMAKER reads the initiate patch card
control is given to the System Tape Patching routine. This routine is independent of the other four SYSMAKER functions and cannot be used concurrently
with them.
Upon initiation of this routine, patch cards are read until a $ card is read.
The patch information is stored during the reading phase.
In the next phase,
the System Tape Patching routine copies from the input tape, inserts the
patches, and copies onto the scratch tape.
In the final phase, this routine
inserts the new resident directory into the Monitor while copying from the
scratch tape to the output tape.
The following control card initiates this routine:
Format
PATCH
input tape, output tape
Explanation
Input Tape
Up to eight-character name of the input
tape the SYSMAKER is to use in console
messages. If this field is left blank,
the routine assumes the current system
tape.
1-27·
M-5035
Change 2
Output Tape
Up to eight-character name of the system
output
1.ape
1.he SYSMAKER is to use in con-
sole messages.
If this field is blank,
the routine assumes the name NEWPATTP.
Asg Name
An up to eight character name or version
the routine assigns to the new tape.
This name appears in the second and third
words of the resirlcnt directory.
Resdir Offset
The offset from the beginning of the
boot block (first jump cell) to the first
address of the resident directory.
If
this field is blank, the input system
tape offset will
Asg 2 Name
be
assumed.
A name or version up to eight characters
which the routine assigns to the new tape.
This name appears in the fourth and
fifth words of the resident directory.
The two assigned names are output upon
completion of each job in the accounting
summary.
Mon Loe
The absolute octal address of the start
of the Monitor bootstrap load area.
The current Monitor is always booted into the upper area of memory.
This value
then specifies the bottom of the resident
Monitor load area and the top address
a va i I a hIe ton 0 n - re sid e nt ro uti ne s .
If
this field is hlank, the routine assumes
address O.
M-5035
Change 2
1.2.7 Copying System Tape
The SYSMAKER duplicates a system tape when
by an ENUSYSBD card.
th(~
$SYSMAKER control is followed
The operation reads from an input system tape and writes
on an output tape.
Format
ENDSYSBD
Input Tape, Output Tape
Explanation
The up to eight character name of the input tape
Input Tape
the SYSMAKER is to use in the console messages.
If this field is blank, the routine will use the
current system tape.
Output Tape
The up to eight character
n~me
of the new copy of
the system tape that the SYSMAKER is to use in the
console messages.
If this field is blank, the
routine assumes the name NEWCOPTP.
The SYSMAKER requests a scratch tape during the initialization phase and
releases the scratch tape during the copy function.
The operator may assign
the output tape to the previously assigned scratch tape.
names must be declared for multiple copies in one job.
comparison of the input tape and output tape can be made
Different output
A word-by-word
vi~
the peripheral
utilities compare function.
1.2.8
System Patch
The sys1(~m patch control card calls the system patch stat(~ment processor
to process sJstem patch statements that fOllow the specify
corrcction(s).
corrected.
syst~m
program
A patch statement must precede the Ioauof tht~ program l)(~ing
1-29
M-S035
Change 2
Format
$SPATCH
Patch statement cards following the system patch control canl conlain the
actual data. The statement processor modifies the specified component. pach
time it is loaded into memory. Commas are used to separate all parameters.
Spaces may be used to separate func1ional parts of a patch. Any number of
consecutive spaces may surround 1:.0 comma. No more than one starting location
may be specified on one system patch statement.
Forma t
component, location, type, patch, patch •••
Each successiv(~ patch affects successive memory locations.
Explanation
Component
A decimal number specifying one of the
system components on the system tape.
Location
A location specified by a system record name
(compound section name in a component
of up to eight characters) followed by an
optional octal or decimal increment, where
a decimal value is fOllowed by a D.
This
parameter specifies a starting location
for a half-word or more of patch information.
Type
The patch statement type is as follows:
I - Instruction
K - I/O Controller command
o - Octal (a signed number consisting of
up to eleven octal digits).
C - Variable length Hollerith character
string converted to ASCII.
If the
length of this character string is
not a multiple of four characters, the
last patched word will be filled on
the right with space codes.
1-30
M-5035
Change 5
Patch
Informa tion in a format determined by the patch type.
Patch type formats include the following:
1.
Central Processor Instruction (1)
The patch processor interprets the function
code (FF) to determine the proper form at.
The patch processor considers all function
codes legal.
Non -assigned function codes 00 and 04 are
treated as format
n instructions, and non-
assigned function codes 72, 73, and 75 are
tre ated as form at IV A instructions.
As shown below, all full length instructions
consist of octal digits. The first six digits
are interpreted as FFAKm, FFAF 2BI, or
FFAF 3BI, as applicable. The lower digits
form SYYYYY. If there are less than twelve
digits, the left six digits form the upper
half of the word. The remaining digits form
the S, Y, and SY fields, right-justified.
Half-word instructions consist of six digits
for each half-word. If only six digits are
specified, the patch processor places the
instruction in the upper half and all zeros
in the lower half (a no-op).
1-31
I
M-5035
Change 2
The
fo]]owin~J
hnrdwClrt~
list shows
formats and the c,orresponding
cod i ng seq ue nc'(~ :
HClrdwarp Format
Coding SeqlH'neC
I
FFAKBISYYYYY
I I
FF AF2 BI SYYYYY
III
FFAF KBISYYYYY
3
F~lK
is codpd as
one octal digit
IVA
FFAF4Bl
IVB
FF AF_~lM (F ,..
;)
J
-
°
U)
FFAF_RBI
;)
F_H
;)
= /1
Shift count in Bb
F R = (,
J
Shi ft count in Ah •
o
2.
I/O Controller Commands (K)
I/O Controller Commands arc coded
in one of two formats:
Hardware Format
Cal1inq Seqw!ncp
I (FF ::.: 10-1(d
FFKJJ~lC
YYYYYY
I I (FF = 17-20,
FFKJMC
YYYYYY
22-27 )
Any function code (FF) not in
range 10 to 20,
~2
to
~7
shall be
interpreted as a format I IOC
command.
1-32
th{~
M-S035
Change 2
~l.
Oe tal (0)
The patch statement processor
ar.Cf!pl s a If!ading plus or minus sign
followed by as many as cleven or.tal
dig its •
A val i doc t a I n umbe r b.eg i n-
ning wi I.h an octal digi t i s s I Oft'd
as codpd.
si~ln
A leading minus
causes thf! number following it
complcm"nt(~d
10 hI"
(sevens complempnl)
before s l.orage.
I f fewer than
th(~
eleven octal digits are coded.
resultant value is righ1.-justifi('d
within the word (before
complementin~
if precedpIl by a minus sign).
4.
Character ef)
Thl' pat ch s tat emf'n t processor
accepts chnracter strings contnining
graphic ASC1I characters coded as
follows:
(C C .0.Cn)
Wh,'relhp desired variable' j('nlJth
character string is ('nclospd in
parenlht'ses.
Tf
it
i s des i r cd () spa r t
right pnrpnthesis
0
f t h f'
St
r i n9 ,
i I is nf'cessary to code two for
caeh right par'enthesis wanted.
The chararter string terminates
wi than odd number of
rinht parf'nth('ses.
r.onse(~ut
iv('
If tht'
character string does not r('sult
in a numher of characters which
is an even multiple of four,
thl'
Inst word patched is filled on thl!
right with ASCII space codes.
1-33
M-5035
Change 2
Exallll'i(!s
(system patch cards)
: : :: l: ::
Change
the inst.ruction locnted in word
50
of record C!\RIJSCAN in
B
component 1 to thp instruction indicated (load A:~ with n vniup of 7:i
n '.
Change the character- string starting at word ;jUDO of record CARDSCAN
in component I to the string indicated.
This string occupies five
word s.
C~ange
the instruction located in word 776 of record RALPH in component
1 to the instruction indicated (compare (A4) with a value of 25 ).
0
Because the lower digits describe a constant, nIl six digits nrc not
rpI{U
ired.
Change the instructions located in words 543 and 544 of record INSORT
in component 2 to the instructions indicated (half add (A2) + (A3) and
complement (A4) instructions in word 543 with a square root (AS) instruction followed by all zeros in word 544).
The patch processor ignores the
space between the two half-word instructions listed for word 543.
1-34
M-5035
Change 5
I. 2. 9 User Segment Addition and Execution
User segments can be added to the utili ties component of the system tape and subsequentlyexecuted. A typical SYSMAKER run to add a utility segment might appear as
follows:
$JOB
$SYSMAKER
BUILD NEWTAPE, 3, XXLYY"OLDTAPE,115000
SEG 2
REC DATAREC, U, 2, 36
CRECINSTREC, 1,2,36
LOAD
DATAREC (1),· SYSDD1, SYSDD2
INSTREC (4), SYSPROC1, SYSPROC2
LIBS CCOMN(REELNUM)
SEL-ELEM
END
ENDSYSBD
$ENDJOB
The user's program is contained in records DATAREC and INSTREC. The five statements after LOAD are loader commands discussed in Section 3. The first two statements after LOAD are combine elements commands for the loader.
To execute the added segment, the following sequence of operations may
~
used:
$JOB
$UTILITY
EXECUTE 2
$ENDJOB
Segment 2 is accessed in the execute with no return mode.
utility commands may not follow the EXECUTE command.
Therefore, further
The user added segment
is operating in the sytem mode,not the user mode, with all system facilities
(such as those XS ·calls not available to a user program) available for use.
1-35/1-36 (Blank)
M-5035
Change 5
CMS-2 KEYWORD INDEX
ADS , 11-9-3
BASE, 11-7-4, 11-7-17
ABS Directive, 11-11-21
BASE Directive, 1-3A-3
ABS Modifier, 11-5-10
BC Directive, I-3-1B
Accessing the Compiler, 11-7-1
BEGIN Block, 11-5-60
AC Directive, 1-3-12
BIT Modifier, 11-5-10
ACKN, 1-2-30, 1-2-31
BKFILSKP, 1-5-6
Active State Register, 11-12-9
BKRECSKP, 1-5-7
Address Counter, II-II-55
Blocks, I I - 5 - 59
Address Counter Declaration,
II-II-53
Boolean Assignment Statement,
11-5-33
Allocated Map Listing, 1-3-36
Boolean Expressions, 11-5-6
Allocation Header Statements,
11-7-124
BOOTWRT, 1-5-14
BP Register, 11-12-5
AN/UYK-20 Loader, I-3A-1
B Register, 11-12-3
A Register, 11-12-3
BYTE, I I - 9 - 3
Arithmetic Assignment Statemen t, I I - 5 - 27
BYTE Directive, 11-11-21
Arithmetic Expressions, 11-5-1
CARD - I D, I I - 9 - 2
Arithmetic
CARDTAPE, 1-5-12
Operators~
11-11-64
Asseinb1er, I-1-B, II-1-B, _11-11-1 Card-to-Tape, 1-5-22
Assembler Diagnostics, 11-11-76
CHAR, I I - 9 - 3
Assembler Outputs, 11-11-72
CHAR Directive, 11-11-22
Assembly Errors, 11-11-76
CHAR Modifier, 11-5-12
AUTO-DD Declarative, 11-4-1,
11-4-7
Character Strings, 11-9-B,
11-11-60
K-1
I
M-S035
Change 5
CMS-2 KEYWORD INDEX (contd)
CHECKID, 11-6-35
CONVERT, 1-5-15
11-6-26
CORAD Modifier, 11-5-14
CMODE, 11-7-4, 11-7-32
CORRECT, 11-7-4, 11-7-25
CNT Modifier, 11-5-13
CPMCR Register, 11-12-5
Combine Elements, 1-3-9
Cross Reference Listing, 11-11-76
Commands Available, 1-6-9
CS Directive, 1-3-14, 1-3A-2
COMMENTS, 11-11-7
CSWITCH, 11-7-4
COMPARE, 1-5-19
CSWITCH Brackets, 11-7-30A
Compare Tape, 1-5-24
CSWITCH Declarations, 11-7-30
Compiler, 1-1-7, 11-1-7
CSWITCH-DEL, 11-7-30B
Compiler Error Summary, 11-10-12
CSWITCH Deletion, 11-7-30B
Compiler Outputs, 11-10-1
CSWITCH-OFF, 11-7-4, 11-7-30
Compile-Time System Facilities,
11-7-1
CSWITCH~ON,
CLOSE~
11-7-4, 11-7-30
Data Declarations, 11-4-14
Complex Macros, 11-11-52
11-4-35
FIELD, 11-4-25
ITEM-AREA, 11-4-30
LIKE-TABLE, 11-4-34
SUB-TABLE, 11-4-31
TABLE, 11-4-19
VRaL, I I - 4 - 1 5
~ND-TABLE,
Compound Decision Statements,
11-5-1
Computer Instruction Repertoire,
11-12-26
Conditional Operators, 11-11-67
DATA Declarative, 11-4-61
Console Message Output, 1-1-9,
1-2-63
Data Expressions, 11-9-9
Constants, 11-9-6, II-II-59
Data Modes, II-II-58
Control Dec1aratives, 11-4-62
DATA, I I - 4 - 61
MODE, I 1- 4 - 63
DATAPOOL, 11-7-4, 11-7-18
Data Referencing, 11-4-44
Control Statements, 11-5-41
Data Words, 11-11-59
K-2
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
DEBUG, 11-7-4, 11-7-29
Direct Code, 11-9-1
ABS, I 1- 9 - 3
BYTE, I 1- 9 - 3
CARD - I D, I I - 9 - 2
CHAR, . I I - 9 - 3
DO, I 1- 9 - 4
FORM, I 1- 9 - 4
RES, I 1- 9 - 4
Debugging Aid Cards, 1-2-7,
1-2-18, 1-2-60
Memory Dump Card ($DUMP),
1-2-18
Patch Card ($PATCH),
1-2-26
Snap Card ($SNAP), 1-2-21
Direct Constant Entries, 11-9-11
Debug Statements, 11-8-1
Directives, 11-11-8, 11-11-21
Dl SPLAY, I 1- 8 - 2
PTRACE, I 1- 8 -11
RANGE, I I - 8 - 7
SNAP, I I - 8 - 5
TRACE, I I - 8 -" 9
ABS, 11-11-21
BYTE, I I - 11 - 21
CHAR, I I - 11 - 2 2
DO, I I - 11 - 2 3
ELIST, 11-11-32
EMBED, I I -11- 25
END, I I -11 - 26
EQU, II-11-26A
EVEN, I I -11 - 26 B
FORM, 11-11-27
LCR, 11-11-28
LIB, II - 11 - 29
L I BS, I I -11- 29
LINK, 11-11-31
LIST, 11-11-32
LIT, 11-11-32
LLT, 11-11-34
NOLIST, 11-11-32
ODD, II-11-26B
PXL, 11-11-34
RES, II~11-35
RF$, 11-11-35
SEGEND, 11-11-36
SETADR, 11-11-37
WRD, I I ... 11 - 38
Decimal Numbers, 11-9-6,
II-II-56
Decision Statements, 11-5-45,
11-5-50, 11-5-54, 1~-5-55,
11-5-58
Declarative Statements, 11-2-2
DECODE Statememt, 11-6-15
DEFID, 11-6-33
DENSE, I 1-4 - 39
DEP, 11-7-4, 11-7-25
Device Identification Operations , 11-6-33 , 11-6-35 .
CHECKID, 11-6-35
DEFID, 11-6-33
DISMOUNT, 1-5-5
Device Positioning, 11-6-28
Dismount Tape Message, 1-5-22
Device State Checking, 11-6-26
DISPLAY, 1-2-61
K-3
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
DISPLAY Statement, 11-8-2
END-HEAD, 11-7-3
DO, I 1- 9 - 4
END-HEAD
11-4-3
DO Directive, 11-11-23
11-4-1,
END-LOC-DD Declarative,II-4-1,
11-4-7
Double Procedure Switch Declarative, 11-4-56
DP Register 11-12-6
END-PROC Declarative, 11-4-1,
11-4-8
DSW Register ASR, 11-12-6
END Statement, 11-5-60, 11-5-67
DSW Register ISC, 11-12-6
END-SYS-DD Declarative, 11-4-1,
11-4-4
DUPLICATE, 1-5-10
Duplicate (D),11-11-72
END-SYS-PROC Declarative, 11-4-1,
11-4-13
Duplicate Tape, 1-5-22
END-SYSTEM Declarative, 11-4-1,
11-4-14
Dynamic Statements, 11-2-2,
11-5-1
I
Dec1arative~
END-TABLE Declarative, 11-4-35
ELSE Statement, 11-5-56
END VARY Statement, 11-5-67
ELIST Directive, 11-11-32
EP Directive, 1-3-17
EMBED Directive, 11-11-25
EQUALS. , 11-7-4 , 11-7-19
ENCODE Statement, 11-6-15
EQU Directive, 11-11-26A
END, 1-3-11, 11-11-39
Error Codes, 11-11-72
END-AUTO-DD Declarative,
11-4-1, 11-4-8 '
ESI Mode, 11-12-17
EVEN Directive, 11-11-26B
END-CSWITCH, 11-7-4
EX~HANGE,
END-CSWITCHS, 11-7-4
11-7-4, 11-7-28
EXEC Function, 11-5-22
END Directive, 11-11-26
EXECUTIVE, 11-1-4, 11-7-31
ENDFILE, 11-6-24
Expression (E), 11-11-72
END-FUNCTION Declarative,
11-4-1, 11-4-11
Expressions, 11-5-2, 11-11-11
K-4
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
Expression Statements, 11-11-54
Format IV-A, 11-12-14
EXTDEF Linkage, 11-4-65
Format IV-B, 11-12-14
Externalizing Labels, II-II-SO
FORMAT Statement, 11-6-8
EXTREF Linkage, 11-4-66
FORM Directive, 11-11-27
Field, 11-4-47, 11-11-5
Full-word, 11-11-11
FIELD Declarative, 11-4-25
Function Call, 11-5-18
FILE, 11-6-20
EXEC, 11-5-22
RETURN, 11-5-19
File and Record Position
Determination, 11-6-31
File Search
FUNCTION Declarative, 11-4-1,
11-4-11
Operation, 11-6-35
Functional Modifiers, 11-5-9
SEARCH, 11-6-36
ABS, II - 5 -10
BIT, 11-5-10
CHAR, I I - 5 - 12
CNT, 1 1 - 5 - 13
CO RAD, I 1 - 5 - 14
FIL, 11-5-14
LENGTH, I I - 5 -15
POS, I 1- 5 -15
FIL Modifier, 11-5-14
FILSKP, 1- 5 - 6
FIND Statement, 11-5-48
Fixed.Point Number, II-II-58
I
Floating Point (F), 11-11-74
Generation Formats, 11-11-74
Floating-Point Numbers,
11-9-7, II-II-57
Global Cross-Reference Listings,
11-10-5
FOR Block, 11-5-72, 11-5-77
GO, I I - 11 - 4 7
FOR Statement, 11-5-73
GOTO Statement Name,
FORCE, 1-3-6A
GOTO Switch Name Statement,
11-5-42
FORM, 11-9-4
Format I, 11-12-12
Format II, 11-12-13
Format III, 11-12-13
1I-5~41
Half-word, 11-11-11
HALT, 1-5 - 3
Hardcopy Output, 1-1-9, 1-2-37
K-5
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
HEAD, I I - 7 - 3
Instruction Expressions, 11-9-13
HEAD Declarative, 11-4-1,
11-4-2
Instruction Formats, 11-12-12
Instruction (I), 11-11-73
ICW Register, 11-12-5
Instruction Repertoire, 11-12-1
ID Directive, 1-3-17
Interrupt, 1-2-7
Index Clause 11-5-64
Interrupt State, .11-12-8
Index Procedure Switch Declarative, 11-4-55
I/O Command Formats, 11-12-16
Index Switch Declarative,
11-4-50
Indirect Word,
I/O Device Card, 1-2-12
I tern, I I - 4 - 4 5
II-12~15
Item-Area, 11-4-49
Initial A-Register Values
($AREG), 1- 2 -16
ITEM-AREA Declarative, 11-4-30
Initial B-Register Values
( $BRE G), I ~ 2 - 16
Item Procedure Switch Declarative, 11-4-58
Initial Condition Cards,
1-2-16
Item Switch Declarative,
11~4-53
Item-to-Item Statement, 11-5-36
Initial Hardware Setup,
1-6-1
Job Definition Cards, 1-2-9
Initiate Execution Cards,
1-2-17
End Qf Input Card ($EOI)
1-2-12
End of Job Card ($ENDJOB),
, 1-2-12
I/O Control Cards ($ASG),
I/O Device Card, 1-2-12
Job Limits Card ($JOB),
1-2-10
Sequence Card ($SEQ) , 1-2-9
Jump Key Set Card
($KEYSET), I-2~17
Transfer Control Card
($TRA) , 1-2-18
User Program Call Card
($CALL), 1-2-17
Input/Output Statements,
11-6-1
LABEL, I I -11- 2
Label Field, 11-11-15
INPUT Statement, 11-6-4
Labels, 11-11-16, 11-11-55
K-6
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
LC~ OiTe~tjve,
11-11-28
List Job (/LIST), 1-4-6
Start Corrections (/CORRECT) ,
1-4-20
Start Element Corrections
(/ELname), 1-4-20
Tape Release (/RELEASE),
1-4-8
Tape Select (/TAPID),
1-4-8
LENGTH Modifier, 11-5-15
Level 0, 11-11-75
Levell, 11-11-75
Level (L), 11-11-74
LIB Directive, 11-11-29
Librarian Error Messages, 1-4-30
Librarian, 1-1-7, 1-4-1,
11-1-7
Librarian Operator Messages,
1-4-32
Librarian Control Cards,
1-4-5
LIBS, 1-3-7, 11-7-4, 11-7-23
Add Element (/ADD) ,
1-4-10
Begin Element (/BEGINEL),
1-4-19
Build New Library
(/BUILD), 1-4-6
Change Element Name
(/CHANGE), 1-4-17
Copy Elements (/COPY) ,
1-4-12
Declare Dependent
Elements (/DEP) ,
1-4-19
Delete Elements (/DEL) ,
LIBS Directive, 11-11-29
LIKE-TABLE Declarative,
11~4-34
LINK Directive, 11-11-31
Linking, 11-11-12
List Options,
11~7-8
LIST Directive, 11-11-32
LISTING, 11-7-5, 11-7-10
Listing of Labels, 11-11-75
1~4-15
Delete Items (/D),
1-4-22
Edit (/EDIT), 1-4-7
End Corrections
(/ENDCOR) , 1-4-20
End Element (/ENDEL) ,
1-4-19
End Element Corrections
(lEND), 1-4-21
History Entry (/HISTENT),
1-4-9
Insert Items (II),
1-4-21
Librarian Terminate,
(/ENDLIB), 1-4-7
LIT Directive, 11-11-32
Literal Assignment Statement,
11-5-31
Literal Expressions, 11-5-8
Literals, 11-9-11, 11-11-58
LLT Directive, 11-11-34
LLT Sample Listing, 11-11-75
Loader Control Cards, 1-3-2,
1-3-6
K-7
I
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
Logical Operators, 11-11-67
Combine Elements, 1-1-9
Element Select (SEL-ELEM),
1-3-8
End (END), 1-3-11
Library Select (LIBS),
1-3-7
Table Size Declaration
(TSD) , I-3-7
I
Logical Statement, 11-S-46
Loop Statements, II-S-S0A
LOPTI0NS, 1-3-6A
LR Directive, 1-3-16
Loader Diagnostic Messages,
1-3-32
MACRO, 11-11-39
Loader Directives, 1-3-12
Macros, 11-11-10
Address Counter Directive
(AC) , 1-3-12
Binary Code Directive
(BC), 1-3-18
Compound Section Directive (CS), 1-3-14
End of Element Directive
(EP), 1-3-17
Library Reference Directive (LR), 1-3-16
Program Element Identification Directive (ID),
1-3-17
User Correction Directive (UC) , 1-3-26
Loader ,Options Select,
1-3-6A
Macro Reference Lines, II-II-52
Macro Statements, II-11-39
Major and Minor Headers, 11-7-3
BASE, 11-7-4, 11-7-17
CMODE, 11-7-4, 11-7-32
CORRECT, lI-7-4, 11-7-2S
CSWITCH, 11-7-4, 11-7-30
DATAPOOL, 11-7-4, lI-7-18'
DEBUG, II-7-4, 11-7-29
DEP, 11-7-4, 11-7-2S
EQUALS, 11-7-4, 11-7-19
END-HEAD, 11-7-3
EXCHANGE, 11-7-4, 11-7-28
EXECUTIVE, 11-7-4, 11-7-31
HEAD, I I- 7 - 3
LIBS, 11-7-4, 11-7-23
LISTING, 11-7-5, 11~7-10
LOCDDPOOL, 11-7-4, 11-7-14
MEANS, 11-7-4, 11-7-27
MONITOR, 11-7-5, 11-7-11
NITEMS , 11-7-4 , .
11-7-22
OBJECT, 11-7-5, 11-7-7
OPTIONS, 11-7-4, 11-7-S
SEL-ELEM, 11-7-4, 11-7-24
SEL-HEAD, II-7-4, 11-7-24
SEL -POOL, 11,-7 - 4, I I -7 - 24
SEL-SYS, 11-7-4, 11-7-24
SOURCE, 1I-7-~,II-7-6
SPILL, 11-7-4, 11-7-32
SYS-INDEX, 11-7-4, 11-7-27
TABLEPOOL, 11-7-4, 11-7-16
LOBJECT, 1-3-6B
Local Cross-Reference Listings,
11-10-4
Local Indexes, 11-4-S9
LOC-DD Declarative, 11-4-1,
11-4-6
LOCDDPOOL, 11-7-4, 11-7-14,
I
LO DGO, I - 3 .. 6 B
LOCREF Operator, 11-4-67
K-8
I
M- 5035
Change 5
CMS-2 KEYWORD INDEX (contd)
No1ist Directive, 11-11-32
MEANS, I1-7-4, II-7-27
MED I UM , 1 I - 4 - 38
NOMAP, 1-3-6A
NONE, 11-4-38
Miscellaneous Header Statements,
II-7-27
NONRT Option, 11-7-12
Mnemonics, 11-11-20
Nonstandard File Control, II-6-18
CLOSE, II-6-26
ENDFILE, 11-6-24
FILE, 11-6-20
OPEN, 11 - 6 - 24
Mnemonic Listing Format,
11-4-63
MODE Declarative, 11-4-63
MODEVRBL Option, 11-7-12
Normal Mode, 11-12-16
Modes of Operation 11-12-8
OBJECT, 11-7-5, II-7-7
Monitor, 1-1-6, 1-2-1, 11-1-6,
lI-7-5, 11-7-11
Object Code Loader, 1-1-6, 1-3-1,
11-1-6
Monitor Control Cards, 1-2-2,
1-2-5, 1-2-8
ODD Directive, I1-11-26
OFF, 11-11-14B
Monitor I/O, 1-2-5, 1-2-6
OFO, I I -11-l4B
Monitor Loader, 1-2-3
MOUNT, 1-5-4
Octal Numbers, II-9-7, II-II-56
OPEN, 11-6-24
Mount Tape Message, 1-5-21
Operand Field, 11-11-44
Mu1tiword Assignment Statemen t, I 1- 5 - 35
Operation, 1-6-1
NAME, . I I -11- 45
Operation Field, 11-11-19
Name (N), 11-11-73
Operator Communication, I-3-36
Decision Statements,
11-5-58
Operator Communication Cards,
1-2-30
NITEMS, 11-7-4, 11-7-22
Enter Executive State (XS),
I-2-32
N~sted
NOID, 1-3-6A
I
K-9
I
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
Hardcopy Message ($REMARK),
1-2-31
Peripheral Utilities, 1-1-7,
1-5-1
Operator Message Ca!ds, 1-5-2
Pooling Statements, 11-7-12A
Dismount Tape (DISMOUNT)
1-5-5
Mount Tape (MOUNT), 1-5-4
Operator Acknowledge
(HAL T), I - 5 - 3
Operator Information
(TYPE), 1- 5 - 3
Positioning by Files,
Positioning by Records, 11-6-30
Position Tape Cards, 1-5-5
Rewind (REWIND), 1-5-7
Skip Backward Specified
Number of Files
(BKFILSKP), 1-5-6
Skip Backward Specified
Number of Records
(BKRECSKP), 1-5-7
Skip Forward Specified
Number of Files (FILSKP),
1-5-6
Skip Forward Specified
Number of Records
(RECSKP), 1-5-6
Operator Priorities, 11-11-69
Operators, 11-11-61
OPTIONS, 11-7-4
OUTPUT Statement, 11-6-7
Overflow (0), 11-11-73
OVERLAY, 11-4-40
Packing Rules, 11-4-37
DENSE, I 1- 4 - 39
MEDIUM, 11-4-38
NONE, I I - 4 - 38
OVERLAY, 11-4-40
11-6~28
POS Modifier, 11-5-15
P Register, 11-12-2
Procedure Call, 11-5-16
PACK Statement, 11-5-40
PROCEDURE Declarative, 11-4-1,
11-4-8
Paraforms, 11-11-40
Procedure Linking, 11-5-15
PARAMETER, 11-4-18A
Procedure Switch Cal1,11-5-23
Parenthetical Grouping,
11-11-70
Processing Conventions, 11-9-15
Parity Decision Statement,
11-5-55
Program Structure Declaratives,
11-4-1
AUTO-DD, 11-4-1, 11-4-7
END-AUTO-DD, 11-4-1, 11-4-8
PAUSE, 1-2-30, 1-2-31
Performing the Bootstrap Load,
1-6-3
K-lO
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
END-FUNCTION, 11-4-1,
Record Length Determination,
11-4-11
II-6-32
END-HEAD, 11-4-1, 11-4-3
END-LOC-DD, 11-4-1, II-4-7
RECSKP, 1-5-6
END-PROC, 11-4-1, 11-4-8
END- SYS- DD, 1 1- 4 -1, 1) - 4 - 4
REFORMAT, 1 - 5 -11
END-SYS-PROC, 11-4-1,
11-4-13
,Reformat Tape 1-5-22
END-SYSTEM, 11-4-1, 11-4-14
FUNCTION, 11-4-1, 11-4-11
Relational Expressions, 11-5-5
HEAD, II-4-1, 11-4-2
LOC-DD, 11-4-1, II-4-6
Re1ocatabi1ity, 11-11-70
PROCEDURE, 11-4-1~ 11-4-8
SYS-DD, 11-4-1, 1I-4-4
Relocation (R), 11-11-73
SYS-PROC, 11-4-1, 11-4-5
SYS-PROC-REN, 11-4-1"
Replacement Statements, 11-5-26
11-4-6
SYSTEM, II - 4 -1, 11 - 4 - 2 ,
RES, 1 I - 9 - 4
Pseudo-operations (MACROS),
I-1-8
RES Directive, II-11-35
RESUME Statement, 11-5-66
P-SWITCH Declarative, 11-4-55
RETURN Function, 11-5-19
, PTRACE, 1-2-61
REWIND, 1-5-7
PTRACE Statement 11-8-11
RF$ Directive, 11-11-35
PXL Directive, 11-11-34
I
SAVLODGO, 1-3-6B
RANGE, 1-2-61
Scaled Decimal Numbers,- 1I-9-9
RANGE Statement, 11-8-7
Search Decision Statement, 1I-5-50
READ, I - 5 - 1 7
SEGEND Directive, 11-11-36
READ/Compare Tape Cards, 1-5-17
Segmentation, 11-11-8
Compare Tapes (COMPARE),
1-5-19
Read into Memory (READ),
1-5-17
SEL-ELEM, 1-3-8, 11-7-4,
READ to Cards or Printer
(TAPEOUT), 1 ~ 5 -18
SEL-POOL, 1I-7-4, 11-7-24
Read Formatted Tape Record,
I-5-23
lI-7~24
SEL-HEAD, 11-7-4, II-7-24
SEL-SYS, 11-7-4, 11-7-24
SETADR Directive, 11-11-37
K-11
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
SET Statement, 11-5-26
Statements, 11-11-5
SHIFT Statement, 11-5-39
Statement Blocks, 11-5-59
Side-by-Side Listing, 11-11-72
Status Assignment Statement,
11..,5-32
Simple Statement, 11-5-1
STQP Statement, 11-5-45
Single Word-to-Mu1tiword Statemen t, I 1- 5 - 36
Subfie1ds, 1 1-11- 5
SIR Registers, 11-12-7
SUB-TABLE Declarative, 11-4-31
SNAP, 1-2-61
SWAP Statement, 11-5-38
SNAP Statement, 11-8-5
SWITCH Declarative, 11-4-50
SOURCE, 11-7-5, 11-7-6
Switch Referencing, 11-4-59
Source Deck Organization,
11-11-79
Symbol Analysis Format, 11-10-6
Symbol Definitions, 11-12-19
Source Listing Format, 11-10-1
Symbolic Conventions, 11-12-17
Special Considerations,
11-11-82
Symbols, 11-11-62
SPILL, 11-7-4, 11-7-32
SYS-DD Declarative, 11-4-1,
11-4-4
SPR Registers, 11-12-6
SYS-INDEX, 11-7-4, 11-7-27
S Register, 11-12-3
SYSMAKER, 1-2-15
Standard Input, 1-1-9, 1-2-33
Standard Output, 1-1-9, 1-2-35
DISPLAY, 1-2-61
PTRACE, 1-2-61
RANGE, 1-2-61
SNAP, I - 2 - 61
Tape Assignment/Release,
SYS-PROC Declarative, 11-4-1,
11-4-5
SYS-PROC-REN Declarative, 11-4-1,
11-4-6
System (CMS-2),I-l-3, 1-2-3,
11-1-3
I .., 2 - 3 3, I - 2 -4 9
TRACE, 1-2-61
Type Message ($TYPE),
1-2-30
System Component Call Cards,
1-2-14
Call Assembler ($ASM, U),
Type Message PAUSE (ACKN)
1- 2 -15
($HALT), 1-2-30, 1-2-31
K-12
I
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
Call CMS-2 Compiler
( $CMS - 2), I - 2 - 15
Call Librarian
($LIBEXEC), 1-2-15
Call Peripheral Utility
Routines C$UTILITY),
1-2-15
Call Relocatable Object
Code Loader ($LOAD),
1-2-15
TRACE Statement, 11-8-9
Transfer Declaratives, II-4-50
Double Procedure Switch,
11-4-56
Index Procedure Switch,
11-4-55
Index Switch, 11-4-50
Item Procedure Switch,
11-4-58
Item Switch, 11-4-53
P-SWITCH, 11-4-55
SWITCH, II -4-50
SYSTEM Declarative, 11-4-1,
11-4-2
System Linkage, 11-4-64,
EXTDEF, 11-4-65
EXTREF, 11-4-66
TRANSREF, 11-4-66
TRANSREF Linkage, 11-4-66
Truncation (T), 11-11-73
TSD, 1- 3-7
System Messages, 1-6-14
Tw~-Level
System Tape Generator,
11-1-8
Diagnostics, 11-7-12
1~1-8,
Table, 11-4-44
TABLE Declarative, 11-4-19
TYPE, 1-5-3
Type Message and Await Response,
1-5-21
Type Operator Messages, 1-5-21
TABLEPOOL, 11-7-4, 11-7-16
Table Search Statement,
11-5-48
Table-to-Table Statement,
11-5-35
TAPEOUT, 1 .. 5-18
I
UC Directive, 1-3-26
ULTRA, 1 1 -11 -12
Undefined Labels, 11-11-75
Undefined CU), 11-11-73
UNTIL Clause, 11-5-66
Tape-to-Card or Printer,
1-5-23
User I/O Chains, 1-2-48
Task State, 11-12-8
User Program Execution Cards,
1-2-15
TRA Directive, 1-3A-4
TRACE, 1-2-61
User Routine Execution, 1-5-27
K-13
I
I
M-5035
Change 5
CMS-2 KEYWORD INDEX (contd)
I
Utility Control Cards, 1-5-2
XS, 1-2 -32
Validity Statement, 11-5-48
$AREG, 1-2-16
Value Block, 11-5-76
$ASG, 1-2-12
VARY Block, I 1- 5 - 61, I 1- 5 - 6 7
$ASM, U, I - 2 -1 5
VARY Statement, 11-5-62
$BRE G, I - 2 -16
VRBL Declarative, 11-4-15
$CALL, . I - 2 -1 7
Warning, 11-11-75
$CMS-2, 1-2-15
WHILE Clause, 11-5-65
$DUMP, 1-2-18
Whole Table, 11-4-45
$ENDJOB, 1-2-12
WRD Directive, 11-11-38
$EOI, 1-2-12
WRI TE, 1- 5 - 8
$FORTRAN , 1-2-15
Write Formatted Tape Record,
1-5-22
$HALT, 1-2-30, 1-2-31
I
$JOB, 1-2-10
Write on Tape Cards, 1-5-8
$KEYSET, 1-2-17
Convert to System Data
Card (CONVERT),
1-5-15
Duplicate Tape
(DUPLICAT) , 1-5-10
Reformat Tape
(REFORMAT), 1-5-11
Write End .of File Mark
(WRTFILMK), 1-5-10
Write from Memory
(WRITE), 1-5-8
Write in Bootstrap Format (BOOTWRT), 1-5-14,
1-5-23
Write Tape from Cards
(CARDTAPE), 1-5-12
WRTFILMK, 1-5-10
$LDUYK-20, 1-2-15, 1-3A-1
I
$LIBEXEC, 1-2-15
$LOAD, I - 2 - 15
$PATCH , 1-2-26
$REMARK , 1-2-31
$SEQ, I - 2 -19
$SNAP, 1 - 2 - 21
$SYSMAKER, 1-2-15
$TRA , I - 2 - 18
K-14
I
M-S035
Change 5
CMS-2 KEYWORD INDEX (contd)
$TY P E , I - 2 - 30
$UT1L1TY, 1-2-15
IADD, 1-4-10
IBEGINEL, 1-4-19
IBUILD, 1-4-6
/CHANGE, 1-4-17
/COPY, 1-4-12
/CORRECT, 1-4-20
/D, 1-4-22
/DEL, 1-4-15
/DEP, 1-4 -19
/ ED 1 T, 1 - 4 - 7
/EL name, 1-4-20
/ END, I - 4 - 21
/ENDCOR, 1-4-20
/ENDEL, 1-4-19
/ENDLIB, 1-4-7
/H1STENT, 1-4-9
/1, 1-4-21
/ LIST, 1 - 4 - 6
/RELEASE, 1-4-8
ITAPID, 1-4-8
,K-15/K-16 (Blank)
•
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 Create Date : 2014:02:24 18:44:30-08:00 Modify Date : 2014:02:24 18:14:49-08:00 Metadata Date : 2014:02:24 18:14:49-08:00 Producer : Adobe Acrobat 9.55 Paper Capture Plug-in Format : application/pdf Document ID : uuid:99112020-dfd8-3f4a-b5a9-1b2e93c52811 Instance ID : uuid:885a3520-6858-d142-9bbd-63eef5a3b731 Page Layout : SinglePage Page Mode : UseNone Page Count : 702EXIF Metadata provided by EXIF.tools