C26 5774 1_1620_Monitor_II_System_Reference_Manual_Apr65 1 1620 Monitor II System Reference Manual Apr65

C26-5774-1_1620_Monitor_II_System_Reference_Manual_Apr65 manual pdf -FilePursuit

C26-5774-1_1620_Monitor_II_System_Reference_Manual_Apr65 C26-5774-1_1620_Monitor_II_System_Reference_Manual_Apr65

User Manual: C26-5774-1_1620_Monitor_II_System_Reference_Manual_Apr65

Open the PDF directly: View PDF PDF.
Page Count: 184

DownloadC26-5774-1_1620_Monitor_II_System_Reference_Manual_Apr65 C26-5774-1 1620 Monitor II System Reference Manual Apr65
Open PDF In BrowserView PDF
File No. 1620-36
Form C26-5774-1

Systems Reference Library

IBM 1620 Monitor II System
Reference Manual
This publication describes the 1620 Monitor II System, a
combined operating and programming system. This system
includes a Supervisor Program, a Disk Utility Program, an
SPS II-D Assembler, and a FORTRAN II-D Compiler. The latter
three programs operate under control of the Supervisor
Program to provide continuous operation.
Also described is the 1620-1443 Monitor II System. This system is designed to use the IBM 1443 Printer as an integral
unit in the processing of source programs.

:,;1,/

; '":3¥r,JJi-~\:)

, ,~:,~,(:t"'OMMAt-'::

This is a reprint of an earlier publication (C26-5774-0) incorporating the following Technical Newsletters:

Form No.

Pages

Date

N26-0057

Cover, 3-4, 17-18, 21-22, 25-26,
29-30, 37-38, 49-50, 53-54,
55-56, >87-88, 1Q7-108, 109-110,
113-114, 117-118, 123-124, 125126, 127-128, 131-132
Cover, iii-iv, 5-6, 93-94, 101102, 102.1-blank, 117-118, 119120, 121-122, 123-124, 125-126,
129-130, 131-132, 133-134, 135136, 143-144, 153-154

1(20(64

N26-0064

2/20(64

N26-0080

Cover, iii-iv, 135-135.1, 135.2135.3, 135.4-135.5, blank-136

5(22(64

N26-0091

135-135.1, 135.4-135.5, 135.6136

10(1164

N26-0095

1-2, 3-4, 5-6, 11-12, 13-14, 2324, 24.1-blank, 35-36, 39-40, 4950, 55-56, 65-66, 67-68, 69-70,
71-72, 73-74, 77-78, 85-86, 8990, go. I-blank, 111-112, 126.1blank, 131-132, 133-134, 135135.1, 135.6-136, 137-138
3-4, 7-8, 15-16,23-24,39-40,8384, 107-108, 123-124, 129-130,
133-134, 135.4-135.5, 135.6-136,
155-156

12(14(64

N26-0111

4/16(65

The original publication and applicable newsletters are not obso;,
lete.

Copjes~ of this and other IBM publications can be obtained through IBM Branch Offices. A fonn has
been provided at the back of this publication for readers' comments. If the form has been detached,
comments may be directed to: IBM, Programming Publications Dept. 234, San Jose, Calif. 95114

@ International Business Machines Corporation 1963

ii

Contents
Page

Page

Supervisor Program ............................................................
Monitor Control Records ................................................
Stacked Input ......................................................................
Monitor Control Record Analyzer Routine ....................
I/O Routine ........................................................................
I/O Error Routine ............................................................
Error Count Retrieval Routine ........................................
Loader Routine ..................................................................
Monitor II System Communications Areas ....................

1
8
8
13
14
17
20
23
23
25

I/O Macro-Statements .......................................................... 81
Linkages for GET, PUT, and SEEK ......................•......... 82
Linkages for CALL LINK and CALL LOAD .............. 82
Linkage for CALL EXIT .................................................. 82
Input/Output Declarative Statements .............................. 82
SPS II-D Processor ................................................................ 84
Operating Procedures ........................................................ 84
On-Line Error Correction ................................................ 87
Post Assembly Phase ........................................................ 87
Execution of SPS II-D Object Programs ........................ 89
Rules of Relocatability ...................................................... 90
SPS II-D Modification Program ...................................... 91

Disk Utility Program ........................................................
Write Addresses Routine ....................................................
Alter Sector Routine ....... .................................................
Disk-to-Output Routine ....................................................
Load Programs Routine ....................................................
Replace Programs Routine .......... ............................... .......
Disk-to-Disk Routine ........................................................
Delete Programs Routine ...... ............................................
Define Parameters Routine .. ..............................................
Define Disk Pack Label Routine ......................................
Define FORTRAN Library Subroutine Name ................
Error Detection and Correction ........................................
FORTRAN and SPS Output ............................................

27
28
29
30
32
34
35
36
36
37
38
38
41

1620 SPS II-D ....................................................................
Introduction ........................................................................
Symbolic Programming ......................................................
Coding Sheet ......................................................................
Statement Writing ..............................................................
Operands ............................................................................
Types of Addresses Used as Operands ............................
Programming the 1620/1710 Using SPS II-D ....................
Declarative Operations ......................•...............................
1620/1710 Imperative Operations ....................................
Processor Control Operations ..........................................
1710 Product-Area Macro-Operations ..............................
1620 Subroutines ....................................................................
Classification of Subroutines ............................................
Subroutine Macro-Instructions ..........................................
Floating-Point Arithmetic ..................................................
Description of 1620 Subroutines ......................................
Adding Subroutines ..........................................................

42
42
42
43
45
47
49
52
52
60
62
65
66
66
67
69
72
77

mM 1620 Monitor II System

FORTRAN II-D ..................................................... .:..............
FORTRAN II-D Language ..............................................
Arithmetic Statements ........................................................
Control Statements ............................................................
Input/Output Statements ..................................................
Specification Statements ....................................................
Library Functions .................................. ............................
Arithmetic Statement Functions ........................................
Subprogram Statements ....................................................
FORTRAN II-D Processor ....................................................
General Compilation Process .......................... ............... ...
FORTRAN II-D Control Records ....................................
Entering the Source Program ............................................
Object Program Execution ................................................
Operating Procedure ..........................................................
Adding Subroutines to the FORTRAN Library ..............
FORTRAN Subprograms Written in SPS ......................
Disk Storage Location of the FORTRAN Compiler ......
IBM 1620-1443 Monitor II ~ystem ................................
Supervisor Program ........................................................
Disk Utility Program ......................................................
SPS II-D ..........................................................................
FORTRAN II-D ..............................................................

93
93
98
99
103
106
112
114
115
117
117
118
119
126
129
131
133
135

135.1
135.1
135.1
135.1
135.4

Monitor II System Loader ................................................ 136
Card Formats ...................................................................... 136
Operating Procedures ..................... ................................... 136
Appendix A

138

Appendix B

154

Index ............................... ,...................................................... 156

lii

Preface

These records direct the sequence of jobs without interrupting continuous operation. A typical sequence
of jobs could be a compilation of FORTRAN programs,
assembly of sps programs, compilation and execution
of a FORTRAN program, execution of a disk-stored program, and punching of a disk-stored program into
cards.
.

In data processing installations, a large amount of
computer idle time may be spent between jobs to set
up the computer for the next job. Programs must be
readied, data must be readied, etc. The amount of
time spent in these activities is greater in installations
where many different jobs are part of the daily schedule. Because computer utilization is usually based
upon the time spent in executing a job, utilization may
appear to be low where multiple jobs increase setup
time.
To increase 1620 computer utilization, the user may
now adopt the 1620 Monitor Programming System.
The primary function of a monitor system is to provide continuous operation during a sequence of jobs
which might otherwise involve the manual loading of
several independent programming systems. To do this,
the Monitor coordinates computer activity by providing a communication region for independent programming systems and by transferring control between them. Operation is continuous and setup time
is reduced. This effects a substantial time saving in
computer operation and allows greater flexibility in
programming. The monitor concept - to control the
operation of several unrelated routines and machine
runs so that the computer and computer time are
used advantageously - is not new. This concept, previously employed by other large-storage-capacity data
processing systems, is made possible for the 1620 by
the 1311 Disk Storage Drive.
Through the use of Monitor II, it is possible to
assemble, assemble and execute, compile, compile
and execute, and execute programs stored in disk
storage. In addition, the normal disk storage maintenance tasks, such as storing programs, can be performed by the system.
A stacked input arrangement provides direction for
the system. This direction is given in the form of
control records, which are prepared prior to the
actual operation by the programmer and/or operator.

In addition to substantial saving of computer time,
Monitor II reduces the amount of programming time
required by the user. This is made possible through
the sharing of common subroutines by unrelated programs. For example, input and output for all sps object programs can be performed by a common input/
output subroutine. Because most programs require a
subroutine of this nature, it has been made an integral
part of the Monitor II System, available to all 1620
user programs.
To use the Monitor System, the programmer must
pay particular attention to control records and stacked
input arrangements described in this publication. In
addition to directing the sequence of jobs, control
records allow the user the Hexibility of assigning the
specifications for each job. Various jobs, each with its
own control record, are entered into the 1620 in the
stacked arrangement. Jobs are performed , in the order
in which they are encountered, under control of the
Monitor and without operator attention. However,
some messages generated by the Monitor regarding
the status of processing may require operator intervention.
The IBM 1620 Monitor II System is comprised of
four separate programs:
Supervisor Program
Disk Utility Program
SPS II-D
FORTRAN II-D

The material contained in this publication is organized and presented under these headings.

iv

IBM 1620 Monitor II System

Monitor II (Figure 1), a collective name for four distinct but interdependent programs - Supervisor, Disk
Utility, SPS II-D, and FORTRAN II-D programs - is a
powerful, combined operating and programming system. Systems of this type have previously been available only on other large-storage capacity computers.
The 1311 Disk Storage Drive with two-million positior": of storage makes possible the implementation of
such a system on the 1620. Although both sps and
FORTRAN are included with the Monitor System, either
may be deleted from the system, if desired.
The complete Monitor System resides in disk storage and only those routines or programs required at
anyone time are transferred to core' storage for execution. This feature, which is common to a Monitor
System, minimizes core storage requirements and permits segmenting of long programs. It makes anyone
of many programs accessible to the computer with
minimum delay or manual operation.
Inclusion of sps and FORTRAN programming languages in the Monitor System facilitates development
of a library of user object programs. Programs can

r-------

1620
Monitorll- System

-

-

---,

1620
Supervisor
Program

~

~

1620

1620/1710

1620

FORTRAN n-D
Compiler

SPS ll-D
Assembler

Disk Utility
Program

L- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Figure 1.

1620 Monitor II System

......J

be stored in cards or paper tape, as they were stored
in the past. In addition, they can be stored in disk
storage without the necessity of assigning actual storage areas, remembering or documenting the storage
assignments, and updating assignments and documentation as conditions change. These disk-stored programs can be referred to by a name or number when
called for execution. If a program is added to the
user's repertoire of programs, the storage locations of
the other programs may be adjusted to prevent the
overlapping of data in disk storage. An account of
available disk storage is kept for the user as adjustments are made to disk storage.
To make effective use of disk storage, a common
disk working area is maintained for all facets of the
Monitor System. One use for this area is to store intermediate output from FORTRAN compilations or sps
assemblies to speed up these operations.
Approximately 22 percent of disk module zero is
used for the Monitor System itself. The remainder
of disk storage, with the exception of a few sectors
on each additional disk module, can be used for user
programs and data records.
The use of disk storage is controlled by three diskstored tables. The first and major table is the Disk
Identification Map. known as DIM. Each disk-stored
item (program, data, or table) has a DIM entry which
contains information on where the item is stored,
how many disk sectors it occupies, and, if it is a
program, its core storage address. Thus, to refer to
an item, it is only necessary to use its DIM entry number. For those who prefer to use an alphabetic name
instead of a number, a second table, called Equivalence table, lists the names and their equivalent DIM
entry numbers. The third table, a Sequential Program
table, shows the assignment of disk storage by DIM
entry numbers and the availability of unassigned
storage. Maintenance of these tables is performed
automatically by the Monitor without user supervision
or direction.
To examine the Monitor System, it is best to summarize the functions of its various parts: Supervisor
Program, Disk Utility Program, SPS, and FORTRAN.
Subsequent sections present the detailed information

IBM 1620 Monitor II System

1

required to program and operate. each one.
The four primary functions of the Supervisor Program are:
•
•
•
•

Input/output
I/O error detection and correction
Program loading
Control

Individual routines which perform these functions
follow.
Input/Output routine, which performs all I/O
functions (card, paper tape, typewriter, or disk)
for the Monitor System.
I/O Error routine, which provides for error detection and correction for all I/O operations performed by the Input/Output routine.
Loader routine, which loads object programs into
core storage from card, paper tape, typewriter
or disk input.
Monitor Control Record Analyzer routine, which
records and interprets jobs to be performed, and
transfers control to other routines or programs
while maintaining communication so that control
may eventually be returned to itself.
Because all input/output is processed by the Input/Output routine, all data, programs, or control information from any input unit enter the 1620 CPU
through this routine. The Input/Output routine is able
to segment the continuous How of input information
into discrete jobs. Certain information is recognized
as control information. With the proper control information, the Monitor could, for example, execute a
particular series of jobs consisting of (1) compiling
a FORTRAN program and executing it using supplied
data from any input source, (2) loading an SPS object
program from disk storage and executing it .using
data supplied from any input source. All of thIS can
proceed automatically from one task to the ~ext
without stopping the machine for operator action.
Thus, ease of operation is achieved with increased
efficiency and throughput.
The Input/Output routine recognizes Monitor control information by two record marks (=f==f=). If the
first two columns of a card or tape record contain
record marks, the control information is examined by
the Monitor Control Record Analyzer routine to see
which one of twelve possible tasks is to be performed
next.
1. =f==f= JOB, initiates a new job.
2. =f==f= sps, indicat~s that an SPS source program ( s )
is to be assembled.

3. =f==f= SPSX, indicates that an SPS source program
is to be assembled and executed.

4. =f==f= FOR, indicates that a FORTRAN source program ( s) is to be compiled.
5. =f==f= FORX, indicates that a FORTRAN source program is to be compiled and executed .
6. =f==f= DUP, indicates that a Disk Utility routine is
to be executed.

7. =f==f= TYPE, indicates the next control record is
to be entered from the typewriter by the operator.
8. =f==F PAUS, allows operator action.
9. =f==f= XEQ, initiates loading and execution of an
SPS object program.

10. =F=f= XEQS, initiates loading and execution of
FORTRAN or sps object programs with subroutines.

11. =F=F=F=f=, is used to indicate the end of a job.
12. =f==f=, serves as a Comments record.
These control records can be classified as being one
of three types. Type 1 provides control information
which is used as instructions to the Supervisor Program. Type 2 provides for loading and starting the execution of user-written programs, using data from control records to initialize various subroutines used by
programs. Type 3 provides for functions similar to
type 2 except that the FORTRAN, SPS or the Disk Utility
Program with its functional capabilities is also executed.
When FORTRAN, SPS, or the Disk Utility Program
is executed, all input records are examined for
an asterisk (.) in the first position to determine
if they are control records. These records have two
functions: (1) they provide information about specific
Disk Utility jobs to be performed, (2) they provide
the specifications for FORTRAN compilations or SPS
assemblies.
Ten Disk Utility Control records provide various
user options. Each of these control records transfers
control to an individual routine to perform the desired
function.

1. ·DWRAD, indicates sector addresses are to be
written on a disk pack.
2. ·DALTR, allows the operator to alter disk-stored
data from the typewriter.
3. ·DDUMP, indicates disk-stored data or programs
are to be outputted in cards, paper tape or on
the typewriter.

indicates a program is to be loaded into
disk storage from cards, paper tape, or the working cylinders.

To eliminate the necessity of having an entire object program in core storage for execution at anyone
time, a CALL macro-instruction is provided. This instruction
enables an object program in core storage
5. °DREPL, indicates a disk-stored program is to be
to
be
overlayed
with instructions from disk storage.
replaceq by another.
Thus, the size of an object program can be virtually
6. ° DCOPY, indicates that data or programs are to
unlimited.
be copied into another area of disk storage.
Immediately follOwing assembly, an object program
7. oDELET, indicates a program is to be deleted
is located in the disk working cylinders. It can be
from disk storage.
stored in disk storage without outputting it in some
other form, thereby greatly reducing program loading
S. °DFINE, allows changes to be made to the Monitime. Program listings can be obtained in either card
tor System specifications.
or typewriter form. The program can also be immedi9. °DLABL, is used to write identity labels on disk
ately executed or punched out into cards or paper
packs.
tape for loading and executing at any later time.
10. °DFLlB, allows names to be assigned to FORTRAN
Any library subroutine set may be used by an
library subroutines.
object program. User-written relocatable programs
can be automatically added to the library subroutine
Examples of FORTRAN and SPS asterisk control records
set,
if desired.
are:
The FORTRAN compiler translates programs written
FORTRAN
SPS
Description
in the FORTRAN II-D language into 1620 machine lan°poBJP4 °OUTPUUARD
Punch object program
guage. Because of the large storage capacity of the
into cards
1311, source programs are read into the computer
°PSTSN4 °PUNCH SYMBOL
Punch Symbol Table
Just once. Intermediate output is stored in the disk
TABLE
into cards
work area to minimize input/output time. Following
The many routines of the Disk Utility Program are
compilation, an object program may be executed imdesigned to perform the necessary but tedious disk
mediately, punched into cards or paper tape, or stored
housekeeping functions. Items stored on the disk
in disk storage for executiun at a later time.
or items to be stored on the disk can be referred to
Statements are provided in the FORTRAN language
symbolically; that is, by a symbolic name. The Monithat
permit the use of disk storage. These statements
tor System will allocate and keep track of disk storage
provide
for (1) defining the size and quantity of data
areas for the user.
records
to
be stored, (2) reading and writing on disks,
The SPS ll-D assembler translates programs written
(
3)
positioning
the disk access mechanism for readin symbolic language into machine language. The
ing or writing, (4) returning control to the Supervisor
symbolic language is an extension of 1620/1710 SPS.
after execution of a FORTRAN object program, (5) overOnly one pass of the source statements is required belaying programs in core storage with other programs
cause intermediate output is stored op the disks. Also,
from disk storage and executing the overlaying prothe Symbol table is disk stored, thereby allowing for
grams.
assembly of programs with a great number of labels.
Subprograms can reside in either core or disk storAn additional symbol table, known as the System
age. Disk-stored subprograms can be called into core
Symbol table allows different SPS source programs to
storage only when needed. Thus very large problems
use common labels.
can
be accommodated.
I/O macro-instructions are provided in the SPS
New
floating-point and subscripting subroutines,
language to relieve the programmer of writing Input/
which use the Indirect Addressing feature and comOutput routines in source programs for card, paper
piler algorithms, provide for efficient object program
tape, or disk operations. Thus, all I/O functions inexecution. Subroutines written in SPS II-D language
cluding error detection and correction can be standcan easily be added to the FORTRAN subroutine library.
ardized. GET and PUT macro-instructions are used for
Also, subprograms written in SPS can be called for
reading and writing. These instructions generate apexecution by FORTRAN programs or subprograms.
propriate linkages to the Input/Output routine which
Object programs, either SPS or FORTRAN, can be
does the actual reading or writing (card, paper tape,
or disk).
punched into cards or paper tape following assembly
4. °DLOAD,

IBM 1620 Monitor II System

3

or compilation, if desired. However, assembly or
compilation time is shortened if the object program
is stored in disk storage rather than cards or papertape. A standard System Output format, which may
be in absolute or relocatable form,. is used to output
object programs. Only the programs outputted in the
standard format can be reloaded by the Monitor
System.
sps and FORTRAN source programs are assembled or
compiled using a given mantissa length, noise digit,
subroutine set, etc., specified in a common Communications Area. These given specifications are used for
all assemblies or compilations; however, the user may
change one or more of the specifications, such as
mantissa length, with control records for a particular
assembly or compilation.
SPS or FORTRAN source programs can be entered into
the 1620 from cards, paper tape, or typewriter. Object
programs, however, can be entered from cards, paper
tape, or disk storage. Data, of course, can be entered
from any input source as directed by an object program.
SPS II-D and FORTRAN II-D object programs will be
in a System Output format. System Output consists
of relocatable or absolute records. The relocatable
format allows the programmer to specify a diHerent
core storage address for the start of a program each
time it is loaded. All addresses within a program that
are being relocated are adjusted relative to a new
starting address. The starting address (relocation address) is specified by means of a control card at load
time. Absolute format, which can he generated by the
SPS II-D assembly program, is assembled to load to a
fixed core storage area.
Machine Requirements

The Monitor II System operates on a 1620 System,
Model 2, which has a minimum of 20,000 positions of
core storage, a 1311 Disk Storage Drive, Model 3, and
index registers. In addition, the Automatic FloatingPoint Operations feature is required to execute FORTRAN object programs.

Disk storage drive 0 (address block 00000-19999) is
required for storing the Monitor System. A description- of the loading process, including operating procedures, is included under MONITOR II SYSTEM LOADER.
During operation of the Monitor System, the disk
pack cpntaining the Monitor System can be on any
disk module. To begin operation of the Monitor System, load the Supervisor Program into core storage
from disk storage.
NOTE:

Indirect Addressing must be selected

ON.

Loading the Supervisor Program is accomplished by
entering from the typewriter or a card, the following
instructions :
Core Storage
Address of
Instruction
00000
00012
00024
00031
00032

Instruction
34 00032 00701
36 00032 00702
49 02402
X
Y1963611300102

X identifies the form of input for the Monitor Control
records: 1 for typewriter, 3 for paper tape, and 5 for
cards. Y specifies the disk drive code (1, 3, 5, 7) identifying the disk module where the Monitor II System is
loaded. (Any time the Monitor pack is moved to a
different drive, this sequence of instructions must be
repeated.)
When the Release and Start key or Load key is
depressed, the Supervisor Program is read into core
storage and the first Monitor Control card is read
in under control of the Supervisor Program by the
Monitor Control Record Analyzer routine.
This routine reads all control records and types them
out to inform the operator of the status of processing.
If operator intervention is required for any reason, the
routine will type a message and halt the 1620. Processing can be resumed as explained in the section concerning the MONITOR CONTROL RECORD ANALYZER ROUTINE.
The Parity, I/O, and Overflow Program switches
should be on PROGRAM to operate the Monitor II System.

Operation

The Monitor II System is available in either card or
paper tape versions, ready for loading to disk storage.
After either version is loaded, both cards and paper
tape may be used with the programs.
The system is self-loading, i.e., it contains the loading instructions that enable it to load itself into disk
storage. For handling convenience, a sequencenumber is punched in card columns 76-80 of card input.

4

Disk Storage Requirements

Portions of cylinders 24-25 and 78-99 of module 0 are
used by the Monitor System. Unused portions of
these cylinders can be listed using the Disk-to-Output
routine to obtain an availability list. A list of the assigned cylinders and DIM entry numbers associated
with the programs, routines, and tables stored in this
disk area follows.

Program/Table
Working Storage
DIM table
Equivalence table
FORTRAN Subprogram
Loader
FORTRAN Library Subroutines
SPS Library Subroutines
FORTRAN I/O and Arithmetic Subroutines
FORTRAN Compiler

Cylinders DIM Numbers
00-23
1
24
3
2
25
138, 147, 149,
80,84
150, 152, 157
*10-39, 170-199
81
82-83
**40-130
144-146, 200-202
78,79,
84,97
79,86-90 136-137, 153,
156, 203
85,91-92 139-143, 154, 155
93-96
8, 9, 131, 132
133
85
134, 148
98

Disk Utility Program
SPS Assembler
SPS Subroutine Supervisor
Supervisor Program with I/O
Routine
System Output Loader Routine
98
135
1440, 1401, 1410, Systems
99
166-169
Header Label Area ***
Monitor Disk Pack Labp.I ***
99
158-161
Mutual Disk Pack Identifica99
162-165
tion Label ***
Sequential Program table ***
99
4, 5, 6, 7
System Area
99
151
*Only DIM entries 10-25 and 170-185 are in use when the
system is delivered.
**Only DIM entries 40-57, 70-87, 100-117, and 130 are in
use when the system is delivered.
** *Present on all available modules.

Any program or routine not to be used may be deleted from disk storage using the Disk Utility Program, Delete Programs routine. All areas are assigned
automatically to module 0 when the system is initially
loaded; however, certain assignments can be altered
by the user as described in the section concerning
1620 Disk Utility Program, under DEFINE PARAMETERS
( DFINE) CONTROL CARD. With this entry it is possible
to utilize more than one disk storage drive and to
enlarge or shorten the tables used by the Monitor
System.
WORKING CYLINDERS
Cylinders 00-23, reserved for working storage, are
available to every program. This area is not available
for permanent storage of programs and data. This
area is identified by DIM entry 0001.
The working cylinders may be thought of as a
"scratch pad"; i.e., an area for storing intermediate
results. These results should be moved to another disk
area if they are to be retained for further use. Because the Monitor System uses this area to perform
its function, the contents of the area are continually
changing. However, an object program will occupy
the area at the beginning of the working cylinders
immediately after compilation or assembly 'is completed.

EQUlVALENCE

TABLE

When a user's object program, identified by name,
is loaded into disk storage by its compiler or by the
DLOAD or DREPL routines of the Disk Utility Program,
its name as well as its DIM entry number is entered in
the EqUivalence table. Sixteen digit positions are required for each entry, twelve for the 6-character alphabetic name and four for the DIM entry number
that starts with 0001. Eighty sectors with a capacity
of 500 program names are reserved to store the Equivalence table immediately following the standard DIM
table (cylinder 24).
When the Monitor System is delivered, the first 51
entries are reserved for the system, fifty for FORTRAN
library subroutine names and one for the SPS ll-D
modification program. Unused names in the first 50
entries will be identified by a field of 16 nines.
When a name, other than a FORTRAN subroutine, is
added to the table, it is placed in the 16 positions follOWing the last entry. When a name, other than a
name from the first 50 entries, is deleted from
the table, all entries in higher-numbered positions are
shifted left to overlay the deleted entry. Thus, the
table, with the exception of the first 50 entries, will
contain only those entries that are in force at any
one time. The rightmost position of the table is identified by a record mark.
DISK IDENTIFICATION MAP (DIM) TABLE
The Supervisor Program, Disk Utility Program, SPS
assembler, and FORTRAN compiler use th,is table to find
subroutines, data areas, or tables in disk storage. The
DIM table on cylinder 24 can accommodate up to 999
20-digit entries. One entry is required for each program or data area permanently stored in disk storage.
The format of the 20-digit DIM entry follows:
DDDDDDSSSCCCCCEEEEE =f=
DDDDDD is the disk sector address of the program or
data.
SSS is the sector count.
ccccc is the core address. If this field is all 9's, the
program is in System Output fonnat (see SYSTEM
OUTPUT FORMAT). If the units position is flagged,
the Subroutine Supervisor is used to load the program.
EEEEE is the entry address. This address is relative to
the load address (first core address to be loaded)
for programs in relocatable format.
$, $ =f=' or =F is the rightmost character of a DIM
entry.
These characters indicate the following conditions
about a referenced program.
IBM 1620 Monitor II System

5

Character

S
4=
=*=

File Protected Pennanentll Assigned
Yes
Yes
No
No

No
Yes
No
Yes

NOTE: (1) That a file-protected program can be
read but not written because it has read-only Hags
written in all (or anyone) of the sector addresses in
the disk area which it occupies. If read-only Hags are
written by a user's program in sector addresses where
a program is stored, that disk storage area will not
be «file protected," however, data cannot be written
in individual sectors which contain read-only Hags.
( 2) That a permanently assigned program cannot be
repositioned (moved) in disk storage because it has
been assigned to a given address by the user.
The Supervisor Program locates a DIM entry in the
following manner:
1. It refers to the Equivalence table to find the
4-digit DIM entry number.
2. It doubles this number and adds the sum to
048000.
3. It uses the leftmost five digits of the result to
locate the disk sector of the DIM table.
4. It uses the rightmost digit of the result to find
the particular DIM entry.
The DIM table can be expanded (see DEFINE PARAMETERS ROUTINE) to contain up to 4995 DIM entries, an
increase of 999 entries for each additional cylinder, 4
additional cylinders maximum.

Available sector numbers always begin with 9
( 9xxx ); the three rightmost digits denote the number
of consecutive available sectors. For example, 9021
indicates that 21 consecutive sectors are unused within a cylinder. A maximum of 200 available sectors
can be represented by an entry.
Cylinder entry numbers always begin with 70
(70xx); the two rightmost digits represent the cylinder number. One hundred of these entries are contained in the table, one for each of the 100 cylinders
numbered 00-99.
An example of how the three types of entries might
appear in a Sequential Program table for cylinders
48-52 follows:
7048 0434 0435 7049 0436 9010 0437 7050 0437
7051 0437 7052 0437
where the programs identified by DIM entry numbers
0434 and 0435 occupy all 200 sectors of cylinder 48,
and the programs identified by DIM entry numbers
0436 and 0437 occupy all sectors of cylinders 49-52,
with the exception of 10 unused sectors between the
two programs in cylinder 49. Note that programs that
overlap cylinders will have the associated DIM entry
number repeated for each cylinder on which it is
stored.
The length of the Sequential Program table is 80
sectors unless changed by a DFINE control record (see
DISK UTILITY PROGRAM). Fifty sectors should provide
sufficient space in the table if 1000 programs are to
be written on a disk pack. Therefore, the user may
want to lengthen or shorten the table for his particular
needs.

SEQUENTIAL PROGRAM TABLE

The second through eighty-first sectors (80 sectors) of
cylinder 99 are reserved on each disk pack for a Sequential Program table which lists the programs,
tables, and data areas sequentially by DIM numbers,
and available storage space by special coding. The
Sequential Program table is used by the 1620 Disk
Utility Program to determine the order of programs
and available storage space. When a program is added to or deleted from disk storage, the table is updated to reHect the new squence. Each 80-sector table
will accommodate up to 2000 4-digit entries. Three
types of entries are included in a table.
1.

entry numbers for every program or data
area specified in the DIM table.
2. Availab1e sectot count to in_dicate the number
of available sectors between programs or data
within cylinders.
3. Cylinder entry numbers to identify the beginning
of each cylinder.
6

IBM 1440, 1401, 1410, Systems Header Label Area

To facilitate the processing of common disk packs, a
standard alphabetic identification label is created on
the 1401, 1410, or 1440 Systems. This label is not used
by the 1620 System. The disk storage area (first 19
sectors of the last disk track of the last cylinder), reserved for this label can be released for other storage
purposes, using the DELET Disk Utility routine, if a
disk pack will be used with the 1620 only. The DIM
entries for the four modules that may be connected
to the system are 166, 167, 168, and 169.

DIM

Mutual Disk Pack Label

A 5-digit disk pack identification label that can be
used by the other systems (1440, 1401, or 1410) must
be written on the 32nd through 36th position on the
last sector of cylinder 99. This sector should be given
the sector address 00199 regardless of the addressing

scheme used on the remainder of the disk pack. The
sector can be labeled automatically using the Define
Disk Pack Label routine of the Disk Utility Program.

Inter-Phase - May be Used by Object Program

00000 - 00099
00100 - 00400

Arithmetic Table.
System Cammunications

Monitor Disk Pack Label

00402 - 00439
02040 1

()C)4M) -

The first sector of cylinder 99 is a label sector, that
is, it contains a label to identify the disk pack. Each
disk pack used by the Monitor System must include
this label. A 5-digit disk pack· identification number
in the five leftmost positions of the sector constitutes
the label. This number is used to provide protection
for user's records as explained in the section entitled
DISK PACK IDENTIFICATION NUMBERS. This file-protected
label must be generated using the Define Disk Pack
Label routine. The DIM numbers for these labels are:
0158, 0159, 0160, and 0161 for packs placed on
modules 0, 1, 2, and 3, respectively.

I/O Routine,
I/O Error Routine,
loader Routine and
Initializing Routines.

020402 - 19999
Supervisor Program, Monitor
Contro I Record Ana Iyzer
Routine, SPS Processor,
and FORTRAN Compiler.
(May be Used by Object Programs.)

20000Available Storage

Core Storage Requirements

The Monitor II System requires certain areas of core
storage in order to operate. Core storage positions
00100-02401 must be permanently assigned to the
Monitor II System; however, positions 00000-00099 and
02402-19999 are, only temporarily assigned to the system. A temporary area is available to the user for execution of object programs. The core storage layout for
the Monitor II System follows.

r

1

IBM-1620 MpnitOf'I1 System

7

Supervisor Program

The Supervisor Program performs the control functions and Input/Output (I/O) functions for the 1620
Monitor System. The FORTRAN ll-D compiler and the
SPS II-D processor, under control of the Supervisor Program, can be used to compile or assemble machine
language object programs. The Disk Utility Program,
also under control of the Supervisor Program, can be
used to write disk addresses, to alter a disk sector of
data from the typewriter, to load, update, and move
programs in disk storage, to delete programs from
disk storage, and to copy data, disk to disk.
SPS I1-D or FORTRAN II-D object programs can be
loaded from cards or paper tape into disk storage under control of the Supervisor Program. Because the
I/O functions are performed by a routine contained
in the Supervisor Program, the programmer need not
concern himself with writing these routines in SPS
source language. By use of a macro-instruction in the
sps source program, cards and paper tape can be
read and punched, data can be stored and retrieved
from disk storage, and data can be read and typed
from the typewriter under control of the I/O routine
in the Supervisor Program. When a macro-instruction
is encountered in a source program, linkage instructions, which provide an exit to an I/O rQutine, are
created in the object program. If desired, the user
may manually code linkage instructions without the
use of macro-instructions. Manually coded linkage
instructions offer certain input/output options, unobtainable with macro-instructions. Error checking and
correction procedures are a part of the I/O routine.
The Supervisor and Disk Utility Programs use the
I/O routine to perform their assigned tasks.

Monitor Control Records
Although the Monitor Control records are described
in terms of cards, these records can be in paper tape
or typewriter form.
The input to the Supervisor Program consists of
one or more "job decks" (Figure 2). A job deck, as
the term is used in this manual, may be a program
to be compiled or assembled, a combination of these
two (including data); it may also be a series of Disk
Utility Program operations. The Processing of each

8

job deck is controlled by the Supervisor as specified
by the Monitor Control card tbatprecedes it.
When a Monitor Control card is read, the program
required to do the job is read into core storage from
disk storage. The program then processes input until
the end of the job deck is reached, a new Monitor
Control card is encountered, or an error occurs. When
the end of a job deck is reached or a new Monitor
Control card is encountered, the Supervisor Program
is reloaded into core storage from disk storage, and
the process is repeated. If an error occurs, a message
will print to identify the error, and the remainder of
the job will be processed. If it is not possible for the
job to continue, the Supervisor Program will skip to
the next job. All Monitor Control records, with the
exception of those entered from the typewriter, will
be typed out on the 1620 console typewriter.
The 1620 Monitor II System uses eleven Monitor
Control cards to indicate the processing required of
the 1620 Supervisor Program. The manner in which
the Supervisor handles each of these cards is described in Figure 3.

Operation Codes

An alphabetic pseudo operation code, left-justified in
columns 3-6, is used to identify each of the eleven
Monitor Control cards. By examining the operation
code, the Supervisor Program is able to determine
what processing action is required.
JOB

A JOB operation causes (1) the description or operating instructions contained in the JOB Monitor Control
card to be typed, ( 2 ) modifies the module, if required, and (3) checks to ensure that the proper disk
packs have been attached by the operator.
SPS

This operation causes the SPS II-D assembly program
to be read into core storage from disk storage and to
be executed. The assembled object program may be
stored in disk storage and an entry made in the DIM
(Disk Identification Map) table.

~ SPsx operation is similar to the SPS operation,
h one exception: after the object program is asIbled, it is then executed.

FOR operation causes
'gram to be read into
~ and to be executed.
red in disk storage. If
de in the DIM table.

the FORTRAN II-D compiler
core storage from disk storThe object program can be
this occurs, an entry will be

\X

e

FORX

operation is the same as the

FOR

operation,

with one exception: the object program is executed
after it is compiled.
XEQ

The XEQ operation causes the SPS II-D object program,
identified by the Monitor Control card data, to be
read into core storage from the input device indicated
in column 27, and then to be executed. If the object
program requires any of the sps subroutines to operate, or if the object program is a FORTRAN compiled
program, the XEQS operation must be used instead of
the XEQ operation. Each disk-stored program, called
by the XEQ operation, must have a DIM entry to enable
the Supervisor Program to find it.

,tacked Input (Card,
or Paper Tape)
1311 Drive 0

Program
Monitor Control
Card

1620

Drive 1

Drive 2

Drive 3

Disk Storage I/O

Ure 2.

Processing Input Data Under Supervisor Control
Supervisor Program

9

XEQS
STACKED INPUT
(Monitor Control Card.,
Data Card., SPS and
FORTRAN Source Card.,
Di.k Utility Program
Control Card.)

1620
Supe ..../iso( .
with I/O
Routine

Type
Description

Load SPS II-D
Processor into
Core Storage
from Di.k Storage
and Execute

Load FORTRAN
II-D Compiler into
Core Storage from
D i.k Storage and
Execute

Load Di.k Utility
Program into Core
Storage from Disk
Storage and
Execute

Enter Succeeding
Monitor Control
Record. from
Typewriter

HALT
Depress Start
Key to Resume
Processing

This operation causes an SPS II-D or FORTRAN II-D
object program, identified in the Monitor Control
card, to be read into core storage from disk storage,
cards, or paper tape, and to be executed. If the object
program uses any of the SPS subroutines, the XEQS
operation must be used. Each disk-stored program
called by the XEQS operation must have a DIM entry
to enable the Supervisor Program to find it.
DUP

The DUP operation causes the 1620 Disk Utility Program to be read into core storage from disk storage
and to be executed.
TYPE

The TYPE operation causes a message - which requests the operator to enter the next 'Monitor Control
record from the typewriter - to be typed and the
program to stop to await keyboard input. After the
operator enters the Monitor Control record, the Release and Start key should be depressed to resume
computer operation. All succeeding control records
must be entered from the Typewriter until a JOB Control record is entered to change the source of input.
PAUS

The PAUS operation halts the program to allow the
operator to change paper tapes, load input cards, etc.
Job processing is resumed by depressing the Start key.

=l==l=
The

Load SPS II-D
Object Program
without Subroutine.
into Core Storage
from Di.k Storage
and Execute

Lood FORTRAN II-D
or SPS II-D Object
Progrom with Subroutines into Core
Storage from Disk
Storage and Execute

(END-OF-JOB)

=f= =f= (end-of-job) operation causes the message
END OF JOB

to be typed, if a job has actually started, and control
is to be resumed by the Supervisor Program. An endof-job record must follow each job. If this record is
not present, erroneous results may be obtained.
Monitor Control Card Formats

Pass Card.
to next

Monitor
Control Card

Columns

No

Pass Cards to
Next Monitor
Job Card

Figure 3.

10

JOB.

Logic of Supervisor

1-2
3-6

7

=F=F (identification r e cor d
marks)
Operation (JOB, left-justified).
Source of input,
5 == card.
3 == paper tape.
1 == typewriter.

8-11
12-31

32-80

Module change numbers (for
disk input only).
Disk pack identification numbers (for disk input only),
12-16 drive O.
17-21 drive 1.
22-26 drive 2.
27-31 drive 3.
Description.

3-6
7-12

13-16

SPS, FOR, DUP, TYPE, PAUS.

Columns 1-2
3-6

7

=t==f= (identification

r e cor d
marks).
Operation ( SPS, etc., left-justified).
Source of input, for sPs, FOR, or
DUP Monitor Control cards,
5 card.
3 = paper tape.
1 typewriter.

17-21

22-26

=
=

SPSX.
Columns 1-2

=F=F (identification r e cor d
marks).
3-6
Operation (spsx).
Source of input,
7
5 = card.
3 =:; paper tape.
1 = typewriter.
08-9
SPS subroutine set identification
number.
010
N (Noise) digit.
011-12 Two digits for indicating length
of mantissa.
°Required only when the program to be executed
uses other than the standard operating specifications
(02 standard subroutine set, 0 standard N digit, 08
standard mantissa length).
FORX.
Columns 1-2
3-6
7

8
9-10

XEQ.
Columns 1-2

=F=F ( identification record
marks).
Operation (FORX ) •
Source of input,
5 card.
3 paper tape.
1 typewriter.
FORTRAN subroutine set identification number.
Control card count (number of
LOCAL control cards).

=
=
=

27

XEQS.
Columns 1-2
3-6
7-12

13-16

17-21

22-26

=F=F ( identification
marks).

record

Operation (XEQ, left-justified).
Name of user's program, to be
executed (same name assigned
in Equivalence table).
DIM (Disk Identification Map)
entry number.
Note that either the name or the
DIM entry number must be given
(if program is in disk storage),
but if both are given, the name
takes precedence.
Address where loading of user's
program begins if program is not
in core image. If not supplied,
address 02402 is assumed.
Address where execution of
user's program is to begin if program is not in core image. This
address must be relative to the
start of the program if the program is relocatable; otherwise,
the absolute entry address must
be supplied.
Source of input,
Blank = disk.
5 = card.
3 = paper tape.
( Note that card or paper tape
input must be in System Output
format).

=F=F (identification r e cor d
marks).
Operation (XEQS).
Name of user's program to be
executed (same name assigned
in Equivalence table).
DIM (Disk Identification Map)
entry number.
Note that either the name or the
DIM entry number must be given
(if program is in disk storage),
but if both are given, the name
takes precedence.
Address where loading of user's
SPS object program begins if program is not in core image. If not
supplied, address 02402 is assumed.
Address where execution of
user's SPS object program begins
if program is not in core image.
Supervisor Program

11

27

28

29-30

°31-32

°33
°34-35

This address must be relative to
the start of the program if the
program is relocatable; otherwise, the absolute entry address
must be supplied.
Source of input,
Blank == disk.
5 == card.
3 == paper tape.
(Note that card or paper tape
input must be in System Output
format.)
Subroutine set identification
num ber for FORTRAN programs
only.
Control card count (number of
LOCAL control cards) for FORTRAN programs only.
sps subroutine set identification
number (e.g., 01 == fixed-length
subroutines, etc.).
N (Noise) digit for sps subroutines.
Two digits for indicating length
of mantissa for sps subroutines.

° Required only when the program to be executed
uses other than the standard operating specifications
(02 standard subroutine set, 0 standard N digit, 08
standard mantissa length).
=1==1= (End-ot-Iob).
Columns 1-2
3-4

=1==1= (identi fica tion record
marks).
Operation (=f==t=, end-of-job).

Comments Records

Comments records - in card, paper tape, or typewriter form - can be used to specify operating instructions and identify each job. Any number of these
records may be inserted in front of a job in the stacked input. Usually they are inserted behind a JOB
Monitor Control record. Comments records, unlike
Monitor Control records, have no control over the
Supervisor. When Comments records are encountered
in the stacked input, they are typed out. The format
of the Comments record in terms of cards follows:
Columns

1-2
3-6

12

=1==1= (identification record
marks).
Operation (blanks or any combination of letters and/or digits
other than the eleven Monitor

pseudo operation codes, JOB, SPS,
etc.).
7-80 Comments.
When the Supervisor Program reads a Comments
card, it will pass subsequent cards until another card
with =1= =1=, columns 1-2, is encountered. Therefore a
Comments card should be followed by another Comments card or a Monitor Control card.
SPSX,

Module Change Numbers

Module change numbers, punched in card columns
8-11 of the JOB Monitor Control cards, can be used
by the operation on 1620 Systems with more than one
1311 Disk Storage Drive to alter the normal assignment of disk storage drives fOT any job. For example,
in the execution of its proa job that uses drive
gram could use drive 1 instead of drive
by the
entry of a JOB Monitor Control card with the appropriate module change numbers.
Card columns 8, 9, 10, and 11 of the JOB card
represent disk storage drives 0, 1, 2, and 3, respectively. A change to the normal program assignment of
a disk storage drive is made by punching the number
of the substitute drive into the card column which
represents the normal drive. Therefore, in the preceding example, a digit 1 would be punched into card
column 8 to alert the program that drive 1 should be
used for the job instead of drive O. Card columns 9,
10, and 11 could be left blank because only the assignment changes must be punched. The assignment of
disk storage drives, placed in effect by a JOB card,
remains in effect until changed by a succeeding JOB
card. If the system is redefined to use more than one
drive, a JOB card with module change numbers
punched in columns 8-11 must be entered before the
additional drives will be accepted by the Supervisor
program.
To overlap the time required to change disk packs
for one job with the processing time for a different
job, the operator may choose to alternate the use of
disk storage drives from one job to the next. Alternating drives is possible only when all drives are not
in use for anyone job. For example, assume that job
A is to be followed by job B in the stacked input and
the programs for both of these jobs use disk storage
drives 0 and 1. Assume further that four disk storage
drives are available to the 1620 System that is to perform these jobs. By entering a module change number
in the JOB Monitor Control card for job B, the operator can use disk storage drives 2 and 3 for job B in
place of drives 0 and 1. Therefore, while job A is
being done, the operator could mount the disk packs
for job B on drives 2 and 3, thus saving valuable operating time. The JOB card module change numbers

°

°

should be punched

I I

Card columns
~ ~
Module change numbers
so drives 2 and 3 will be used in place of drives 0
and 1, respectively, for job B.
1 10

1111

Disk Pack Identification Numbers

Card columns 12-31 of the JOB Monitor Control card
can be punched with the four 5-digit disk pack identification numbers, one identification number for each
disk storage drive.
Disk Pack
Disk Storage
Identification Number
Drive
-0Card columns 12-16
17-21
1
22-26
2
27-31
3
The disk pack identification number from the JOB
card is compared with the identification numbers recorded on the respective disk packs. If the proper
disk packs are not attached by the operator, the
Supervisor will halt for operator instructions. If it is
desired to omit this check for any disk storage drive,
the card field representing the disk storage drive may
be left blank. When the operator enters a module
change number, no change to the disk pack identification numbers (card columns 12-31) is required.

Stacked Input
Stacked input consists of control records (Monitor,
Disk Utility Program, SPS, and FORTRAN), source programs, object programs, and data arranged logically
by job. Each job consists of phases which must fit into
one of four categories:
1. sps source program ( s) to be assembled.
2. FORTRAN source program ( s) to be compiled.
3. Disk Utility routine ( s) to be executed.
4. FORTRAN or SPS object program ( s) to be called
from disk storage with subroutines and executed;
or SPS program ( s) to be called from disk storage
without subroutines and executed.
The order in which jobs are executed is not important, i.e., a Disk Utility routine may be executed be
fore a FORTRAN compilation or vice versa. Jobs are
executed in the order in which they are encountered
in the stacked input. Each job must be preceded by a
JOB Monitor Control card and followed by an end-ofjob (=.f= =f= =f= =f=) Monitor Control card.
Job Arrangement

A Disk Utility, FORTRAN or SPS job is always represented by at least three Monitor Control records.

Card
1.

JOB

Monitor Contro]
Record

2.

DUP, SPS, SPSX, FOR,
FORX, XEQ, or XEQS,
Monitor Control
record

Purpose
Identify beginning of
job.
Transfer control to Disk
Utility Program, FORTRAN compiler, SPS Assembler, user's object
program.
Identify end of job.

3. End-of-job Monitor
Control record.
In addition to the Monitor Control records, there
may be one or more Disk Utility Program, SPS or
FORTRAN system control records. These records are a
part of the input for the individual system.
TYPE or PAUS Monitor Control records may be inserted immediately preceding any of the records in the
above sequence. Any number of Comments records
may be inserted in front of type 2 records. Source
programs or input data can be entered immediately
following type 2 records.
The following three points must be taken into consideration when arranging the input for any job.
1. All Monitor Control records, with the exception
of Monitor records that follow a TYPE Monitor
Control record, must be read from the same input source. The input source can only be changed at the beginning of each job or by a TYPE
Monitor Control record.
2. A job, with the exception of a Disk Utility job~
may consist of several system functions possibly
terminated by execution of a user's program. Execution of a user's program is considered as the
end-of-job. If any cards remain in the stacked
input for a job when it is ended in this manner,
they will be passed without processing. Processing resumes with the first Monitor Control card
of the next job in sequence.
3. If an error is detected in an SPS assembly or
FORTRAN compilation, the resulting object program or any programs that follow within the job
cannot be executed.
Examples of stacked jobs are given in Figure 4 and
Figure 5. In these examples:
Job A assembles two SPS source programs and stores
the assembled programs in disk storage. The second
SPS program is executed after assembly. This job includes Comments cards to instruct the operator and a
PAUS Monitor Control card to allow the operator to
intervene and change program switch settings.
Job B compiles and executes a FORTRAN source
program.
Job C replaces an existing object program in disk
storage with a new object program and copies a proSupervisor Program

13

gram from disk-to-disk. Job D calls a program from
disk storage with subroutines and executes it.
Monitor Control Record Analyzer Routine

This routine, a part of the Supervisor Program, is used
to read the Monitor Control records and Comments

records, which are identified by =f: =f: in columns
1-2, and to analyze these records, and to perfonn the
operations or transfer control as directed by the
pseudo operation codes. The first Monitor Control
record is read from the input source that is specified
by the operator when the Supervisor Program is originally loaded into core storage from disk storage to

Job "6"

Source Program

---------7

,
,,,
I

,

/

/

SPS Control
Records

,
/

**

JOB Monitor

,

/.

--------_1

Figure 4.

14

Stacked Input, SPS and FORTRAN Jobs

Job "A"

start the entire operation. Subsequent Monitor Control records and Comments records are read from the
same input source until a JOB Monitor Control record
changes the input source by specifying a different
"source of input" or a TYPE card is encountered. Reading of Monitor Control records continues from the
new source until again changed by another JOB Monitor Control record.
When the input source is the "typewriter," the
Monitor Control Record Analyzer routine types the
message

tum Program Switch 4 off and depress the Start key. The Monitor
Control record input source will be
changed to the typewriter, and the
operator may then re-enter the
control record. If it is desired to
read succeeding records from the
original input source, column 7
must identify the input source.
Message

ENTER MONITOR CONTROL RECORD
The operator may then enter the next control record. The record is not typed out if the entry is made
by the typewriter.
If the operator makes a mistake while entering the
record, he may correct the error by turning on Program Switch 4 and depressing the R-S key on the
typewriter. Switch 4 should then be turned off and
the entire record re-entered.
When an SPS, SPSX, FOR, FORX, DUP, XEQ, or XEQS
Monitor Control record is read, control is transferred
from the Analyzer routine to the individual program
specified by the control record. Control is returned to
the Analyzer routine after the program is executed.
When control is returned, the Analyzer routine will
pass records, provided the input source is other than
the typewriter, until a Comments or Monitor Control
record is encountered in the stacked input. Therefore,
the last job to be executed should be followed by a
TYPE or PAUS control card. If this control card is not
present, the 1620 will stop on a Read Select instruction, expecting another control card.
ERROR MESSAGES

Cause
Action

Action

Message
Cause

Action
Message
Cause

During execution of the Monitor Control Record
Analyzer routine, certain error messages may be
typed. After typing a message, the 1620 will stop if
any operator action is required. A list of these messages, the conditions which cause them, and the corrective actions required of the operator, follows.
Message

Cause

ERROR IN FIELD AT COL. XX.
SET SW4 TO IGNORE, OFF TO
RE-ENTER CARD
An illegal character has been detected in a JOB Record data field.
To ignore the error tum Program
Switch 4 on and depress the Start
key. The message "CONDITION
IGNORED" is typed and processing continues. To correct the error,

Action
Message
Cause
Action
Message
Cause

Action

PACK NUMBER. ERROR ON
MODULE X. SET SSW4 TO IGNORE OFF TO RECOMPARE
Disk pack identification num bers
compare "unequal."
To ignore the error, tum Program
Switch 4 on and depress the Start
key. The message "CONDITION
IGNORED" is typed and processing is resumed. To correct the error,
place the correct disk packs on the
disk drives and depress the Start
key. The disk pack identification
number will again be checked by
the program. If the pack involved
was a Monitor pack, the instruction
sequence previously described under operation must be repeated.
END OF JOB
The end of a job has been reached.
(This message will not be typed, if
the input source is the typewriter.)
None required.
CANNOT RESTORE COMMON
-RESET AND START TO RETRY
Common area does not read into
core storage from disk storage correctly.
Depress Reset and Start keys to retry the read operation.
EXECUTION
Loading and execution of user's object program has started.
None required.
JOB CARD GROUP ONLY
Control Record Analyzer routine is
expecting a JOB, TYPE, or PAUS Monitor Control record, but it does not
find one.
Enter JOB, PAUS, or TYPE, Monitor
Control record from typewriter and
depress the Release and Start keys.

Supervisor Program

15

ERROR IN FIELD AT COLUMN
XX. PHASE TERMINATED
A Monitor Control record contains
an invalid code in the field starting at column xx.
The phase is skipped and the supervisor will pass records from the
control record source until it encounters the next Monitor Control
record.

Message
Cause

Action

EXECUTION IS INHIBITED
An error has occurred within a job
which may prevent successful ex-

Message
Cause

ecution of the user's object program.
Non~ required. No user object program can be executed until the
next JOB Monitor Control record
is encountered.

Action

Message
Cause

Action

OBJECT DIM ERROR PHASE
TERMINATED
The Supervisor is unable to find
the DIM entry specified by an XEQ
or XEQS control record.
None required. The phase in which
the error occurred is terminated
and processing continues.

:f: :f: PAUS Monitor

:to :to Comments Monitor

:to

Job "D"

*Comments Monitor

Object Program

!

I

I

I

Job "C"

:to :to Job Monitor

Figure 5
16

Stacked Input, DUP,and XEQS Jobs

Message

OBJECT NAME ERROR PHASE
TERMINATED

Cause

The Supervisor is unable to find a
name in the Equivalence table
which corresponds to the name
supplied in an XEQ or XEQS control
record.

Action

None required; the phase is terminated.

Message

ENTER MONITOR CONTROL
RECORD

Cause

A "=F =F TYPE" Monitor Control
record has been encountered.

Action

Enter a Monitor Control record
from the typewriter. (Monitor input source is changed to the typewriter. )

Message

SYSTEM DIM ERROR PHASE
TERMINATED

Cause

Supervisor is unable to find DIM
entry for SPS assembler, FORTRAN
compiler, or Disk Utility Program.

Action

All linkages for I/O routines are generated automatically through the use of macro-instructions in
SPS source programs or the I/O statements (e.g., FIND,
RECORD, FETCH, PUNCH, READ, etc. ) in FORTRAN
source programs. The data and addresses supplied in
a macro-instruction or the parameters in a FORTRAN
statement are incorporated into the linkage instructions where they are made available for use by the
I/O routine.
Each time the I/O routine is entered as the result
of an SPS macro-instruction or FORTRAN statement,
the read, write, and parity check indicators are turned off. If a read or write error occurs that cannot be
corrected without operator intervention, an error
message is typed and the program halts. A restart
procedure is specified for all error conditions (see I/O
ERROR ROUTINE). An error count is maintained by the
I/O routine for inspection by the user or for diagnostic analysis by an IBM Customer EngineeJ;'.
In addition to using the I/O routine with SPS macroinstructions and FORTRAN statements, the routine may
be used by coding the general form of I/O routine
linkage directly in the user's program.
I/O Routine Linkage

General Form.

None required; the phase is terminated.

TFM

B

+

10RT,
23
ENTRY, DEF, 7
(/<

is the address ( 00565 ) of a 5-position storage area in the I/O routine.
ENTRY may be anyone of the four possible entry pOints
in the I/O routine represented by the following
symbolic addresses:

IORT

I/O Routine
The I/O routine is designed to relieve programmers
of the necessity for writing input/output subroutines.
The I/O function is performed automatically by the
I/O routine. Therefore, the programmer can concentrate on describing his files and disregard the actual
operation of the I/O function. Provision is also made
in this routine for error detection and correction. Ii
Parity, Wrong-Length Record Check, or Address
Check disk errors occur in a disk operation, the routine
will repeat the operation which had the error, up to
nine times, in an attempt to correct the error. The
Monitor System uses this routine for I/O operations.
The I/O functions performed by the I/O routine
include reading and punching cards or paper tape,
reading or writing typewriter, reading or writing disk
records, and seeking disk cylinders. These functions
may be used in an SPS object program by entering
I/O macro-instructions (GET, PUT, SEEK, or CALL) in
the user's source program. These macro-instructions,
as well as the associated declarative statements for defining declarative constants (DTN, DTA, etc.), are described in the section concerping SPS II-D.

Actual
Entry Point Address
00520
IORBC

Function
Write record into disk storage with Read-Back
Check. .

Write a record to an output device.
Seek a disk record.
00554
IOSK
IOGT
00566
Read a record from an input device.
DEF can be the address of any I/O declarative constant (see I/O CONSTANTS).
10PT

00532

CALL LINK or CALL LOAD Linkage. These linkages are usually used to call programs from disk storage, with or without execution. Linkages may be in
either a short or long sequence form. Both forms are
alike with the exception that the long sequence form
contains a relocation address.
Supervisor Program

17

Short Sequence
TFM
B7
DC

DC }
or
DSC
DSC
DC
Long Sequence
TFM
B7
DC

DC }
or
DSC
DC
DC
DSA
DSC

I/O Constants

10RT, 0
lOCAL
1, Mo

+ 19

An I/O constant for card, paper tape, or typewriter
consists of eight digits.

1, Ml
1,0
5,1111 @
10RT, 0
lOCAL
1, Mo

CCCCC is the address of an I/O area.
Mo Ml is one of the following codes which identifies
the operation:

00

+ 19

02
04

06
08
To

1, Ml
1,0
4,1111
LLLLL
1,@

lOCAL is an entry to the I/O routine (core storage
address 00716) .
Mo Ml is a constant 32 for CALL linkages, Ml is flagged for CALL LINK only.
IIII is the DIM entry number of the program to be
called.
LLLLL is the relocation core storage address where the
program is to be loaded.
If the short sequence is used to call a relocatable
program, LLLLL is assumed by the I/O routine to be
the address contained in the "high" indicator field of
the Communications Area. If the long sequence is
used to call a core image program, the I/O routine
will disregard LLLLL.
NOTE: The contents of all index registers are destroyed
whenever the sps macro-instructions CALL LINK or CALL
LOAD are executed. Also, if the called program requires
subroutines, the "no index register" mode is selected;
thus, it is the user's responsibility to turn the index
registers on again when needed.

Disk I/O constants may be in any of the following
four forms:
1.
2.
3.
4.

18

=F

LLLLL is a relocation core storage address of a program to be called.
'iIII is the DIM entry number of a program to be called.
Mo and Ml provide various ,disk ~ptions for the user.
A list of these codes and their associated options
follows.
Mo (code)

Option

o

Add the starting address of the
work cylinders from the Communications 'Area (core positions
422-425) to the sector address
in the disk control field. (Used
with constant types 1 and 2
only. )

1

Same as option zero, except the
"high"indicator in the Communica,tions Area will also be updated for disk read operations
only. This indicator is merely a
field which contains the core
storage address of th~ highest
position to be loaded plus one.

2

D se the sector address in the disk

MONCAL

MONCAL (core storage address 00796) is an entry
to the I/O routine which will call in the Monitor
Control Record Analyzer routine.
CALL EXIT linkage is used at the end of the execution
of an object program to return control to the Monitor Control Record Analyzer routine to read another
Monitor Control record. If, during execution of an
object program, an error is encountered which will
not allow normal exit to the Analyzer routine, the
operator may manually branch the program to
MONCAL (00796) to resume processing.

Mo Ml DDDDD =F
MoMl iSDDDD LLLLL
Mo Ml 0 IIIILLLLL =F
Mo Ml 01111 =F

I>DDDD is the address of the leftmost position of the
associated disk control field.

CALL EXIT Macro-Instruction Linkage.
B7

Typewriter Numerical
Paper Tape Numerical
Card Numerical
Typewriter Alphameric
Paper Tape Alphameric
Card Alphameric

control field for the disk operation (SEEK, READ, or WRITE).

3

n

Ml (code)

o

Use the sector address in the disk
control field for the disk operation. Also, update the "high" indicator in the Communications
Area for read operations only.
A flag over the code n, (n == 0, 1, 2,
or 3) causes the read/write
heads to be repositioned to an
assigned cylinder (specified in
the Communications Area) after
any disk I/O operation, except
seek.
Option
Disk read or write in sector mode
with WLRC. NOTE: The user must
place a group mark ($) in the
core storage location following
the last character position of the
last sector of the record.

2

Disk read or write in sector mode
without WLRC.

4

Disk read or write in track mode
with WLRC. NOTE: The user must
place a group mark ($) in the
core storage location following
the last character position of the
last sector of the record.

6

Disk read or write in track mode
without WLRC.
A Hag over code Ii (n == 1, 2, 4,
or 6) causes the I/O routine to
branch to a given address after
a disk read operation. The given
address will be the "execution
address" if an extended disk
control field is used. Otherwise,
it will be the "core address" of
the disk control field. If code n
is unflagged, the I/O routine
will branch to the first instruction following the disk operation calling linkage iw the object
program. If the entry address is
not specified, the entry is made
to the (possibly relocated) first
card address of the deck to be
loaded.

mats:
DDDDDD SSS CCCCC =F
DiSDDDD SSS CCCCC EEEEE =F
is the first sector address of the data or program.
sss is the number of sectors to be read or written.
CCCCC is the core address (must be an even-numbered
address) of the data or program.
EEEEE is the execution address where program execution is to continue after a disk read operation is
completed. The second disk control field, known as
an extended disk control field, is used when Ml of
the I/O constant is flagged.
DDDDDD

Card I/O

Cards are read or punched in alphameric or numerical form from a user-specified constant (generated
from an I/O declarative statement) designated in
general linkage. If a punch error is detected during
a write instruction, the instruction is again executed
to correct the error. If the error persists or a parity
error occurs during a write operation, an error message is typed and the program halts (see I/O ERROR
ROUTINES). Error messages will be typed for all read
errors.
Typewriter I/O

A specified I/O declarative constant designated in
general linkage will be used by read or write typewriter instructions (alphameric or numerical). If a
read error or a parity error occurs during reading, the
program will branch back to the read instruction and
await entry of data. The operator can then type in the
data and return control to the program. If a parity
error or write check occurs during writing, it will be
counted and the indicators will be turned off ~ but
the program will not halt. Control operations (RCTY,
SPTY, TBTY) are not executed in the I/O routine. These
must be handled in the main program coding.
Paper Tape I/O

Paper tape is read or punched in alphameric or numerical form from a specified I/O declarative constant designated in general linkage. If a parity read
error occurs during a read operation, an error message
is typed and the program halts.

DISK CONTROL FIELD

Disk Storage I/O

The disk control field, associated with I/O constants,
types 1 and 2, may be in either of the following for-

Disk storage will be read or written as specified by
the I/O declarative constant designated in general
Supervisor Program

19

linkage. Also, disk seek operations will be initiated to
disk addresses contained in the I/O declarative constant designated in general linkage. For a CALL macroinstruction, disk data records or programs will be
written in the area of core storage designated by the
relocatable address in CALL linkage. If this address is
not present for a relocatable program, the processor
selects the address. If the relocation address is present
but the program is not relocatable (i.e., it is in either
Absolute or Core Image format), the relocation address is ignored and the program is stored at the core
address specified by the DIM entry.
Disk storage indicators are reset by the I/O routine. If the Cylinder Overflow indicator (38) is turned on before the sector count reaches zero, a seek to
the next cylinder is initiated and reading or writing
is resumed. If read, write, or parity indicators, or indicators 36 or 37 are turned on, the instruction associated with the error will again be executed up to nine
times. If the error persists, an error message is typed
and the program halts.
The seek only linkage
TFM

B

+

IORT, 0
23
IOSK, DEF, 7

will allow computing time and seek time to overlap.
DEF refers to any disk I/O constant.
The cylinder location of the arm on each drive is
entered into a list by the I/O routine. Every time the
I/O routine executes a disk operation~ the current
entry cylinder is compared to the previous cylinder
and the arm is instructed to SEEK only if it is not already located at the current cylinder.
REPOSITIONING OF ACCESS ARMS

The I/O routine contains four 2-digit cylinder indicators that can be used to reposition the access arm
on each of the four possible disk drives to a new
cylinder following a read or write operation. The four
cylinder indicator core storage locations and their
associated drives follow:
Indicator Addresses
Drive
00512 - 00513
0
00514 - 00515
1
00516 - 00517
2
00518 - 00519
3
These indicator positions are reset to '00000000 by
the Monitor Control Record Analyzer routine. Therefore, a program which uses other cylinders for repositioning must provide for changing the indicators.
Repositioning the access arm following a GET or
PUT macro-instruction is optional. If Mo of the I/O
constant used by a GET or PUT is flagged, the read/
write heads will be repositioned.
20

FULL TRACK OPERATION

If any I/O operation is to be attempted with the
Write Address light on, the programmer must set a
flag at OLDDA
14 (core position 00455) before entering the I/O routine. The flag will prevent accumulating error counts (which is a write disk sector operation). The flag must be cleared before terminating
the routine in which the Writ\!} Address light "on"
condition is present.
If an I/O operation is attempted with the Write
Address light on, no flag present at OLDDA
14, and
an indicator 06, 07, 16, 17, 36, 37, or 38 on or turned
on by the I/O operation, the program will stop with
the instruction at 00728. To save the error count, the
operator must (1) turn the Write Address light off,
( 2 ) depress the STOP / sm key, ( 3) turn the Write
Address light on, if desired, and (4) depress the Start
key to resume automatic operation.

+

+

I/O Error Routine
Each time the I/O routine begins execution, it tests
indicator 19 (any check) to determine if an error had
occurred prior to entry. If the indicator is on, the I/O
error routine will be called into core storage and executed. This routine records a count of errors by type
(for indicators 06, 07, 16, 17, 36, 37, and 38), and provides the necessary error messages and corrective operating options. In addition the error routine turns
off the individual indicators (06, 07, 16, 17, 36, 37, and
38 ), by testing them.
After an I/O f~nction is executed, indicator 19 is
again tested. If it is on, the I/O error routine is entered to process the error.
Error Detection and Correction

During execution of the I/O error routine, error messages are typed to describe errors and the operator is
allowed to intervene to decide how errors should be
treated by the program. A list of error correction
options available to the operator follows.
Error Correction
Code
00

05

Option
Ignore the error. When this option
is used, the I/O routine will finish processing the I/O operation
as though the error had not occurred.
Re-execute the I/O operation. If
an error recurs during the next
execution, an error message is

again typed, the computer stops,
and the operator can exercise the
same option or another option.

10

Skip this phase of the job if error
occurs at system time (sps assembly, FORTRAN compiling,
Disk Utility Program, or Supervisor Program execution time)
and return control to the Monitor Control Record Analyzer
routine and pass records to the
next Monitor Control record.

15

Discontinue execution and return
control to the Monitor Control
Record Analyzer routine and
pass records to the next JOB
Monitor Control Record.

20

Continue processing by branching
to a specified core storage address without further processing
of the I/O request. When this
option is exercised, the operator
enters the 5-digit branch address from the typewriter.

After each error message is typed, the computer
halts. The operator then depresses the Start key, enters a 2-digit error correction code from the typewriter, and depresses the R-S key to resume processing.
If an error is made while entering a 2-digit correction code, it may be corrected by turning Program
Switch 4 on, depressing the typewriter R-S key, turning Program Switch 4 off, and re-entering the 2-digit
code.
The I/O error routine has the facility to handle any
of the following errors.
Entry Check
Typewriter write
Typewriter read
Paper tape read
Card write
Card read
Cylinder overflow
Write error count
Illegal DIM entry
System
Unavailable disk drive
Control record trap
Error messages, conditions, and corrective operator
action associated with each type of error is described
as follows:
Entry Check. If indicator 19 (any check) is on,

when tested in the preprocessing phase, the message
ENT ERROR 06071617363738
is typed on the console typewriter. Each pair of indicator numbers is flagged in the leftmost digit. If an
indicator was on when tested, the rightmost digit
will also be flagged.
Typewriter Write. For this error, no error message
is typed; however, the error is automatically indicated
by over-printing the error character ( s) with a horizontalline.
Typewriter Read. For this error, the message
TYP ERR
is typed.To restart the computer, the operator exercises one of the error correction options.
Paper Tape Read. The message
PTR ERR
is typed. The operator must backspace the tape to the
beginning of the record before exercising error
option 05.
Card Write. For this error, the I/O error routine
retries the operation once for a write check error (indicator 07). If the error is corrected by the retry, control is returned to the I/O routine; if the error is not
corrected, the message
CDP ERR
is typed. The error option can then be exercised by
the operator.
Card Read. For this error, the I/O error routine
retries the operation once for a read check error
(indicator 06). If the error is corrected by the retry,
control is returned to the I/O routine; if the error is
not corrected, the message
CDR ERR
is typed. The error option can then be exercised by
the operator.
Cylinder Overflow. For this error, the I/O error
routine tests to determine if a legitimate overflow has
occurred during a disk read or write operation. For
a legitimate overflow, a seek operation to the next
cylinder is automatically initiated and reading or writing continues. A maximum of three seek operations
will be performed if sufficient core storage is available
to accommodate the data being read or written.
If the disk read or write operation results in an attempt to read or write data beyond the highest sector
Supervisor Program

21

address of the addressed disk module, the message
DSK OFL
is typed. All error correction options, except 05, are
available to the operator. If 05 was inadvertently entered, it would have the same effect as error correction option 00.
For a disk error, which is other than a legitimate
overflow, the disk read or write operation causing the
error is retried up to nine times; if this fails to correct the error, the message
DSK ERR XXXXX 06071617363738
is typed, where XXXXX is the 5-digit return address to the object program. A flag is typed over the
leftmost position of each pair of indicator numbers.
The indicator ( s) which identifies the type of error
will also be flagged in the rightmost position. If indicator 38 is flagged in its rightmost position, it may
mean either of two things:
1. A legitimate overflow did occur, but another
type of error occurred in attempting to transmit data to or from the succeeding cylinder.
2. A machine malfunction occurred.
If the operator exercises error correction option 05,
but this does not correct the error, he should' turn the
Disk, Parity, and I/O Check switches to STOP, and
again exercise option 05. The console lights may then
be examined to determine the nature of the error.
If a legitimate cylinder overflow condition occurs,
a seek operation to the next cylinder is automatically
initiated and reading or writing continues.
Write Error Count. If an error occurs while the I/O
error routine is writing the error count in disk storage, the message
BAD DISK WRITE. RESET START
will be typed. In this case, the operator does not
exercise an error correction option, but he must:
1. Clear the Select-Lock light, if it is on.
2. Depress the Reset and Start keys.
Illegal DIM entry. If the user supplies an illegal
DIM number (not in DIM table) in a CALL statement,
the I/O routine will transfer control to the I/O error
routine and the message
MAP ERR XXXXX

nn

is typed, where xxxxx is the core storage position immediately follOwing the call linkage, and 1111 is the
illegal DIM entry number. The operator then enters
error correction code 00 and depresses the Release
and Start keys. The computer will again halt. The
22

operator must then type in a corrected 4-digit DIM
entry number and depress the Release and Start keys.
System. If the I/O error routine cannot interpret
the nature of the error, the message
IMP ERR
is typed and control is returned to the Monitor Control
Record Analyzer routine without stopping to allow
operator intervention.
In addition to the system error just described, the
computer may halt in the I/O routine at core storage
address 00467 without typing a message. This halt
occurs if a read error occurs while the I/O routine is
reading one of its subroutines from disk storage. To
retry the operation, the operator should
1. Clear the Select-Lock light if it is on.
2. Depress the Reset and Start keys.
If this error persists, it may mean either of two things.
1. The user inadvertently altered the I/O routine
in core storage.
2. A machine malfunction occurred.
Unavailable Disk Drive.. If the programmer specifies a logical module for which there is no phys'ical
disk storage drive, the message
MOD ERR XXXXX
is typed, where xxxxx indicates the return address to
the object program. The operator must enter the error
correction code 00 and depress the Release and Start
keys. The computer will again halt. The operator
must then enter a corrected I-digit drive code and
depress the Release and Start keys to continue.
Illegal Drive Code. If the user gives an illegal drive
code in the disk control field for a disk operation, the
message
MOD ERR XXXXX
is typed, where xxxxx is the 5-digit return address
to the object program. To continue, the operator
should enter an error correction code 00 and depress
the Release and Start keys. The computer will halt
to allow the operator to enter a corrected I-digit
drive code from the typewriter. Depress the Release
and Start keys to resume operation.
Control Record Trap. To prevent the I/O routine
from inadvertently reading a control record as a data
record, the I/O routine is designed to trap control
records, if they are read from the Supervisor input
source. Each record read is tested for =f= =f= in its first
two positions. If present, control is transferred to the
I/O error routine and the message
TRP ERR
is typed. If the control record was read in numerical

mode and it was not an end-of-job record (=f:=f:=f:=f:),
an additional message is typed:
MUST RELOAD
The operator then depresses the Start key and reenters the record. The Monitor Control Record Analyzer routine assumes control and processes the trapped control record. If the control record was read in
alphameric mode, it is processed in the normal manner by the Supervisor.

Programs are sequence checked as they are loaded
if input is from cards. This check is performed on the
last five digits of each input record. If any records
are out of sequence, an error message is typed and
the operator is allowed to intervene to correct the
sequence error. Patch cards may be interspersed with
other cards of an object program to be loaded.
The sequence number of card input appears in
columns 76-80. Sequence numbers start with 00001
and must have a Hag over their leftmost position in
order to be sequence checked.

Error Count Retrieval Routine

System Output Format

Each time an error is detected by the I/O error routine, an error count is incremented by one. An error
count is maintained for each of the following error
indicators:

The general format in which FORTRAN ll-D and SPS ll-D
object programs will be outputted to paper tape, disk,
and cards is shown below:

06
07
16
17
36
37
38

Read C~eck
Write Check
MBR-E Check
MBR-O Check
Address Check
WLR-RBC

Cylinder OverHow

The error counts can be typed out and reset to
zeros by entering the following instructions and data
from the typewriter:

34
00032 00701
36
00032 X0102
49
00070 0
11975400100046 (disk control field)
X is the drive code for the Monitor II System.
The Release and Start keys are depressed to start
the operation. The seven indicator counts are then
typed in sequence in 14 consecutive positions with
a Hag over the leftmost position of each count.

Xx Xx Xx Xx Xx Xx Xx
The error counts are reset to zeros after the typeout.

Loader Routine
The Loader routine, a part of the Supervisor Program,
is used to load user's object programs into core storage from cards, paper tape and disk storage. To perform the loading function, the Loader routine is called
into core storage whenever an object program is to
be loaded into core storage. The user's object program
could be any program in System Output format.

Columns 1-5
6
1-8
9-15
16-80

Address of data.
Indicator code.
Length of data.
Data, indicator codes, etc.
Sequence number.

Patch cards should be prepared in the same format.
However, the sequence number must be all zeros
without Hags. All patch cards must precede the card
that defines the end of a relocatable program (see
INDICATOR CODE· 6). The entries shown above are described as follows:
NOTE: The descriptions given here will be in terms of
cards; however, .paper tape and disk formats will be
the same with the exception of the sequence number.

Address of Data - This entry will always refer to
the location where the first digit of data on the card
is to be loaded. This entry will appear in columns
I through 5 of a reloadable card. The address is an
absolute address, i.e., no relocation increment (presuming this program is relocatable) has been added
yet.
Indicator Code - This I-digit entry is used to either
define the type of data that is to follow or to convey certain loading instructions to the loader. There
are thirteen different indicator codes that may be
used; some are applicable to SPS ll-D only (see INDICATOR CODES).

Length of Data - This field is used in conjunction
with certain indicator codes (1, 2, 2, 3, 3, 4, 4) to
specify how many digits of data are to follow. With
other indicator codes, this field becomes part of a
larger field and assumes a different role.
Supervisor Program

.23

3' -

Data - This field contains actual data to be loaded.
Data may be instructions, constants, etc., depending upon the indicator code. All instructions for relocatable programs will contain Hags over 00, 0 1
of the operation code to specify if the P' and Q addresses, respectively, should be incremented by the
relocation address. If patch cards are prepared,
these Hags must be punched for addresses to be
adjusted. Instructions of programs in absolute format must not be flagged.

This digit indicates that the data follOwing
the ",length of data" field are relative addresses'that are not to be relocated.
4 - This digit is used to supply numeric blanks
when a relocatable program is loaded. The
2-digit "length of data" field follOwing the
indicator specifies how many numeric blanks
are desired. Thus a 412 will cause twelve
numeric blanks to be inserted into core storage when loading.
4" - This digit is used in the same manner as
the digit 4 above except that the Hag indicates the program is in "absolute" form.
6 - This digit indicates the end of a relocatable
program. In SPS II-D, th! five digits immediately preceding a 6 or 6 (described below)
will be the number of core positions needed
for this program. In SPS or FORTRAN, th~
card that follows a card containing a 6 or 6
will contain five 9's in columns 1-5.
'6 - This digit indicates the end of an "absolute"
program.

INDICATOR CODES

Although the output fonnat is shown divided into
specific fields, these same fields do not always make
up the columns that are indicated. As will be seen
by the descriptions of the various indicator codes, the
format varies conSiderably as the type of data on the
card changes.
The indicator codes are described as follows:
NOTE:

in

Those codes marked with an asterisk are used
output only.

SPS II-D

=1= - This digit indicates that a change is being

=1= -

o

0-

o1-

2-

23-

24

made in the sequence of loading addresses
for the program. The five digits that follow
the record mark denote the new address or
origin. After the 5-digit address, there will
be another indicator code to define the data
that follows.
This digit is used whenever the data that
follows is an instruction or relative address
which cannot be fully contained before the
seventy-fifth column of the card has been
reached.
This digit is used when a TRA-TCD declarative combination is assembled in any relocatable SPS program. The five digits that
follow the zero constitute a branch address
for entrance to a routine.
This digit is used in the same manner as 0
above, except the flag denotes an SPS program with absolute addresses.
This digit indicates that the data to follow
after the "length of data" field are instructions.
This digit indicates that the data following
the "length of data" field are constants that
are to be relocated.
This digit indicates that the data following
the "length of data" field are constants that
are not to be relocated.
This digit indicates that the data follOWing
the "length of data" field are relative addresses to be relocated.

Example

The first 35 columns contain the following:
010121i2490036600000=l=0101920500428~
Columns 36 through 75 are blank and colwnns 76-80
contain 00101.
Explanation
Columns

Contents

1-5

'01012

6

1

7-8

}2

9-20

490036600000

21
22-26

01019

27

2

28-29

05

30-34

00428

35
76-80

"00101

Description
Loading address of first infonnation.
Code indicating the follOwing infonnation is an instruction.
Length of the following infonnation.
The infonnation to be loaded,
which is a Branch instruction
with a relocatable P field.
Code indicating a change in the
loading address sequence.
Loading address of the following
infonnation.
Code indicating the following information to be loaded is a relocatable constant.
Length of the following infonnation.
The information to be loaded,
which is a relocatable constant.
Code indicating nothing further
is to be loaded from this card.
Sequence number.

With a relocation factor of 14000, the above data would be
loaded s!artil!,g at location 15012. The data would appear as:
491436600428.

Error Messages

If an error occurs during execution of the Loader routine, an error message will be typed and the 1620 will
stop to await operator action. A list of error messages,
the conditions which cause them, and the corrective
action required, follows.
Message - XXXXX LD1 (XXXXX is the sequence
number of the last card read in correct sequence ).

with the card following XXXXX, and place them
in the card reader. Depress the Start key.
Message - LD2
Cause - Card read error.
Action - Reread card by depressing the Check
Reset and Start keys on the card read punch.

Cause - Card sequence error.

Message - LD 3
Cause - Disk read error.
Action - Depress Start key and retry.

Action - Correct the order of input cards, starting

Message - LD 4

24.1

A Hag in this position indicates that
a DEND type entry starts execution of the object program. No
Hag indicates that a TRA-TCD type
entry starts execution of the object program.

Cause - Disk read error while reading Loader routine into core storage.
Action - Depress Start key to retry.

Monitor II System

Communications Areas

Core storage positions 402 through 439 and disk sector
19663 are reserved for use by the Supervisor Program,
SPS assembler, FORTRAN compiler, Disk Utility Program, and other programs as common communications areas. The Communications Areas are automatically established when the Monitor system is loaded. Changes to the communications areas are made
as specified by control records (see DFINE CONTROL
CARD) or by the Supervisor program itself. Care should
be taken by the user, so that the communications
areas are not inadvertently altered. A description of
each of the fields in the core storage and disk sector
communications areas follows.

429

Source of monitor control input,
1 == typewriter.
3 == paper tape.
5 == card.
A Hag is present in this position if
library subroutines are to be
called with SPS or FORTRAN objects programs.

430-434

"High" indicator, i.e., the core storage address of the highest position to be loaded plus one.

435-439

Address where loading is resumed
folle wing an SPS TRA statement.
This address will always be one
of the following: 00000, 00075,
00150, or 00225.

Core Storage Area

Core Storage
Positions
402-421

422-425

Description
A 20-digit DIM entry or a 14-digit
disk control field being used by
the I/O routine, Disk Utility Program, or other programs.
Starting address of work cylinder.
Only the four leftmost positions
of the sector address are given.
This address will be 1000 (with
the flag) unless changed by a
DFINE control card.

426

Source of sps or FORTRAN source
program input,
1
typewriter.
3 == paper tape.
5 == card.

427

If this position is flagged, loading
resumes after a TeD at core storage address 00000. If unflagged,
loading resumes at the core storage address specified by positions 435-439 of this Communications Area.

428

Source of object program being
loaded,
3 == paper tape.
5 == card.
7 == disk.

Disk Sector Area (Sector 19663)

Disk Sector
Positions

Description

00-19

DIM

20-21

Not Used. Available for use by the
1620 user.

22

entry used by I/O routine and
Supervisor program.

oindicates that the program to be
loaded into disk storage is in
core image format; I indicates
that the program to be loaded
into disk storage is in relocatable
format.

23

oindicates card output; I

indicates

paper tape output.
24-35

Six-character alphabetic name of
user's source program to be loaded into disk storage after assembly.

36-39

Four-digit DIM entry number of
user's source program to be loaded after assembly.

40-41 0

Two digits (xx) indicating length
of mantissa for sps subroutines.
( Standard mantissa length is 08. )
Supervisor Program

25

42-43 0

44

0

45-46 0

47-48 0

49

50-72
73

74-75
76

26

Two-digit SPS subroutine set identification number. (Standard set
number is 02.)
N (noise) digit for SPS subroutines. (Standard N digit is 0.)
Two digits ( ff) indicating length
of mantissa for FORTRAN subprograms. (Standard mantissa
length is 08.)
Two digits (kk) indicate FORTRAN
fixed-point word length (04
standard length).
Digit indicates number of disk
storage drives available to the
Monitor System.
Supervisor Program indicators.
Source of input, other than disk,
for FORTRAN subprograms (from
DFINE control record; 5 is standard, 3 == paper tape, 5 == card).
Number of control cards for FORTRAN at load time.
Object machine core size (from
DFINE control record; 1 when
system is delivered).

77

78-79

80-81

82

84-88
89-93
94-98
99
o

N (noise) digit for SPS subroutines
( from Noise Digit control record).
Mantissa length for sps subroutines (from Mantissa Length control record).
sps subroutine set identification
number ( from Subroutine Set
control record).
FORTRAN A and I/O subroutine set
numbers (from FORX or XEQS control record).
FORTRAN A and I/O standard subroutine set number (from DFINE
control record; 1 when system is
delivered) .
First core storage address of a relocatable object program.
Computed relocation address of a
relocatable object program.
Card sequence number.
A record mark (=f=).

These items are the systems standards. See Define
Parameters under Disk Utility Program.

Disk Utility Program

In every data processing installation there are certain
operations that must be performed frequently. These
operations may differ in detail, depending on the
user's particular machine configuration and data format, but essential functions remain the same. Because
of their frequent use, the burden of programming
these operations can become a costly, time-consuming
task. Therefore, there is a need for generalized
routines which will satisfy specific functions and allow
the user the flexibility of assigning the specifications
for his particular problem.
The generalized routines, provided by IBM Programming Systems, described in this publication, are
grouped under the heading Disk Utility Program.
They are designed to assist the user in the day-to-day
operation of his installation. By means of these routines, certain frequently required operations, such as
loading or unloading disk storage (data or programs)
from cards or paper tape, etc., can be performed with
minimum programming effort by the user.
The routines described in this publication are:

1. Write Addresses. This routine writes sector addresses on a disk pack as specified by the user.
Data on the disk pack can be replaced by zeros
or left unchanged.
2. Alter Sector. This routine uses the typewriter to
change data in a sector of disk storage. In most
cases, only the digits to be changed must be
typed.
3. Disk-to-Output. This routine unloads disk storage containing data or programs into cards,
paper tape, or on the typewriter.
4. Load Programs. This routine loads one or more
programs from cards or paper tape to disk storage at either a specified address or an address
selected by the load routine itself, and checks
for an overlap of previously stored programs.
5. Replace Programs. This routine implements the
changes or additions necessary to update a program on disk storage. Input can be in either card
or paper tape form.
6. Disk-to-Disk. This routine copies data or programs from one area of disk storage to another.
7. Delete Programs. This routine effectively deletes
programs from the system by deleting their
associated DIM entries and Equivalence table

entries without actually removing the programs
themselves.
8. Define Parameters. This routine redefines certain
essential parameters of the Monitor System.
9. Define Disk Pack Label. This routine writes the
"label sectors" (first and last sectors, cylinder 99)
and establishes a Sequential Program table on a
disk pack. It can be used to initialize new disk
packs.
10. Define FORTRAN Library Subroutine Name.
This routine generates an entry in the Equivalence table for FORTRAN subroutines that have
multiple entries. Thus, a name can be assigned
to all entries in a subroutine.
Each routine can be entered and executed by
means of control records read by the Disk Utility
Program. In addition, the routines are used by
both SPS II-D and FORTRAN II-D to output assembled programs into cards or paper tape and
to load and replace programs in disk storage.

The Equivalence table, DIM table, and Sequential
Program tables are used and modified by the Disk
Utility Program in the execution of its routines. These
tables are updated automatically for each disk storage change when the user adds, deletes, or replaces
a program. Entries are created in the tables whenever
a new program is loaded to disk storage.

Operation

The Disk Utility Program, a self-loading program, is
loaded into disk storage along with the other programs that make up the Monitor II System. When a
DUP Monitor Control card (=F=F DUP in card columns
1-5) is recognized by the Supervisor Program, the
Disk Utility Program will take control and select the
appropriate Disk Utility routine as identified by the
next card in seqence, which should be a Disk Utility
Program Control card. This card is identified by an
asterisk in card column 1. Card columns 2-6 contain
a code word to identify the Disk Utility routine desired: such as, Alter Sector, Load Programs, etc., and
the remaining card columns provide additional control information to be used by the Disk Utility routine
itself. The user supplies the control information which
describes the function he desires. Because the control
Disk Utility Program

27

information for each type of Disk Utility Program
Control card is different, the format of each is described separately in the separate routine descriptions.
After the execution of a Disk Utility routine is completed, control is returned to the Monitor Control
Record Analyzer routine.
A DUP Monitor Control card, as well as a Disk Utility Program Control card, is required each time a Disk
,Utility routine is to be executed. These cards are
stacked with the other input cards to be processed by
the Monitor System. This stacked input may be in
card or paper tape form or it may be entered from
the typewriter.
If the code word contained in, a Disk Utility Program Control card is not one of the ten legitimate
codes (DWRAD, DALTR, DDUMP, DLOAD, DREPL, DELET,
DFINE, DCOPY, DLABL or DFLIB)
an error message will be typed and the computer will halt. This
message will be comprised of the data from the control card and a constant, ERR CONTROL. When the
Start key is depressed, the Disk Utility routine will
return control to the Monitor Control Record Analyzer
routine which will pass all cards until the next Monitor Control card is reached.
If the control record is entered from the typewriter,
the message
ENTER DUP CNTRL REC
is typed and the computer halts. The user may then
enter the next Disk Utility Control record from the
typewriter and depress the R-S key to continue processing. Records are entered in the alphameric mode
The Disk Utility Program uses the I/O routine of
the Supervisor Program to perform its I/O functions
Therefore, error messages associated with that routine will be typed if an I/O error occurs. The I/O
error messages, as well as operating options for I/O
errors, a:ce described under, I/O ERROR ROUTINE, in the
Supervisor Program section.
Whenever a Disk Utility routine is instructed by a
control record to write read-only flags with sector
addresses, the message
DUP

0

TURN ON WRITE ADDRESS KEY, START

is typed and the program halts. The operator should
tum on the Write Address key (to allow read-only
flags to be written) and depress the Start key to continue processing. After the program has been completely loaded, the message

operator to turn off the Write Address key.
Whenever a program of less than 200 sectors is
assigned to disk by any Disk Utility routine,
it will always be placed in consecutive sectors of one
cylinder. However, a program can be assigned by the
user, to any available disk storage area as described
under LOAD PROGRAMS HUUTINE.. Programs as large as
999 sectors long can be processed by the Disk Utility
Program.
After a program is loaded to disk by any Disk
Utility Program routine, the message
DK LOADED AAAAAA lIII DiSDDDD
SSS CCCCC EEEEE =1=
is typed to inform the user about the assigned DIM
entry.
AAAAAA is the assigned program name, nn is the assigned DIM entry number and the remainder of the
message is the DIM entry itself.

Write Addresses Routine
The Write Addresses routine is used to write sector
addresses on a disk pack. Addresses may be written
with or without read-only flags over the leftmost
positions. Data positions of each sector may be
changed to zeros or left unchanged.
When the Write Addresses routine is executed,
the \Vrite Address key must be turned on. The message:
DUP

~

TURN ON WRITE ADDRESS KEY, START

is typed to signal the operator to turn the switch on.
After the routine has been executed, the message:
DUP ~ TURN OFF WRITE ADDRESS KEY, START
is typed to signal the operator to turn the switch off.
The format of the control card follows.

Control Card (DWRAD).
Columns

1
2-6

7-12

17

18
DUP

0

TURN OFF WRITE ADDRESS KEY, START

is typed and the program again. halts to allow the
28

Asterisk (0)
Code word, DWRAD.
Disk sector address where
writing is to start (seek address ).
Letter P if read-only flags
are to be written over addresses; 0 the r w i s e leave
blank.
Letter Z if data positions
are to be changed to zeros;
letter S if data positions are
to remain unchanged.

21-26

Address to be written at sector where writing is to start.

time this routine is used. Control is .transferred to
the Alter Sector routine when the control card is read.

27-32

Final address to be written.

Control Card (DALTR).
Columns
1
Asterisk (0)
2-6
Code word, DALTR.

When the DWRAD Control card is read, control is
transferred to the Write Addresses routine and the
message
WRITE AND SAVE
SEEK START STOP
XXXXXX XXxxXX XXXXXX
or the message
WRITE AND ZERO
SEEK START STOP
XXxxxx XXxxXX XXXXXX
is typed to allow verification of control record data
and the computer is halted. (Note that the second
form of the message indicates that sector data positions are to be changed to zeros.) Six X's indicate the
respective seek, start, and stop addresses. Depressing
the Start key causes execution of the routine. The
routine seeks the disk sector address specified in
columns 7-12. The address specified in columns 21-26
is written in that sector; the address is then incremented by one and written in the next sector. Writing
continues in this manner until the incremented address is equal to the final address (columns 27-32)
and the final address has been written.
If the program is unable to find the starting address
(columns 7-12), or any address that should be on the
specified track in disk storage, an error message ER
SK XXXXXX will be typed. XXXXXX is the disk
address on the last sector examined when no equal
comparison could be made with the sector addresses
that should be on the track that has been read. In
addition, the 20 sector addresses from the selected
track will be typed and the program will halt. \Vhen
the Start key is depressed, control is returned to the
Monitor Control Record Analyzer routine to read the
next Monitor Control record.

Alter Sector Routine
This routine allows the user to alter the data in any
selected sector of disk storage. The sector data to be
changed· is typed out. All, or selected portions of the
sector may then be updated. After the changes have
been made, the old and the new data are typed out
for visual comparison and verification. If the changes
are satisfactory, the new data.is stored on the disk
pack. As many sectors as desired may be altered each

After the control card is read, the message
SECTOR
is typed and the program halts.
The operator types in the 6-digit address of the
sector to be altered and depresses the Release and
Start key. If more or less than six digits are typed,
the message
SECTOR ADDRESS ILLEGAL,
START TO RE-ENTER °DALTR
is typed and the machine halts. Pushing the Start key
will restart all operations on the given sector. The
routine reads the sector and types it out in the following format.
1st Half

xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx ORIGI NAt

2nd Half

xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx ORIGI NAl

Note that the two halves of the sector are identified by
the phrases, "1st Half" and "2nd Half," respectively.
(Typewriter margins must be at least 70 spaces apart
to permit this format.)
Each group of ten characters is assigned a section
number by the routine. The first five groups are assigned numbers 01-05; the last five groups are assigned
numbers 06-10. After the sector data is typed out, the
routine requests the number of the section in which
the first change will be made.
The message typed out is shown below:
SECTION
The user now types in one 2-digit section number between 01 and 10. After depressing the Release
and Start key, the message
SECTION NUMBER ILLEGAL,
START TO RE-ENTER °DALTR
is typed if the section number is greater than 10. If
the section number is correct (between 01 and 10),
the selected section is typed out for verification as
shown below.
XXXXXXXXXX TYPE CHANGE
The changes can now be entered directly under
the typed section. If a particular character does not
Disk Utility Program

29

require changing, an "x" may be typed under that
character, or the character itself may be retyped.
Although only one section is typed out for anyone
selection, succeeding sections may be altered by continuing to type changes. Spacing is optional except
that the number of characters (including spaces) cannot exceed 100. Spaces (alpha blanks) will not become part of the sector data. For example, assume that
section 3 is selected and is typed out as shown below:

3574246798
The operator desires to make some changes in section
3 and section 4. For this example, the typewritten
page may look like this:

At this point the routine will again type the word
SECTION
If other changes must be made, the operator enters
a new (or possibly the same) section number and depresses the Release and Start key. The SECTION change
routine is now repeated. When all the changes prove
satisfactory, the operator enters a record mark instead
of a section number and depresses the Release and
Start key. The routine then writes the updated sector
back on the disk pack and types the message

DISK SECTOR DDDDDD CORRECTED
is the sector address that was selected to be
changed. The routine then branches to the part of
the routine that types the message "SECTOR" to allow
the user to choose another sector address and change
another sector.
When all desired sectors have been altered, this
routine is concluded by typing a record mark instead
of a sector address after the word SECTOR has been
typed out. This will cause control to be returned to
the 1620 Supervisor Program, which will read another
1620 Monitor II control statement.
DDDDDD

3574246798 TYPE CHANGE
XXX7625X82 75234XX479
Typing may be terminated as soon as the last digit
to be changed is typed; that is, if the fifth digit in
section 4 (previous example) is the last change, the
last five digits of section 4 do not have to be typed in.
If the user does not type changes but simply depresses the Release and Start key, the message
CORRECTIONS HAVE NOT BEEN ENTERED
is typed and the computer will halt on a read alphameric instruction to allow the user to enter the
changes.
If more digits are entered than the sector can contain, the message
TYPE-IN EXCEEDS SECTOR LENGTH, START
is typed. Depressing the Start key allows the operator
to begin again and enter a new sector address. Spaces
are optional and do not become part of the sector
data; however, they are counted toward the maximum
allowable number of characters which is 100.
After all changes have been made, the operator
depresses the Release and Start key. The routine then
types out the Original sector data along with the
changes that were typed in. The output appears as
shown below:

1st Half

1234567890 1234567890357424679886542132120987654321 ORIGINAL

1st Half

1234567890 1234567890 3577625782 7523413479 0987654321 CORRECTED

2nd Half 7265417623 0176421432 8543217290 5482797654 8243176521 ORIGINAL
2nd Half

30

7265417623 017642143285434172905482797654 8243176521 CORRECTED

Operating Notes

When the routine is ready to accept the new data
(after the section number is typed in), it positions
the console typewriter in the "alphameric shift" mode.
Therefore, typing numerical data requires the operator to manually shift into numerical mode.
Flagged digits 1-9 may be inserted by typing the
corresponding alphabetic letters J-R. Flagged zeros,
numeric blanks, flagged record marks, and flagged
group marks may be entered by using minus (-) key,
@ key, W key, and G key, respectively. Alpha blanks
( spaces) do not become a part of the sector data.

Disk-Io-Output Routine
The Disk-to-Output routine transfers data from selected portions of disk storage to cards, paper tape,
or the typewriter. This routine enables the user to
preserve original records before they are updated or
changed, thus providing an audit trail. The card or
paper tape output will be in numerical form and will
contain record marks and group marks. Numerical
blanks result in blank card columns.

This routine can be used to obtain any of the following items of output as directed by the user.
l. Program or data identified by name.
2. Program or data identified by DIM number.
3. Data between sector limits.
4. DIM table.
5. Equivalence table.
6. Availability list (extracted from Sequential Program table).
7. Sequential Program table.
The routine is executed whenever a DDUMP control
card is read by the Disk Utility Program or wherever
a FORTRAN compilation or sps assembly requires
punching into cards or paper tape.
The Disk-to-Output routine can be used to transmit any number of disk sectors to cards, paper tape,
or typewriter. Transmission will start with the first
sector specified in a DIM entry or with a beginning
sector specified by the user. Transmission will end
when the sector count in the DIM entry reaches zero
or when a specified ending sector is found. The output following compilation or assembly is terminated
by a "9's" trailer record. The trailer record format is
five 9's followed by a record mark, 69 zeros and a
sequence number. This record always follows all sps
and FORTRAN object programs. During execution of
the Disk-to-Output routine, resulting from DUP control
records, error messages 01, 04, 06 or 20 may be typed
(see ERROR DETECTION AND CORRECTION).
The control card used to transfer control to the
Disk-to-Output routine is punched in the following
format.

Control Card (DDU"AIP).
Columns

1
2-6
7-12

13-16

17

Asterisk (1<).
Code word, DDUMP.
Alphabetic name of program or data to be punched
or typed (same name that
a p pea r s in Equivalence
table) .
DIM entry number of programs to be punched or
typed. (If the letter M is
present in column 18, either
a name or DIM entry number must be present, but
both need not be present.)
Output device,
C == card
P == paper tape
T == typewriter

18

Identify output
I == Dis k Identification
Map (DIM).
E == Equivalence table
A == Avalability
entries
from the sequential program table from' the
disk module specified
by column 19 ( typed
output only).
S == E n t ire sequential
program table from the
disk module specified
by column 19.
M == Program identified
by columns 7-12 or 1316 of this card.
L == The sectors between
limits as specified by
columns 21-26 and 2732 of this card.

19

Module number (0, 1, 2, or
3) to be used if output
options S or A are exercised
(see column 18 above).

21-26

Beginning disk storage address of output (lower limit) .

27-32

Ending disk storage address
of output (upper limit).

Output Format
CARD

Each 300 positions of disk storage (three sectors)
will be punched into four successive cards; 75 columns
of disk data followed by a five-column sequence number in each card. When 2 sectors are to be outputted,
3 cards are punched. When 1 sector is outputted, 2
cards are punched. Therefore, all disk data is punched
from 1 or 2 sector outputs.
A special trailer card containing 9's in columns 1-5,
a record mark in column 6, zeros in columns 7-75, and
a sequence number in columns 76-80 will be punched
following the last output card. This record is used to
terminate loading when the output is reloaded by the
Load Programs routine or Replace Programs routine.
If the output deck is reloaded by the Load Programs
routine or Replace Programs routine, the trailer card
must remain behind the deck for control purposes.
DISK Utility Program

31

The 9's trailer record will load into the work cylinders
along with the balance of the data; however, the
trailer record will not require extra disk storage positions if the data is moved to another disk location.
If the output is a program to be reloaded by the
loader routine, the entire program must be outputted.
The System Output Loader routine requires an entire
program, with all of its indicator codes, in order to
operate.
When either the DIM table or Equivalence table is
punched out, they Will be in a loadable format; i.e.,
alphameric characters will be in 2-position alphameric coding form.

Sequential Program table by the Disk-to-Output
routine.
Equivalence Table. Equivalence tables are typed
in the following format with five entries per line.

NNNNNN 1111 NNNNNN ill I NNNNNN illl NNNNNN ill I NNNNNNili1

-

-

-

-

NNNNNN 1111 NNNNNN 1111 NNNNNN 1111 NNNNNN 1111 NNNNNN 1111

is the alphameric name.
is the DIM entry number. Available FORTRAN library
entries will appear as RRRRRR 9999 in place
of NNNNNN lIll.

NNNNNN
PAPER TAPE

IIII

This output will be in standard loadable format, i.e.,
it may be reloaded to disk storage by the Replace
Programs routine. The output will be identical to the
card format described above, except that the sequence
number will not be punched with paper tape records.
The last output sector will be followed by a trailer
reGord for control in the event that the output is reloaded into disk storage.
TYPEWRITER

With the exception of the Availability list and Equivalence table, all typewriter output will be in a standard
format. Each 100-character sector will be typed on
two lines as shown below.

11
100

I

,1
1001
I]

]00

I

Availability Lists. Availability lists are typed as
follows:
AAAAA
BBBBB CCCCC
BBBBB CCCCC
BBBBB CCCCC
is the disk pack identification number.
is the starting disk address of an unused area
of storage.
ccccc is the ending disk address for the unused area.
These entries, one per line, are extracted from the

AAAAA
BBBBB

32

Load Programs Routine
The Load Programs routine is used initially to load
SPS I1-D or FORTRAN II-D object programs from the
working cylinders or programs previously dumped
by the Disk-to-Output routine, from cards or paper
tape into disk storage. Overlap of occupied areas of
disk storage is prevented by the routine. Programs
cannot be loaded in the work cylinders with this
routine. Programs will be loaded into areas of disk
storage selected by the routine itself, if the user
does not specify a storage area preference. If the
routine selects the storage area, it will always store
the program on a Single cylinder, without overlapping
cylinders, unless it is longer than an entire cylinder.
If the user selects the storage area, it will be stored
in the selected area regardless of cylinder overlap
conditions.
This routine provides the following program loading options.
1. A name may be assigned to the program and
placed in the Equivalence table.
2. A DIM entry may be assigned to the program.
3. The disk storage location can be specified and
permanently assigned (fixed).
4. An entry address (execution address) can be
assigned in the DIM entry to the program.
5. Read-only Hags can be written in the sector addresses.
6. The disk storage location for the program can be
specified by cylinder ( s) without causing permanent assignment. Thus, several associated programs can be assigned to the same cylinder or
group of cylinders by the user without actually
specifying sector addresses.

7. Programs in either core-image or system output
formats can be loaded; and programs in system
output format can be converted to core image
while loading.
It is possible, by exercising option 3, to permanently
assign the sectors where the program is to be loaded
in disk storage. This capability is provided in this
routine only. When using this option, any programs
already in the specified load area, but not permanently
assigned, will be moved. The overlapped program
is moved to the area which immediately follows the
new program. If this in turn would result in additional
overlapping of other programs, the process of moving
programs continues until available space is found.
If any program, in this move, is a permanently
assigned program, or contains read-only flags in its
sector addresses, no programs are moved and the
new program will not be loaded.
A program is considered immovable if it is either
permanently assigned by the Load Program'S" routine
or if it contains read-only flags in any of its sector
addresses. Permanently assigned programs can be .
l. Deleted by the Delete Programs routine.
2. Copied by the Disk-to-Disk routine.
3. Changed by the Alter Sector routine.
4. Dumped into card or paper tape or printed on
the typewriter.
5. Read for any purpose with normal read commands.
However, a permanently assigned program will not
be moved in disk storage by the Disk Utility Program.
Programs being loaded can be "file protected" by
writing read-only flags over the disk addresses of the
storage sectors. All loading options are indicated by
the control card.
Control Card (DLOAD).
Asterisk (~)
Columns
1
Code word, (DLOAD).
2-6
7-12 Alphabetic name (left-justified) of program
to be load/"
ed into disk storage.
17-20 A DIM entry number to be
given the program to be
loaded. ( This number will
not be used by the routine
if it is already assigned to
another program.)
21-26 Beginning disk sector address in the work cylinders
that contains the program to
be permanently loaded. The
first digit of the sector address selected must be 1, 3,
,5, or 7.

27-32

33-38

39-43

44-48

49

50

51

Ending disk address in the
work cylinders that contains
the program to be permanently loaded. The first digit
of the sector address selected must be 1, 3, 5, or 7.
Assigned disk storage address of the program to be
loaded. (If this address is
included, the program will
be permanently assigned to
the given address.) The first
digit of the sector address
selected must be 1, 3, 5, or 7.
Core storage address for a
program that is placed in
disk storage in core-image
format. This address will be
placed in the CCCCC portion of the associated DIM
entry.
Entry address ( address of
the first instruction to be executed) for a program that
is being loaded. This address
is placed in the EEEEE portion of the associated DIM
entry. This address is used
for reading programs from
disk in core-image format
with the I/O routine.
Input device,
C == card
P == paper tape.
D == disk storage w 0 r k
cylinders.
Letter I, if program to be
loaded is in Core
Image format.
S, if program to be
loaded is in System Output format.
M, if program to be
loaded is in System Output format, and it is to be
converted to Core
Image format before loading t 0
disk storage.
Letter P, if read-only flags
are to be written over disk
addresses of storage sectors;
Disk Utility Program

33

52-54

55-57

60

otherwise leave blank.
Beginning cylinder (three
digits XYY, where X is the
module, 0, 1, 2, or 3, and YY
is the cylinder number 0099) to define lower limit
where program can be loaded.
Ending cylinder (three digits XYY, where X is the
module 0, 1, 2, or 3, and YY
is the cylinder number 0099) to define upper limit
where program can be loaded. (Note that both the
upper and lower limits will
be ignored by the routine
if columns 33-38 of this card
are punched.)
Any non-blank character, if
program to be loaded is a
FORTRAN or sps object program which requires subroutines.

13-16

17-20

21-26

27 -32

39-43

Replace Programs Routine
The Replace Programs routine is used to replace programs in disk storage with updated, changed, or new
programs. Programs can be loaded to a disk storage
area from cards, paper tape, or from another assigned
disk storage area. In addition to loading disk stored
programs, identified by DIM entries, programs can be
loaded from work cylinders.
A program can be given another name in the Equivalence table by reloading the program over its original
assigned disk area using a different name. The program can then be called by either name since both
names are maintained in the Equivalence table.
With this routine, it is possible to load a program
to itself adding read-only flags to the disk addresses.
A permanently assigned program in disk storage cannot be replaced by this routine. To replace a permanent program, (1) delete the program with the Delete
Programs routine and, (2) load the replacement pro. gram with the Load Programs routine.
The format of the control card for this routine follows. All fields are optional with the exception of
columns 1-6, 17-20, and 49.

Control Card (DREPL).
Columns

1
2- 6
7-12

34

Asterisk (~).
Code word, DREPL.
Alphabetic name of pro-

44-48

49

50

gram.
The DIM en try number
which identifies the program
to be loaded if the program
is from another assigned
disk storage area. (The program to be loaded will be
deleted from its original disk
storage location.)
The DIM entry number
which identifies the program
to be replaced.
Beginning disk sector address if the program to be
loaded is in the work cylinders. The first digit of the
sector address selected must
be 1, 3, 5, or 7.
Ending disk sector address
if the program to be loaded
is in the work cylinders. The
first digit of the sector address selected must be 1, 3,
5, or 7.
Core storage address for a
program that is to be placed
in disk storage in core-image
format. This address will be
placed in the CCCCC portion of the associated DIM
entry.
Entry address (address of
the first instruction to be
executed) for a program
that is being loaded. This
address is placed in the
EEEEE portion of the associated DIM entry.
Input device,
C == card.
P == paper tape.
D == disk storage.
Letter I, if program to be
loaded is in Core
Image format.
S, if the program to
be loaded is in
S y s t em Output
format.
M, if program to be
loaded is in System Output format, and it is to
be. converted to

core image format
before loading to
disk storage.
Letter P, if read-only flags
are to be written
on disk addresses
of storage sectors;
otherwise I e a v e
blank.
Any non-blank character, if
program to be loaded is a
FORTRAN or SPS object program which requires subroutines.

51

60

13-16 The DIM entry number which
identifies the program .to be
copied.
21-26 Beginning sector address of program or data to be copied.
27-32 Ending sector address of program or data to be copied.
(Note that the beginning and
ending sectors will always be
used if present.)
33-38 Beginning disk sector address
of the new copy. This address
must be that of work cylinders
or available disk storage. This
field must always be punched.
Letter P, if read-only flags are
to be written on disk sector addresses at the new location of
the program; otherwise leave
blank.
The sectors that are to contain the copy must not
have read-only flags in the sector address initially or
an error will be indicated and copying will be terminated.
After the data is successfully copied, the message
51

Disk-to Disk Routine
This routine can be used to copy data or programs in
disk storage to any available (unoccupied) disk storage area including the work cylinders. A program to
be copied should be specified by a DIM entry, an alphabetic name that is in the Equivalence table, or a
sector address given by the user. The program cannot
be copied into an area which is already identified by a
DIM entry number, except the work area (DIM entry
0001). Read-only flags may be written with the disk
sector addresses of the copy, except in work cylinders,.
at the option of the user. When this routine is used,
the DIM table and the original program remain unchanged. It is not possible to copy a program over a
portion of that same program. It is not possible to
copy a program into the work cylinders if that program exceeds the work cylinder limits. Data can be
copied from one portion of the work area to another;
however, no check will be made for overlapping of
data within the work area. If a program or data
to be copied is less than 100 sectors, there is no danger of overlap.
If any read-only flags are encountered in sector
addresses within the copy area, an I/O routine error
message is indicated. The program will be copied up
to the point of the error.
The options offered by this routine are identified
in the control card that follows.

Control Card (DCOPY).

Columns

1

Asterisk (0)

2-6

Code word,

DCOPY.

7-12 Alphabetic name of program to
be copied.

NNNNN SECTORS OF DATA
COPIED FROM xXxxxx TO

yYyyyy

is typed, where NNNNN specifies the number of
copied sectors and xxxxxx and yyyyyy are the beginning sector addresses of the From and To areas,
respectively. If the copied data is written with readonly flags, an additional message is typed.

AND FILE PROTECTED
To move a program or data from one disk area to
another, it should be: (1) copied to the working cylinders from the original area, (2) deleted from the
original area, and (3) loaded to the new area from
the working cylinders. This can be accomplished by
using the Disk-to-Disk, Delete Program..;;,. and Load
Programs routines, in that order. Therefore, a °DCOPV
control record is used to copy the program into working cylinders; a ODELET control record is used to
make the original storage "area available by deleting
its DIM entry and Equivalence table entry; and a
°DLOAD control record is used to load the program
to a specified sector address and to generate the
new DIM entry and Equivalence table entry.
Disk Utility Program

35

Delete Programs Routine

This routine can be used to delete a program and its
associated DIM entry, Sequential Program table entry,
and Equivalence table entry (if any) or entries
(where the program has more than one name) from
disk storage. When a program is deleted, read only
Bags will be~ removed and programs in successively
higher disk storage positions will not be moved up
to fill the vacated storage area.
The format of the control card follows.
Control Card (DELET).
Columns 1
Asterisk (~)
2-6 Code word, DELET.
7-12 Alphabetic name of program to
be deleted (same name that appears in Equivalence table).
13-16 DIM entry number of program
to be deleted. (Note that either
a Name or DIM entry number
must be present, but not both.)
Define Parameters Routine

This routine can be used to alter the assignment of work
cylinders, DIM table, Equivalence table, Sequential Program table, or certain system specifications in the System Communications Area for the Monitor System.
The DIM table may be lengthened or shortened, but may
not-be moved from cylinder 24. The Sequential Program
table may be shortened, but must remain on cylinder
99. The EqUivalence table may be lengthened or shortened. It will always immediately follow the DIM table,
even if the DIM table is altered in length. This routine
can also be used to indicate that more than one disk
storage drive is to be used with the 1620.
When the size of the DIM table is changed, the Equivalence table will be moved to immediately follow the
DIM table. When redefinition of an area (working cylinders, DIM table, or Sequential Program table) is attempted, the area must be available; i.e., it must not
be occupied by programs with assigned DIM entries. If
an area is unavailable, it will not be redefined and the
follOWing message will be typed.
DUP ~ ERROR 08
The normal assignment of disk storage for the above
mentioned tables is as follows.
Cylinder
Description
Assignment
Work Cylinder
00-23
DIM table
24
Equivalence table
25 (first eighty sectors)
Sequential Program table
99 ( second through
eighty-first sector)
36

To make any alterations to these assignments, or to
the system specifications, the user must enter a control
card containing the new parameters. Only the parameters to be changed need to be punched in the control card. The parameters from a control card are
processed from left to right by the routine. If any
parameter is invalid, those parameters to its right will
not be processed.
Control Card (DFINE).

Columns

1
Asterisk( ~ ).
2-6 Code word, DFINE.
7-12 Beginning disk sector address of
work cylinders (must be first address of a cylinder).
14-16 Number of cylinders to be reserved for work cylinders ( 11
minimum, 99 maximum).
18
Number of disk storage drives on
system (1-4).
20-22 Number of sectors to be reserved
for DIM table (35 minimum, 999
maximum).
24-26 Number of sectors to be reserved
for Equivalence table (9 minimum, 999 maximum).
28-30 Num ber of sectors reserved for
Sequential Program table (80 sectors maximum).
(Note that the same number of
sectors is reserved for each disk
storage drive on the system as
defined in column 18.)
37-38 Standard length of mantissa for
sps Boating-point subroutines (disk
sector positions 40-41 of the Communications Area; 08' when the
system is delivered). This value
may be any number between
02-45.
40-41 Standard sps subroutine set identification number (disk sector positions 42-43 of the Communications
Area; 02 when the system is delivered).
01 - Fixed length mantissa (08)
Boating-point subroutines for
machines equipped with Automatic Divide feature.
02 - Variable-length mantis·sa
floating-point subroutines
for machines equipped

with the Automatic Divide
feature.
03 - Variable-length mantissa
floating-point subroutines
for machines equipped
with the Automatic Floating-point feature.
43

Standard N (noise) digit (any
number 0-9) for sps subroutines (disk sector position 44 of
Communications Area; 0 when
the system is delivered).

45-46 Standard length of mantissa
(any number 02-28) for FORTRAN programs
( disk sector
positions 45-46 of Communications Area; 08 when the system
is delivered).
48-49 Standard
fixed-point
word
length (any number 04-10) for
FORTRAN programming system
(disk sector positions 47-48 of
Communication Area, 04 when
the system is delivered).
51

Source of Input, other than disk
input, for FORTRAN subprograms (disk sector position 73
of Communications Area; 5
when the system is delivered).
3=paper tape
5=card

53

Core storage capacity of object
machine (disk sector position
76 of Communications Area; 1
when the system is delivered).
1=20,000
3=40,000
5=60,000

57

Arithmetic and I/O
subroutine set identification
number (disk sector position
83 of Communications Area; 1
when the system is delivered).

FORTRAN

1 or 3 == disk storage version
for machines equipped
with the Automatic Floating-Point feature.
2 or 4 = core storage version
for machines equipped

with the Automatic Floating-Point feature.
The number of disk storage drives on the system
may be 1, 2, 3 or 4. The Supervisor Program and the
Disk Utility Program will need to know this number
in order to utilize all available disk storage. The system will utilize only the first disk storage drive unless
additional drive availability is specified by a DFINE
control card. Therefore, it may be necessary for the
user to process a DFINE control card immediately after
initially loading the Monitor System. When loading
programs and assigning addresses, the Monitor System
will start with the first available sector on the first
available disk drive and proceed sequentially higher
to available drives. Also, the user may want to change
some of the other parameters of the system before
any actual processing is initiated. If any errors are
found in any data on a DFINE control card, all data to
the left of the data in error will have been processed
and data to the right will be ignored. See ERROR DETECTION AND CORRECTION for a description of possible
DFINE errors.
When the routine is used to enlarge or shorten the
tables or to change the number of disk storage drives
for the system, the °DFINE record should be followed
by a =F =FPAUS record. After the routine is executed,
=F =FP AUS record will halt the computer to allow the
operator to reinitialize the System; i.e., to reload the
Monitor System into core storage. The procedure for
calling the System into core storage from disk storage
is deserted under OPERATION in the Monitor II System
Section.

Define Disk Pack Label Routine
This routine can be used to initialize a new disk pack
for the Monitor System by writing the disk pack identification number in the label sectors (first and last
sectors of cylinder 99) and the Sequential Program
table in cylinder 99. All disk packs 'Used by the Monitor System must be labeled and must contain a Sequential Program table. The disk pack identification
number is written in the first five positions of the first
sector in cylinder 99 and a read-only flag is written
over the corresponding sector address. The same
number is also written in the 31st through 35th positions of positions 1-100 of the last sector of the disk
pack. This sector address is changed to 00199 regardless of the addressing scheme used for the remainder
of the disk pack.
Note that it is necessary to initialize the disk pack
which contains the Monitor system because the sysDisk Utilitu Program

37

tern pack is not automatically initialized when the
system is loaded. Label sectors on a pack which contains the Monitor System may be changed by this
routine; however, the Sequential Program table will
not be re-initialized. The Monitor System disk pack is
identified by '04800 in the sector address portion
of DIM entry 3.
The format of the control card follows.
Control Card (DLABL)
Columns

Asterisk (0).
Code word, DLABL.
Disk pack indentification numder to be assigned.
12
Disk drive number (0, 1, 2, or
3) of the disk drive that contains the disk pack to be labeled.
Both a disk pack identification number and disk
drive number must be given. If either one is missing,
the message
1
2-6
7-11

DUP

0

ERROR 01

is typed and the computer halts without writing label
sectors. To correct the error, the operator may enter
a corrected control card in the stacked input. Depressing the Start key will return control to the Monitor
Control Record Analyzer routine to read the next
Monitor Control record in the stacked input.
Only numerical characters may be entered for the
disk pack identification number. If this number is all
zeros or any position contains a letter or special character, the message
DUP

0

ERROR 10

is typed and the computer halts without writing a
label sector. The restart procedure is the same as
that given above for ERROR 01.

Control Card (DFLIB).
Columns

1
2-6
7-12
14-15

Asterisk (0).
Code word, DFLm.
Name of library subroutine,
left-justified.
DIM number. This number was
odginally specified by the user
when the subroutine was added
to the system disk pack. The
abbreviated 2-digit DIM numbers for the sixteen standard
library subroutines may be
found)n the FORTRAN II-D Library Subroutines table in the
FORTRAN section.

When a name is entered in the Equivalence table,
the message
FORTRAN LIB NAME ENTERED NNNNNNIIII
is typed, where NNNNNN is the name specified in columns 7-12 and rUI is the DIM number specified in
columns 14-15 (preceded by two zeros).
Both a Name and DIM entry number must be given.
If either is omitted, error message 01 will be typed.
Error message 10 will be typed for any of the following conditions.
1. The Name is all numbers, its first character is not
alphabetical, or it contains special characters, including nonterminating blanks.
2. Columns 7-15 contain a record mark or group
mark in any position or column 13 is not blank.
3. The DIM number is outside the range 10-39 or it
contains letters or special characters.
Error message 54 will be typed if no space is
available for the Name within the first 50 entries of the
Equivalence table. Also, the Name itself will be typed.
Error message 51 will be typed if the name is a
duplicate of another name in the Equivalence table.
If operator action is required for any of the above
messages, refer to ERROR DETECTION AND CORRECTION.

Define FORTRAN Library Subroutine Name

Error Detection and Correction

This routine permits the user to assign additional
names (synonyms) for the FORTRAN library subroutines or to assign names to user-written library subroutines. Any user-written library subroutine with more
than one entry will require this routine in order to
place the name of the additional entries in the Equivalence table. These names are added to the Equivalence table within the first 50 entries of the system
disk pack.

In addition to the messages described with the individual Disk Utility routines, other numbered error
messages may be typed. These messages, described
here, may be common to more than one Disk Utility
Program as well as FORTRAN or SPS output operations
that follow compilation or assembly. Table 1 indicates,
by message number, the error messages that may be
generated by each routine. A list of the error messages and their cause, and a list of operator actions
for the associated messages follow.

The control card format follows.
38

Error Messages
DUP
DUP

DUP

DUP

DUP

0

0

0

0

0

ERROR 01
ERROR 02

ERROR 03

ERROR 04

ERROR 05

DUP

0

ERROR 06

DUP

0

ERROR 07

Table 1.

Cause
Field missing from control
card.
"TO"
DIM
entry number
specified in DREPL control
card is not in use in DIM
table.
"TO" DIM entry number,
specified in a DREPL control card refers to permanently assigned program.
~~FROM" DIM entry number
specified i n a DDUMP,
DBEPL,
or DCOPY control
card is not in use in the DIM
table
W 0 r k cylinders illegally
specified for program storage by DLOAD or DREPL
control card entry.
DIM entry number specified
in a DDUMP, DLOAD, DREPL,
DCOPY, or DELET control card
is out of range of DIM table
entry capacity.
"FROM" DIM entry number
in a DBEPL control card re-

DUP

DUP
DUP

ERROR 08

0

0

ERROR 09
ERROR 10

DUP

0

ERROR 11

DUP

0

ERROR 12

DUP

0

ERROR 13

DUP

0

ERROR 14

DUP

0

ERROR 15

0

fers to an immovable program.
Insufficient available storage
space at location specified
by a DLOAD, DREPL, DCOPY,
DFINE control card.
DIM table is full.
Field in DFLIB, DCOPY or
DLABL control car d contains invalid data.
Number of modules specified . in DFINE control card
is greater than 4, or less
than 1.
Beginning disk sector address of work cylinder, in
DFINE control card, is not
first address in cylinder.
Insufficient available storage for specified work cylinder (DFINE control card).
Number of sectors specified
by DFINE control card for
Sequential Program table
exceeds 80 seCtors.
Sector address is non-numerical in a DWRAD, DDUMP, DLOAD,
DREPL, DCOPY, or DELET control record.

Numbered Error Messages Generated by Disk Utility Routines
ERROR MESSAGE NUMBER
ROUTINE

Write Addresses (DWRAD)

1 2 3 4 5 6 7 8 9 10 1112 1314 1516 7 18 1920 21 24 5152 5..: 154 55 56 57~8 59 60 61
X

X

X

Alter Sector (DALTR)

X

X

Load Programs (DLOAD)

X

Replace Programs (DREPL)

X X X XX X X X

Disk-to-Disk (DeOPY)

X

De Iete Programs (0 ELE T)

X

Define Parameters (DFINE)

X

Define Disk Pock Lobel (DlABL)

X

X

Define FORTRAN Library Subroutine
Nome (DFLlB)

X

X

FORTRAN or SPS Output

X

X

Disk-to-Output (DDUMP)

X X

X

X

X X

X

X

X
X X X X

X

X

X

X

X

X

X

X

X X X X XX

X X X

X

.x

X X

X

X X X

X

X

X

X X

X

X X X X X X

Disk Utility Program

39

DUP

0

ERROR 16

DUP

0

ERROR 17

DUP

0

ERROR 18

DUP

0

ERROR 19

DUP

0

ERROR 20

DUP

0

ERROR 21

DUP

0

ERROR 24

DUP

0

ERROR 51

DUP

0

ERROR 52

DUP 0 ERROR 53
AAAAAA

40

Storage location specified by
a DCOPY con t r 0 I car d
would cause program storage to overlap work cylinders if allowed.
Starting sector address is
greater than ending address
for DWRAD, DLOAD, DREPL" or
DCOPY control card.
Sequential Program table is
defined as less than required
by the present contents of
that table (DFINE control
card).
Core storage address of a
program to be placed in
disk storage in core image
format is less than 02302. A
blank address will be treated as 02402. If the program
is a Library function ( DIM
enbies between 10 and
130), the message will not
be indicated.
Name specified by DDUMP,
DCOPY, or DELET control card
is not used in Equivalence
table.
DIM number specified by
DELET control card is not in
use.
Cylinder limits specified in
°DLOAD control card are
greater than allowed by System parameters.
Name specified is a DLOAD,
DREPL, or DFLm control card
or a FORTRAN or sps control
card has been rejected because a duplication name
exists in the Equivalence
table.
"TO" DIM entry number specified in DLOAD control card
is in use in DIM table (The
routine will load the program and assign the DIM
entry. )
Narne specified in a DLOAD
or DREPL control card or a
FORTRAN or sps control card
has been rejected because
the Equivalence table (with
the exception of the first 50
entries) is full. AAAAAA is

DUP 0 ERROR 54
AAAAAA

DUP 0 ERROR 55
CARD SEQUENCE
NNNNN

DUP

0

ERROR 56

DUP

0

ERROR 57

DUP

0

ERROR 58

DUP

0

ERROR 59

DUP

0

ERROR 60

DUP

0

ERROR 61

the rejected name.
Name specified in a DLOAD,
DREPL, or a DFLIB control
cord or a FORTRAN or SPS
control card has been rejected because the first 50 entries of the Equivalence
table are full. AAAAAA is
the rejected name.
Sequence error has been
found while reading a program to be loaded to disk
storage. NNNNN is the sequence number of the card
that is out of sequence.
Only cards with an eleven
punch over the leftmost position of the sequence number (column 76) are sequence checked; therefore,
patch cards are excluded
from the check.
DIM number supplied in
FORTRAN or SPS control card
is in use in DIM table, and
Name specified in the same
card has a different DIM
number in the Equivalence
table.
DIM number supplied in
FORTRAN or sps control card
is in use in DIM table, and
Narne specified in the same
card has no matching name
in the Equivalence table.
<<,D,

, T£H.P.3
7.£ I1.P3.
1 0 0,
I.B,
AS / #.£.-,3.,4
,
,
1 1 0 ODD,VN. A
A C C(}N, , "
" " , . " , ,I •T,Eo 11, p,J, , , , , ' , , ,
, rE/tf.P3
1 2 0
A
XSVSN.
,HI N,ES
130
C
XSUE,N.
1 ~ 0
IB,I(,H !A.S / No£.- 3* L

lo

5S

, TEH.P J - 4

r F.

0

3S

30

I HI.71 AL I ZA.TI ON. FON.

106.0

o

Operands & Remarks

Operation
11 12

t

,

•

.

SPS Statements in Modified "Fixed" Form

the Q operand represents the actual data to be used
by the instruction. It may be absolute or symbolic as
previously defined. High-order zeros of absolute data
may be eliminated.
During assembly) the processor automatically places
a flag over position Q7 of an immediate instruction
unless a flag indicator operand indicates otherwise.
For example, the statement

Mask Digit Operand

A mask digit operand is required to specify the mask
digit for the Branch on Mask and Branch on Bit instructions. The D in the follOwing examples shows
the position of the mask operand in the source statement.
Operands & Remarks

£.NT
Operands & Remarks

TOrI! 1.., 1002,3

which assembles to:

91 PPPPP DQQQQ
Operands & Remarks

causes the number 10023 to be subtracted from the
field called TOTAL because the flag that terminates
the field to be subtracted is automatically placed
over position Q7' However, the statement

Operands & Rema rlcs
20

75

JI)

so

TO TA L • 10023,10

will cause only the number 23 to be subtracted from
the field called TOTAL because the Hag indicator operand directs that the field-terminating Hag be placed
over position QlO rather than Q7' There is one exception to this rule: a transmit digit immediate instruction (TDM, code 15) does not require a flag; therefore)
none is automatically set by the processor.
48

35

which assembles to: 90 PPPPP DQQQQ
The mask operand may be symbolic or absolute.
The P, Q, and Hag operands are processed in the same
manner as for other instructions. If the mask operand
is an absolute value, the units character replaces the
Q7 character of the Q ?perand. For example:
Given:

Line
3

label
5.

•. , o.i
0.2

8,

Operands & Remarks

Operation
1112

151'

20

1)5

,/234.5

DS

, ,",34.5.'

75

JI)

35

.0

.5

SO

Then:

Symbolic Address

will assemble to: 91 12345 13456
If the mask operand is a symbol, the units position
of the symbolic address will be inserted in the Q7
position of the assembled instruction. For example:
Given:
line

Label

o

B
oMK.D

Operands & Remarks

Operation
111'2

1516

DS.

,12345

D$

,234.5'.
,5

D,5

A symbolic address is the name assigned by the programmer to the location of an instruction or a piece
of data. A symbolic address is valid only if it is defined (given an actual numerical value) by a declarative statement somewhere in the source program, or if
it is used as the label of an instruction. Symbolic addresses may contain from one to six characters
(letters, digits, or special characters) with the following restrictions:
1. At least one character must be nonnumerical.
2. The only permissible special characters are:
equal sign (=), slash symbol (/), "at" sign (@),
and period (.).
Blanks are permitted within a symbol; however,
they are ignored by the processor during assembly.
The example shown below contains both an actual
address and a symbolic address.

Then:

Operands & Remark.
2S

,12251
18MK,

IA,',B,'M~D,

"",

""

!,

I

I"

I!

!

!,

!

II!

,

will assemble to: 91 12345 53456

In this example, the data in the field whose actual
address is 12251 is added to a field whose address is
the symbolic name TOTAL.

Types of Addresses Used as Operands

Asterisk Address

Operands assembled by the processor may be of
three types: actual, symbolic, and asterisk. The individual applications for a particular type of address
are described in the section PROGRAMMING THE
1620/1710 USING SPS II-D.

When the asterisk is used as the first character of an
operand in an imperative operation, it is interpreted
by the processor to be the address of the high-order
(leftmost) position of the instructiQn. For example,
the statement

Actual Address

Operand. & Rema""

An actual address consists of five digits (00000-19999)
for a standard capacity machine and is, as the nalne
implies, the actual core storage address of a piece of
data or an instruction. High-order zeros of an actual
address may be eliminated. For example, the statement

Operands & Remarks
20

2S

368*".J2251

causes the data in storage location 12251 to be added
to the data in storage location 03684.

'0

so

indicates to the processor that the Q portion of the
instruction should contain the address of the instruction. This instruction is assembled as 44 01234 01876,
where START equals 1234 and the address assigned to
the instruction is 1876. Thus, when executed in the
object program, this instruction examines its own
leftmost position (1876) for a Hag and either branches
to the instruction at location 01234 or continues, on
the basis of the examination, to the next instruction
located at 01888.
When an asterisk (0) address is used with either
declarative or control operations, it refers to the
SPS II-D

49

rightmost position of storage last assigned by the
location assignment counter of the processor - not to
the leftmost character of the instruction. For example,
the statements
Line
3

Label
S,

10.10
0,7.

~atior

Operand. & Remark.

1516

2S

20

TFM,1204-.5,70000
DC
1 .• .lfil,.

produce the instruction

traction required to calculate the adjusted address.
Intermediate results that are greater than ten digits
or a final result (adjusted address) that is over five
digits, cannot be calculated by the processor.
The following rules apply for address adjustment
division operations.
1. The result of an address division operation is the
whole number quotient. Any remainder is lost.
2. Division by zero gives the same result as division
by one.
3. The order of multiplications and divisions may
affect the result. For example:

°

16 12045 7000=1=
Since record marks can be defined only in declaraoperations, an imperative statement should be
followed by a DC statement when a record mark is
required in the instruction. The rightmost position
of the instruction is the rightmost position of storage
last assigned; therefore, it is also the position where
the =1= (constant) is stored.

1/2°2 == (1/2)°2 == (0)°2 ==
2°1/2 == (2°1)/2 == (2)/2 == 1
2/1°2 == (2/1)°2 == (2)°2 == 4

tiv~

Address Adiustment of Operands

Address adjustment is used to tell the processor to
arithmetically adjust the addresses in operands. It is
permitted with all types of addresses: actual, symbolic, and asterisk, and is used to refer to a location that
is a given number of positions away from a specific
address. Use of this feature of the language reduces
the number of symbols necessary for a source program.
By writing a
(plus sign) for addition, - (minus
sign) for subtraction, / (slash) for division, and °
( asterisk) for multiplication, immediately after the
first or subsequent term of an operand (an asterisk as
a term of an operand does not represent multiplication
but means the address of the instruction, as previously
explained), the programmer indicates to the processor
that the address is to be adjusted.
Arithmetically adjusted operands may take the form

+

/

/

Lobel

Operation

IlR/THM£lIC

1000+40
1000 + {2WJ

1000 - 30

where the terms A, B, C, and D may be numerical
quantities. The number of terms in the operand is
limited only by the size of the operand and remarks
field. Thus the operand A
B ° C - D may be further adjusted by writing after the last term another
term, E,. for example, A
B ° C - D
E.
In arithmetically adjusted operands, the operation
or operations of multiplication and division are always
performed first, followed by the addition and sub50

EXAMPLES

line

/

°
°
°
A±B±C+D

+
+

For the 1620 or 1710 with standard storage capacity (20,000 storage positions), addresses that exceed
19999 are considered errors; however, they will not
be detected as such. Therefore it is possible, with a
standard capacity machine, to assemble an object
program for a machine with 40~000 or 60,000 positions
of storage. For machines that have 40,000 or 60,000
positions of core storage, the processor is automatically modified to use the additional storage to enlarge
the size of the symbol table. In that case, addresses
that do not exceed 39999 or 59999, depending upon
the storage capacity~ are considered valid addresses.
In using address adjustment, the programmer
should be careful that insertions or deletions do not
affect the adjusted address. For example, if a P operand in a branch (B) instruction refers to an address
as ° +48 (i.e., branch to the instruction that follows the next three sequentially higher instructions),
the programmer must ensure that no new instructions
are introduced within the three instructions to make
the ° +48 incorrect. In this example, the asterisk (0)
is the leftmost position of the 'instruction itself.

1000 + (2X4)
1000 X.3
1000 X 4
500+(;~0 X:3)-11

(foo X5)+(20 X3)-//
2000+12
(ZOOOX3)X2

+

The operands shown will produce the adjusted addresses, as indicated, provided the location 1000 has
b~en assigned to the symbolic address ALPHA, the 10-

cation 4 has been assigned the symbolic address L,
and the instruction location (0) is equivalent to 2000.

whereas the statements

line
3

Operand Modification with Index Registers

line

Label
56

~eration
1112

20

2S

30

10 ,

A

ADV'R- 5(.3), S VBTU')

0

A

ADD~-5(A3),SUB'R(A')

35

'0

"

Operands

IE:

o,oNEXT

& Remarks

20

13668

TFM 12.0IJ.fi,70000

are stored as

Operands & Remarks

1516

pperation
1112

0.'0

Any operand that can be indirectly addressed may be
modified with an index register. The index register
is specified by placing the number of the index register in parentheses as shown in the following examples.

3

label
56

50

Either of the preceding examples which will be assembled as

21 XXXXX XXXXX
The number in parentheses must be an integer from
The processor decodes the number and places
the proper flags over the operands. In the second
example, the A in the index register portion of the
P operand is ignored by the processor, however, it
may be included by the programmer as an aid in
keeping track of the IX band currently selected. The
processor decodes the rightmost numerical character
within the parentheses as the index register number.
(See the note under CALL LINK or CALL LOAD LINKAGES
in the Supervisor section.)

o to 7.

491366800000161204570000
because the unused Q address is not eliminated. In
the first example, only four positions of storage are
saved; however, a considerable amount of storage
can be saved in a program that contains many instructions where the Q or both t.he Q and P portions of
instructions are unused. Because the ~ in the DORG
statements (see PROCESSOR CONTROL OPERATIONS) refers to the rightmost position of storage last assigned
(Qll of the B instruction), 0 -3 is the address where
the next instruction starts.
To automatically eliminate the unused storage assigned to Branch or Branch Back instructions; the
following two imperative mnemonics are included in
the SPS II-D language:
Meaning
Branch and adjust location
assignment counter
Branch Back and adjust location assignment counter

Mnemonics

B7
BB2

Branch Operands

In some instructions such as Branch and Branch Back,
the Q address is not used, although a zero (00000)
address is generated. Thus the instruction uses twelve
storage positions. By using an 0 address in the following statements,

line

Label

10' 0

B

Line

Label

Operands & Remarks

pperotion
1516

20

Operands & Remarks

joperatior
1\12

These mnemonics are written left-justified in the
operation field of the statements as shown in the
following example.

1516

20

1366,8,

The first statement is equivalent to the following
symbolic instructions:
the instructions are condensed, to eliminate four positions of the unused (zero) Q address, and are stored
as

49136680161204570000

B

ADDR

DORG

o

-4

where ADDR is the address used by the branch instruction (B). The second statement is equivalent to the
SPS II-D

51

following symbolic instructions:

BB
DORC

~

-9

For all imperative statements, except B7 and BB2,
the address assignment counter is incremented by 12.
For B7 and BB2 statements, the address assignment
counter is incremented by 7 and 2, respectively. A
label may be included with a B7 or BB2 statement.

Inserting Flags

By placing a minus sign in front of the first term of
an operand, a Hag ( minus sign) can be inserted
over the units position of the adjusted address. This
feature of address adjustment can be used for inserting Hags required for Indirect Addressing ( special
feature). However, an operand written as -0 (minus
zero) does not insert the Hag in the units position over
the zero. When the minus sign is written in front of
the first term of the operand in order to set a Hag
over the units position, other signs following the first
term should be reversed so that the correct address
is obtained.

Programming the 1620/1710
Using SPS 11-0

areas are automatically assigned core storage locations
in the order in which they appear in the source
statements.
To assign addresses for instructions, constants, etc.,
the processor uses an address assignment counter.
This counter is adjusted for each assignment made by
the processor. If an address is assigned by the programmer, the counter is not adjusted.
The declarative statements provide the object program with the input/output areas, work areas, and
constants it requires to accomplish its assigned task.
These statements do not produce instructions that are
executed in the object program. The entries, DS, DSS,
DAS, and DSB assign storage. The entries, DC, DSC, DVLC,
DAC, DSAC, DSA, DNB, DDA, DGM, and DMES usually assign
storage) and also produce, in the object program, both
the machine address of the area assigned and the constants that are to be stored in this area. Constants
are then loaded with the object program.
Declarative statements may be entered at any point
in the source program. However, these statements
are normally placed by themselves, preferably at the
beginning or end of the program - not within the
instruction area. If not placed at the beginning or end,
the programmer is required to branch around an area
assigned to data so the program will not attempt to
execute what is in a data area as an instruction.
The declarative mnemonic operation codes and
their meanings follow:
Code
DS
DSS
DAS
DC
DSC
DVLC

This section describes in detail the various steps to be
followed in writing a program for the 1620 or 1710
using SPS II-D. The material has been divided into
three categories: Declarative Operations, Imperative
Operations, and Processor Control Operations. The
imperative operations that apply to the 1710 only are
listed in Table 22 in the Appendix.

DAC
DSAC
DSA
DSB
DNB
DDA
DGM
DMES

DOT

Meaning
Define Symbol (N umerical )
Define Special Symbol (Numerical)
Define Alphameric Symbol
Define Constant (Numerical)
Define Special Constant (Numerical)
Define Variable Length Constant
Define Alphameric Constant
Define Special Alphameric Constant
Define Symbolic Address
Define Symbolic Block
Define Numerical Blank
Define Disk Address
Define Croup Mark
Define Message (1710 Only)
Define Octal Table

Declarative Operations
In programming the 1620 or 1710, all records, and any
other data that is to be processed by the program,
must be assigned storage areas. Normally, all records
and data to be processed consist of fields of known
length and arrangement. Unless otherwise specified,
52

os -

Define Symbol {Numerical}

A DS statement may be used to define symbols used
in the source program (i.e., to assign storage addresses or values to symbolic addresses or labels) and' to
assign storage for input, output, or working areas.

A DS statement does not cause any data to be loaded
with the object program.
The length of the field is defined by the first operand. This operand must be positive and may be an
absolute value or a symbolic name. If a symbolic
name is used, the symbol must previously have been
defined as an absolute value, that is, it must have
appeared in the label field in a statement of the
source program preceding the one in which it is
used. Address adjustment may be used with this
operand.
The address in core storage of the field being defined may be assigned by the programmer or the
programmer may let the processor assign the address.
If the processor assigns the address, the statement
is terminated after the first operand. If the programmer assigns the address, a second operand, which
may be symbolic, asterisk, or actual, is used to establish the address of the field. Since data fields are
addressed at their rightmost (low-order) digit, the
processor assigns this position as the address of the
field. Address adjustment may be used with the second operand. If the second operand is symbolic, it
also must previously have been defined. Addresses
assigned by the programmer do not disrupt the sequence of addresses assigned by the processor.
A DS statement may also be used to define a symboL
without assigning any storage, ie., to define it as an
absolute value. In this case, the fir~t operand is omitted (Qt' written as 0) and the second operand
represents the value (may not exceed five digits in
length). The second operand may be an actual value
or a previously defined symbol. To define storage
which will not be referred to symbolically, the label
of the DS statement may be omitted.

following statements. cause the processor to associate
the address 12930 with the label SUM:
Line
J

Label
5 ,

~.(/H

Ib.S

0,2,0

$,11,.,

Po$.

50

In the next example, the programmer assigns the
address of the field and excludes the field length (the
first operand) from the statement because it is without significance, and replaces it with a comma. The

1 ••

20

25

30

35

<0

50

'5

1293.0

11,J.2,9.3.0 ,,"'Wo. COJII.Itf.AS A G.A./ N. R.E.o.IIIIU,D

Again, in this example, two commas are required
when remarks form part of the statement.
The following statement, which is similar to the
one previously given, is assigned a value that is other
than an address.

Operandi & Remarks

(l1N.T $,r.tlT:S

This statement defines the symbol FL as being equivalent to the value 17. Subsequent uses of this symbol are
permitted because the symbol has been defined.

DSS Operand. & R.mark.

,/I,EJf.A~,K,S,

Operand. & R.mark.

\5\

It should be noted that an area defined by the
processor for a DS statement is always addressed at
the rightmost position. However, to use this area for
input/output, the leftmost digit must be addressed.
This is done by using a pss statement in place of a
DS statement or by address adjustment with a DS
statement, which subtracts a number that is one less
than the length of the area from the address of the
area. In a previous example, where DELTAX was defined as having a field length of 7, the operand of
another instruction to read numerical data into the
DELTAX field should be written as DELTAX -6.

The follOWing statements define the field length
only. When remarks are added to the statement, the
field length must be followed by two commas.

, ,F,O.!?,

p...ration
1112

0\.0

!

Define Special Symbol (Numerical)

The DSS statement is similar to the DS statement with
one exception: when the second operand is omitted,
the processor assigns the leftmost position as the address of the field. If the second operand is assigned
by the programmer, this address is assumed to be
equivalent to the leftmost position of the field. A
DSS statement is normally used to define a storage area
for input/output. The data in such an area may be
moved during execution of the object program by a
Transmit Record instruction which requires that an
address assigned to an area must be that of the leftmost position.
SPS Il-D

53

!

DAS -

Define Alphameric Symbol

The DAS statement is similar to the
two exceptions:

DS

statement with

1. The length specified by the first operand is automatically doubled by the processor to allow for
alphameric data. Each alphameric character requires two storage positions.
2. The address of the field, if generated by the processor, is the leftmost position of the field plus
one. The position is always odd-numbered, as it
must be with any alphameric field.
The following example illustrates a DAS statement.
label

line
3

5 6

~OliOf
II 12

IS 16

10 •. 0

T/ T.-L.E IbAS

13.0

10 2 0

T./ T.L E. DA.S

13. 0..

20

25

3peration
1112

A record mark may be used in a constant but must
be in the units position and must be written as the
character @. The following example contains statements that;
1. Store a record mark by itself as a constant.
2. Store a constant 6 and record mark.
3. Store a mi.nus 0773 and record mark.
label

Line
3

5 6

Operands & Remarks

p"erotion.
llll

1516

20

3 location 00099, regardless of where the
rightmost dividend digit is placed by the Al address.
A Hag bit automatically marks the high-order digit
of the dividend.
The divisor (B address) is successively subtracted
from the dividend. The Bl address of the divide macroinstruction positions the divisor for the first subtraction from the high-order position ( s) of the dividend,
as in manual division. The Bl address is determined
by subtracting the number of digits in the quotient
from 100.
The quotient and remainder replace the dividend
in the product area. The address of the quotient is
00099 minus the length of the divisor. The algebraic
sign of the quotient (determined by the· signs of the
dividend and divisor) is automatically placed in the
low-order position of the quotient. The address of the
SPS II-V

73

remainder is 00099; a flag bit is automatically placed
in the high-order position of the remainder. The remainder has the sign of the dividend and the same
number of digits as the divisor.
The high/positive indicator is on if the quotient is
positive and not zero; the equal/zero indicator is on
if the quotient is zero. Neither indicator is on if the
quotient is negative.

in effect, restricts the size of the dividend to
10,020 digits if only 20,000 positions of core storage are installed.

Floating Shift Right

Macro-instruction
Operands & Remarks

The quotient must be at least two digits in length.
This is the minimum field length that the 1620 will
accept.
EXAMPLES
1. The macro-instruction
DIV A, B, 99, 96
will perform the division for (273) 3972 and
store the result 0014 in storage locations 00092
through 00095.

The effect of this macro-instruction is to shrink the
mantissa by shifting it to the right and truncating the
low-order digits. The A address is normally the units
position of the mantissa.
MMMMMMMMEE

t

2. The macro-instruction

units position of mantissa

DIV A, B, 96, 93
will perform the division for 0273 ) 3972.000 and
store the result 0014.549 in storage locations
00089 through 00095.
NOTE: In examples 1 and 2, A represents the address
of the dividend 3972, and B represents the address of
the divisor 0273.

Incorrect Positioning of Divisor. The following
error conditions are caused by an incorrect B1
address.
1. An incorrectly positioned divisor can cause more
than nine successful subtractions and an incorrect quotient. The divide operation is terminated,
the Overflow indicator and Overflow Arithmetic
Check light are turned on, but processing will
not stop unless the Overflow Check switch is
set to STOP. A divide by zero (K/O) causes the
same error conditions just described.
2. The high-order digit of the dividend is assumed
by the 1620 to be one position to the left of the
high-order digit of the divisor. The high-order
digits of the dividend are lost if the divisor is
positioned too far to the right. Processing continues with no indication of an incorrect quotient.
3. If the B address is less than 10000, i.e., between
00100 and 00999, the divide operations will terminate when a subtraction occurs at OXX99. This,

74

The B address specifies the digit of the mantissa
which will become the low-order digit of the mantissa.
Operation. The field at the B address (the portion
of the mantissa to be retained) is shifted right to the
location specified by the A address. The exponent is
not moved or altered. For example, the macro-instruction
FSRS

00097,00093

causes the mantissa
30590011325701

tt

Storage
Address

Storage
Address

00093

00097

to be shifted, producing the following result
00003059001101

Storage
Address
00093

tt

Storage
Address

00097

Vacated high-order positions are set to zeros, an existing flag at the A address is retained for algebraic sign,
and the field flag bit is transmitted with the highorder digit of the B field.

Floating Shift Left

Macro-instruction
--_._--Operands

& Remarks

The effect of this macro-instruction is to expand the
mantissa by shifting it to the left and filling the vacated positions with zeros. It is important to note that
the B address is the low-order position of the field
moved, and the A address is the high-order position
of the resultant field.
Operation. The field at the B address, which is the
low-order digit of the mantissa, is shifted left so that
the high-order digit is moved to the location specified
by the A address. The exponent is not moved or altered. For example, the macro-instruction:
FSLS

00090,00097

causes the mantissa
0011325701

t

t

Storage
Address

Storage
Address

00090

00097

to be shifted, producing the following result
1132570001

t

t

Operation. The field at the B address is transmitted
to the location specified by the A address. The B field
remains unchanged in storage. Flag bits in the three
low-order positions of the B field are also transmitted.
Starting with the fourth low-order position, only one
additional flag bit is transmitted, and it stops transmission.
Branch and Transmit Floating

:Macro-instruction

The B address is normally the low-order position of
the floating-point field exponent, whereas the A address is the leftmost position of the next instruction to
be executed.
Operation. The address of the instruction following
the macro-instruction is saved at a storage location
in the BTFS subroutine, and the field at the B address
is transmitted to the A address minus one. The normal
exit of a routine which is entered by a BTFS is a Branch
Back (BB) instruction. The instruction at the A address is the next one executed. The B field remains
unchanged in core storage. Any flag bits in the three
low-order positions of the B field are transmitted.
Starting with the fourth low-order position, only one
additional flag is transmitted, and it stops transmission.

Storage
Address

Storage
Address

Floating Square Root

00090

00097

Macro-instruction

An existing flag bit at the Q address is retained for
algebraic sign; the field flag bit is transmitted with
the high-order digit of the Q field.

Operands & Remarks

Transmit Floating

Macro-instruction

The Baddress refers to the low-order digit of the
floating-point field exponent, whereas the A address
refers to the low-order position to which the field is
transmitted.

The A and B addresses refer to the units position of
the exponents of the fields.
Operation. The square root of argument B is extracted and the result, in floating point form, is stored
at A. The argument, which must be in floating-point
form, is unchanged by the operation.
The floating-point square root subroutine accepts all
numbers within the floating-point range that are
greater than or equal to zero. If the argument is less
than zero, a 0 is placed in location 00401 and A is· set
equal to SQR jAj.
SPS II-D

75

Floating Sine

Macro-instruction
Operand. & Remarks
20

25

30

35

<5

50

The A and B addresses refer to the units position of
the exponents of the fields.
Operation. The sine of argument B is computed and
the result, in floating-point form, is stored at A. The
argument must be in radians and in floating-point
form. The computation does not disturb the original
value of the argument.
The floating-point sine subroutine accepts all numbers of floating-point range up to and including exponent 08 (fixed length mantissa) or L ( variable
length mantissa).
For arguments with exponents less than 03, the
magnitude of the maximum truncation error in the
mantissa of the result does not exceed 10-L. Accuracy
in the mantissa of the result decreases as the size of
the argument (exponent of 03 or greater) increases.
For error codes, see Table 5.
Floating Cosine

Operation. The floating-point value of the arctangent of B is computed and the result is stored at A.
The argument must be in floating-point form; the result in radians will also be in floating-point form.
The arctangent subroutine accepts any number
within the floating-point range. During the evaluation of the arctangent of B, use will be made of the
divide subroutine.
The maximum truncation error in the mantissa of
the result is ± 10-L , except for results having an exponent less than or equal to 02 (E L 02). The maximum error for these results is ± 1 in the (L+ 1 ) th
decimal place. L == 08 for the fixed length mantissa.
Floating Exponential (Natural)

Macro-instruction
Operand. & Remark.
20

30

35

<5

50

Operation. The A and B addresses refer to the units
position of the exponents of the fields. The value of
the e B , where B is in floating-point form, is computed
and the result, also in floating-point form, is stored
at A. An input value that exceeds

Macro-instruction
227.955924206n ...... n(227955924206n ...... n(3)
Operand. & Remark.
20

25

30

35

<5

causes an exponent overflow, and one which is less
than

50

The A and B addresses refer to the units position of
the exponents of the fields.
Operation. The cosine of argument B is computed
and the result, in floating-point form, is stored at A.
The argument must be in radians and in floatingpoint form. The computation does not disturb the
original value of the argument.
The allowable range of the argument, maximum
accuracy, etc., for the cosine subroutine is the same
as that previously described for the sine subroutine.

-227.955924206n ...... n(227955924206n ...... n(3)

causes an exponent underflow. Depending on the type
of error, a 1 or 1 is placed in location 00401.
For negative arguments, the subroutine uses the
absolute value of the argument to evaluate the function and then finds the reciprocal value.
For positive and negative arguments, the maximum
truncation error in the mantissa of the result is ±10-L.
Floating Exponential (Base 10)

Floating Arctangent

Macro-instruction

Macro-instruction
Operand. & Remarks
20

Operand. & Remark.
20

25

<5

25

30

35

50

50

B -:

The A and B addresses refer to the units position of
the exponents of the fields.
76

The A and B addresses refer to the units position of
the exponents of the fields.

Operation. The value of lOB is in floating-point
form; it is computed and the result, also in floatingpoint form, is stored at A. An input value that exceeds
98.9n ... n(989n ... n02)
causes an exponent overflow, and one which is less
than
-98.9n ... n(989n ... il(2)
causes an exponent underflow.
This subroutine handles negative arguments in the
same manner as they are handled by the natural exponential subroutine. Maximum accuracy is the same.
Floating Logarithm (Natural)

Adding Subroutines
The user may add from one to twelve subroutine
macros to subroutine sets 01, 02, and 03. Each new
subroutine may use from two to nine operands. Although the minimum number of operands allowed is
two, both the A and B operands may be the same.
To add a subroutine, it is necessary to:
1. Modify the Op Code table to include the new
mnemonic (see SPS II-D MODIFICATION PROGRAM).
2. Write the subroutine in SPS language, keeping in
mind certain factors regarding PICK, mantissa
length (L), and modifications with regard to the
subroutine itself.
3. Assemble the subroutine in relocatable form, and
store it on the disk.

Macro-instruction
Modifying the Op Code Table
Operand, & Remarb
00

4S

50

The Op Code table is modified by executing the
Modification Program. This program is part
of the Monitor system; it is described later in the
manual.

SPS II-D

Writing a Subroutine

The A and B addresses refer to the units position of
the exponents of the fields.

Operation. The floating-point value of the In B is
computed and stored at A. Input arguments must be
in floating-point form.
This subroutine accepts all arguments greater than
zero within the floating-point range. For error codes,
see Table 5.

When writing a subroutine, the programmer should
be aware of certain information concerning PICK,
namely: the functions of PICK, PCK area, linkages,
common work areas in PICK, and the means of signifying operands that are relative to PICK and/or are a
function of mantissa length.
FUNCTIONS OF PICK

is common to all subroutines in. the subroutine
set. Therefore, it is to the advantage of the subroutine
writer to make use of PICK. The listing of the appropriate PICK subroutine (furnished with the Library
package) should be studied. Briefly, PICK performs
the following operations:

PICK

Floating Logarithm (Base 10)

Macro-instruction

Operand, & ....... rb
25

The A and B addresses refer to the units position of
the exponents of the fields.

Operation. The floating -point value of the log lOB
is computed and stored at A. Input arguments must
be in floating-pOint form.
This subroutine accepts all arguments greater than
zero within the floating-pOint range. For error codes
see Table 5.

1. Resets location 00401 (subroutine error digit).
2. Moves A and B operands into PCK + 15 and
PCK + 20, respectively. If more than two operands are used, all should be handled by the
user's subroutine.
3. Calculates the return address to the mainline
program. However, if a subroutine uses more
than two operands, the return address must be
calculated by the subroutine itself. To calculate
the return address, use the following formula:
(PCK +10) + 5n + 1 if n is even, or
(PCK +10) + 5n + 2 if nis odd
SPS II-D

77

+

where PCK
10 (befDre entering the PICK subrDutine) is the address Df the high-Drder digit
Df the first Dp erand, and n is the number Df
Dperands.

P and Q Operand

If PICK calculates the return address (two Dperands ), eleven is added to' PCK
10.

2
3

4. Moves the B operand (mantissa and exponent)
into working area beta. If the· A operand is also
used by the subroutine for calculation, it (the
A operand) must be moved by the subroutine
itself. This requires one instruction:

4
5

+

TFL

ALPHA, PICK

+ 15, 11

5. Sets error indicator 00401 for overflow and
underflow.

Modifiers

o
1

6

7
8
9

6. Stores the computed floating-point result in the
location specified by the A operand.
The functions of PICK are not mandatory, but are
under control of the user. When a subroutine is called, the object program branches directly to the subroutine. If the functions of PICK are desired, the user
may branch to PICK via the following linkage:
TFM
PCK
5, ...
20
B7
PCK, , 6

+

+

OPERANDS THAT ARE FUNCTIONS OF PICK AND/OR
MANTISSA LENGTH
Whenever PICK is used, the programmer must use
instructions in his subroutine which make reference to
the PICK subroutine. (All references to PICK must be
written as relocatable quantities.) The operands of
these instructions are then adjusted to make them
correspond to the actual addresses of PICK in the object program. This is done by using a pseudo constant
(DC statement). The constant does not become a part
of the object program; its only function is to indicate
that the instructions that follow are to be modified.
One DC statement can modify up to 25 instructions.
Each instruction, whether it is to be modified or not,
requires two digits in the pseudo constant, one for
the P operand and one for the Q operand. The statement itself consists of three operands: the first specifies the length of the constant which may not be
greater than 50 nor less than 2; the second, the actual
constant; the third, the storage address of the constant. This address must be specified as an absolute
address of 00350. The P and Q operand modifier constants follow.

78

Modification
No ModificatiDn
AddL
Subtract L
Add 2L
Subtract 2L
Modify with respect to PICK,
no L modification
Modify with respect to PICK,
addL
Modify with respect to PICK,
subtract L
Modify with respect to PICK,
add2L
Modify with respect to PICK,
subtract 2L

The following example shows how a variablelength mantissa subroutine may be modified by the
use of modifier constants.
DC
TF
SF
TFL
B7

6, 527005, 350
SAVE, 98
SAVE
PCK
15, SAVE, 6
PCK
10, , 6

+
+

NOTE: (1) Intervening DORG statements and constants
between instructions are never modified in this manner.
(2) SAVE is a relocatable quantity.
Assembling a Subroutine

When a subroutine is assembled, it must be "Assembled Relocatable;" stored in relocatable format, and
must have the following items defined:
1. Disk Identification Map (DIM) entry
2. Subroutine identification number
3. Desired entry points
SUBROUTINE

DIM ENTRY

A subroutine DIM entry is in the same general format
as that described in the Supervisor section of this
manual. However, the last two 5-digit fields specify
the length of the subroutine and the subroutine identification number instead of a core address and a starting or entry address.
Subroutine DIM entries occupy fixed locations in
the DIM table. There are 30 entries reserved for subroutine sets 01, 02, and 03 (this includes an entry for

PICK in each set). The 30 entries are needed for the
17 subroutines (plus PICK) provided by IBM plus 12
subroutines that may be added by the user.
To calculate the DIM entry number for a new subroutine, add the new subroutine number (18-29) to
the base DIM number for the applicable subroutine
set. The base numbers for each set are as follows:
Base Number
100
70
40

Subroutine Set
Fixed Length - 01
Variable Length - 02
Automatic Floating Point - 03

For example, the DIM entry number for the first
user-written subroutine to be added to the variable
length set would be 70
18 == 88.
A DIM entry number is assigned to a subroutine by
including an "m NUMBER" control record when the
subroutine· is assembled (see SPS CONTROL RECORDS).

In the preceding statements, ORIGIN is any label not
otherwise used in the subroutine; ENTRY 1 is the label
of the first entry point; ENTRy2 is the label of the second entry point. The DORG is needed to ensure that
the subroutine will begin at relocatable 00000.
SUMMARY OF ASSEMBLY PROCEDURE
By inserting a DSA for entry points and placing the
subroutine identification number in the DEND statement of the source program, it is possible through the
use of proper control records to assemble a subroutine
and have it loaded to disk and ready to use all in
one operation. Of course, the mnemonic of the added
subroutine must be defined in the Op code table prior
to assembly of a program that uses it.

+

SUBROUTINE LENGTH
The length of a particular subroutine is automatically
placed in its respective DIM entry when an LIBR control record (see SPS CONTROL RECORDS) precedes the
subroutine source program.

Example

This example illustrates how a subroutine is added to
the subroutine library of the Monitor System. In
this example, the new subroutine is assembled along
with a mainline program and both are then executed
(Figure 10). The example assumes that the Supervisor program is already in core storage.
GIVEN:

SUBROUTINE· IDENTIFICATION NUMBER
As stated previously, all subroutines are identified by
a 5-digit code number. When a subroutine is being
added, this number must be supplied by the user.
The number is composed of two digits for "subroutine
set number" (01, 02, 03), two digits for "subroutine number" (01-29), and one digit for "number of
entry points" (1-9). The number will automatically be
loaded to its proper position in the DIM table if it is
used as the address operand of the DEND statement
that terminates the subroutine source program.
Example

DEND

02182

This code number identifies subroutine number 18,
a "2-entry point subroutine" that is to be placed in
the variable-length subroutine set (02).
SUBROUTINE ENTRY POINTS
Each subroutine requires at least one entry point but
may have as many as nine entry points. These must
be specified at the beginning of the user's source
program. Two records of data are needed:
ORIGIN

DSA
ENTRY1, ENTRY2, etc.
DORG ORIGIN-4

Macro - EXCH A, B
Function- to exchange floatingpoint numbers between A
and B
Identity - Subroutine No. 18,
Set No. 02

PROCEDURE:
1. Modify Op Code table by
loading the following records;
Monitor Control - XEQ specifying SPSLIB
SPSLIB Control
DEFINE OP CODE
EXCH - 181 (Col. 12-19)
ENDLIB
NOTE: The above four records must be entered from
the same input unit.
2. Precede the source subroutine
(Figure 11) in the stacked
input with the following
control records:
Monitor Control - JOB
SPS
ASSEMBLE RELOCATABLE
SPS Control LIBR
m NUMBER 0088
STORE ~LOADABLE
LIST CARD
ERROR STOP
SPS II-D

79

Source Mainline

Source Subroutine

I

I
I

I

I
I
I

SPS Control Records
I
I
I

I
I
I

I
I
I

----------1
I

I

Monitor Control Records
I

I

____________ J

I

I
I

I
I

SPS LIB Co'ntro I Records
I
I
I

I

Monitor C~ntrol Records
I

......_--------------------------1- __________ ...!
Figure 10, Stacked Input for "Adding SPS Subroutine Example"

80

Label

Line
3

5 6

2,0

0,3 0

o
o

4 0
5 0

20

E NTIlY
D5A IS
l) 0 !J,G *-4

*

ZER.O

[)S
BE711
peK
DS
£ N.T RY 7~M.

7 0

137

P,C KS+5
PCK

8 0

TFL

PCk+20

10 6,n

o
o

15 16

25

30

35

45

40

55

50

60

65

70

75

DSA

10 1 0

o

Operands & Remarks

pperation
11 12

1 0 0

2
iFL '!p,e K+

1 1 0

87

1 2 0

D6N,lJ 02

Figure 11,

,,*+2.0

, G'

,,p,e 1<+ 1,5

, 6

,,OS

DC

10 9 0

US E D 70 DEFINE SUBROUTINE EN.TRY P.OIM"
,
DEFINES ~ELOeIJ71l8I.E ZE.RO
, f
.ZEIJO+19~
DEFINES REt 0 e 1/ r.1l8 t E S YM80,'DEFINeS IIBSOLUT£ s YM.80L
.23'S
••

I5

IPCKflO
18 I

•

, ,,
,"

• :3 50

,8£TII

,

I I,

,

.

t

L / N/(IlG E 70 ,PICK.
1/ 1.0 8
PSEU[)O CO NS 111Ni.
/tIo VE B 10 II
.R,E r.tlflN f.(} M,IJIN £1

N.t.

.

and) , or return control to
Supervisor
(requires EXIT
operand).
The six types of macro-statements that use the I/O
routine are written as follows:

.

Label

--'

f----1-

-,
•.1..

Mnemonic
GET

Meaning
Read card, paper tape, typewriter, or disk.
Punch card, paper tape, or write
typewriter, or write disk records with or without readback check.
Seek disk record.
Read disk stored subprogram
and execute ( requires LINK
operand), or read disk stored
subprogram or data without
execution (requires LOAD oper-

~ati""
1112

------------Operands & Remarks

IS"

20

GET D£F

PUT
'P'U.T

'5

30

~-

-~

-~-

35

<0

,

DEF
DfF ,7f:I/,C

I

SO

'5

I

,

, I I

,

I

I

I

I

I

I

I

, I

,

I

SEt,H ])[F
--'

CA~T L/~K,DIN£NT,R£LOC
CIIL L LI NK, NAME, REL DC

,,

,-,-L•. .1..-'

SEEK

I

Source Program for "Adding SPS Subroutine Example"

The I/O macro-statements are provided to relieve
the programmer of the task of writing his own I/O
subroutine in a source program each time he wants to
read or punch cards or tape, read or write disk storage, or read or write typewriter. I/O macro-statements
may be inserted anywhere in the user's program.
When an I/O macro-statement is encountered in the
source program during assembly, linkage instructions
to the I/O routine (part of the Supervisor program)
are generated in the object program.
The macro-instruction mnemonic operation codes
and their meanings follow:

CALL

·
·
·
·

I

ID FOR SV8R

1/0 Macro-Statements

PUT

.

M.OV£

.

·

eA LL L OAP, DI MENT, R[L DC
CALL L DAD, NAME •. lfEL OC

!

,

,

I

,

CA.Ll EXI T

A label and remarks may be included with each of
these statements. The address associated with the
label will be that of the first instruction in the generated linkage. The operands RBC, LINK, LOAD, and
EXIT are fixed symbols, i.e., they must be written exactly as given. The symbol DEF is the address of the
associated I/O constant generated by an I/O declarative statement. DIMENT is the DIM entry number of a

SPS II-D

81

With a relocation address

program to be called from disk storage; RELOC is the
relocation core storage address of a program to be
called; and NAME is the name of a program (as it
appears in the Equivalence table) to be called. DEF,
DIMENT, and RELOC may be in actual or symbolic form.
PUT statements may be specified with or without
read-back check (RBC), as shown. Either a DIM entry
number or the program name can be given with CALL
LINK or CALL LOAD statements. Also, the relocation address is optional with these statements, i.e., the programmer does not have to include a relocation
address.
A CALL EXIT statement should be included in the
user's source program. This statement, when executed
at the end of the object program, causes control to
be returned to the Supervisor program.
All linkages for I/O routines are generated automatically through the use of macro-instructions. The
data and addresses supplied in the macro-instruction
are incorporated into the linkage instructions where
they are made available for use by the I/O routine.
The linkage instructions generated in an object program for macro-instructions by the processor are
equivalent to the following- series of symbolic instructions.

IORT,
lOCAL

TFM

B

 7 specified.
Non-numeric IX specified.

ER6

A DSA statement has more than ten operands.

ER7

A DSB statement has the second operand missing.

ER8

1.
2.
3.
4.

A DC, DSC, or DAC has a specified length greater
than 50.
A DVLC has a length greater than 50.
A DMES has a length greater than 100.
A DNB has a length greater than 99.

ER9

A DC, DSC, DAC, DVLC, or DMES statement has no
constant specified.

ER10

1.
2.

A DC or DSC statement has a specified length
which is less than the number of digits in the
constant itself.
A DAC statement has a specified length which is
less than or greater than the number of digits in the
constant itself.

Table 7.

Disposition of SPS Errors When no Error Stop
Statement is used

ERROR
CODE
ER 1

DISPOSITION
No disposition.

ER2

The label is ignored.

ER3

A NOP is assembled.

ER4

The second definition of the label is ignored; the first
definition of the label is used in the assembly.

ER5

1-5. The operand is assembled as an absolute 00000.
6.
0 perand is assembled but no IX flags are set.
7.
Operand is assembled. Numerical portion of
units character is used to define IX flags.

ER6

The first ten operands are assembled; any remaining
operands are ignored.

ER7

The number of elements is set to I.

ER8

1.
2.
3.
4.

ER9

A field of zeros is generated, 'equal to the size of the
length operand for the DC, DSC, DAC, or DVLC
constant. In the case of a DMES, an end of message
(* *) is assembled and the address counter is increased
by 100.

ER 10

For a DC or DSC, the length of the, constant is used as
the length operand; for a DAC, the s~dcified length is
used, and the programmer-assigned a ress, if present,
is ignored.

ER I I

The HEAD character is set to blank.

ER 12

The first character of the operand is used as the HEAD
character.

ER 13

The starting mode is assembled as the alphabetic mode.

Length
Leng·th
Length
Length

is
is
is
is

set
set
set
set

to
to
to
to

50.
50.
100.
99.

ER 11

An invalid character is used as a HEAD character in a
HEAD statement.

ER 14

An end of messoge (*:f) is inserted into the constant.

ER12

A HEAD operand contains more than one character.

ER 15

An end of message (=t::=t:) is inserted into the constant.

ER13

A DMES statement contains an invalid starting mode
character.

ER 16

A 0 is placed in the next available location following
the mode change.

1.

A DMES statement contains a control character
which is incorrectly specified.
A DMES statement has an invalid format, i. e.,
stray parenthesis, etc.

ER17
ER 18

A DIM number of 0000 is assembled.

ER15

A DMES statement contains an alpha character in a
numerical field.

ER 19

ER16

A DMES statement contains an invalid mode change.

Processing continues bu t no more labels are stored.
After completion of the intermediate phase, processing
stops, the following message is typed, and control
returns to the Superv isor Program.

ER14

2.

ER17

1.
2.

A relocatable assembly contains either a relocation
error (see Rules of Relocatability) or,
A DORG with an absolute operand.

ER18

A symbolic name used in a CALL LINK or CALL LOAD
statement is not in the Equivalence table.

ERI9

The storage area allotted for the symbol table has been
exceeded.

ER20

Intermediate output has exceeded disk storage work
area (program requires two passes).

ER21

Object output has exceeded disk storage work area.

ER22

Improper "select" operand ~n a CALL statement; i.e.,
neither LINK, LOAD, nor
IT is specified.

88

1.

2.

The operand is assembled as an absolute 00000.
The DORG is ignored.

DISK AREA TOO SMALL. ASSEMBLY DELETED
ER20

Processing continues, but no more intermediate data is
sent to disk storage. After completion of the intermediate phase, processing stops, the following message
is typed, and con trol returns to the Supervisor Program.
DISK AREA TOO SMALL. ASSEMBLY DELETED

ER21

Processing stops immediately and control is returned to
the Supervisor Program.

ER22

The statement is ignored.

NOTE: Assembly and outputting continue in
all caSes except ERI9, 20, and 21.

Card. A card list deck usually consists of one card
for each source statement. The fonnat is as follows:
Columns

1-5
6
7-12
13
14-17
18
19-78

61-65
66

Page and line number.
Blank
Label as on source card.
Blank.
Op mnemonic as on source
card.
Blank.
Operand fields as on source
card. If the fields extend beyond column 59, the object
i n for mat ion ( normally
found in columns 61-80 of
first card) is placed on a
subsequent card or cards.
Actual address of assembled
instruction or constant.
Blank.

NOTE: The data in columns 67-80 is peculiar to the
type of statement assembled.

Imperative Statements.
Columns 67-68
Op code in machine language.
Blank.
69
70-74 P operand in machine language.
Blank.
75
76-80 Q operand in machine language.
Non-imperative Statements.
Columns 67-71
72
73-80

Length of assembled data.
Blank.
If these columns are punched , they will contain actual
assembled data.

POST ASSEMBLY ERROR MESSAGES
The follOWing error messages are applicable after
assembly.
EXCEEDED SPECIFIED CAPACITY BY XXXXX
The above message indicates that the object program together with applicable subroutines would exceed the available core storage if the program were
to be executed. The available core storage is determind by the user's Object Core control card.
This error does not invalidate the assembly, however, since a different set of subroutines may be specified at execution time. A different subroutine set

might occupy less core storage; therefore, the error
may no longer apply.
NO DIM ENTRY FOR SUBROUTINE
The above message is typed out when the DIM entry
which corresponds to a called subroutine cannot be
found in the map. This would indicate that the entry
was either deliberately deleted from the map or otherwise destroyed. The assembly will continue, however.
and the object program will be stored. But if execution was planned immediately after assembly ( SPS
card), assembly would be deferred and control would
return to the Supervisor program.
MORE THAN SCYLINDERS OF
RELOADABLE OUTPUT SSW4
ON TO DUMP OUTPUT

OFF

TO CONTINUE, NO OUTPUT
The above message is typed when the reloadable
object output would occupy more than 999 sectors on
disk storage (approximately 5 cylinders). This situation is an error because programs greater than 999
sectors cannot be specified in the Disk Identification
Map.
After the message is typed out, the computer halts.
At this time the user can either tum Program Switch 4
on and depress START to have the program outputted
on a pre-chosen output unit, or tum Program Switch 4
off and depress START to continue, in which case the
program is not outputted. In either case the program
is not stored on disk storage.

Execution of SPS II-D Object Programs
When SPS II-D object programs are to be executed,
they are read into core storage from disk storage,
paper tape, or cards by the use of Monitor Control
records. The subroutines which are called for in the
program are loaded from disk storage at execution
time. Neither subroutines nor subprograms are ever
a part of the mainline object program. They are stored
on disk in relocatable form and brought into core
storage if needed. The selection of proper subroutines
at execution time is made by referring to an "indicator
record" which is stored with the mainline object program. This record, generated at assembly time, contains a I-digit location for each of the subroutines in
a set. At assembly time, as the individual subroutine
SPS II-D

89

macro-instructions are encountered in the source program, a 1 is placed in the I-digit location that corresponds to the subroutine being called. The record is
then a "map" of the subroutines needed for the particular mainline object program.

Examples of both relocatable and absolute quantities
follow:
relocatable
~

B

absolute

Execution Time Error Messages

The following error messages are applicable at execution time. Their occurrence terminates loading and
returns control to the Supervisor program.
CORE CAPACITY EXCEEDED
BY XXXXX LOCATIONS
PROGRAM IS TERMINATED
The above message is typed out when the total core
storage required for the object program and all applicable subroutines exceeds the available core storage. Note that there is a similar message at assembly
time if available core storage is exceeded. However,
it is possible to get the message at execution time
without having gotten it at assembly time. This could
happen if a diHerent subroutine set is specified at
execution time (in XEQS card) than that which was
assembled with the source program.

0+24
~

AM X, 12345
The processor recognizes relocatable and absolute
quantities by applying the following rules:

1. An integer (e.g., 1, 12345, etc.) is an absolute
value.

2. A processor-assigned address, which is associated
with a label (i.e., the address of an instruction
or constant with an associated label), is a reloeatable quantity. An asterisk address (0) is also
relocatable.
3. A symbol defined as equal to some quantity has
the same relocation property as the associated
quantity. An example follows:

SYMBOL

DS

,QUAN

4. The product of two absolute quantities is an absolute quantity.

SUBR NOT LOCATED IN SUBROUTINE MAP

5. The sum or diHerence of two absolute quantities

The above message occurs if a subroutine that is
specified in the "indicator record" of the object program cannot be found in the subroutine section of the
Disk Identification Map.

6. The sum or diHerence of a relocatable quantity
and an absolute quantity is a re.locatable quantity.

IMPROPER IND CODE IN SUBR XXXX
The above message occurs when an invalid "reloadable indicator code" (see SYSTEM OUTPUT FORMAT in
Supervisor section) is found in the object output of
a subroutine. In this message, xxxx are the first four
digits of the subroutine identification number; two
digits are for the set number, and two digits are for
the subroutine number.

is an absolute quantity.

7. The diHerence between two relocatable quantities is an absolute quantity.
The processor will recognize any of the following
situations as "relocation errors."
1. The sum of two relocatable quantities.
2. The product of a relocatable quantity and any
other quantity.
3. An operand below the relocatable address of
00000. For example, RELOC -10000, where RELOC
is a relocatable quantity of less than 10000.
NOTE: The exact negative of a valid relocatable
quantity is a valid relocatable quantity.

Rules 01 Program Re/ocalabilily
When a program is relocated~ as specified by an
ASSEMBLE RELOCATABLE statement, certain addresses
within the program are adjusted relative to the relocation (starting) address. Only relocatable quantities
are adjusted. Absolute quantities are not adjusted.
90

Although the quantity defined by an operand may
be either positive or negative, a symbol may be equivalent to a positive quantity only. If a symbol is defined equal to a negative quantity, any reference to
that symbol by the assembler will produce the absolute value of the quantity.

Converting SPS Object Programs to Core Image

Two methods of storing object programs in core image
have been described in this manual. One is by using the
disk utility routines DLOAD and DREPL (see DISK UTILITY
PROGRAM) , and the other is by using a STORE CORE
IMAGE control card when the program is assembled.
Both of these methods have the following limitations:
• Subroutines cannot be converted and stored with
the main program.
• The core storage limits of the program image do
not extend beyond the last processor-assigned
statement. Thus, an address assigned by the programmer, e.g., DC 1, @, 19999, would not be included unless it fell within the addresses assigned
by the processor.
• No

TRA-TCD

sequences are allowed.

• A program which requires subroutines and is assembled with an 0 ASSEMBLE RELOCATABLE control
record cannot be converted to core image using the
methods mentioned above.
A procedure which will overcome all these limitations
is outlined below.
l. End the source program with a sequence of instructions which will dump the program into the
work cylinders when it is called for execution.
When the program is called the first time, only the
special instructions will be executed. An assembly
of this type is shown in the following example:

=F =F JOB
=F =* SPS

°NAME TEMP
°STORE RELOADABLE
°Other control records -listings, symbol table,
etc.
START XX etc.

STORE PUT
CALL
X
DD
XDDA DDA
DC
DEND

X, RBC
EXIT
, XDDA

, 1,00000, SSS, CCCCC
1, @
STORE

In the special sequence of instructions, sss is a
sector count sufficient to store the entire core
image program with applicable subroutines. The
transfer into the work cylinders will start from
core address ccccc. If subroutines are used, CCCCC
should be 02276 so as to include the subroutine
transfer vector area.
2. Assemble the program.
3. Call the program as if it were to be executed. This
will cause the special sequence of instructions to
be executed, thereby dumping the program and
subroutines into the work cylinders in core image
format.
4. Using the disk utility routine, DLOAD or DREPL, load
the program from the work cylinders into permanent disk storage. If DLOAD is used, give the
program a different name and delete the old name,
so as not to duplicate names in the DIM table. The
parameters for the DLOAD or DREPL operation can
be obtained either from the listing or from the
messages typed out after the assembly; e.g., xxxxx
CORE POSITIONS REQUIRED gives the highest processor-assigned address, including subroutines. An
example of how to implement steps 3 and 4 is
shown below.

=l= =l= JOB
=l= =F XEQS NAME
=l= =F JOB
=l= =F DUP
°DLOAD or °DREPL

=l= =F DUP

lnot needed if DREPL is used
ODELET NAMEJ

end of regular source program

To call and execute a core image program
which has been converted by this method, use
an XEQ control record.

90.1

SPS II-D Modification Program
This program allows the user to modify the SPS II-D
assembler by: (1) Adding or deleting operation codes
from the System Op code table, and (2) Adding or
deleting symbols from the System Symbol table. The
SPS II-D Modification program is loaded into disk storage as part of the Monitor II system. It is identified in
the Equivalence table by the name "SPSLIB."
An XEQ Monitor Control record with the assigned
name SPSLIB punched in columns 7-12 is used to call
the modification program for execution. To specify
the type of modification desired, the user places modification control records following the ;XEQ record.
These records and any other input data to the Modification program must be entered from the same input
device that was used to enter the XEQ record.
Modification program control records, in terms of
cards, use the same format as that used for sps control
records. The five modification control statements must
be written exactly as given (DEFINE OP CODE, DELETE
OP CODE, DEFINE SYSTEM SYMBOL TABLE, LIST OP CODE.

Only one statement may be included in a
('ontrol record. These statements are typed when they
are read. A description of the five control statements
follows.
DEFINE OP CODE. This statement causes userassigned Op (operation) codes, specified in Op code
definitions cards, to be added to the SPS II-D System
Op code table. The Op code definition card ( s) must
follow the control record in the stacked input. The
format of the Op code definition card follows:

ENDLIB.

DELETE OP CODE. This statement causes Op
codes, specified in Op definition cards, to be deleted from the SPS II-D System Op code table. The Op
code definition card ( s ), which must follow the control
record in the stacked input, specifies in columns 12-15
the code to be deleted; columns 16-75 may be blank.
Only one Op code may be specified per card. If an
attempt is made to delete an Op code that is not in
the Op code table, the message
NOT IN TABLE
will be typed and no change will be made to the
table.

DEFINE SYSTEM SYMBOL TABLE. This statement is used to modify the System Symbol table. The
System Symbol table consists of certain symbols that
were defined when the Monitor System was assembled
plus any symbols the user adds by means of the DEFINE
SYSTEM SYMBOL TABLE statement. Any symbol that is in
the System Symbol table may be used in any assembly
without defining the symbol within the program being
assembled. vVhen used, the Define System Symbol
Table statement first causes all user-defined symbols
to be deleted from the table. Then all symbols which
follow the Define System Symbol Table statement
are added to the System Symbol table. Symbols to be
added are defined in the Symbol Definition record.
The format of this record in terms of cards is as follows:
Columns 6-11

Columns 12-15

New mnemonic Op code (left
justified) .
16-75 A 3-digit code which determines
the instruction generated by the
Op code. (The code may be
preceded by a minlas sign.)
The allowable 3-digit codes that may be entered in
columns 16-75 are shown in Table 8.
The digits X and Y may be any number 0-9. A separate Op code definition card should be entered for
each Op code that is to be defined. If an attempt is
made to define an Op code that is already present
in the Op code table, the message
ALREADY DEFINED
win be typed and the new Op code win be ignored.
If space is unavailable in the Op code table for a
new Op code, the message
NO ROOM IN TABLE
will be typed and the new Op code will be ignored.

16-75

Symbol to be defined (left justified ).
An operand, symbolic or actual,
but not asterisk. (If a symbolic
operand is used, it must have
been previously defined in the
System Symbol table.)

If a symbolic operand, contained in the operand field.
(columns 16-75) of a Symbol Definition card, cannot
be matched with a previously defined symbol in the
System Symbol table: the message
UNDEFINED SYMBOL XXXXX
is typed out, where xxxxx is the undefined symbolic
operand; no change is made to the System Symbol
table. Up to 150 user-defined symbols may be added
to the System Symbol table. Any attempt to insert
more symbols causes an error message to be typed
and control to be returned to the Supervisor program,
thus terminating the add-to-symbol-table function.
Symbols that have less than six characters will be defined with. a blank "heading character" in the System
SPS II-D

91

Symbol table. Symbols defined as positive quantities
will be treated as positive-absolute quantities in both
absolute and relocatable assemblies. Negative quantities will be treated as negative-absolute quantities in
an absolute assembly and positive-relocatable quantities in a relocatable assembly.

9CCYLO
9CCYLI
9CCYL2
9CCYL3

Table 8.

LIST OP CODE. This statement causes the processor to type a listing of the Op code table. All Op codes
are listed in tabular form with their associated 3-digit
codes.

02132
02134
02136
02138

These are the low-order positions of four 2-digit fields, similar to the previous four. However, these positions contain
the cylinder numbers of the
current access arm positions
(the position of the arm after
the last disk IORT operation).

Codes and Assembled Data for SPS Modification
Program

CODE

ASSEMBLED DATA
PPPPP QQQQQ

USE

XYO

XY

-XY1

Macro-instruction subroutine linkage to subroutine XY

-XY2*

ax

ppppp YQQQQ

SIOC instructions

-XY4

4X

PPPPP QOOQY

Mask and Unmask
instructions

-XY6

3X

PPPPP Q34QQ

Binary I/O

IBM Defined System Symbols

XY2

3X

PPPPP Q07QY

Disk instructions

The following symbols will be available to the user
in the System Symbol table.

XY3

3X

ppppp QOYQQ

I/O instructions

XY4

34

PPPPP

Control instructions

XY6

46

ppppp QXYQQ

Branch Indicator instructions

XY7

47

ppppp QXYQQ

Branch No Indicator
instructions

XY9

6X

PPPPP QQQQY

Branch Select Instruction

ENDLIB. This statement causes control to be returned to the Supervisor program. In the stacked input, it must follow other control statements which
utilize the modification program.

Symbol

Equivalence

Description

9RCYLO
9RCYLI
9RCYL2
9RCYL3

00513
00515
00517
00519

These are the low-order positions of four 2-digit fields
which contain the numbers of
cylinders (00-99), where the
disk access arm is repositioned
after a disk operation in which
a reposition has been requested. The four fields refer to
drives 0, 1, 2, and 3, respectively.

92

QOXQY

Any instruction
Subroutine Macros

*If the first character of the Op code contained in columns 12-15
is the letter "R, " position 0 1 of the assembled instruction wi" be
flagged.

FORTRAN II-D

The
the

programming system consists of
language and the processor. The
FORTRAN II-D language is comprised of a number of
types of statements that the programmer may use in
defining the problem to be solved. The FORTRAN II-D
processor is a program that accepts the source program statements I1S input and produces, as output, a
machine language program, known as the object program. The FORTRAN II-D processor can operate only
under control of the Monitor System and the object
programs it produces can be reloaded only by the
Monitor Input/Output routine. It is possible for the
user to remove the FORTRAN portion of Monitor II and
still utilize the remainder of the system. It is also possible to remove some of the FORTRAN library subroutines that are supplied and still utilize the remainder
of the FORTRAN system (see DISK STORAGE LOCATION
FORTRAN II-D

FORTRAN II-D

OF THE FORTRAN COMPILER).

FORTRAN II-D Language
The FORTRAN I1-D source program consists of a number of statements. Each statement deals with one
aspect of the problem; that is, it may cause data to
be fed into the computer, calculations to be performed, decisions to be made, results to be printed, etc.
Some statements do not cause specific computer
action, but rather provide information to the processor program.
FORTRAN II-D statements are arranged in five groups:
Arithmetic statements which specify the mathematical
calculations to be performed.
Control statements which govern the sequence in
which the statements will be followed.
Subprogram statements that enable the programmer
to define and use subprograms.
Input/Output statements that read data into the program or print or punch the results of the program.
Specification statements that provide information
about the data that the object program is to process.
The above statement types are explained in detail
later in this manual.
FORTRAN II-D statements are written on a standard
FORTRAN Coding Form which is designed to organize
the statements into the special format required by the
processor program. All statements and comments of
the source program are written on this form.
The function of each portion of the coding form
shown in Figure 12 is explained below.

Space is provided at the top of each page for the
name of the program, date, etc. This information does
not constitute part of the source program and is not
punched into cards.
The series of numbers (1, 5, 6, 7, 10, ... , 72)
across the top of the form indicates the card column
that the information is punched into.
Comments to explain the program are written in
columns 2-72 of a line with a C in column 1. The letter
C must be followed by two spaces for paper tape or
typewriter input. A comment line is not processed by
the FORTRAN II-D program but is listed when the source
program cards are listed.
Columns 2 through 5 are used for the statement
number. Any number from 1 through 9999 may be
used as a statement number. Statement numbers are
used for cross reference within a program (see explanations of DO and GO TO statements) or may be
used merely as a means of identifying statements.
Statements should be numbered only when they are
referenced by another statement and no two statements can have the same number. Also, there is no
requirement that every statement must have a number, nor that statements must be numbered in
sequence.
Column 6 of the initial line of a statement must be
blank or zero. If a statement is too long to be written
on one line it can be continued on as many as four
"continuation lines." Continuation lines are written by
placing in column 6 any character or any number
from 1 through 9 (zero allowed only for initial line).
The normal method is to number the initial line zero,
the second line one (first continuation line), the third
line two, etc. A statement other than a comment statement may not consist of more than 330 characters
(i.e., 5 lines) .
NOTE: Continuation lines are not allowed when input
is from the typewriter or paper tape, i.e., statements
up to 330 characters in length are entered in one
group.

The body of the statements themselves are written
in columns 7 through 72. Blank columns for the most
part are ignored by the processor and may be used
freely to improve the readability of the source program listing.
Columns 73 through 80 are not processed and
therefore may contain any identifying information.
The information on each written line in the statement section of a coding form is punched into a card.
FORTRAN II-D

93

range from minute fractions to large numbers may be
handled by the computer. Floating-point numbers
are expressed as decimal fractions times a power of
ten. For example:

A standard FORTRAN card is shown in Figure 13.
After the cards are punched, they should be verified to lessen the chances of clerical errors causing
source .and object program errors.

3.14159 is expressed as .314159 x 101
4800.0 is expressed as .48 x 104
0.0187 is expressed as .187 x 10- 1

Arithmetic Mode

Quantities used in the FORTRAN statements may be expressed in either fixed-point or floating-point form.
Numbers expressed as integers (whole numbers) are
considered fixed-point. Thus, the integers 3, 57, and
1008 are fixed-point numbers.
Flo~ting-point arithmetic is a technique used to
eliminate the complex programming required for correct placement of the decimal point in arithmetic
operations. Floating-point numbers are represented
in a standard format which specifies the location of
the decimal point. With this method, quantities which

IB"

For", X28·7327·3

,

Printed in U. S. A.

Date _ _ _ _ __
Page _ _ of _ __

Identification
80

73

~ C FOR COMMENT

I

ARITHMETIC STATEMENTS.

FORTRAN CODING FORM

Program
Coded By
Checked By

STATEMENT
NUMBER

The numerical part of the floating-point number is
called the mantissa and the power of ten is called the
exponent. For a floating-point number, the decimal is
always moved to the left of the high-order nonzero
digit. This is called normalizing the number.
In FORTRAN II-D, fixed-point or floating-point numbers can be used, subject to the rules described under

'i

FORTRAN STATEMENT

~

6 7

15

10
I

20
I

25
I

30

35

50

~5

<40

55

I

70

65

60

72

.l
I

I

I

,

,

I

I

I

I

I

I

I

I

I

.l

i

'-

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

t

I

I

I

I

I

I

t

I

I

I

I

94

.l

i

I

I

I

I

I

I

I

I

I

I

t

~

I

I

I

I

1

L

I

1

~.

'-

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

t

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

I

FORTRAN Coding Form

I

I

I

I

I

I

t

I

I

I

I

L

I

I

I

Figure 12.

t

.

I

I

I

/

/

C+CO:~:NT

FORTRAN

STATEMENT
NUMBER

010000

STATEMENT

IOENTlnCATION

000000000000000000000000000000000000000000000000000000000000000000 00000000

,\ 2 3 4 5

7 • • 10 \1 12 13 14 15 16 17 18 1920 21 22 23 24

l il l l l

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11111111

~ ~

Z7 2U9 30 31 32 33 34

l~

J6 37 38 39 40 41 424344 45 46 47 48 49 !>O 51 5253 54

5~

54i 57 58 59 SO 61 6213 64 6!) 66 67 68 6S 70 71 J2

7314~18J7187UO

I

2\2 2 2 2 2222222222222222222222222222222222222222222222222222222222222222222 22222222

313333 33333333333333333333333333333333333333333333333333333 33333333333333 33333333
4:4444 4444444444444444444444444444444444444444444444444444444444444444444 44444444
5\5 5 5 5 5555555555555555555555555555555555555555555555555555555555555555555 55555555
6\6 & 66 6666666666666666666666666666666666666666666666666666666666666666666 66666666
1
717 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 71 7 7 71 7 7 7 7 71 7 77 77 7 77 77 71 77 7 7 7 7 17 7 1 7 71 77 7 77 77 77 7 7 7 77 7 7 7 7 7777777"7
1

8 8 8 8 8 8"8 8 8 8 8 8 8 8 8 g 8 B8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 B8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 B8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
I

~

919 9 9 9 919 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
112 3 4 5 I 11 • I 10 11 12 1J 14 15 II 11 11 19 20 " 22 23 24 25 16 21 28

~

30 31 32 33 34 35 J6 31 31 31 40 41 42 43 44 40 • 41 48 • 50 51 52 53 54

~ 51

57 51 58 10 II 12 13 64

6!)

66 81 68 6t 70 71 12 73 74 15 JS 7J Ja 1. 10

lU18B81~7

Figure 13.

FORTRAN Source Program Card

Constants, Variables, Subscripts, and Expressions

Mathematical problems usually contain some data
that does not change throughout the entire problem,
and other data that may change many times during
calculation. These two kinds of data are referred to
as constants and variables, respectively. Both constants and variables can be used in FORTRAN II-D, but
they must be written so the processor can distinguish
one from the other.
Constants

FLOATING-POINT CONSTANT

A floating-point constant may be in either of two
forms:
1. Any number consisting of 1 to 28 decimal digits
with a decimal point at the beginning, at the
end, or between two digits (see ARITHMETIC
PRECISION). A preceding plus sign is optional for
positive numbers. Zeros to the left of the decimal
point are permissible.
EXAMPLES

A constant is any number which is used in computation without change from one execution of the program to the next. A constant appears in numerical
form in the source statement. For example, in the
statement
J==3+K
3 is a constant, since it appears in actual numerical
form. Two types of constants may be written in
FORTRAN II-D: fixed-point (restricted to integers), and
floating-point (characterized by being written with a
decimal point).
FIXED-POINT CONSTANT

17.
5.0
-.0003
0.0
2. An integral decimal exponent preceded by an E
may follow a floating-point constant. The magnitude thus expressed must be between the limits
of 10-100 and 1099 or must be zero (see ARITHMETIC PRECISION).

EXAMPLES

5.0E3
5.0E
3.14E

A fixed-point constant is an integer consisting of 1 to
10 numerical characters (see ARITHMETIC PRECISION).
A preceding plus sign is optional for positive numbers. An unsigned constant is assumed to be positive.

+

== (5.0 X 103 )
3 == (5.0 X 103 )
== (3.14 x 100 )

Variables
EXAMPLES

3

+1

-28987

A FORTRAN variable is a symbolic name which will assume a value during execution of a program. This
value may change either for different executions of
the program or at different times within the program.
FORTRAN II-D

95

For example, in the statement

A == 3.0

+B

both A and B are variables. The value of B will be
assigned by a preceding statement and may change
from time to time, and A will change whenever this
computation is performed with a new value of B.
As with constants, a variable may be in fixed-point
or floating-point form.
FIXED-POINT VARIABLES

A fixed-point variable is named by using 1 to 6 alphabetic or numerical characters (not special characters)
of which the first must be I, J, K, L, M, or N.

user has the ability to define the precision to which
fixed-point and floating-point values should be carried. Floating-point precision, denoted in this publication as f, may be varied from 2 to 28 places; fixedpoint precision, denoted by k, may be varied from 4
to 10 places.
The precision of the values may be changed by the
use of a control record which must precede the source
program (see FORTRAN II-D CONTROL RECORDS, FANDK)
or the values may be changed by use of the Disk
Utility Program DEFINE control record. If not redefined (by either of these methods), the value of f is 8
and k is 4.
Values for f and k must be the same for subprograms and link programs called by the main program.

EXAMPLES

I

M2
JOBN01

A fixed-point variable can assume any integral value
provided the magnitude is less than the maximum
size as defined through the use of a control record as
stated under ARITHMETIC PRECISION. (If not defined,
the maximum size will be 4 decimal positions for
fixed-point n'umbers.)
FLOATING-POINT VARIABLES

A floating-point variable is named by using 1 to 6
alphabetic or numerical characters (not special characters), of which the first is alphabetic but not I, J,
K, L, M, orN.
EXAMPLES

Subscripts

An array is a group of quantities. It is often advantageous to be able to refer to this group by one name
and to refer to each individual quantity in this group
in terms of its place within the group. For example,
assume the following is an array named NEXT:
15
12
18
42
19
If it were desired to refer .to the second quantity in
the group, the ordinary mathematical notation would
he NEXT!.!. In FORTRAN this becomes
NEXT (2)
The quantity in parentheses is called a subscript. Thus

A

NEXT (2) has the value of 12
NEXT (4) has the value of 42

B7
DELTA
A floating-point variable may assume any value expressible as a normalized floating-point number, i.e.,
zero or any number between 10-100 and 1099 • The
number of mantissa characters may be from 2 to 28
(see ARITHMETIC PRECISION). If not defined, the maximum size will be 8 characters for the mantissa.

The ordinary mathematical notation might be NEXT1,
to represent any element of the array NEXT. In FORTRAN, this is written
NEXT (I)
where I equals 1, 2, 3, 4, or 5. A program may also
use two or three-dimensional arrays. For example, the
following is a two-dimensional array named MRATE.

Arithmetic Precision

The precision of the quantities used in the calculation
is an important, consideration in most types of scientific computation. For example, the computation of
7.19 x 3.14 would not be as precise as 7.19286 x
3.14159.
In the FORTRAN II-D system, the variable-field length
capacity of the 1620 is used to allow varying the degree of precision from one program to another. The
96

Row
Row
Row
Row

1
2
3
4

Column 1
14
48
29
1

Column 2
12
88
25
3

Column 3
8
4

17
43

To refer to the quantity in Column 2, Row 4, the
FORTRAN statement would be written as MRATE (2,4).
The value of MRATE (2,4) is 3.

The value of MRATE (3,3) is 17.
Thus, subscripts are positive fixed-point quantities
whose values determine the member of the array to
which reference is made.
GENERAL FORM

Let v represent any fixed-point variable and c (or c')
any fixed-point constant. Then, a subscript is an expression in one of the following forms.
v, c, v+c, v-c, cOv,
cOv+c' or cOv-c'
(The symbol ° denotes multiplication.)
EXAMPLES

I
3
MU+2
5°J
5 ° J-2
The variable in a subscript must not itself be subscripted.
Subscripted Variables

A fixed or floating-point variable may be subscripted
by enclosing up to three fixed-point subscripts in parentheses to the right of the variable.

operation symbols, commas, and parentheses, which
comply with the rules for constructing expressions.

Expressions appear on the right-hand side of arithmetic statements.
In arithmetic-type operations, the following operation symbols are used:
+ addition
subtraction
multiplication
division
/
exponentiation (i.e., raising to
a power)
RULES FOR CONSTRUCTING EXPRESSIONS

Since constants, variables, and subscripted variables
may be fixed-point or floating-point quantities, expressions may contain either fixed-point or floatingpoint quantities; however, the two types may appear
in the same expression only in certain ways. (In the
following description, no mention is made of the rules
for using fixed-point and floating-point quantities in
functions. These rules will be stated when functions
are discussed and will be considered as addenda to
the following rules. )
l. The simplest expression consists of a single constant, variable, or subscripted variable. If the
quantity is an integer quantity, the expression
is said to be in the fixed-point mode. If the
quantity is a floating-point quantity, the expression is said to be in the floating-point mode.

EXAMPLES

A(I)
K(3)
BETA (5°J-2, K+2, L)
The commas separating the subscripts are required
punctuation. Note that subscript arithmetic may take
place as shown in the third example above. For instance, if J is equal to 20, the first subscript will be
98. (The symbol ° denotes multiplication.)
The value of a subscript (including the added or
subtracted constant, if any) must be greater than
zero and not greater than the corresponding array
dimension. Each subscripted variable must have the
size of its array (i.e., the maximum values which its
subscripts can attain) specified in a DIMENSION statement preceding the first appearance of the variable
in the source program.

Expressions

An expression in FORTRAN language is any sequence
of constants, variables (subscripted or not subscripted), and functions (explained later), separated by

EXAMPLES

Expression
3
3.0
I
A
I(J)

A(J)

Type of Quantity Mode of Expression
Fixed-Point
constant
Floating-Point
constant
Fixed-Point
variable
Floating-Point
variable
Fixed-Point
subscripted
variable
Floating-Point
subscripted
variable

Fixed Point
Floating Point
Fixed Point
Floating Point
Fixed Point

Floating Point

In the last example, note that the subscript, which
must be a fixed-point quantity, does not affect
the mode of the expression. The mode of the
expression is determined solely by the mode of

the quantity itself.
FORTRAN II- D

97

2. Exponentiation of a quantity does not affect the
mode of the quantity; however, a fixed-point
quantity may not be given a Boating~point exponent. The following are valid:

will be taken to mean
A+ BOC

D

+ EF _ G

Using parentheses, the expression could be written
IOOJ
A 00 I
A oOB
The following is
100 A

Fixed Point
Floating Point
Floating Point
not valid:
(Violates the rule that a
fixed-point quantity must not
have a Boating-point exponent)

The expression A oOBooC is not permitted. It
must be written AOO(BOOC) or (AOOB)OOC,
whichever is intended.

NOTE:

3. Quantities may be preceded by a + or a - or
connected by any of the operators (+, _, 0, / ,
00) to form expressions, provided:
a. No two operators appear consecutively.
b. Quantities so connected are all of the same
mode. (Exception: Boating-point quantities
may have fixed-point exponents.)
The following are valid:

which would be taken to mean
(A+B)OC +EF-G
D
A valid expression will be evaluated when the object
program is executed. An invalid expression may result in an error message from the FORTRAN II-D processor or may result in inaccurate object program
results.

Arithmetic Statements
GENERAL FORM

where A is a variable (subscripted or not subscripted) and B represents an expression.
EXAMPLES

Q == K+1
The following are not valid expressions:
(must be written as A+( -B)
(variables are of different modes)
(must be written as 3 0 J if multiplication is intended)

A+-B
A+I

3J

4. The use of parentheses in forming expressions
does not affect the mode of the expression. Thus,
A, (A), and (( (A) )) are all Boating-point
expressions.
5. Parentheses may be used to specify the order of
. operations in an expression. Where parentheses
are omitted, the order is taken to be from left
to right as follows:
Order

1
2
3

Operation

Symbol
00

o and /
+ and-

Exponentiation
Multiplication and Division
Addition and Subtraction

For example, the expression

98

A(I) == 2(1) + SINF (C(I))
The numerical calculations to be performed in the
object program are defined by arithmetic statements.
FORTRAN arithmetic statements closely resemble conventional arithmetic formulas. They contain a variable
to be computed, followed by an equal (==) sign, followed by an arithmetic expression. In FORTRAN language, the equals sign means "is to be replaced by"
rather than "is equivalent to." For example, the arithmetic statement
Y == N - LIMIT (J-2)
means that the value in the storage area assigned to
Y is to be replaced by the value of N-LIMIT (J-2).
The equal sign description can be emphasized more
with the example of

1 == 1+1
which means that the variable I is to be replaced with
its old value plus one.

.The result of the expression is stored in fixed-point
form if the variable on the left of the equals sign is a
fixed-point variable, or in floating-point form if it is
a floating-point variable.
If the variable on the left is in fixed-point form and
the expression on the right is in floating-point form,
the result is first computed in floating-point, then
truncated (the fractional value is dropped) and converted to a fixed-point number. Thus, if the result of
an expression is 3.872, the fixed-point number stored
is 3, not 4. Likewise, the statement

GENERAL FORM

COTOn
where n is a statement number.
EXAMPLES

CO TO 1009
COT03

A coding sample is shown below:

J == AlB
~ C fOR COMMENT

where the value of A is 7,
and the value of B is 4,
produces a result of 1.
If the variable on the left is in floating-point form
and the expression on the right is in fixed-point form,
the expression will be computed in fixed-point and
then converted to floating-point before it is stored as
the new value of the variable.
Example

A=I

3

0

j

NUMMR
~

fORTRAN STATEMENT

6 ,

Ie

I~

10

15

30

J>

<)

.,

,q:~

8=.7
GO TO 6

I.B C=3.,*A
6 C=3·,*8

Meaning

A==B
I==B

A

S' ... !t,yIP\lT';:
I

B

Store the value of B in A.
Truncate B to an integer, convert to
fixed point, and store in I.
Convert I to floating-point, and store
inA.
Replace A with 3 times B.
Not permitted. The expression is mixed, i.e., contains both fixed-point
and floating-point variables.
Not permitted. The expression is

mixed.

The GO TO statement transfers the program to statement 6 where the result 21 is obtained.

Computed GO TO

This statement also indicates the statement that is to
be executed next. However, the statement number
that the program is transferred to can be altered during the program.

Control Statements

The second class of FORTRANlI-D statements is comprised of control statements that enable the programmer to state the flow of the program. Normally, statements may be thought of as being executed sequentially. That is, after one statement has been executed,
the statement immediately following is executed. However, it is often undesirable to proceed in this manner. The following descriptions discuss statements
which may be used to alter the sequence of a program.

GO TO Statement (Unconditional)

This statement interrupts the sequential execution of
statements, and specifies the number of the next statement to be performed.

GENERAL FORM

where nb n:! .. , nm are statement numbers and i is
a non-subscripted fixed-point variable.
The parentheses enclosing the statement numbers,
the commas separating the statement numbers, and
the comma following the right parenthesis are all required punctuation.
This command causes transfer of control to the 1st,
2nd, 3rd, etc.; statement in the ·list depending on
whether the value of i is 1, 2, 3, etc.

The variable i must never have a value greater than
the number of items in the list.
FORTRAN II-V

99

GENERAL FORM

EXAMPLES

Meaning
If L is 1, transfer to
statement 3.
If L is 2, transfer to
statement 4.
If L is 3, transfer to
statement 5.
If J is 1 or 2, transfer
to statement 4.
If J is 3, transfer to
statement 5.
If J is 4, transfer to
statement 2.

GO TO (3,4,5), L

GO TO (4, 4, 5, 2), J

where a is an expression and nt, n2, na are statement
numbers.
The expression must be enclosed in parentheses and
the statement numbers must be separated by commas.
The expression may be in eitheI fixed or floating
mode.
Control is transferred to statement number nb n2, na
depending on whether the value of a is less than,
equal to, OJ' greater than zero, respectively.
EXAMPLE

Further examples of the Computed GO TO and the
Unconditional GO TO statements are illustrated below:

, - - C fOR COMMENT

~srAUMlNJ
NUMBER

I

>

C

FORTRAN S TA TEMENT

~

6'

10

"

'0

"

30

H

'0

.,

~-J '1
8=4.•

IF (A - B) 10, 5, 7
which means "If the value of A minus B is less than
zero, transfer to statement 10. If the value of A minus
B is equal to zero, transfer to statement 5. If ... A
minus B is greater than zero, transfer to statement 7." .
Suppose a value, X, is being computed. Whenever
this value is negative or positive, it is desired to proceed with the program. Whenever the value is zero,
an error routine is to be followed. This may be coded
as:

C-S ••
1(=0.

J iJ<.=K+J
~
GO T.O (10•• 20,.30), K

, ---

(

fOIt COMMENT

.SJAHM( .... ' "i:

FORTRAN STATEMENT

.j

NUM8.U

,6'

Ie

I,

w

"

J

3.0

'X =(8 t C / F * * E ) - z, /

F-A-B

GO 7.0 12
20 E=A-C
G.O r.O J
JJ) /):= B- C
GO ToO J

30

J>

'0

.,

C

JF (,X) 1 O,,4-Q, 1 0

J.()

4.0

(ERROR R/)I/TINf)

12

IF (SENSE SWITCH) Statement

In the example, D, E, F are computed in that order,
and the program is transferred to statement 12. This
is a simplified example and if these were the only
computations in the program, the programmer would
simply list the arithmetic statements to compute D, E.
and F in any desired order without using the Computed GO TO statement.
IF Statement

This statement permits the programmer to change the
sequence of the statement execution, depending upon
the value of the arithmetic expression.
100

This statement permits the program to transfer to a
particular statement depending on the setting of any
one of the four Console Program Switches.
GENERAL FORM

IF (SENSE SWITCH i) nl, n2
where i is the number of one of the Console Program
Switches, and nb n2 are statement numbers.
The parentheses enclosing the words SENSE SWITCH,
and the commas separating the statement numbers
are required punctuation.
The program transfers to the statement number nl
when the designated Program switch is on, or to the
statement numbered n2 when it is off.

DO Statement

EXAMPLE

IF (SENSE SWITCH 3) 14, 10

GENERAL FORM

DO n i == mb m2
or
DO n i == mb m2, ms

which means, "If Sense Switch 3 is on, transfer to
statement 14, otherwise transfer to statement 10."
IF (OVERFLOW) Statement

This statement permits the program to transfer to a
particular statement depending on the on or off condition of the Arithmetic Overflow Check indicator.

where n is a statement number, i is a non-subscripted
fixed-point variable, and ml, m2, and ms are either an
unsigned fixed-point constant or a non-subscripted
fixed-point variable. If ms is not stated, it is understood to be 1.

GENERAL FORM

IF (OVERFLOW) nb n2
where nl and n2 are statement numbers. The parentheses enclosing the word OVERFLOW, and the comma
separating the statement numbers are required punctuation.
The program transfers to the statement numbered
nl if the Arithmetic Overflow indicator is ON, or to the
statement numbered n2 if it is OFF. When the indicator
is on, it is turned off by the interrogation.
EXAMPLE

IF (OVERFLOW) 5, 21
which means, "If the Arithmetic Overflow indicator is
on, transfer to statement 5, otherwise transfer to statement 21."
IF (EXPONENT CHECK) Statement

This statement permits the program to transfer to a
particular statement depending on the on or off condition of the Exponent Check indicator.
GENERAL FORM

IF (EXPONENT CHECK) nl, n2
where nl and n2 are statement numbers. The parentheses enclosing the words EXPONENT CHECK, and the
comma separating the statement numbers are required
punctuation. The space. between the· words EXPONENT
and CHECK is optional.
The program transfers to the statement nl if the
Exponent Check indicator is ON, or to the statement
numbered n2 when it is OFF. When the indicator is on,
it is turned off by the interrogation.

EXAMPLES

DO 30
DO 30

J == 1, 10
J == 1, K, 3

The DO statement is a command to repeatedly execcuate the statements that follow, up to and including
the statement with statement number n . , i.e., it forms
a program loop.
The statements are executed with i == ml the first
time. For each succeeding execution, i is increased
by m3' After the statements have been executed with
i equal to m2 (or as near as possible without exceeding m2), control passes to the statement following the
last statement in the range of the DO.
DO Range

The range of a DO is that set of statements which are
executed repeatedly; i.e., it is the sequence of consecutive statements immediately following the DO, up
to and including the statement numbered n.
DO Index

The index of a DO statement is the fixed-point variable
i, which is controlled by the DO in such a way that its
value begins at mb and is increased each time by m3,
up to, but not including the value which exceeds m2.
Throughout the range, the i-value is available for
computation, either as an ordinary fixed-point variable
or as the variable of a subscript. After the last execution of the range, the DO is said to be "satisfied."
Suppose for example, that control has reached
statement 10 of the program:

EXAMPLE

IF (EXPONENT CHECK) 7,15
which means, "If the Exponent Check indicator is on,
transfer to statement 7, otherwise transfer to statement 15."

10 DO 11 I == 1, 10
11 A (I) == ION (I)
12...

FORTRAN II-D

101

DO

The range of the DO is statement 11, and the index
is L The DO sets I to 1 and control passes into the
range. The value of ION ( 1) is computed, converted
to floating-point and stored in location A( 1). Since
statement 11 is the last statement in the range of the
DO and the DO is unsatisfied, I is increased to 2 and
control returns to the beginning of the range, statement 11. The value of 2 0 N(2) is then computed and
stored in location A (2). The process continues until
statement 11 has been executed with I == 10. Since
the DO is satisfied (ml == m2), control then passes to
statement 12.

,--D_O____'4
_ _ _ _)

1

4

..
~11
__- - - - - - - - - - - - -

2
5

6

DO's Within DO's

There may be other DO statements among the statements in the range of a DO. When this is so, the following rule must be observed.
If the range of a DO includes one or more other

DO's, then all of the statements in the range of the
latter must also be in the range of the former.
A set of DO'S satisfying this rule is called a «nest of
This rule is illustrated in the drawing below.
(Brackets are used to illustrate the range of a DO).

DO'S."

Permitted

Not Perm i tted

DO
DO

the DO becomes satisfied and control passes on to
the next statement after the range) the exit is· said
to be a normal exit. After a normal exit from a DO
occurs, the value of the index controlled by that DO
is not defined, and the index cannot be used again
until it is redefined. However, if the exit occurs by
virtue of a transfer out of the range, the current
value of the index remains available for any subsequent use. If the exit occurs because of a transfer
which is in the ranges of several DO'S, the current
values of all the indexes controlled by those Do'S
are preserved for any subsequent use.

Exits. When a
DO
DO

DO

CALL statement (see CALL STATEMENT)
is executed in the range of a DO, care must be taken
that the called subprogram does not alter the DO
index or indexing parameters. This applies as well
when a FORTRAN function is called for in the range
of a DO.

Restrictions on Statements in the Range of a DO.
A statement which redefines the value of the index
or of any of the indexing parameters (m's) is the
only type of statement not permitted in the range
of a DO. In other words, the indexing of a DO loop
must be completely set before the range is entered.
The first statement in the range of a DO must not be
a non-executable statement, such as END, CONTINUE,
and FORMAT statements. Also a DO loop cannot end
with a transfer statement.
Transfer of Control and DO's

Transfers of control from and into the range of a DO
are subject to the follOwing rule:
No transfer is permitted into the range of any DO
from outside its range. Thus, 1,2, and 3 are allowable
transfers in the drawing below, but 4,5, and 6 are not.

Preservation of Index Values. When control leaves
the range of a
102

DO

in the ordinary way (i.e., when

CONTINUE Statement

is a dummy statement which results in no
instructions in the object program. It is most frequently used as the last statement in the range of a
DO to provide a transfer address for IF and GO TO
statements that are intended to begin another repetition of the DO loop.
CONTINUE

exit occurs to the statement ( 13) following the

EXAMPLE

CONTINUE
As an example of a program which requires a
consider the table search:

CONTINUE.

PAUSE Statement

CONTINUE,

GENERAL FORM

PAUSE or PAUSE n
10 DO 12 I == 1, 100
IF (ARC-VALUE (I) ) 12, 20, 12
12 CONTINUE
13 ...

This program causes a scan of the l00-entry VALUE
table until it finds an entry that equals the value of
the variable ARG, whereupon it exits to statement 20
with the value of I available for fixed point use; if no
entry in the table equals the value of ARG, a normal

where n is an unsigned fixed-point constant.
EXAMPLES

PAUSE
PAUSE 33333
This statement halts the machine. Depressing the
Start key causes the program to resume execution of
the object program with the next statement. In a
PAUSE n statement, where n is a 5-digit number within
the range of valid 1620 addresses, the n can be displayed on the 1620 console in OR-2.

102.1

CALL EXIT Statement

This s.tatement is used at the end of a FORTRAN program to return control to the Monitor Control Record
Analyzer routine.
EXAMPLE

CALL EXIT

STOP Statement

PUNCH TAPE, PRINT, and TYPE statements require the
use of the FORMAT statement which is described under
the section entitled SPECIFICATION STATEMENTS.
In addition to the statements listed above, the
RECORD and FETCH statements also must include an
ordered list of the quantities to be transmitted (see
SPECIFYING LISTS OF QUANTITIES).

All FORTRAN II-D Input/Output statements cause the
object program to make use of the Supervisor I/O
routine (see section entitled I/O ROUTINES under suPERVISOR PROGRAM).

GENERAL FORM

STOP or STOP n
where n is an unsigned fixed-point constant.
EXAMPLES

STOP
STOP 33333
When the object program is executed, the machine
types STOP on the console typewriter, halts, and n c~m
be displayed as it is for the PAUSE n statement. Depressing the Start key causes control to be returned
to the Monitor Control Record Analyzer routine.
END Statement

Specifying Lists of Quantities

The input/output statements that call for transmission
of data must include an ordered list of the quantities
to be transmitted. The listed order must be the same
as the order in which the words of information exist
(for input), or the desired order for the output. '"
The formation and meaning of a list is best described by an example. Assume that the value of K
has been previously defined.

A, B(3), (C(I), D(I, K), 1 == 1, 10)
((E(I,J), I == 1, 10, 2), F(J, 3), J == 1, K)
If this list is used with an output statement, the information will be written on the output medium in this
order:

GENERAL FORM

where I is 0, 1, or 2.
EXAMPLES

END
END (1,2,0,1,1)
This statement differs from the previous control statements in that it does not affect the flow of control in
the object program being compiled. Its application is
to the FORTRAN II-D processor during compilation. An
END statement will generate a halt and branch (to the
Monitor Control Record Analyzer routine) in the
object program. The statement END (11, 12 , la, 14, 15)
is acceptable; however, the I's specified are meaningless in 1620 FORTRAN II-D.
The END statement must be the last statement
(physically) of the source program.

'nput IOutput Statements
Input statements are used to read data into core storage and output statements are used to print or punch
or store data. The READ, ACCEPT, ACCEPT TAPE, PUNCH,

A, B(3), C(l), D(l, K), C(2), D(2, K), . "
C(10), D(10, K), E(l, 1), E(3,1), . . . , E (9,1),
F( 1, 3),
E(l, 2), E(3, 2), ... , E(9, 2), F(2, 3),

...

,

E (1, K), E (3, K), . . . , E (9, K), F (K, 3)
Similarly, if this list is used with an input statement,
the successive values, as they are read from the external medium, are placed into core storage in the
indicated order. The list reads from left to right with
repetition for variables enclosed within parentheses.
Only variables, not constants, may be listed.
If such a list is used, the execution is exactly that
of a DO loop. It is as though each opening parenthesis
(except subscripting parentheses) were a DO, with
indexing given immediately before the matching closing parenthesis, and with the DO range extending up
to that indexing information. The order of the above
list can thus be considered the equivalent of the following "program":

1.
2.
3.
4.

OUTPUT A
OUTPUT B(3)
DO 5 I == 1, 10
OUTPUT C( I)
FORTRAN II-V

103

5.
6.
7.
8.
9.

OUTPUT D(I,K)
DO 9 J == 1, K
DO 8 I == 1, 10, 2
OUTPUT E (1, J)
OUTPUT F (J, 3)

Note that indexing infonnation, as in DO'S, consists of
three constants or fixed-point variables, and that the
last of these may be omitted, in which case, it is
assumed to be 1.
For a list of the form K, A( K) or of the form K,
(A( I), I == 1, K), where an index or indexing parameter itself appears earlier in the list of an input statement, the indexing will be carried out with the newly
read-in value.

Input/Output in Matrix Form

As outlined in a previous section, FORTRAN II-D treats
variables according to conventional matrix practice.
Thus, the input/output statement
READ 1, ( ( A (I, J), I

== 1, 2), J == 1, 3 )

causes the reading of I x J (in this case, 2 x 3) items
of information. The data items are read into storage
in the same order as they are found on the input
medium.

INPUT/OUTPUT OF ENTIRE MATRICES

When input/output of an entire matrix is desired,
an- abbreviated notation may be used for the list of
the input/ output statement; only the name of the
array need be given and the indexing information
may be omitted.
Thus, if A has previously been listed in a DIMENSION
statement, the statement,
READ 1,A
is sufficient to read in all the elements of the array.
The elements of the array are stored in successively
higher storage locations. (If A has not previously appeared in a DIMENSION statement, only the first element would be read in.)
Lists for the RECORD and FETCH stcltements must be
formed in the following manner:
1. Matrix Lists
If any item in the list is a matrix, all items in the
list must be matrices. All matrices will start at
the beginning of a record. Matrices written with
a matrix list must be read with a matrix list.
104

2. Element Lists
An element list may consist of anyone or more
of the following types (assume K previously
defined).
a. A
b. B(l)
c. C(l, K)
d. (B(I),D(I,K),I==I,IO)
e. ( (E (I, J), I == 1, 10, 2), F (J, 3), J == I, K)
3. The mode and order of lists must be the same
for the reading and writing of the same data.
Arrangement of Arrays in Storage

Arrays are stored "column-wise," with the first of their
subscripts varying most rapidly, and the last varying
least rapidly. Arrays which are I-dimensional are simply stored sequentially. A 2-dimensional array named
A would be stored sequentially in the order A 1,1'
A 2,1' .. " AM,l' A 1,2' A 2 ,2' •. " AM,N' A 3-dimensional
array named T would be stored in the order
T1,1,1' T 2,1,1' T 3,1,1"'" TM,I,l' T 1,2,1"'" TM,N,I' T 1,1,2'

T 2 ,},2""

,

The storage of arrays is in ascending order, i.e., the
elements are stored sequentially in locations with
ascending addresses.

READ Statement

The READ statement is used to read data into core
storage from the 1622 Card Read-Punch.
GENERAL FORM

READ n, List
where n is the statement number of a FORMAT statement and List is a list of the quantities to be read.
EXAMPLES

READ 8, A, B, C
READ 211, VOLT (I), OHM

0)

The READ statement causes data to be read from a
card and causes the quantities from the card to become the values of the variables named in the list.
Successive cards are read until the complete list has
been "satisfied," i.e., all data items have been read,
converted, and stored in the locations specified by the
list of the READ statement. The FORMAT statement to
which the READ refers, describes the arrangement of
information on the cards and the type of conversion
to be made.

ACCEPT TAPE Statement

EXAMPLE

The ACCEPT TAPE statement is used to cause data
to be read into core storage from the 1621 Paper Tape
Reader.
GENERAL FORM

PUNCH 40,

(A 0),

J ==

1, 10)

The PUNCH statement causes the object program to
punch cards in accordance with the FORMAT statement
until the complete list has been satisfied.

ACCEPT TAPE n, List
where n is the statement number of a FORMAT
statement, and List is as described under INPUT/
OUTPUT STATEMENTS.

PRINT and TYPE Statements

The PRINT statement and the TYPE statement are
used to type out data on the console typewriter.
GENERAL FORM

EXAMPLE

ACCEPT TAPE 30, K, A

0)

PRINT n, List
TYPE n, List

The ACCEPT TAPE statement causes the object program
to read information from the paper tape reader. Record after record is brought in, in accordance with
the FORMAT statement, until the complete list has
been satisfied.

where n is the statement number of a FORMAT
statement and List is as described under INPUT/OUTPUT
STATEMENTS.
EXAMPLE

PRINT 2, ( A 0),

ACCEPT Statement

The ACCEPT statement is used to allow data to be
read in from the console typewriter.
GENERAL FORM

J ==

1, 10)

The PRINT and TYPE statements cause output data to
be typed on the console typewriter. A carriage return
occurs and successive lines are typed in accordance
with the FORMAT statement, until the complete list
has been satisfied.

ACCEPT n, List
where n is the statement number of a
ment, and List is as described under

FORMAT

state-

INPUT/OUTPUT

STATEMENTS.
EXAMPLE

PUNCH TAPE Statement

The PUNCH TAPE statement is used to cause data to
be punched by the 1624 PAPER TAPE PUNCH.
GENERAL FORM

ACCEPT 20, A, B, C, D (3)

PUNCH TAPE n, List

The ACCEPT statement causes the object program to
return the carriage of the console typewriter to await
the entrance of data. The information is entered in
accordance with the FORMAT statement until the complete list has been satisfied.

where n is the statement number of a
ment, and List is as described under

The PUNCH statement is used to cause data to be
punched out in cards by the 1622 Card Read-Punch.
GENERAL FORM

state-

INPUT/OUTPUT

STATEMENTS.
EXAMPLE

PUNCH TAPE 25, ( A 0),
PUNCH Statement

FORMAT

J ==

1, 10)

The PUNCH TAPE statement causes information to be
punched by the paper tape punch.
Successive records are punched in accordance with
the FORMAT statement until the complete list has been
satisfied.

PUNCH n, List
where n is the statement number of a
ment, and List is as described under
STATEMENTS.

FORMAT

state-

INPUT/OUTPUT

FIND Statement

This statement is used to position the disk access arm
over a cylinder.
FORTRAN II-D

105

GENERAL_ FORM

FIND

(I)

where I specifies the record number where reading or
writing will start. The parameter I must be either:
1. A nonsubscripted fixed-point variable.
EXAMPLE

FIND

(IMAX)
or

2. A subscripted fixed-point variable.

of (I) is incremented by one and reading proceeds
from the next sequential record. This procedure continues until either the list has been "satisfied," i.e.,
until the data for all the variables in the list has been
read in, or until the end of the area specified by N 2
(see DEFINE DISK) has been reached. At the conclusion
of a read operation, the value of I is one greater than
the number of the last record read. The parameter
( I) is the same as described for the FIND (I) statement.
The compiled instructions for the FETCH statement
cause control to be transferred to the Monitor Input/
Output routine (see Supervisor section).

EXAMPLE

FIND

RECORD Statement

(IMAX( 3 ) )

The FIND statement causes the disk access arm to be
positioned over a cylinder which will subsequently
be read from or written on. The FIND statement may
precede a FETCH or RECORD statement that contains
the same I parameter, and, in this manner, takes advantage of additional processing time while the access
arm is moving.
The record numbers (I) start at 1, and correspond
to every sector if one-sector records are specified in
the DEFINE DISK statement; if two-sector records are
specified, the record numbers correspond to every
second sector.
Only areas of disk storage within the area defined
by a DEFINE DISK statement can be specified by a
FIND.
FETCH Statement

This statement is used to read data from the 1311
Disk Storage Drive.
GENERAL FORM

FETCH (I) List
where I specifies the record number and List is as
described under INPUT/OUTPUT STATEMENTS.
EXAMPLE

FETCH (IMAX (3) ) (A (J),

J == 1, 10)

The FETCH statement may be preceded by a FIND
statement containing the same I parameter. When the
FETCH statement is executed, a check is performed to
determine if the access arm is positioned over the
proper cylinder. If the access arm is properly positioned, reading begins; if it is not, a seek is initiated
(seek time is not available for computation).
The data designated by the list is read from the
record specified by (I). If the list specifies more items
than can be obtained from one record, then the value
106

This statement is used to write dat-a on the 1311 Disk
Storage Drive.
GENERAL FORM

RECORD (I) List
where I specifies the record number and List is as
described under INPUT/OUTPUT STATEMENTS.
EXAMPLE

RECORD (IMAX (3) ) (A (J), J == 1, 10)
The RECORD statement may be preceded by a FIND
statement containing the same I parameter. When the
RECORD statement is executed, a check is performed
to determine if the access arm is positioned over the
proper cylinder. If the access arm is properly positioned, writing begins; if it is not, a seek is initiated (seek
time is not available for computation).
The data designated by the list is written in the
record specified by (I). If the list specifies more items
than can be contained in one record, then the value
of (I) is incremented by one and writing proceeds to
the next sequential record. This procedure continues
until either all items in the list have been written or
until the end of the area specified by N 2 (see DEFINE
DISK) has been reached. At the conclusion of a write
operation, the value of I is one greater than the number of the last record written. The parameter (I) is
the same as described for the FIND (I) statement.
The compiled instructions for the RECORD statement
cause control to be transferred to the Monitor Inputl
Output routine (see Supervisor section).
Specification Statements

The SPECIFICATION statements supply necessary information to the FORTRAN processor, or information to increase program efficiency. No executable instructions
are created in the object program for a SPECIFICATION
statement.

DIMENSION. Statement

The DIMENSION statement provides the information
necessary to allocate storage for arrays in the object
program.
GENERAL FORM

DIMENSION v, v, v, ...
where each v is the name of a variable subscripted
with 1, 2, or 3 unsigned fixed-point c;nstants. Any
number of v's may be given.
EXAMPLE

DIMENSION A(10), B(5, 15), CVAL (3,4,5)
Each variable which appears in subscripted form
in a program or subprogram must appear in a DIMENSION statement of that program or subprogram; the
DIMENSION statement must precede the first appearance of that variable. The DIMENSION statement lists
the maximum dimensions of arrays; in the object program, references to these arrays must never exceed
the specified dimensions.
The above example indicates that B is a two-dimensional array for which the subscripts never exceed 5
and 15. The DIMENSION statement, therefore, causes
75 (i.e., 5 x 15) fields to be set aside for the array B.
A single DIMENSION statement may specify the dimensions of a number of arrays. The maximum number is limited by the number of continuation cards
permitted. A program must not contain a DIMENSION
statement which includes the name of the program itself, or any program which it calls. If any of the subscripts in a DIMENSION statement exceeds 9999, an
error will be indicated.

locations to be shared by two or more variables. The
statement should not be used to obtain
mathematical equality between two or more elements.
If fixed-point and floating-point variables are equivalenced, their word lengths must be the same, i.e.,
f + 2 must equal k.
An EQUIVALENCE statement may be placed anywhere
in the source program, except as the first statement in
the range of a DO. Each pair of parentheses of the
statement list encloses the names of two or more
quantities which are to be stored in the same locations during execution of the object program; any
number of equivalences may be given.
In an EQUIVALENCE. statement, a term such as C (P)
can be defined as p>O to mean the pth location of
the C array. For example, C (5) would be the fifth
location in the C array. Note that in an EQUIVALENCE
statement a two- or three-dimensional array must be
referenced by a linear subscript (a single subscript
notation which denotes the element of an array regardless of how the array is dimensioned). If p is not
specified, it is understood to be 1.
Thus, the example indicates that the A, B, and C
arrays are to be assigned storage locations such that
the elements A ( 1 ), B ( 1 ), and C ( 5) are to occupy the
same location. In addition, it specifies that D ( 17) and
E ( 3) are to share the same location.
Quantities or arrays which are not mentioned in an
EQUIVALENCE statement are assigned unique locations.

EQUIVALENCE

COMMON Statement
Variables, including arrays, appearing in COMMON
statements are assigned to specific storage locations.
Storage is assigned separately for each program
compiled.
GENERAL FORM

COMMON A,B ...

EQUIVALENCE Statement

The EQUIVALENCE statement provides one method of
controlling the allocation of data storage in the object
program.

where A, B ... are the names of variables and nonsubscripted array names.
EXAMPLE

COMMON X, ANGLE, MATA, MATB
GENERAL FORM

EQUIVALENCE (a, b, c, ... ), (d, e, f, ... ) ,

...

where a, b, c, d, e, f, . . . are variables that may be .
subscripted with constants only.
EXAMPLE

EQUIVALENCE ( A, B(I), C(5) ), ( D (17), E(3) )
When the logic of the program permits, the number
of storage locations used can be reduced by causing

The COMMON storage area may be shared by a program and its subprograms. In this way, the COMMON
statement enables a data storage area to be shared
between programs in a way analogous to that by
which the EQUIVALENCE statement permits data storage-sharing within a single program. Where the logic
of the programs permits, this can result in a large
saving of storage space.
Array names appearing in the COMMON statement
must previously have appeared in a DIMENSION statement in the same program.
FORTRAN II-V

107

The COMMON storage area is located at the high end
of core storage, starting with address 19999, 39999 or
59999. Variables in a COMMON statement are assigned
storage locations in descending sequence. For example:

A diagnostic error message results if either Rule
1 or 2 is violated.

Arguments in Common Storage

COMMON A, B, C
With f = 10, A, B, and C would be stored in locations
19999, 19987, and 19975 and similarly for 40,000 or
60,000 positions. If C is dimensioned as C ( 10), then
19975 is the address of C ( 10), which is the last element in the array, and 19867 is the address of C( 1).
The COMMON statement takes precedence over the
EQUIVALENCE statement. Due to the complex interaction of these two statements, the programmer must
adhere to the foIlowing two rules:
1. Variables which are to be placed in COMMON
storage must be assigned prior to any EQUIVALENCE statement containing these variables. For
example,

COMMON A
EQUIVALENCE (A, B, C)
The order in which the variables appear in the
EQUIVALENCE statement is irrevelent and rule 1
applies if the COMMON variable is B or C.
2. Within an EQUIVALENCE list there may be no
more than one variable which previously has
been:
a. equivalenced, or
b. placed in COMMON.
The foIlowing sequence of statements is invalid:

EQUIVALENCE (A, B, C)
EQUIVALENCE (X, Y, Z)
EQUIVALENCE (A, Z)
COMMON
D
EQUVALENCE (D, X, P)

Violates (a) above
Violates combination of ( a) and
(b)

The sharing of storage locations desired in the
above statements can be achieved by writing the
statements as foIIows:

COMMON
Jj
EQUIVALENCE (D, X, P)
EQUIVALENCE (A, B, C, X)
EQUIVALENCE (X, Y, Z)
or

COMMON
D
EQUIVALENCE (D, A, P, B, C, X, Y, Z)
108

COMMON statements may be used as a medium for
transmitting arguments from the caIling program to
the called FORTRAN function or SUBROUTINE subprogram. In this way, they are implicitly, rather than
explicitly transmitted as when listed in the parentheses
foIlowing the subprogram name.
To obtain implicit arguments, it is necessary to have
only the corresponding variables in the two programs
occupy the same location. This can be accomplished
by having them occupy corresponding positions in
COMMON statements of the two programs. For example, (A, B, C) and (E, F, G) become implicit arguments when the calling program contains the statement COMMON A, B, C, and the called subroutine
contains the statement COMMON E, F, G.
NOTES:
1. To force correspondence in storage locations between two variables in different programs which
otherwise would occupy different relative positions in COMMON storage, it is valid to place
dummy variable names in a COMMON statement.
These dummy names, which may be dimensioned, will cause reservation of the space necessary
to cause correspondence.

2. While implicit arguments can take the place of
all arguments in CALL-type subroutines, there
must be at least one explicit argument in a
FORTRAN function. Here, too, a dummy variable
may be used for convenience.
When one variable is EQUIVALENCED to a second variable which appears in a COMMON statement, the first variable is also located in COMMON
storage.

DEFINE DISK Statement

The DEFINE DISK statement specfies to the FORTRAN
processor the size and quantity of data records that
wiIl be used with a particular program and its associated subprograms. This statement must appear in the
main program (or link program) and may appear only
once in that program, when Disk I/O statements appear in any part of the program or subprograms.
Thus, all subprograms used by that main program or
link program must use the same size record defined
in the statement.

GENERAL FORM

where the parameters Nl and
follows:

N~

are defined as

Nl - a fixed-point constant which specifies the
number of words contained in a record of data.
The value chosen for N 1 depends upon two
things: (1) the word length (w) specified when
the program was compiled, and (2) whether the
user wants the length of a record of data to be
one or two physical sectors.

The value (N 1) is determined by following two rules:
If w times (N 1) L 100, then the record length
will be one disk sector.
If w times (N 1) is more than 100 and L 200,
then the record length will be two disk sectors.
For example, assume that the word lengths specified
at compile time were 8 for floating-point numbers (f)
and 4 for fixed-point numbers (k). Since a record
might contain all floating-point or all fixed-point numbers (words), the larger of the two specified word
lengths must be used to determine w. In this example, the floating-point length is the larger of the
two wot.d, iengths; its total length is 10 (word length
== f 2). Therefore, if a data record is to be contained in one physical disk sector (100 disk locations),
then N 1 must be in the range of 1 to 10. An N 1 of 10
would be making the most efficient use of the available disk storage. In this example, if the length of a
data record is to be two physical disk sectors, then
Nl would be in the range of 11 to 20. A data record
may not be greater than 2 sectors (200 digits).

+

If arrays are read or written, the variables are not
moved to a buffer area before going to or coming
from the disk provided that both f and k are even in
length. In this case, a group mark is placed at the
end of the array before writing to disk. If 10-digit
variables are used, the most efficient use of the disk
would be with arrays containing 9, 19, 29, 39, etc.
variables, so that the group mark is placed in the
same sector as the variables to be recorded.

N2 - a fixed-point constant which specifies the number of data records that will be used by this main
program and its associated subprograms. N2 is used
by the compiler to reserve a portion of the specified
work cylinder area (see DEFINE PARAMETERS ROUTINE

in the DISK UTILITY PROGRAM section of this manual) for the purpose of transferring data to and
from disk storage. The number of sectors that the
compiler will reserve depends upon the record
length specified by N 1 • If one-sector records are
specified, then N2 sectors will be reserved; if twosector records are specified, then 2 times N2 sectors
will be reserved.

FORMAT Statement

The FORMAT statement is used to describe the format
of data being transmitted to and from the typewriter,
card, or paper tape units.
GENERAL FORM

FORMAT

(Sl' •. ,

sn)

where Sl is a format specification. The FORMAT specifications must be separated by commas, slashes, or
left parentheses.
EXAMPLE

FORMAT (12/ (EI2.4, FI0.4) )
The Input/Output statements, in addition to the
list of quantities to be transmitted, contain the statement number of a FORMAT statement describing the
information format to be used. The FORMAT statement
also specifies the type of conversion to be performed
between the internal machine language and the external notation. FORMAT statements are not executable:
their function is merely to supply information to the
object program. Therefore they may be placed anywhere in the source program (except as the first statement in the range of a DO).
For the sake of clarity, examples given in this section are for typing on the console typewriter. However, the description is valid for any input/ output
unit simply by generalizing the concept of "typewritten line" to that of the unit record in the selected
input/output unit. Thus, a unit record may be:
1. A typewritten line with a maximum of 87 characters.
2. A punched card with a maximum of 80 characters.
3. A paper tape record with a maximum of 87
characters. (The input record length may be
variable up to 87; the output record length i~
fixed at 87.)

FORTRAN II-D

109

Numerical Fields

Alphameric Fields

Three forms of conversion for numerical data are
available:

FORTRAN II-D provides a method by which alphameric
information may be read or written.
The specification for this purpose, wH, is followed
in the FORMAT statement by w alphameric characters.
For example:

FROM/TO
INTERNAL

TO/FROM
EXTERNAL

TYPE

Floating-point
variable

E

Floating -point
variable

F

Fixed-point
variable

I

Floating-point
number with
exponent
Floating-point
number without
exponent
Integer

24H THIS IS ALPHAMERIC DATA
Note that blanks are considered alphameric characters
and must be included as part of the count w.
Information handled with the H specification is not
given a name and may not be referred to or manipulated in storage in any way.
The effect of wH depends on whether it is used
with input or output.
1. Input, w characters are extracted from the input
record and replace the w characters included
with the specification.
2. Output. The w characters following the specification, or the characters which replaced them,
are written as part of the output record. Blanks
are not ignored in an H specification as they are
elsewhere.
For example: The statement FORMAT (3HXY
F8.3) could produce any of the following lines:

These types of conversion are specified in the forms:

Ew.d, Fw.d, and Iw.
where wand d are unsigned fixed-point constants.
Format specifications are used to describe the input
and output format. The format is specified by giving,
from left to right, beginning with the first character
of the record;
1. The control character (E, F, or I) for the field.
2. The width (w) of the field. The value of w must
be large enough to include the field d, plus
spaces for a sign and the decimal point. In addition, four spaces for the exponent are needed
in E-type conversion. The width specified may
be greater than required to provide for spacing
between numbers.

XY
XY
XY

3. For E- and F-type conversions, the number of
decimal positions (d) (of the field) which appear to the right of the decimal point.
Specifications for successive fields are separated by
commas. No format specification should be given that
provides for more characters than the input/output
unit record. Thus, a FORMAT statement for typewriter
output· should not provide for more than 87 characters
per line, including blanks. For example: the statement FORMAT (12, E12A, F10A) might cause the 'following line to be typed:

12

E12.4

,-I'-..

A

FJO.4
Ii

•

,

b 7 - 92. 3 100 E + 0 0 b b b b - • 0 0 7 6

(In these examples, b is included to indicate blank
spaces. )
110

I

==
==
==

b-93.210
b999.999
bb28.768

Another alphameric specification, Aw, causes w
alphameric characters to be read into or written from
a variable or array name. Since each alphameric character is represented in core storage by two decimal
digits, w must be less than, or equal to, the largest
whole number resulting from k/2 or f /2, depending
on whether the variable or array name is fixed or
floating. If k or f is odd, a zero will be supplied as the
least significant digit for the field in core storage. To
facilitate manipulation of alphameric fields which are
stored as floating-point numbers, the numbers will
have zero as an exponent. This will have no effect on
input/output. However, if the first character in a field
is a blank, decimal point, or close parenthesis, the
field will be treated as zero in the floating-point arithmetic subroutines.

Blan k Fields

Blank charaCters may be provided in-an output record, and characters of an input record may be skipped, by means of the specifications wX where OL w L
87 (w is the number of blanks provided or characters
skipped). When the specification is used with an in-

put record, w characters are considered to be blank,
regardless of what they actually are, and are skipped
over.

right justified in the output field. If f is larger than
w-2, only w-2 digits will appear in the output.
The X specification should be used to space fields
in the E-type format. In the statement
E16.8, IX, E16.8, IX, E16.8

Repetition of Field Format

It may be desired to print n successive fields within
one record, in the same fashion. This may be specified by giving n (where n is an unsigned fixed-point
constant which must be S;99) before E, F, I, or A.
Thus, the statement FORMAT (12, 3E12.4) might result
in:

27 - 92.3l00E

+ 00b75.8000E -

a space will be provided between adjacent fields.
A field read according to the E-type format need
not have the exponent E( - )XX; i.e., it may actually
take the same form as the F -type format.
The P-scale factor may be used in a specification
but it will be ignored by the FORTRAN II-D processor.

02b55.3600E - 02
Multiple Record Formats

Repetition of Groups

A limited parenthetical expression is permitted in order to enable repetition of data fields according to
certain format specifications within a longer FORMAT
statement specification. Thus, FORMAT (2( FlO.6,
ElO.2), 14) is equivalent to FORMAT (FlO.6, ElO.2,
FlO.6, ElO.2, 14). The number of repetitions is limited to a maximum of 99.

Scale Factors

The E-type specification implies a scale factor. Therefore, E16.8 for an output field will result in the printing or punching of a maximum of ten significant digits
in the form (- ) XX.XXXXXXXXE ( - )XX. A maximum of f digits can be placed to the right of the
decimal point if the d specification is greater than f.
In this case, d-f low-order zeros will be inserted to
satisfy the d specification. The following guide may
be used when working with E-type specifications.
1. If f (floating-point, precision) L w-6, then
significant digits will be printed or punched.

f

2. If f >w-6, then w-6 significant digits will be
printed or punched. For example, if f == 10 and the
floating-point number is stored as 123456789135, it
will be printed as -12.3456789lE-37, according to
specification E16.8.
The F -type specification also implies a scale factor.
Therefore, F16.8 for an output field will result in the
printing or punching of a maximum of fourteen significant digits in the form (-) XXXXXX.XXXXXXXX.
However, a maximum of f digits will be placed to
the right of the decimal point and the result will be

To deal with a block of more than one typewritten
line, a FORMAT specification may have several different one-line formats, separated by a slash (/) to indicate the beginning of a new line. Thus, FORMAT
(3F9.2, 2Fl0.4/8E14.5) specifies a multiline typewritten block in which line 1 has format 3F9.2 and 2FI0.4,
and line 2 has format 8E14.5.
If a multiple-line format is desired, such that the
first two lines are typed according to a special format
and all remaining lines are typed according to another format, the last line specification should be enclosed in a second pair of parentheses; e.g., FORMAT
(12, 3E12.4/2FlO.3, 3F9.4/ ( 10F12.4) ). If data items
remain to be transmitted after the last line format specification has been completely satisfied, the format
repeats from the last left parenthesis.
As these examples show, both the slash and the
closing parenthesis of the FORMAT statement indicate
a termination of a record.
Blank lines may be introduced into a multiline
FORMAT statement by listing consecutive slashes.

Format and Input/Output Statement Lists

The FORMAT statement indicates, among other things,
the maximum size of each record to be transmitted. In
this connection it must be remembered that the
FORMAT statement is used in conjunction with the list
of some particular input/ output statement, except
when a FORMAT statement consists entirely of alphameric fields. When the FORMAT statement is used
with the list, control in the object program switches
back and forth betwen the list (which specifies whether data remains to be transmitted) and the FORMAT
statement (which gives the specifications for transmission of that data) .
FORTRAN II-D

111

Automatic Fix/Float

During execution of input/output statements, it is
permissible to read a fixed-point argument into a
floating-point field or a floating-point argument into
a fixed-point field, and to write from a floating-point
field in a fixed-point format or from a fixed-point field
in floating-point format. During reading, the format
specification dictates the data conversion, and the
list designation controls the mode of storing the argument. During writing, the format specification dictates the mode of the field printed or punched.
Ending

a Format Statement

During input/output of data, the object program
scans the FORMAT statement to which the relevant
input!.output statement refers. When a specification
for a numerical field is found and list items remain to
be transmitted, input! output takes place according
to the specification, and scanning of the FORMAT statement resumes. If no items remain, transmission ceases
and execution of that particular input/output statement is terminated. Thus, a numerical input/output
operation will be brought to an end, when a specification for a numerical field or the end of the FORMAT
statement is encountered, and there are no items remaining in the list.
Data Input to the Obiect Program

Input data to be read when the object program is executed must be in essentially the same format as given
in the previous examples. Thus, a card to be read according to FORMAT ( 12, E12.4, F10.4) might be
punched:
27b-O.9321Eb02bbb-O.OO76
Within each field, all information must appear at
the extreme right. Plus signs may be omitted or indicated by a b (blank) or +. Blanks in numerical
fields are regarded as zeros, but zeros may not be
substituted for blanks. For example, a sign cannot
be preceded by zeros. Numbers for E-type and F-type
conversion may contain any number of digits, but only
the high-order f digits are retained. Numbers for
I-type conversion may not contain more than k significant digits. The concept of f and k is treated
in this manual under CONSTANTS, VARIABLES, SUBSCRIPTS,
AND EXPRESSIONS.

To permit economy in punching, certain relaxations
in input data format are permitted.
1. Numbers of E-type conversion need not have
four columns devoted to the exponent field. The
112

start of the exponent field must be marked by an
E, or if the E is omitted, by a + or - (not a
blank). Thus E2, E02, +2, 02, Eb02, and E+02
are all permissible exponent fields. Blanks are
not permitted between characters in the exponent field except for the optional blanks which
may replace a plus sign. Numbers for E-type
conversion must be right-justified in the data
record field.
2. Numbers for E-type or F-type conversion need
not have their decimal points punched. If not
punched, the FORMAT specification will supply
them; for example, the number -09321 +2 with
the specification E12.4 will be treated as though
the decimal point has been punched between the
o and the 9. If the decimal point is punched in
the card, its position overrides the indicated position in the FORMAT specification.

Library Functions
There are seven library functions (which are a part
of 16 FORTRAN relocatable subroutines) included in
the 1620 Monitor II system. These subroutines are
selected for loading only when called for in the object
program. The functions are:
TYPE OF FUNCTION
Logarithm (natural)
Exponential
Cosine of an angle given
in radians
Sine of an angle given
in radians
Arctangent of an angle
given in radians
Square Root
Absolute Value

FORTRAN NAME
LOGF
EXPF
COSF
SINF
ATANF
SQRTF
ABSF

The name of the library function is followed by the
argument enclosed in parentheses. The argument can
be a variable (subscripted or not subscripted), or an
expression.
EXAMPLES

A == COSF (B)
A == SQRTF (BETA)
Y == A - SINF (BO SQRTF (C) )
For the last example, the assembled instructions of
the object program will:
1. Branch to the square root subroutine to compute
the value of C.
2. Multiply the square root value of C (obtained
in step 1) by B.

3. Branch to the SINF subroutine to compute the
sine of the value obtained from step 2.
4. Subtract the value computed so far from the
variable A.
5. Replace the present value of the variable Y with
the value of the complete expression.

Results of the library subroutines are truncated, and,
in general, errors are no greater than one in the last
digit of the mantissa. Approximation methods and
errors for functional subroutines are described in
greater detail in the following paragraphs.
1. Logarithm. The natural logarithm of the fractional part of the positive argument is evaluated
by using a power series expansion. The exponent
of the argument is multiplied by In 10. The product is added to the logarithm of the fraction, and
the sum is the logarithm of the argument. For
an argument with its value A in the range
.99< A L.. 1.01, the leading digits of its logarithm
will be zeros, and the result will contain less
than f significant digits because of normalization.
The maximum truncation error in the result is
± lQ-f.
2. Exponential. The value of eA where A is the
value of the argument, is calculated by using a
series approximation for lOA. For IAI
227.955924206 ... an exponent overflow will result for A>O or exponent underflow for A for
four

FUNCTION subprogram

Same
for
three

Individual

} Sa_
for

...

two
SUBROUTINE subprogram

Individual
.)

Dummy Variables within an Arithmetic
Statement Function

A variable appearing as a dummy argument within an
arithmetic statement function must not previously
have been defined except as a dummy argument in a
previous arithmetic statement function. After the variable is used as a dummy argument, it may appear
elsewhere in the program.

Subprogram Statements
Subroutines which are referred to by other FORTRAN
programs can be written as subprograms in the
FORTRAN II-D language. A subroutine is considered to
be any sequence of instructions that performs a desired operation. A subprogram is defined as a program
written in FORTRAN language that is referred to or
used by another FORTRAN source program.
Two types of FORTRAN II-D coded subprograms are
available: the FUNCTION subprogram and the SUBROUTINE subprogram. Four statements, SUBROUTINE, FUNCTION, CALL, and RETURN, are necessary for their definition and use.
Although FUNCTION subprograms and SUBROUTINE
subprograms are treated together and may be viewed
as similar, it must be remembered that they differ in
two fundamental respects:
1. The FUNCTION subprogram, which results in a
FORTAN function, as defined under FUNCTIONS, is
always single-valued, whereas the SUBROUTINE
subprogram may be multivalued.
2. The FUNCTION subprogram is called or referred
to by the arithmetic expression containing its
name; the SUBROUTINE subprogram can only be
referred to by a CALL statement (see CALL STATE-

The function name consists of 1 to 6 alphabetic or
numerical characters, the first of which must be alphabetic.
EXAMPLES

FUNCTION ARCSN (RADS)
FUNCTION ROOT (B, A, C)
FUNCTION INTRT (RATE, YEARS)
In a FUNCTION subprogram, the name of the function must appear either in an input statement list, or
at least once as the variable on the left-hand side of
an arithmetic statement. An example of the latter is:

II-D

MENT).

Subprograms of each of these two types are coded
in FORTRAN II-D language. In all respects, they conform to the rules for FORTRAN programming.
FUNCTION Statement

The FUNCTION statement, always first in a FUNCTION
subprogram, defines it as. a FORTRAN FUNCTION subprogram.

FUNCTION NAME (A, B)

RETURN
The value of the function is returned to the calling
program. The mode of a function subprogram is determined by its name.
EXAMPLES

FUNCTION AMAST (A, K) Floating point
FUNCTION IAMAST (A, K) Fixed point
The arguments following the name in the FUNCTION
statement may be considered as "dummy" variable
names, that is, during object program execution other
actual arguments are subsituted for them. Therefore,
the arguments which follow the function reference in
the calling program must agree in number, order, and
mode with those in the FUNCTION statement in the
subprogram. Furthermore, when a dummy argument
is an array name, the corresponding actual argument
must also be an array name. Each of these array
names must appear in similar DIMENSION statements
within its respective program. N one of the dummy
variables may appear in EQUIVALENCE statements
in the FUNCTION subprogram.

GENERAL FORM

SUBROUTINE Statement

FUNCTION Name (aI, a2, ... , an)
GENERAL FORM

where Name is the symbolic name of a single-valued
function, and each argument aI, a2, ... ,an, of which
there must be at least one, is a nonsubscripted variable
name.

SUBROUTINE N ame ( aI, a 2 ,

••• ,

an )

where Name is the symbolic name of a subprogram,
FORTRAN IJ-D

115

and each argument, aI, a:z. ... ,an, if any, is a nonsubscripted variable name. The name of the subprogram consists of 1 to 6 alphabetic or numerical characters, the first of which must be alphabetic.

compiled or used in a multiple compilation with
others.

CALL Statement
EXAMPLES

SUBROUTINE MATMP (A, N, M, B, L, C)
SUBROUTINE QDRT (B, A, C, ROOT 1, ROOT 2)
The

statement, always first in a SUBROUsubprogram, defines it as a SUBROUTINE subprogram. A subprogram introduced by the SUBROUTINE
statement must be a FORTRAN program and may contain any FORTRAN II-D statements except FUNCTION,
DEFINE DISK, or another SUBROUTINE statement.
A SUBROUTINE subprogram must be referred to by
a CALL statement in the calling program. The CALL
statement specifies the name of the subprogram and
its arguments.
Unlike the FUNCTION subprogram which results in
the calculation of only a single numerical value, the
SUBROUTINE subprogram uses one or more of its arguments to return results. Therefore, the arguments so
used must appear on the left side of an arithmetic
statement in the subprogram (or alternately, in an
input statement list within the subprogram).
The arguments of the SUBROUTINE statements are
dummy names that are replaced, at the time of execution, by the actual arguments supplied in the CALL
statement. There must, therefore, be correspondence
in number, order, and mode, between the two sets
of arguments. Furthermore, when a dummy argument
is an array name, the corresponding actual argument
must also be an array name. Each of these array
names must appear in similar DIMENSION statements
within its respective program.
SUBROUTINE

The CALL statement refers only to the SUBROUTINE subprogram, whereas the RETURN statement is used by
both the FUNCTION and SUBROUTINE subprograms.
GENERAL FORM

TINE

CALL Name (a 1 , a:!, ... , an)
where Name is the name of a SljBROUTINE subprogram,
and al, a:!, ... , an are arguments.

EXAMPLES

CALL MATMP (X, 5, 10, Y, 7, Z)
CALL QDRT (po9.732, Q/4.536, R-soo2.0, Xl, X2)
This statement is .used to call SUBROUTINE subprograms; the CALL transfers control to the subprogram
and presents it with the parenthesized arguments.
Each argument may be one of the following types:
1. Fixed-point constant.
2. Floating-point constant.
3. Fixed-point variable, with or without subscripts.
4. Floating-point variable, with or without subscripts.
5. Arithmetic expression.
The arguments .presented by the CALL statement
must agree in number, order, mode, and array size
with the corresponding arguments in the SUBROUTINE
statement of the called subprogram, and none of the
arguments may have the same name as the SUBROUTINE subprogram being called.

For example, the subprogram headed by
SUBROUTINE MATMP (A, N, M, B, L, C)
could be called by the main program through the
CALL statement
CALL MATMP (X, 5, 10, Y, 7, Z)

RETURN Statement
EXAMPLE

RETURN
where the dummy variables, A, B, C, are the names
of matrices. A, B, C must appear in a DIMENSION
statement in subprogram MATMP, and X, Y, Z must
appear in a DIMENSION statement in the calling progr~m. The dimensions assigned must be the same in
both statements.
None of the dummy variables may appear in
EQUIVALENCE statements in the SUBROUTINE subproprograms. These subprograms may be independently
116

This statement terminates any subprogram of the
type headed by either a SUBROUTINE or a FUNCTION
statement, and returns control to the calling program.
A RETURN statement must, therefore, be the last executed statement of the subprogram. It need not be
the last statement of the subprogram physically, but
can be any point reached by a path' of control. Any
number of RETURN statements may be used.

CALL LINK Statement

This statement is used to call a new program from
disk storage and transfer to the first executable statement in that program.
GENERAL FORM

CALL LINK (NAME)
where NAME is the name of a FORTRAN program as
contained in the Equivalence table. The program
name must be formed with one to six alphabetic or
numerical characters (no special characters) of which
the first is alphabetic.
EXAMPLES

CALL LINK (JOE)
CALL LINK (PROG18)
The CALL LINK statement is used to call another program into core storage. The program that is called will
cause all subprograms and library subroutines that
it references to be read into core storage (the arithmetic and I/O subroutines are also reloaded). Any
program called by using the CALL LINK statement must
be in disk storage or it is assumed that the '1ink" program is the first mainline program encountered by
the system input unit. If the logic of the program
allows one of several links to possibly be called, it
is necessary that the link programs be on disk storage.
If a subprogram is not available (in disk storage)
that the "link" program references, the FORTRAN loader will request that the missing subprogram be loaded into core from cards or paper tape.
Only 50 links that call LOCAL subprograms can appear in anyone FORTRAN job.
The COMMON area is not destroyed during the
loading of the link programs. If the size of COMMON
differs (between the calling program and.the link program being called), the COMMON area size will be the
size defined for the new program.

FORTRAN II-D Processor
The 1620 FORTRAN II-D Processor program is used to
change a user-written FORTRAN source program into
an obiect program of 1620 machine language instructions. All programs are compiled in relocatable format, i.e., the program instruction addresses are compiled relative to a starting address of 00000. The instruction addresses must be modified before execution
can take place.
The processor operates under control of the Monitor Supervisor program. It can be called into operation only by use of the FOR or FORX Monitor Control
records.

'The Monitor II system permits the follOwing
operations:

FOR-

TRAN

1.
2.

source program compilation.
source program compilation and immediate execution of the compiled program. From
the programmer's point of view, this is equivalent to entering a source program into the machine as an object program.
FORTRAN

FORTRAN

3. Object programs may be placed in disk storage
after compilation and/or they may be punched
in cards or paper tape.
4. Execution of FORTRAN object programs that are
in disk storage or are in cards or paper tape.
5. Execution of programs in "links," a procedure
necessary where the total program is too large
to fit into core storage at one time. A "link" is a
section of the total program ( see CALL LINK
STATEMENT) •

General Compilation Process
Although the process of compiling an object program
is a continuous one, there are two phases through
which the source statements pass before an object
program is compiled. The user enters the source statements using cards, paper tape, or typewriter input
and obtains output in cards, paper tape, or on the
typewriter or disk storage. The input and output
units are selected by the use of control records. The
object program may be placed permanently on disk
and it may be punched out in either paper tape or
cards.
The source statements are analyzed during Phase
I and broken apart into instruction generating elements that are strings of 5-digit codes. These strings
are then written on disk storage for use by Phase II,
which outputs the 1620 coding in relocatable format.
Errors are indicated on the console typewriter as
they are detected. The final output of any compilation
is a Single program or subprogram. Unless this program is an independent entity, capable of being
executed without other programs or library functions,
the user will need to load the other programs before
execution can take place. To initiate the loading
process, the user may (1) call the compiler with a
FORX Control record, or (2) call the compiled program using an XEQS Control record (see MONITOR II
CONTROL RECORDS). A program loaded by means of a
FORX or XEQS Control record will also have all associated subroutines and subprograms loaded with it.
(All associated subprograms are loaded except those
defined as '1oad-on-call"; see LOCAL CONTROL RECORD).
FORTRAN II-V

111

The arrangement for stacked input to process \
source program is shown in Figure 14. the FOR or
FORX Monitor Control record is followed by optional
FORTRAN Control records, followed by the source program. The inclusion of a PAUS Monitor Control record
will allow the operator to set the Console Program
switches to the desired position (options for Program
switches are shown in Table 9.) Mter setting the
switches, the operator depresses START and the Supervisor reads the FOR or FORX record, the FORTRAN Control records, if any, and begins compilation of the
source program.
During Phase I (reading the source program and
creating instruction generating elements, the Phase
I source program errors that are listed in Table 10 may
be detected. The Phase I errors are of two types:
Type I, compilation continues, but outputting of
intermediate output is stopped; Type II, compilation
and outputting both continue.
When all source statements have been read and the
instruction generating elements entered in the temporary storage area, Phase II of the processor takes control. If the program uses subscripts, Phase II uses index registers in the generated instructions to save
subscript calculations for reuse when possible. Phase
II converts the Phase I instruction codes into machine
language instructions and places the instructions in a
temporary disk storage area. In-line instructions such
as F ADD are generated wherever possible. When all
intermediate output is processed, a message denoting
the end of compilation is printed. Depending on the
FORTRAN Control records loaded with the source program, any of the following options can occur:

The compiled object program contains a header
record which specifies various parameters and information needed when it is to be loaded for execution
such the program name, length of the program, ;
and k, FORTRAN program constant, and indicators to
specify the Library subroutines used.
Subprogram identification records, consisting of 18
digits of name and address information, are created
for each subprogram called by a program. Up to 100
subprograms may be used with anyone FORTRAN main
program or Link program.

FORTRAN II-D Control Records
The FORTRAN Compiler can utilize four control records
that specify output options, etc. When they are used.,
these records may be in any order but they must be
read in between the FOR or FORX Control record and
the source program statements as shown in Figure 15.
The FORTRAN Control records must have an asterisk
in column 1 and the Name must be punched beginning in column 2. If a control record (00 in column
1) is read and is not a legally named record, the
message shown below is typed and the program halts.
ERROR, INVALID CONTROL RECORD

***:I: (End of job)

.'

1. Control is returned to the Supervisor. Control
records for output were not used; compilation
was apparently for editing only of source pr~
gram.
2. Object program is loaded to permanent area of
disk storage and/or outputted in cards or paper
tape.
3. Object program is executed using data from
input unit or disk storage.

.

The operator must correct the invalid record in
the input unit and depress START.
The prescribed format and specific function of each
control record is described below.
FANDK. The FORTRAN II-D Compiler, as delivered
to the user, will process an object program with a
Boating-point word length of 10 digits (f of 08
2==10) and a fixed-pOint word length of 4 digits. The
operator may vary these lengths, at compilation time,
by using the FANDK control record. The format of the
F ANDK Control record is as follows:

+

--------7
FORTRAN II - D
Control Records

- - - - - - --',
I

MONITOR
Control Records
I

~--------------------~-- ______ I

Figure 14.
118

Typical Stacked Input for FORTRAN Compilation

Columns

1-6

00 FANDK

7-8

ff

9-10
11-80

kk
not used

where ff is the floating-point mantissa length and kk
is the fixed-point word length.

The operator must correct the record that contains
the error and depress the 1620 Start key.
LDISK. The LDISK Control record causes the object
program to be moved to a permanent area of disk
storage following compilation. The format for the
LDISK control statement is:

-------7

Columns 1-6
7-12
13-16
17-80

°LDISK
Name (optional)
Number (optional)
not used

I

I

(Punch Symbol Table & Statement Na.)

I

Optional

FOR or FORX
Monitor Control Record

I
f

I
I

---------

I

Figure 15.

FORTRAN II-D Control Records

If entry is from the console typewriter, the same
format must be followed.
The range of f is 2 through 28, of k, 4 through 10.
If f or k is out of the prescribed range, the following
message is typed:

ERROR, F OR K OUTSIDE RANGE

PSTSN. This control record causes the symbol table
and addresses of numbered statements to be punched.
The format is as follows:
Columns 1-6
7
8-80

°PSTSN

n
not used

where n is 2 if paper tape output is desired or 4 for
card output. See NOTE below.
POB]P. The POB]P Control record causes the object
program to be punched following compilation. The
format is as follows:
Columns 1-6
°POBJP
7
n
8-80
not used
where n is the same as for the PSTSN Control record.
The format of the processor output (object program) is given under LOADER ROUTINE of the SUPERVISOR section of this publication.
NOTE: If n is not 2 or 4 in the PSTSN or POBJP Control
records, the following message is typed out on the
console typewriter, and the program halts.
ERROR, INVALID OUTPUT UNIT CODE

where Name is the left-justified program name, and
Number is a 4-digit DIM entry number not already
in use. If a DIM entry number is not supplied, the Disk
Utility Program will assign one.
After compilation, the Disk Utility Program will
load the programs to disk and create a DIM entry for
the program. At that time, the Name supplied (in the
LDISK record) will be placed in the Monitor Equivalence table. It is not necessary to supply the name
of a FUNCTION or SUBROUTINE subprogram. The name
used in the FUNCTION or SUBROUTINE statement is the
name placed in the Equivalence table.

Entering the Source Program
The source program can be entered in the form of a
punched paper tape, a deck of punched cards, or a list
of statements to be typed in at the console typewriter.
This entry option is specified in the FOR or FORX Monitor Control record.
OPERATING PROCEDURES
All of the following operations may be performed before the processor is called, except possibly items 1
and 3. If the operation taking place just prior to the
compilation of a source program required the Console
Program switches to be set differently than the desired
settings for compiling a Monitor PAUS Contrpl record
should have been inserted before the FOR· or FORX
record. This will allow time for the operator to change
the switches.
The operations required to process a source program are as follows:
1. Set the Console Program switches for the desired
compilation operations (see Table 9).
2. Set all check switches to PROGRAM.
3. If punching is to take place, ready the paper
tape punch with feed code leader or, ready the
card punch by loading blank cards and depressing the Punch S~t key.
4. Place a FOR or FORX Control record in the input
unit (see the Monitor II Control Records section
for format) .
FORTRAN II-D

119

Table 9.
SWITCH
1

Program Switch Settings for FORTRAN II-D
OFF

ON

Source statements are typed Source statements are not
listed
on the console typewriter
as they are processed.

Phase I Errors

During Phase I of compilation, a number of tests are
made for source program errors. If an error is found
in a source statement and Program Switch 1 is on, a
message in the form

Source statement errors
are typed in the form
ERROR n. *

Source statement errors
are typed in the form SSSS
and CCCC ERROR n. *

ERROR n

At the end of Phase 1,
symbol table and statement
numbers are typed out.

Symbol table and statement
numbers are not typed out.

is typed, where n is the error code (see Table 10). If
switch 1 is off, the error message is in the form

2

Trace instructions for
arithmetic statements are
compi led but no additional
instruct ions are generated.

Trace instructions for
arithmetic statements are
not compiled.

3

A trace instruction is compiled to trace the value of
the expression generated
in an IF statement. An
additional instruction is
generated in the object
program for every IF statement.

Trace instructions for IF
statements are not compiled.

SSSS + CCCC ERROR n

4

Errors made while typing
source statements can be
corrected by
a. turning on switch 4
b. pressing the Release
and Start keys, At the end of Phase 1, the
address of the first
instruction generated for
each statement is typed.
(Switch 1 must also be on).

0509 + 0012 ERROR 1

r

c. tum;n. off ,w;tch 4,
d. retyping statement.

Address of first instruction
for each statement is not
typed.

*See description under Phase 1 Errors.

5. Place any desired FORTRAN Control records in the
input unit (see FORTRAN II-D CONTROL RECORDS).
6. Place the source program statements in the input
unit (specified in the FOR or FORX record).
To resume machine operation, if the machine was
stopped to allow the operator to perform any of the
above operations, depress the Start key.
Typewriter Input. If source statements are entered
by way of the console typewriter, each statement
must be terminated with a record mark. Mter a statement is typed, the operator must depress the R-S key
to process that statement. As soon as a statement is
processed, the carriage returns to await entry of the
next statement. A statement of up to 330 characters
may be typed with no intervening punctuation, spacing, etc.
Normally card format need not be followed, however, in a comment statement the C must be followed
by at least two blanks (spaces) before the comment
is typed.
120

where ssss is the last statement number encountered
by the program prior to the error, and cccc is the
number of statements following the last numbered
statement. ssss + ecce is the statement that contains
the error. For example, the message

means that the twelfth statement following the statement numbered 509 is incorrect. If an error occurs
before a statement number is encountered, SSSS will
be 0000. Errors detected after processing the END
statement reference the END statement. Comment
cards, blank cards, and continuation cards are not
included in the statement count.
If any Type I errors (see Table 10) are found during
Phase I, no attempt is made to process the source
program through Phase II. At the completion of Phase
I, control is returned to the Monitor Supervisor program (Monitor Control Record Analyzer routine).
If a Type II error is found (other than Error 60),
compilation continues on through Phase II. However,
any FORTRAN Control records specifying output that
were included with the source program will be disregarded and control will transfer to the Supervisor
program at the completion of Phase II. If Error 60
is encountered, normal processing is continued since
N1 and N2 can be corrected when loading the object
program (see SUBROUTINE ERROR CHECKS).

Phase II Errors

During processing of the intermediate output, certain checks are performed which were impossible to
perform during Phase I. If an error is detected, an
error message in one of the following forms is typed:
SSSS+CCCC
SSSS+CCCC
SSSS+CCCC
SSSS+CCCC

SYMBOL TABLE FULL
IMPROPER DO NESTING
DO TABLE FULL
MIXED MODE

Table 10.

FORTRAN Phase I Source Program Errors

TYPE 1: Compilation continues but outputting of intermediate output is stopped. Only one error of this type is detected in anyone statement.
Error No.

Condition

Error No.

Condition
Dimensioned variable used within an
arithmetic statement function.

I

Undeterminable, misspelled, or incorrectly
formed statement.

22

2

Syntax error in a nonarithmetic statement
(exception: DO statements).

23

More than four continuation cords,

24

Statement number in a DO statement
appeared on a previous statement.

Dimensioned variable used improperly,
i.e., without subscripting, or subscripting
appears on a variable not previously
dimensioned.

25

Syntax error ir, a DO statement.

26

FORMA T number missing in on input/
output 'statement.

4

Symbol table full (processing may not be
conti nued).

27

5

Incorrect subscript.

6

Some statement number assigned to more
than one statement.

Statement number in on input/output
statement appeared previously on a statement other than a FORMAT statement, or
a number on a FORMAT statement appeared
in other than on input/output statement.

28

7

Control transferred to FORMAT statement.

Syntax error in input/output list or an
invalid list element.

Variable name greater than 6 alphameric
characters.

29

8

Syntax error in CALL statement, or an
invalid argument.

30
9

Variable nome used both as a nondimensioned
variable name and as a Subroutine or Function
name.

SUBROUTINE or FUNCTION statement
not the first statement in a subJ)r'ogram.

31

Syntax error or invalid parameter in a
SUBROUTINE or FUNCTION statement.

10

Invalid variable within an EQUIVALENCE
statement.

32

Syntax error or invalid variable in a
COMMON statement.

II

Subroutine or Function nome or dummy variable used in on EQUIVALENCE statement (subprogram only).

33

Variable in a Common list previously
placed in Comman or previously equivalenced.

12

k not equal to f + 2 for equivalence af
fixed point to floating point variables.

34

13

Within an Equivalence list, placement of
two variables previously in Common, or one
variable previously equivalenced and
another either equivalenced ar placed in
Common.

Library function name appeared to the left
of on equal sign or in a COMMON,
EQUIVALENCE, DIMENSION, or input/
output statement; or function name not
followed by a left parenthesis.

35

Syntax error in FORMAT statement, or
invalid FORMAT specifications.

36

Invalid expression to the left of on equal
sign in an arithmetic expression.

37

Arithmetic statement function preceded
by the fi rst executable statement.

38

Inval id expression in on IF or CA LL statement, or invol id expression to the right of
on equal sign in an arithmetic statement.

39

Unbalanced parenthesis.

40

Invalid argument used in colling an
Arithmetic statement function or Function
subprogram.

3

14

Sense Switch number missing in on IF
(Sense Swi tch n) statement.

15

Statement number or numbers missing,
nat separated by cammas, or nonnumerical
in a transfer statement.

16

Index of a computed GO TO missing,
invalid, or not preceded by a comma.

17

Fixed point number greater than k digits.

18

Invalid floating point number.

19

Incorrect subscripting within a DIMENSION
statement.

41

Syntax error in disk I/O statement.

20

First character of a nome not alphabetic.

42

Disk I/O list omitted.

43

Disk I/O list contains both simple variables
and array names.

44

COMMON exceeds core storage size. (May
occur when large array is defined.)

Variable within a DIMENSION statement
previously used as a nondimensianed
variable, or previously dimensioned or
used as a Subroutine or Function nome.

21

TYPE 2:

Compilation of intermediate output continues.

Error No.

ConditiO'l

51

DO loop ended with a transfer statement.

52

No statement number for next executable
statement following a tronsfer statement.

53

Improperly ended nonarithmetic statement.

54
55

56

Error No.

Condition

57

RETURN statement appeared in program
other ",on a sUbprogrom (statement ignored).

58

RETURN statement not contained in a Subrouti ne or Function subprogram.

Unnumbered CON TI NUE statement.

59

Statement number not defined. See note at
end of Table.

Number of Common addresses assigned in
excess of storage capaci ty because of
Equivalence. See note at end of Table.

60

Syntax error in DEFINE DISK statement,
invalid use of, or DEFINE DISK statement
missing.

Statement number or subscript greater than
9999 (only first 4 significant digits are retained).

NOTE: Errors 55 and 59 are not detected if Type I errors occur during compilation.

FORTRAN II -D

121

where ssss is the last statement number, encountered
by the program prior to the error, and cccc is the
number of statements following the last numbered
cccc is the statement that contains
statement. ssss
the error. Comment cards, blank cards, and continuation cards are not counted in the statement count.
If an IMPROPER DO NESTING or MIXED MODE message
occurs, compilation is continued, but only to check
for other errors. The FORTRAN Control records, PSTSN,
POB]P, and LDISK will be disregarded. the object program will not be executed and control will be returned to the Supervisor program.
Compilation stops immediately after the SYMBOL
TABLE FULL or DO TABLE FuLL message is typed and
control is returned to the Supervisor program. The
approximate allowable number of symbols differs
with the core storage size of the source machine.
For a 1620 with 20,000 positions, approximately
200 symbols are allowed. For a 1620 with 40,000 or
60,000 positions, the number of symbols allowed is
approximately 1200 or 2200, respectively.

+

End of Compilation

00100
2

67
987898

Subprogram Name

N1

N2

When all of the intermediate output is processed, the
following messages are printed:
nnnnn LENGTH
aaaaa NEXT COMMON
END OF COMPILATION
where nnnnn is the number of core positions the
object program requires (object program and data
areas except COMMON), and aaaaa is the next available core st~rage position of the COMMON area, (aaaaa
1 is the last used position of COMMON).
If FORTRAN Control records specifying output are
included with the source program, the outputting
takes place following the END OF COMPILATION
message.

Word Length

+

Reo. Length

Identification Data

When a program (or subprogram) is compiled, it is
headed with an identiBcation record that will be used
when the program is to be loaded into core storage
for execution.
Both main program and subprogram header identification records are shown and described as below:

Length

ff and kk

Mainline or link
Word

Rec

__

First Next

Subroutine

,00100,2 ! 67! 987898! Nil ;:;;2, Length 'length ,length Iff, kk, Core I Common ,Indicators I
5
I 2
6
2 5
2
3
5
2 2
5
5
30
Digits

Entry Address Less
Six
First Core

Subp.-ogram

_ _
_ _
Subprogram
_ _ Entry Address Next
Subroutine
,00100,2,671987898 ,Nome
'length,
kk, less Six
, Common I Indicators I
5
I 2
6
12
5
2 2
5
5
30

ff,

122

The address of the origin of
the program less 100.
An indicator to the relocating
loader that a constant to be
relocated is forthcoming.
The number of digits in the
forthcoming constant.
An arbitrarily chosen constant
to identify this as a header
record for a FORTRAN program.
The name of the program in
double digit representation
(left-justified) . Used only
in subprograms and FORTRAN function headers.
The number of words per disk
record. ( From the DEFINE
DISK FORTRAN statement. )
This field is present only for
m a i n lin e programs and
links.
The number of logical records
in the disk, as used by the
FORTRAN program. ( From
the DEFINE DISK FORTRAN
statement. ) This field is
only present in mainline
program and link header
records.
The number of digits in the
words used to determine a
logical record. This value is
the larger of the floating
word and the fixed word
length.
The number of sectors to be
used when reading or writing logical records. This
value is limited to the numbers 1 and 2.
The length of the program
( This rp.~st be an even
number) ..
The length of the mantissa
and the fixed point words
in this program.
The first location in the subprogram, less six, to enter
the subprogram.
The first location in the program to begin execution.
Present only for mainline
or link programs.

Next

The next location available in
COMMON. This must be an
even address (e.g., 19998)
so that COMMON can correctly be written on disk
during operation of the
FORTRAN
loader. Subprograms do not use this value.
Sub. Indicators
A digit position for each library subroutine in the
FORTRAN system.
The identification record occupies one whole sector
when it is on the disk. The format for the balance
of this sector, if the program is in relocatable format,
is shown below:
COMMON

000002i701234567891234567
Subprograms Called by FORTRAN

The names of the subprograms called by a program
are stored at the end of the program. The address
within the calling program where the address of the
subprogram will be placed is also stored along with
the name of the subprogram. These 18-digit name
and address records are created for the subprograms
called and the last record is followed by a record
mark. Up to 100 subprograms may be used with any
one FORTRAN main program or link (50 can be loaded
with the program; 50 can be called on an as-needed
basis, i.e., LOCAL).
Name
12 Digits

I Address I 0 I
5
I

The names. and addresses of the subprograms called
are moved to the FORTRAN loader work area when the
subprogram is loaded. This FORTRAN loader will determine which of the subroutines called by the subprogram have not already been loaded, and will load
those routines (exception: LOCAL subprograms cannot
call a new subroutine; see OBJEGr PROGRAM EXECUTION ). The proper addresses are placed within the
calling programs to link them with the subroutines
that they call.
Trace Feature

Under program switch control, instructions can be
compiled into the object program to enable the operator to trace the How of the program when it is executed. During execution of the object program, the trace
output is under control of Program Switch 4 as described under OBJEGr PROGRAM EXECUTION.
The trace output contains the value of the left-hand
side of each executed arithmetic statement and/or,
the value of the expression calculated in an IF statement.

Subroutines

The subroutines for 1620 FORTRAN II-D are divided into
two types: (1) Library subroutines and (2) Arithmetic and Input/Output subroutines.
LmRARY SUBROUTINES

Sixteen relocatable subroutines are included in 1620
(see Table 11).

FORTRAN II-D

The Library subroutines are loaded only when they
are used in a program, "link" program, or subprogram,
i.e., they are loaded before any execution of the calling program takes place but they are loaded only if
required by the calling program. During compilation
of a program, a 30-digit field of zeros is created (in
the header record). When a subroutine is called for
by a source statement or "required for use," a 1 is
inserted in the proper location of the subroutine indicator field. The position in the field corresponds directly to the subroutine number given in Table 11.
"Required for use" means that even though the
user has not directly called a specific subroutine it
may be required by the system. For example, the
LOGF and EXPF subroutines are used to compute the
values of floating-point roots and powers in arithmetic
statements. They are loaded, if required, before execution of the program that requires them. Likewise, the
Subscripting routines (library numbers 3 and 4), and
the disk routines (library numbers 5-11), though never
directly called, will be loaded if required. Sections
of library routines 5-11 are loaded to disk storage
Cylinder 1 (relative to the start of the disk work area)
and the specific section required is loaded from the
disk to core storage only when it is needed. All reading and writing of even arrays (f and k even) will
be done without loading additional instructions from
disk storage.
The FORTRAN statements FIND, RECORD, and FETCH
are processed by relocatable subroutines numbered
5 through 11. These routines are loaded into -core
storage only if the disk FORTRAN statements are utilized in the object program. Different routines may be
used to RECORD (or FETCH) an array. The routines
that will write out or read in an entire array with
one disk instruction will be used if both the
fixed word length and the floating word length are
even (not necessarily equal). If either of these variables was defined as odd in length, the array will be
split into records that are the same length as those
used when reading or writing lists of variables. The
maximum speed in reading and writing of data from
and to the disk is attained with even values for f and
k (for example: 8 and 4).
FORTRAN II-V

123

Table 11. FORTRAN ll-D Library Subroutines
Storage Requirements
TYPE OF FUNCTION

SYMBOLIC
NAME

SUBROUTINE
NUMBER

DIM
ENTRY
NUMBERS
VAR.

TRANSFER
ADDRESS

FIXED

VARIABLE
WORD
LENGTH
(f = 8)

FIXED
WORD
LENGTH
(f = 8)

Logarithm (natural)

LOGF

1

10

170

02248

814

650

Exponential

EXPF

2

11

171

02253

978

662

Subscripting (2 dimensions)

3

12

172

02258

Subscripting (3 dimensions)

ENTSC2
ENTSC3

4

13

173

02263

Routine to load or unload
disk buffer (fixed)

ENTSDX

5

14

174

02268

FIND

ENTFID

6

15

175

02273

RECORD

ENTREC

7

16

176

02278

FETCH

ENTFET

8

17

177

02283

Routine to load or unload
disk buffer

ENTSWD

9

18

178

02288

~

474

474

,

)
1530

1530

} 1154

742

Routine to write or read arrays

ENTARR

10

19

179

02293

Routine to complete FETCH
or RECORD

ENTCPT

11

20

180

02298

Cosine

COSF

12

21

181

02303

Sine

SINF

13

22

182

02308

Arctangent

ATANF

14

23

183

02313

SQRTF

15

24

184

02318

938
470

518

Square Root
Absolute Value

ABSF

16

25

185

02323

58

58

The FIND subroutine is used to position the access
arm in the disk storage drive in advance of a FETCH or
RECORD. It may be necessary for the FORTRAN system
to change the position of the arm after a FIND operation has been initiated. If this is the case, the same
location for the arm as specified in the FIND statement
will be sought again after the FORTRAN system operation is complete. This automatic repositioning to the
FIND cylinder will occur after every arm disturbance
until the next FETCH or RECORD statement has been
executed.
The FORTRAN statements that use two or three dimensions of subscripting are handled by the subroutines numbered 3 and 4 (this is actually one routine
with two entry points).
Two forms of the supplied library routines are included with FORTRAN II-D. Both forms make use of the
Automatic Floating Point Operations feature, and both
forms are stored to disk storage when the Monitor II
System is initially loaded.
One set requires that the value of f be equal to 8,
and is termed the fixed word length set. The other set
is used when the value of f is not equal to 8, and this

124

)
I

376

form is termed the variable word length set. The value
of k may range from 4 to 10 with either set.
The operation of the fixed word length routines is
faster and in most cases requires fewer positions of
storage (see Table 11).
The only way to make the selection of the fixed
word length or the variable word length library sets
is through the value assigned to f. If f equals 8, the
FORTRAN loader automatically selects the fixed word
length set; likewise, if f is not equal to 8, the variable
word length set is selected.
The user may add up to 14 subroutines to either set
of the FORTRAN library. The procedures for adding
subroutines and information for writing subroutines is
given under ADDING SUBROUTINES TO THE FORTRAN
LIBRARY.

ARITHMETIC AND INPur/OUfPUT ROUTINES

The arithmetic and input/output subroutines, including constants and working areas, are basic routines
needed for proper execution of the object program.
They are loaded without being specifically called for

by the object program. Besides performing the fundamental tasks of adding, subtracting, etc., these routines also perform some diagnostic testing on the data
being manipulated.
Two sets of the arithmetic and input/output subroutines are provided, and - just as with the library
subroutines - one set is a fixed word length set and the
other is a variable word length set. The FORTRAN loader automatically selects the fixed or variable word
length set, depending on the value of f. When the
value of t is 8, the fixed word length set is selected;
when the value of f is not 8, the variable word length
set is selected.
Both the fixed word length set and the variable
word length set are supplied in two forms. One form
'of each set is sectionalized to create groups of the
arithmetic and input! output routines. Each group
contains several routines and is loaded to core storage
only when required by the program being executed.
The routines overlay one another which provides a
substantial savings in core storage area.
The second form of each set provides that all routines be in core storage at one time. This form requires
more core storage, naturally, but allows for faster operation of the program as there is no time lost in reading a routine in that is not already present in core
storage.
The routines to be read from-disk-when-required
are placed in the first cylinder of the disk work area
just prior to beginning execution of a program that
will utilize them. The first cylinder of the disk work
area is cylinder zero unless the user redefines the
working cylinder. (See DEFINE PARAMETERS ROUTINE
in the Disk Utility Program section.)
When the Monitor II System is delivered, the routines that read-in-when-required are designated as
standard (since the value of f is deSignated as 8, it is
the fixed word length set). These standards may be
changed through the use of the DUP DFINE control
card. The selection of the in-core or the read-in-as-required form can be made when a program is called
for execution by placing the proper digit in the XEQS
control statement (column 28). The digits that may
be placed in this column are:
1 or 3 - read-in-as-required
2 or 4 - in-core

The following core storage addresses are the nrst
positions available for use by FORTRAN object programs, depending upon the set and form selected.
Fixed Word Length
In-core
Fixed Word Length
Read-in-as-required
Variable Word Length
In-core
Variable Word Length
Read-in-as-required

- 11200
- 07500
-13000
- 07500

The arithmetic and input/output subroutines provided are listed in Table 12. The absolute addresses
can be found by referring to their symbolic names in
the program listing.
Symbol Table Listing

If Program Switch 1 is in the ON position during the
FORTRAN compilation, the storage addresses of the
symbol table will be listed in the follOwing order and
form.
1. Floating-point constants

XXXXX MMMMMMMMCC

Fixed-point constants

Xxxxx FFFFF

where Xxxxx is the low-order address of the
constant.
Table 12.

FORTRAN Arithmetic and Input/Output
Subroutines

Subroutine

Symbolic Name

Operation

Floating Point Arithmetic
Reverse Subtract
Reverse Divide
Set FAC to zero

FSBR
FDVR
ZERFAC

A - FAC FAC
A/ FAC -FAC
0
• FAC

FXSR
FXM
FXD
FXDR

1- FAC ~ FAC
FAC x I ......... FAC
FAC / I ......... FAC
1/ FAC ......... FAC

RSGN
FIX
FLOAT

- FAC --FAC
FIX (FAC) ~FAC
FLOAT (FAC) ~FAC

FIXI
FAXI
FAXB

FAC
FAC
FAC

Fixed Point Arithmetic
Reverse Subtract
Multiply
Divide
Reverse Divide
Common Subroutines
Reverse Sign of FAC
Fix a Floating Point Number
Float a Fixed Point Number
Exponentiation
Fixed Point J ** I
Floating Point A ** (il)
Floating Point A ** (iB)

** 1 --FAC
** (iI) ~FAC
** (t B) ~ FAC

Input/Output

Any digit higher than 4 will result in an error message of:

ERROR L8
After this message the FORTRAN loader selects the system standard form and continues operation.

Read Card
Read Tape
Read Typewriter
Write Card
Write Tape
Write Typewriter

RACD
RAPT
RATY
WACO
WAPT
WATY

FAC - simulated accumulator
A & B - floating point variables
I & J - fixed point variables
- - - store in

FORTRAN II-D 125

MMMMMMMMCC is a floating-point constant.
FFFFF is a fixed-point constant.
2. Simple variable
Dimensioned variables
XXXXX NAME

XXXXX NAME YYYYY

where XXXXX for simple variables is the address
at object time where the value for NAME will be
stored.
XxxXX for dimensioned variable is the address at object time of the first element in the
array, NAME.
yYyyY is the address of the last element in
the array, NAME.
If NAME>\) is typed, this indicates a dummy
parameter within an arithmetic statement function.
3. Called subprograms
XXXXX NAME
where XXXXX is the location at which the starting address of the subprogram will be stored.
4. Statement numbers
XXXXX SSSS
where XXXXX is the address of the first instruction generated for the statement numbered SSSS.
The address of the first generated instruction for
each statement is typed with Program switches 1 and
4 in the ON position. If the statement number pertains
to a FORMAT statement, the location of XXXXX will
be the actual address of the FORMAT specification.

ability to call subprograms and subroutines.
Subprograms, defined with a FUNCTION or SUBROUTINE subprogram statement at compilation time, can
be placed into two groups (which have nothing to
do with the way they were defined at compilation).
For execution, subprograms are either:
1. Loaded into core along with the main program
(or link program) that calls them, or,
2. They may be left on disk storage and brought
into core storage only when called.
The user must determine which subprograms are
to be loaded into core storage prior to execution and
which are to be loaded when called for immediate
execution. The subprograms that are to be loaded
when called are defined by using a LOCAL Control
record. The subprograms that are named in the LOCAL
record will be loaded to the work area of disk storage
prior to execution of the main program or link program that calls them.
A subprogram requires no changes in order to be a
LOCAL subprogram. A subprogram written for use in
core with the main program can be used instead as a
LOCAL subprogram merely by naming it in a LOCAL
control record. However, a LOCAL subprogram cannot
call an "in core" subprogram that is not called from
either (1) the main program, or, (2) another "in core"
subprogram, and a LOCAL subprogram can never call
another LOCAL subprogram.
The following illustration shows the layout of core
storage during execution of a typical FORTRAN
program.

Symbol Table Listing for Subprograms

When compiling a subprogram, the dummy arguments are listed after statement numbers, as follows:

Multiply and Add Tables
Supervisor Routines
02218

XXXXX NAME
where XXXXX is the location at which the actual address of the variable in the mainline program, corresponding to the argument, NAME, will be stored
upon entering the subprogram. This same form is also
used for simple and dimensioned variables.
The addresses listed are not the actual addresses at
object time. Since programs are relocated upon loading, the listed addresses have to be adjusted relative
to the starting location of the program or subprogram.

Object Program Execution
A 1620 FORTRAN II-D program may consist of three
parts: a main program, a group of subprograms, and
the library subroutines utilized by the main program
and subprograms. The main program exercises control
over the entire operation being performed. In addition
to the normal execution of instructions, it has the
126

Arithmetic and I/O Routines
07500 or 11200 or 13000
Mainline Program

In-Core Subprograms

Library Subroutines

Routine linkage Area and Loader Routine

LOCAL Subprogram Read-in Area

COMMON

Converting FORTRAN Obiect Programs to Core Image

~DREPL

Col
FORTRAN Qbject prQgrams which are stQred Qn ,disk are
in System Output fQrmat. When called fQr executiQn,
these prQgrams must first be cQnverted to' CQre image
fQrmat befQre they can be executed. In cases where the
main program and/or the in-cQre subprograms are very
long, the CQnversiQn time might becQme excessive. To
eliminate this CQnversiQn each time a prO' gram is executed, the user can convert main prO' grams and in-cQre
subprQgrams to' core image fQrmat and permanently
stQre them Qn disk in that form.
The means Qf cQnversiQn is the Replace PrQgrams
rQutine, a disk utility functiQn described earlier in this
manual. A prQcedure fQr cQnverting to' CQre image format fQIIQws:
l. Clear CQre stQrage to' zerO's.
2. LQad the SupervisQr prQgram to' core stQrage.
3. Read in the fQIIQwing sequence Qf cards:

=F =F JOB
=F=F DUP

NAME
7

DIM1
13

DIM2
17

CORE
39

D M F
4950 60

CQlumns

CQde wQrd °DREPL.
1-6
7-12 Alpha name Qf prQgram.
13-16 DIM entry number of new prQgram.
17-20 DIM entry number Qf program to'
be replaced. This will be the same
as the number punched in Column
13-16.
39-43 Fixed CQre stQrage address where
prO' gram will be loaded when
called fQr execution.
49
Input unit (D for disk).
50
M denotes CQnversiQn frQm System
Output fQrmat to' core image fQrmat.
60
Any non-blank character.
NOTE: This procedure must be follQwed in its entirety
each time the DREPL function is used with FORTRAN
programs.

126.1

LOCAL Control Record

Subprograms that are to be loaded when needed are
defined at load time by a LOCAL Control record. The
format of the LOCAL Control record is as follows:
0 LOCAL
Columns 1-6
7-80
Main program name, comma,
Subprogram name, comma,
Subprogram name, comma,
etc.
The main program may be identified in either of
two ways. If it has a name in the system Equivalence
table, that name may be used. If no name is in the
Equivalence table to identify the main program, the
name may be omitted. In this event, the comma normally following the program name must be retained.
Blanks may not be included between names and
commas. The commas must be placed between subprogram names. When more than one card or tape
record is needed to identify all LOCAL subprograms,
a comma must be placed following the last name on
each record that is followed by another LOCAL record.
The name of the main program is omitted from all
continued LOCAL records, but they must contain the
asterisk and code word LOCAL.

Up to 100 subprograms (50 maximum, in core; 50
maximum, LOCAL) may be called by a main program
or link.
LOCAL records to be entered into the system must
follow the FORTRAN source program when compiling
and executing a program (see Figure 16). The number
of LOCAL records to be read must be placed in columns 9-10 of the FORX record or columns 29-30 of the
XEQS Control record. When typing the LOCAL record,
no more than 79 columns may be used. When the
LOCAL record is in paper tape, only 79 positions may
be used and the positions used must be followed by
a blank.
Library subroutines to be loaded at load time are
selected by interrogation of the subroutine indicators
in the header record that precedes each program, link,
and subprogram. Each indicator, one for each subroutine, must be a numerical 1 if the corresponding
subroutine is to be loaded to core storage at load time.
All subroutines are loaded if called in the main program or if called in subprograms that are loaded to
core storage. A LOCAL subprogram must not call for
a subroutine that was not called for by the main program or a subprogram loaded to core storage (see
Table 13).

EXAMPLES

o
o

o
o

LOCAL
LOCAL
LOCAL
LOCAL

MLNAME, SUBl, SUB2, SUB3,
SUB4
LNKNAM, SUB2, SUB6
LNK2, SUB2, SUB6, SUB7

OAT A Control Record

The purpose of the DATA control record is to indicate
to the FORTRAN loader that all segments of the program have been loaded prior to beginning execution.

Monitor Control Record

Figure 16.

Positioning of LOCAL and DATA Control Records in FORTRAN Stacked Input

FORTRAN II-D

127

The rules for inclusion of the DATA control record
are:
l. If the mainline or link program, or any of its
associated subprograms are loaded from the
paper tape reader or card reader, a DATA control
record must be included in the stacked input
whether or not any data is to be read by the
program.
2. If the mainline or link program, and its associat-

ed subprograms are all loaded from disk a DATA
control record must not be included in the stacked input.
The format for the DATA Control record is as
follows:
Card

°DATA

Columns 1-5
6-80

must be blank

Paper Tape
ERROR
CODE

Ll

MEAt':IING, REASON

RESULT

Inval id LOCAL control record
Word lOCAL misspelled, misplaced, or no asteris,k

Typeout JOB ABANDONED; branch to
MONCAl*

l2

Inval id name in lOCAL record
Not formed according to
FORTRAN rules

Typeout JOB ABANDONED; branch to
MONCAl*

l3

Multiple name in LOCAL record
Typeout JOB ABANSame subprogram name appears
DONED; branch to
more than once for some proMONCAl*
gram or link, or program or link
name appears more than once

l4

lOCAL subprogram table full
Greater than 50 lOCAL subprograms per link not allowed
Mainline table {link names} full
More than 50 links calling
lOCALS not allowed

Typeout JOB ABANDONED; branch to
MONCAl*

L5

Invalid header record
Does not conform to standard
FORTRAN header record

Branch to MONCAl*

l6

Unequal F or K
Subprogram F and/or K does
not compare with main program
For K

Subprogram not
loaded

l7

New subroutine called from lOCAl subprogram
lOCAL subprogram cannot call
new subroutine

Subprogram loaded;
subroutine not loaded

l8

Invalid arithmetic and input/output Set defined as system
subroutine set
standard is loaded,
Not defined as 1, 2, 3, or 4
depending on group
loaded

19

In-core subprosram table full
Greater than 50 subprograms
not allowed

Igl)ore above 50th
subprogram

LlO

New subprogram called from LOCAl subprogram
lOCAL subprogram cannot call
new subprogram

LOCAL subprogram
loaded; new subprogram not loaded

Lll

lOCAL subprogram disk storage
area overlaps reserved disk work
area

LOCAL subprogram
is not loaded

128

FORTRAN Loader Errors

When the DATA record is recognized by the loading
routine, a check is made to detennine which subpro.,.
grams have not yet been loaded. If there are any
such subprograms they are listed on the console typewriter, the machine haIts; and the operator must then
see that these subprograms are made available for the
loading routine to load before depressing the Start
key. If all subprograms have been loaded, any remaining data in the input unit will be skipped until the
DATA record is read.
Console Program Switch Settings

Switch 1. When switch 1 is on, a list of the programs being loaded is typed on the console typewriter. The format of the list is:

XXXXXX NNNNN LLLLL LOADED

*MONCAl is the symbolic name for Monitor Control Record
Analyzer routine,

Table 13.

t--

75 zeros-I
°DAT AOOOOOOOOOOOOOOOOOOOO®

where xxxxx is the name of the program or subprogram or the number of the subroutine, NNNNN is the
beginning core storage address, and LLLLL is the
length of the program.
Switch 4. When switch 4 is on, and trace instructions have been compiled into the object program,
the trace output is listed on the console typewriter.
The trace output contains the value of the left-hand
side of each executed arithmetic statement and/ot', the
value of the expression in an IF statement.
If the typewriter input is called for by the object
program the operator must:
1. Type in the required data.
2. Tum Console Program Switch 4 to the OFF position.
3. Depress the Release key.
4. Depress the Single Instruction key 7 times.

5. Tum Console Program Switch 4 to the' ON position.
6. Depress the Start key.
If the operator makes a mistake when typing the input
data it is necessary only to depress the R-S key and
retype the required data.

Operating Procedure
To execute a previously compiled FORTRAN program,
the following items must be placed in the input unit.
1. JOB Control record.
2. XEQS Control record.
3. LOCAL Control records (if required).
4. Main program (if not previously loaded to disk
storage) .
5. Subprograms (if required and not previously
loaded to disk storage).
6. DATA Control record. Note: This must be supplied even if data has been loaded to disk storage.
7. Input data (if not previously loaded to disk storage).
8. Job End Control record.
When called for execution, the main program is
converted from relocatable format and loaded into
core storage (see LOADER ROUTINE in Supervisor section of this manual for a description of operation and
errors). Following the loading of the main program
the "in-core" subprograms are loaded. If any subprograms are not available the message

NO ENTRY FOR SUBROUTINE nn
JOB ABANDONED
This would indicate that the entry was either deliberately deleted from the map, never entered into the
map, or otherwise destroyed. After the message is
typed, the FORTRAN Loader branches to MONCAL (symbolic name for the Monitor Control Record Analyzer
routine ).
OVERLAP Errors

During the loading of the main program, subprograms, subroutines, or the read-in routine or the program linkage areas, the available core storage area
may be exceeded.
If a main program or link program would exceed
the available area the following message is typed
and control is transferred to the Supervisor program
(see MONITOR CONTROL RECORD ANALYZER ROUTINE).
NAME XxXXX OVERLAP
JOB ABANDONED
NAME is the name of the program or link program,

xxxxx is the number of core storage positions required by that program. If the program has no asSigned name, MAIN is printed for NAME.
If a subprogram would exceed the available area
the NAME XXXXX OVERLAP message is typed and the
named program is not loaded. Subprograms following
the "overlap subprogram" are loaded if possible.
If a subroutine would overlap the available core
storage area the message

LOAD SUBNAM

NN XXXXX OVERLAP

is typed, where SUBNAM is the name of the subprogram that must be loaded in the input unit.
When all "in-core" subprograms are loaded, the
library 'subroutines needed by the main program
and "in-core" subprograms are loaded into core storage.Following the loading of the subroutines, if any
subprograms have been defined as LOCAL subprograms, an "object-time read-in routine" is loaded and
follOwing it a linkage area is reserved for each LOCAL
subprogram.
Then, the first LOCAL subprogram is loaded into core
storage. The address to which this subprogram is
loaded will be the input address for all LOCAL subprograms. The first LOCAL subprogram is then moved
to the top end of the work area of disk storage and
the next LOCAL subprogram is loaded to core storage.
LOCAL subprograms may be loaded to the system by
way of the input unit, however they must be stacked
follOwing any "in-core" subprograms to be loaded.
If a DIM entry for a particular subroutine cannot be
found in the map, the following message is typed out.

is typed, where NN is the library subroutine number
and xxxxx is the length of the subroutine. The subroutine is not loaded.
If the LOCAL subprogram read-in routine or program
linkage areas exceed the available core storage areas,
the message
FLIPER XXXXX OVERLAP
is typed. FLIPER is the name assigned to represent the
read-in routine and xxxxx is the length of the routine
and linkage area required. The read-in routine and
the linkage area are not loaded.
After all possible programs are loaded, and there
is any error - overlap or others - the message
EXECUTION INHIBITED
is typed and a branch to MONCAL is executed.
(MONCAL is the symbolic name for the entry point to
the Monitor Control Record Analyzer routine. )
During loading of a FORTRAN program, the errors
listed in Table 13 may appear.
FORTRAN II-D

129

Subroutine Error Checks

A number of error checks have been built into the
library subroutines. The basic. philosophy .in the dis-·
position of an error is to type an error message, set
the result of the operation to the most . reasonable
value under the circumstances, and.· continue the
program (note error D1 exception, desciibedbelow).
Subroutine error codes, the nature of. the error, and
the value of the result in FAC (symbolic name of the
accumulator in which arithmetic operations are. per.;.
formed) are listed in Table 14.
The error printout is in the form

ERXX
where xx is the error code in the table.
Table 14.

FORTRAN Subroutine Error Codes

ERROR CODE
01

Disk I/O used without a DEFINE
DISK statement.

02

Logical record specified exceeds
N2.
No group mark found at end of
an array that was read from disk.

03

130

ERROR

RESULT IN FAC

El

Zero division in FXD or FXDR

999 .....

E2

Overflow in FIX

99 ••••••

Fl

Loss of all significance in FSIN
or FCOS

000 .....099

F2

Zero argument in FLN

99 ...... 999

F3

Negative argument in FLN

F4

Overflow in FEXP

In/x/
99 ...... 999

F5

Underflow in FEXP

F6

Negative argument in FAXB
Negative argument in FSQR

F7

Input data in incorrect form or
outside the allowable range

F8

Output data outside the allowable range

F9

Input or output record longer
than 80 or 87 characters (wh ichever is applicable to the I/O
medium being used)

Gl

Zero to minus power in FIXI

999 •••••

G2

Fixed-point number to negative
power in FIXI

000 .....

G3

Overflow in FIXI

999 .....

G4

Floating-point zero to negative
power in FAXI

99 ...... 999

G5

Overflow in FAXI

99 ...... 999

G6

Underflow in FAXI

00 ...... 099

G7

Zero to negative power in FAXB

99 ...... 999

00 ...... 099
B
/A/
SQR/x/

If errqr D1 occurs, the machine halts, the typewriter carriage returns, and the operator must enter the
DEFINE DISK statement parameters by means of the
typeWriter in the form of

NNXXXXX
where NN corresponds to N 1, .and xxxxx corresponds
to N2 as described for the DEFINE DISK statement. Error
D1 will be indicated until the values of N1 and N2
are within the correct range.
The FORTRAN loader further checks the value of N2
(number of data records as specified in the DEFINE
DISK statement) to see if the N2 disk work area would
be overlaid by operation of the FORTRAN loader. The
FORTRAN loader uses the disk working area (starting
from the high-order positions) for tables, COMMON
save area, and LOCAL subprograms. Also. the first
( low-order) 218 sectors of the disk work area are
reserved to store the short form groups of the arithmetic and input/output subroutines. If N2 times
Record length plus 218 is greater than the lowest
disk address used by the FORTRAN loader, N2 will be
redefined as
X-218
Record Length
where X is the lowest disk address used by the FORloader. The user is notified of this action by the
following message:

TRAN

MAX N2 ALLOWABLE

Xxxxx

where Xxxxx is the maximum allowable value for N2
Loading and execution of the programs continues.
If Error D2 occurs, the specified record will not
be written (or read), and the index value (I) may
be incorrect.
If Error F7 occurs, the field which is incorrect is
replaced by zeros, and processing continues.
The exponent portion of an E-type input data field
must be right-justified in that field and may contain
only one sign. Deviations from this rule are not checked. For exponents greater than 99 (absolute value),
the value is reduced modulo 100.
If Error F8 occurs, the incorrect field is set to
blanks in the output record, and an additional record
is typed. This record contains the incorrect field in

the form
E (f
I (k

+ 6). f
+ 1)

for floating-point numbers, and
for fixed-point numbers.

This additional record is also produced on the output
unit (card punch, tape punch, or typewriter) called
for by the source statement.
If Error F9 occurs, the incorrect field is ignored
and processing continues. However, a remote possibility exists that part of the subroutines and the object
program may have been destroyed by the abnormal
record. In this case, the program may inexplicably
halt at some later point in its execution.
Object Program Subroutine Linkage

The linkage generated by the
is in the form

FORTRAN II-D

compiler

BTM SUBR, A

where SUBR is the name of the entry point for the subroutine and A is the address of the operand. For the
relocatable library subroutines, an indirect address is
used in the linkage. The actual address of the library
subroutine entrance is stored at locations 02244-02248,
02249-02253, etc. The FORTRAN object program linkage
for entrance to the first library subroutine will appear as,
BTM-02248, A

Adding Subroutines to the fORTRAN library
The user may write library subroutines in SPS language and have them placed in the FORTRAN library.
The subroutine must be assembled using the SPS II-D
program, and may be loaded to disk storage at assembly time or at a later time -using the Disk Utility
program.
Special DIM entry numbers are reserved exclusively
for the FORTRAN library subroutines. When the Monitor II System is delivered, the variable word length
library set uses DIM entry numbers 10 through 25.
Numbers 26 through 39 are available for user-written
routines. The fixed word length library set uses DIM
entry numbers 170 through 185, with numbers 186
through 199 available for user-written routines. If
desired, the last 5 of the 16 subroutines in each set
may be replaced with user-written routines.
When a subroutine has multiple-entry points, a DIM
entry is required for each entry point. No subroutine
may have more than 9 entry points. The symbolic name
of each entry point must be specified in a DSA statement at the beginning of the source program. Also, the

number ot entry points must be specified in a special
statement.
The user must provide a 5-position area immediately preceding each entry point. This space will be
used to contain the address of the parameter when
the subroutine is entered.
In installations where both the fixed and variable
word length library subroutine sets are used, any additional subroutine must be added to both sets. The
procedure for accomplishing this is described under

DEND

LOADING THE LffiRARY SUBROUTINE.

When selecting the proper routine (before execution) the FORTRAN program decodes the name and
finds the proper DIM number for the variable word
length subroutine. If the fixed length routines are
called for, a constant 160 is added to the DIM number.
There must, therefore, be correspondence in numbers,
names, and the number of entry points between the
fixed and variable word length subroutines to be
added.
If only the variable word length set or only the
fixed word length set is to be used, it is not necessary
to add additional subroutines to both sets. (See LOADING THE LIBRARY SUBROUTINE for examples.)
Working Areas

In writing the subroutine, the programmer may first
move the argument into one of the working areas
such as FAC, BETA, or SAVE. In arithmetic subroutines,
the exponent of a floating point result is usually stored
in SAVE before being moved to FAC. A careful study
of the arithmetic subroutines may reveal that the relocatable subroutine to be added can share the normalization, sign detennination, overflow, underflow, and
error typeout sections. The value calculated by the
subroutine must be left in FAC. Even if no value is
calculated, it is advisable to place a constant in FAC.
VVhen programming a subroutine with variable
length floating-pOint numbers, it may be necessary
to use certain addresses and constants available in
the arithmetic and input/output subroutines. A reference to the listings of these subroutines will yield the
information on these addresses and constants. As the
mode of operation (fixed or floating point) is determined by the argument of the subroutine, _the FORTRAN I1-D Processor does not distinguish fixed-point
from floating-point subroutines. It is up to the user
to have a thorough knowledge of the added subroutines and to use them correctly.
Loading the Library Subroutine

Additional subroutines can be added to the FORTRAN
library directly at the time of assembly, or after
assembly.
FORTRAN II-D

131

The following examples illustrate adding a subroutine with two entry points (at assembly time).
EXAMPLE 1:
HJOB
oft SPS WRITTEN LIBR SUER FOR FIXED SET
~'i'SPS

*LIBR
*ASSEMBLE RELOCATABLE
*STORE RELOADABLE
*ID NUMBER 0186
START
DSA
ONEENT,
DORG START-4
FAC
DS
,2492
DC
5,0, ,
ONEENT NOP
TFM FAC, 0, ,
BB2
DC
5,0
TWOENT NOP
TFM FAC, 0
BB2
DEND 2

TWOENT

(See Explanation
Following
Example 2)

The above source statements make use of DIM entries
186 and 187; note that no names are actually assigned.
In the following example, which adds the same routines to the variable word length set,· the name ONEENT
is added at assembly time; the second entry point
(named TWOENT) is added by the Disk Utility DFLm
operation. (See ADDITIONAL ENTRIES AND SYNONYMS.)
EXAMPLE 2:

HJOB

H SPS WRITTEN SUBR FOR VARIABLE SET
'I''i'SPS
*LIBR
*NAME ONEENT
*ASSEMllLE RELOCATABLE
*STORE RELOADABLE
*ID NUMBER 0026
START
DSA
ONEENT,
DORG START-4
FAC
DS
,2492
DC
5,0, ,
ONEENT NOP
TFM FAC, 0"
BB2
DC
5,0
TWOENT NOP
TFM FAC, 0
BB2
DEND 2

TWOENT

(See Explanation
Following
This Example)

HDUP
*DFLIBTWOENT 27

An explanation of each of the source program statements follows.
DSA

132

The name of each entry point must be
listed in a DSA statement at the beginning
of the source program. It is labeled so it
can be referenced by the DORG statement.

DORC This eliminates the core requirements of
the DSA statement.
DS
Allows for symbolic reference to the
Floating Accumul:;ttor area.
DC
Provides space for BTM address when the
subroutine is entered during execution.
A 5-position area must precede each
entry point.
NOP
The NOP will be replaced by the userwritten statements of the subroutine to
be added.
TFM
This illustrates the recommended restoring of the Floating Accumulator area. If
a value is to be returned, a TF or TFL
would be used in place of the TFM.
BB2
Last executable statement. BB can also
be used.
DEND Last source statement as with normal
SPS assembly except for the special number in the operand field which denotes
the number of entry points.
The procedure for assembling and adding a subroutine to the variable word length set only is as follows.

HJOB
HSPS
*LIBR
*ASSEMBLE RELOCATABLE
*STORE RELOADABLE
*ID NUMBER 0026
*NAME
STAR T
(Subroutine instructions
including those required as
shown in Examples 1 and 2)
DEND n

If the subroutine contains more than one entry point,
the name and DIM entry number for each entry must
be provided in a DFLm control statement as described
under ADDITIONAL ENTRIES AND SYNONYMS.
The procedure for assembleing and adding a subroutine to the fixed word length set only is the same
as that for the variable word length set, except that
no NAME statement is included. (Also, the range of
the DIM entry for the ID NUMBER statement is from
0186 to 0199.) All names of the entry points are added
with DFLm statements using the corresponding variable
set DIM entry numbers. For example; the ID NUMBER
statement could specify DIM entry 0187 but the DFLm
statement would specify (and name) DIM entry 0027.
The Disk Utility program can be utilized to load the
subroutine to the library sets, in which case, the
NAME, STORE RELOADABLE, and ID NUMBER statements
must be omitted, while an OUTPUT CARD or OUTPUT
PAPER TAPE statement should be included.

* DF II B

,
I
Object Program
Output from Assemb Iy

* DLOAD
Used to Define
Additional Entry
Point Names and
Synonyms.

,*,:to DUP

Monitor Control Record

Figure 17.

Monitor Control Record

Adding Subroutines for FORTRAN Subroutine Library

The following example illustrates the necessary information to be included in the DLOAD control record
for a subroutine named HCOS to be added to the variable word length set.
°DLOAD HCOS
Col.
Columns

0026 0101200002

C

I

..

...

........ A

7

17

39

44

49 50

1-6 Code word °DLOAD.
7-12 Alpha name of program to be
used in FORTRAN arithmetic statements.
17-20 DIM entry number.
39-43 The length of the subroutine. This
number must be even.
44-48 The number of entry points.
49 Input unit (C for card, P for paper
tape ).
50 Core image format.

Other options, such as read-only protection, are
available if they are desired. (See DLOAD CONTROL
RECORD in the Disk Utility Program section of this
manual.)
Additional Entries and Synonyms

A DFLIB Control record must be entered if the subroutine contains more than one entry point, or if one
entry point is to be called by more than one name.
The format of the DFLIB Control record follows.
Columns

1-6 °DFLIB
7-12 User-assigned name, left-justified.
13 Not used (must be blank)

14-15 DIM entry number
16-80 Not used.
The DIM entry number must be between 21 and 39
and must correspond sequentially with the entry point
names of the source program DSA statement. For example; assume the following DSA statement of a subroutine to be added to the FORTRAN library.
START

If the

ID

DSA ONE,

TWO,

THREE

NUMBER statement contained:

0026 the DFLIB Control cards must assign TWO
as 27, and THREE as 28.
0188 the DFLIB Control cards must assign TWO
as 29, and THREE as 30.
As delivered, the system makes use of DIM entry
numbers 10 through 25, and 170 through 185 for
FORTRAN library subroutines. The last 5 of each set
may be removed, if desired. If no subroutines are removed from the FORTRAN library sets, the available
DIM entry numbers for additional library subroutines
are 26 through 39, and 186 through 199. The DFLIB
Control card can only use the DIM numbers of 26
through 39.
Typical input sequences to assemble and load a subroutine are shown in Figure 17.

fORTRAN Subprograms Written in SPS
The FORTRAN user is able to create subprograms using
SPS and having these subprograms available immediately for call by FORTRAN programs. To ac~omplish
FORTRAN II-D

133

this he must follow the writing specifications outlined
here.
The Indicator Record

Each subprogram to be called by a FORTRAN program
must contain a header record to identify the routine
and to provide other essential information. The sps
instructions necessary to create this record are shown
below.
S DS
DC
DAC
DVLC
DSC
DORG

,0+101
6, 987898, 5-S
6, NAMEbb, 7-S
22-S, 5, LENGTH, 2, ff, 2, kk, 5,
Entry Address-6, 5, 0, 30,
17,0,0
S-I00

°

where LENGTH is the address of a =t=or the first digit of
a subprogram name in the call list (see CALLING OTHER
SUBPROGRAMS) .

Calling Library

Su~routines

If the subprogram or function is to call FORTRAN library subroutines, the user must write out the DVLC
operand that contains the 30 zeros in the indicator
record example. The position that corresponds to the
subroutine must contain a one instead of a zero. The
correspondence between the positions in this field and
the standard library subroutines are presented in
Table 11 so that the user may select any subroutine
in the library. To effect a transfer to any library subroutine from the sps written subprogram, the user
must write the following instructions: BTM -SUBR,
PARAM, where PARAM is the address of the parameter
required by the subroutine and -SUBR is the address
for the subroutine entry shown in Table 11. The subroutine entry address must be indirect.
Calling Other Subprogrdms

If the user wishes to call other subprograms from an
written subprogram, he may do so. To do this the
user must code:
BTM NAMESP, 0+11
DSA A,B, ... ', Z
for each transfer to another subprogram, and must
include the name of the subprogram called. This is
equivalent to the FORTRAN coding of:
SPS

CALL NAMESP (A, B, ... , Z)
Each called subprogram must have a 5-digit BTMaddress-field reserved in the subprogram just prior to
the entry point. Also, the names of the subprograms
to be called must be placed (in double-digit form)
134

at the end of the calling subprogram along with the
address of the reserved address field with the subprogram. These names and addresses must follow the
last location of the subprogram. They can be coded
as follows.
DAC

6, NAMlbb,

DVLC

NILOC

DAC

6, NAM2bb,

DVLC

N2LOC

DC

2,0@

This coding will cause the
two subprograms named
NAMI and NAM2 to be
called out and made available when the SPS routine
that requires them is loaded.

where NlLoc is the low-order address of the P field of
the BTM instruction that calls this subprogram. For
example;
BTM XXXXX,
NILOC---1

0+11

The record mark must follow the list of names in the
next even location available. When no subprograms
are called, the record mark must be placed in the next
even location following the last statement.
Writing FORTRAN Subprograms in SPS

In addition to the header record described above,
linkage to obtain the subprogram parameters must
be included in the subprogram. If no parameters are
needed, or if the subprogram knows the location of
the parameters, the user writes:
DC 5,0
SUBNAM AM SUBNAM-l,I,lO \

The
subprogram
B SUBNAM-I"
DC 1,@

6

If one parameter is needed, and this subprogram is
never nested within any other function or subprogram, the user writes:
DC
SUBNAM AM
TF
AM

°

5,
SUBNAM-l, 5, 10
INSUB, SUBNAM-I, 11
SUBNAM-l, 2

The
subprogram
B SUBNAM-I, , 6
DC 1,@
If several parameters are to· be moved to the subprogram, a loop may be utilized to conserve core storage.
The parameters must be stored in the subprogram in

consecutive order. An example of the coding to accomplish this for three parameters is shown below:
INSUB

SUB

CF
TF

DSA
DC
DC
TFM
AM
AM
TF
BNF
CF
TF
TF
AM
BNR
AM

0,0,0
1, @
5,0
TF +6, INSUB-4
TF+6, 4,10
SUB-I, 5, 10
CF+II, SUB-I, II
0+36, CF+II
CF+ll
CF+ll, CF+l1,"'II
INSUB-, CF + 11
TF+6, 1, 10
SUB+12, TF+6, 11
SUB-I, 2, 10

(1)

B

SUB-I, , 6
(2)
1, @
DC
The instructions that constitute the body of the subprograms are placed between number 1 and 2 above,
Instruction 1 must add "two" if the number of parameters is an odd number, or "one" if this number is
even. The record mark must be in the first even location following the subprogram.
The instruction numbered 2 (B SUB-I, ,6) returns
control to the calling program. When writing subprograms in sps the user must place this instruction at
every point that a return is required.
The following example shows a sample subroutinetype subprogram written in SPS.
ttJOB

Writing FORTRAN FUNCTION Subprograms in SPS

The user must add one instruction to the set required
for SUBROUTINE subprograms written in SPS in order to
write FORTRAN FUNCTION subprograms ( subroutines
normally produced by FORTRAN statements preceded
by a FUNCTION statement). This statement is TFL F AC,
ANS. F AC is the simulated floating accumulator and ANS
is the location where the result of the subroutine calculation is stored. Prior to a return to the main program, this instruction must be executed. The actual
address of F AC is constant and is available in the
FORTRAN I1-D listing.

Disk Storage Location of the fORTRAN
Compiler
The FORTRAN compiler and operating system is an
integrated part of the Monitor system. It is possible,
however, to eliminate the programs that constitute the
FORTRAN portion of the Monitor, and still utilize the
remainder of the system. It is also possible to delete
specific FORTRAN library subroutines and to utilize the
remainder of the FORTRAN system. The procedure to
follow in order to delete any program from the disk
is described in the DUP section. The DIM entry numbers that may be specified for deletion are shown
below.
Disk
DIM No.
Location
FORTRAN Compiler
136, 137, 153, Cylinder 79, 86,
156,203
87,88,89,90

t~PS

*ASSEMBLERELOCATABLE
*NAME REVABS
*STORE RELOADABLE
* SPS WRITTEN SUBPROGRAM WHICH REVERSES THE TWO ARGUMENTS
*AND ABSOLUTES THE RESULT. NOTE CALL TO LIBR SUBR ABSF.
*IF NO LIBR SUBS ARE CALLED, DVLC WOULD BE
*DVLC 22-S, 5, LENGTH, 2, 8,2,4,5, ENTRY-6,5,0,30,0
S
D S , *+101
DC
6,987898, 5-S
DAC 6,REVABS,7-S
DVLC 22-S, 5, LENGTH, 2, 8, 2, 4, 5, ENTRY-6, 5,0,15,0,1,1,14,0
DSC
17,0,0
DORG S-100
FAC
DS
,2492
ABSF
DB
,2323
TEMP DC
5,0
TEMP1 DC
10,0
TEMP2 DC
5,0
DC
5,0" SPACE FOR BTM PARAMETER
ENTRY AM
ENTRY-1.5.10.GET A,QDRESS OF 1s'r ARG
TF
TEMP, ENTRY-1,ll, BUFFER ADDR OF 1ST ARG
AM
ENTRY-1,5,lO,GET ADDR OF 2ND ARG
TF
TEMP2, ENTRY-1,ll, BUFFER ADDR OF 2NDARG
TFL TEMPi, TEMP2,ll,SAVE ARGUMENT B
TFL TEMP2, TEMP, 611, REPLACE B WITH A
TFL TEMP, TEMP1, 6, REPLACE A WITH B
BTM -ABSF, -TEMP" ABSOLUTE A
TFL -TEMP, FAC" ABSF LEAVES VALUE IN FAC
BTM -ABSF, -TEMP2" ABSOLUTE B
TFL -TEMP2, FAC, ,ABSF LEAVES VALUE IN FAC
AM
ENTRY-1, 1,10, COMPUTE RETURN ADDRESS
B
ENTRY -1, ,6, RETURN
LENGTH DC
l,@"RECORD MARK IN EVEN LOCATION
DEND

FORTRAN

Loader

Subprogram 138, 147,149,
150,152,157

Cylinder 80,
84

Arithmetic
and I/O

144, 145, 146,
200,201,202

Cylinder 78,79,
84,85

Library
Subroutines

010-39,
170-199

Cylinder 81

FORTRAN

FORTRAN

If the FORTRAN system is deleted using the DUP routines, the portion of the disk which it occupies will
become available for assignment of other user written programs.

°When the system is delivered, 10 through 25 and 170
through 185 are in use. The symbolic names of the
subroutines that may be deleted are COSF, SINF, ATAN,
SQRTF, and ABSF. The other subroutines may be deleted
only if the complete FORTRAN system is deleted.

FORTRAN II-V

135

IBM 1620... 1443 Monitor II System
A printer-oriented Monitor II System is available for
1620 Systems that are equipped with an IBM 1443
Printer. This system is an extension of the standard
Monitor II System described in the preceding pages of
this publication. Only the differences between the
standard system and the printer-oriented system are
described here. Specifications and operating procedures pertaining to the standard system are valid for
the printer-oriented system if no specific mention is
made of them in this section.

General Description
The 1620-1443 Monitor II System requires that an IBM
printer be included in the 1620 system configuration.
Of course, any other applicable ingut/output units,
special features, etc., may also be attached to the
system.
The principle advantage of a printer-oriented system
is that it provides a convenient and relatively fast
means of obtaining listings of assembled or compiled
programs, symbol tables, and any other data that
might be desired. The component programs of the
Monitor II System have been modified to make the
best possible use of the printer. The console typewriter is used only for messages which must be acted
upon immediately by the operator.
The following paragraphs were written under the
assumption that the reader has a practicable knowledge of the IBM 1443 Printer. Those without such
knowledge should read the publication, IBM 1443 OnLine Printer for 1620/1710 Systems (Form A26-5730).

Supervisor Program
The I/O routine of the Supervisor Program has been
modified to handle printer output for both sps and
FORTRAN object programs. This was accomplished
without changing entry points, linkages, or core storage requirements. The language used to gain access to
the I/O routine is described in the respective sps and
FORTRAN portions of this section.
Printer Errors

The only change is the addition of the Printer Check
indicator (code 25) .
NOTE: If a halt occurs at address 00467, either with or
without a prior error message, the program can be resumed by pressing the Reset and Start keys.

Programming Considerations

1. The Printer Busy indicator (code 35) is not tested by the I/O routine; therefore, if the test is
desired, the user must perform it before executing a call to the printer.
2. Carriage control operations must be handled in
the user's program.

Disk Utility Program
Two Disk Utility Program routines have been modified to use the printer: Disk-to-Output and Define
Parameters.
Disk-to-Output Routine

The Disk-to-Output routine has been modified to use
the printer for all output that was formerly typed out
on the typewriter. To specify the printer as an output
unit, the user must punch the letter L in column 17
of the DDUMP control card.
The format of the printed output is 100 characters
(1 sector) per line, with the exception of the Availability List and the Equivalence Table which retain
the format used in the standard system.
Define Parameters Routine

The Define Parameters routine has been modified to
allow FORTRAN II-D to be set for either 120 or 144
print position usage of the 1443 Printer during compilation and execution of th~ object program. The
user may put a zero in column 59 of the DFINE control record for 120 print position operation, or a one
for 144 position operation. This indicator is set in
position 65 of the Communications Area on disk.
(When the system is delivered, this indicator is set
to zero.)

If a printer error (indicator code 25) occurs, the

SPS II-D

message
PRT ERR XXXXX
is typed out, and control is returned to core address

xxxxx in the calling program. In addition, the error is
recorded in a printer error counter which has been
added to the error counters used in the standard system. Whenever the error indicators or error counters
are typed out, they will be in the following sequence:
0607161725363738
135.1

The SPS II-D assembly program has been modified to
include twelve printer-oriented imperative mnemonics, two printer declarative mnemonics, and three new
SPS control statements.
Printer Imperative Mnemonics

The imperative mnemonics included in the printeroriented Monitor II System are listed in Table 14.1.

Table 14.1. Imperative Printer Mnemonics

OPERANDS

OPERATION CODE
OPERATION

MNEMONIC

ACTUAL

P ADDRESS

Q ADDRESS

Printer Dump

PRD

35

Storage address from
which leftmost (first)
numerical character is
wri tten

None Required

Printer Dump and Suppress
Spacing

PRDS

35

Same as Printer Dump

None Required

Print Numerically

PRN

38

Same as Printer Dump

None Requ ired

Print Numerically and
Suppress Spacing

PRNS

38

Same as Printer Dump

None Required

Print Alphamerically

PRA

39

Storage address from
which leftmost Alphameric character is
written (odd numbered
address)

t"-lone Required

Print Alphamerically and
Suppress Spacing

PRAS

39

Same as Print Alphamerically

None Required

Skip Immediate

SKIP

34

Not used

Control Code

Skip after Printing

SKAP

34

Not used

Control Code

Space Immediate

SPIM

34

Not used

Control Code

Space after Printing

SPAP

34

Not used

Control Code

Branch on c;,bannel 9

BCH9

46

Address branched to if indicator 33 is on. This indicator is turned on by the detec
tion of a hole in channel 9
of the carriage tape.

None Required

Branch on channel 12

BCOV

46

Address branched to if indicator 34 is on. This indicator is turned on by the detec
tion of a hole in channel 12
of the carriage tape.

None Requ ired

Also shown are the actual OP codes generated, and the
P and Q address functions. Table 14.2 shows the Qaddress modifiers that are generated in the object
program.
Some examples of printer statements are shown
below:

.

lobel

p...,at;o
1112

Operands & Remarks

15

"
p"RN DATA

20

25

30

35

PI? I NT NW1.ERI CALL Y"

..

"

"

"

PRN,s DATA .•. PRI NT NIJ.HER/CALLY AN!) SUPPRESS SPAC/Jit

SK.I.P 2
,I/vA

In these examples, the operand DATA represents the
core storage address of the data to be printed; the numerical operands (2, 5, 3, 3) are either channel numbers for skip operations or the number of spaces for
space operations. Table 14.3 shows the Q operands to
be placed in the skip and space statements for all
possible skip and space operations.

SK.U. I HlllDI ATE T.O CAR,RIA/U tHAI/NfL 2

t;

SKIP AFTER PRINTING T.O CA.R.RIA.G£ CHAN/iEL S.

SPIM 3 .•. .M.OV£
I

CARRIAG~,

3 SPACE S.,,11'1lfEDI A T,£

SPAP 3"."1.O.VE CA/VU A G£ ;}.' 'SPA eE'S AFT,ER Pf3,1 NIJ!1,G

,

Printer Declarative Statements

Two printer declarative mnemonics are included in the
printer-Oriented Monitor II System. Descriptions of
the mnemonics follow, together with the two-digit
code that is generated for the I/O constant. Note the
two forms of each declarative.
IBM 1620-1443 Monitor II System

135.2

Table 14.2.0P Codes and Q Modifiers Generated for Printer
Mnemonics

MNEMONIC

OPERATION

Table 14.3. Q Operands and Q Modifiers for Skip and Space
Operations

Q MODIFIERS
OP
CODE °8 Q 9 QIO Q ll

ACTUAL Qla' Q II MODIFIERS
IMMEDIATE

AFTER PRINTI NG
(DELAY)

I

71

41

I

2

72

42

0

3

73

43

4

74

44

5

75

45

6

76

46

7

77

47

8

78

48

9

79

49

10

70

40

II

33

03

12

34

04

Number of Spaces I
(SPIM or SPAP)
2

51

21

52

62

3

53

63

CONTROL CODES
PRO

Printer Dump

35

0

9

PROS

Printer Dump and
Suppress Spacing

35

0

9

PRN

Print Numerically

38

0

9

PRNS

Print Numerically and
Suppress Spacing

38

0

9

I

PRA

Print Alphamerically

39

0

9

0

PRAS

Print Alphamerically
and Suppress Spacing

39

0

9

BCH9

Branch on Channel 9

46

3

3

BCOV

Branch on Overflow

46

3

4

SKIP

Skip Immediate

34

0

9

*

SKAP

Skip After Printing

34

0

9

".

SPIM

Space Immediate

34

0

9

*

SPAP

Space After Printing

34

0

9

*

0

Not
used

I

"---

*Modifiers which specify the particular skip or space operation
(see Table 14.3). For a detailed description of these modifiers,
refer to the publication entitled IBM 1443 On-line Printer for
1620/1710 Systems (Form A26-5730).

Mnemonic
DPRN
DPRN" S
DPRA
DPRA, ,S

Code Name
I4 Define Printer Numerical
22 Define Printer Numerical Suppress Spacing
18 Define Printer Alphameric
2B Define Printer AlphamericSuppress Spacing

These declarative operations generate an I/O constant in the object program which can be used by a
PUT I/O macro-instruction to print data under control
of the I/O routine. When used in the source program,
they identify the output record area. Three operands
are required for each statement. The first operand is
used to specify the address where the I/O constant is
to be loaded into core storage. This operand may be an
absolute value or a symbolic name. If a symbolic name
is used, the symbol must previously have been defined
as an absolute value. If the operand is omitted, the
processor will assign the address to which the constant will be loaded in core storage.
The second operand, which may be symbolic or actual, is the address of the output record area. This address will be included in the I/O constant in the object
program. The third operand may be the letter S or it
135.3

Skip to Chamel
(SK IP or SKAP)

may be omitted. If the letter S is present, the automatic single space after printing will be suppressed
whenever the associated output record is printed. Remarks are permitted following the third operand.
If a label is included with this statement, the storage
address assigned to it will be that of the leftmost position of the generated I/O constant.
The statements which follow show how a DPRA declarative statement is used with a PUT I/O macro-statement to print a 110-alphameric character record under
control of the Supervisor I/O routine. In this example,
the first two statements define the output area where
the record is stored.

.

Lobel

P-o""

"

RECOR.~

12

IS 1,

Operanch & Remattl:s
2'0

30

:H

DAS IIO •.• DEFINE

IM,e. I .a.HI/ST

lS

ALPHAME~/C

iIO

45

50

ouTPUT ~ECO~D
HARK

"

..

FOLLOWtllT.H RECO/?J)

PJ(,N,TIl, ID.P.RA REC(lIID •• IPENTIH PRINTER OVTP.IIT RECORD.
PUT. PRN,TR.. AIR I T.E OV,1P,IJr REC AS SPEC I F I E.D. BY DP.RA.

The declarative statements are usually written preceding or following the program; however, the macrostatement is entered in the program at the point where
printing is to take place.

of the ann after the last
disk IORT operation).

Printer Control Records

In the printer-oriented Monitor II System, there are
three sps control records that pertain to printer operations. The first two described here are modifications of
sps control records used in the standard system; the
third is a new control record.
o LIST PRINTER - This record replaces the LIST
TYPEWRITER record used in the standard system. It
causes a listing to be printed by the printer during
assembly.
The format of the listing is as follows: page and line
number, label, op code, operands, remarks, core location, and object instruction.
°PRINT SYMBOL TABLE - This record replaces
the TYPE SYMBOL TABLE record used in the standard
system. It causes the symbol table to be printed by
the printer following assembly.
00 XXXXXXXXXXX - This record is used to print a
heading above listings and/or symbol table printouts.
The data (signified by Xs above) that follows the two
asterisks is printed at the top of the respective printouts. When this record is printed during assembly, it is
shown as an Identification record with the code (ID)
printed to the left of the two asterisks. This is also true
of all Identification records used in the printer-oriented system; that is, the code (ID) is printed to the left
of the record instead of to the right as in the standard
system.

Assembly Errors

In addition to the SPS ll-D error codes and deSCriptions
listed in a previous section of this manual, the following error conditions will cause an error typeout:
1. A space specification that is either 0 or greater
than 3
2. A skip specification that is either 0 or greater
than 12
Either of the above conditions will be indicated by
the error code ER5.
If no Error Stop control record is included in the
assembly, the processor will cause an erroneous space
or skip specification to be set to 1.
Error messages will appear on the typewriter, not
on the printer.

fORTRAN II-D
The FORTRAN ll-D compiler has been modified to take
advantage of the printer while compiling object programs. Although the basic FORTRAN language remains
unchanged, the specifications of two FORTRAN output
statements have been modified, and five new control
records have been added. Also, the printer has replaced the console typewriter as the basic printedoutput medium.
Language

IBM-Defined System Symbols

In the printer-oriented system, the following system
symbols are available to the user. Notice that the symbols are the same as those used in the standard system,
but some of the equivalences are changed.
Symbol
9RCYLO
9RCYLI
9RCYL2
9RCYL3

9CCYLO
9CCYLI
9CCYL2
9CCYL3

Equivalence Description
00513
These are the low-order positions of four 2-digit fields
00515
which contain the numbers
00517
of cylinders (00-99) where
00519
the disk access arm is repositioned after a disk operation in which a reposition
has been requested. The
four fields refer to drives 0,
1, 2, 3, respectively.
02124

02126
02128
02130

These are the low-order p0sitions of four 2-digit fields,
similar to the previous four.
However, these positions
contain the cylinder numbers of the current access
ann positions (the position

PRINT - In the printer-oriented system, a PRINT
statement is used to print data on the 1443 Printer. A
TYPE statement is still used to type data on the console typewriter.
FORMAT - A FORMAT statement, when used in conjunction with a PRINT statement, can provide for up
to 120 characters for each printed line (or 144 characters if the system has been properly defined using
the DUP Define Parameters routine). A FORMAT statement used with a TYPE statement is still limited to
87 characters for each typed line.
CARRIAGE CONTROL

Each time a line of print is called for, the print output
routine will initiate a carriage space or skip operation.
The type of operation that is initiated is determined
by the first digit (carriage control digit) in the record
of data to be printed. The carriage operations that result from the carriage control digit are as follows:
blank - single space before printing
- double space before printing
1-9
- immediate skip to channels 1-9

o

The carriage control digit is not printed. Therefore,
to ensure that all of the data specified by the PRINT
IBM 1620-1443 Monitor II System

135.4

statement is printed out, the user should insert a 1H
specification in the corresponding FORMAT statement
wherever a new line of print is called for.

to take advantage of the characteristics of the printer.
The loader map also appears on the printer.
Error Messages

Example
PRINT 2, A, B, J
2 FORMAT (lHO, FB.2, FB.3, IB)
This specification will cause the printer to space
twice before printing any data. Since the printer does
not automatically space before printing, a single blank
line will appear between the line being printed and
the previous printed line.
If more than one line of print is specified in the
same FORMAT statement, the carriage control specification might appear as follows:
5 FORMA T (lHO, FB.2/1HO, E14.6)
Control Records

The five new control records that have been added to
FORTRAN II-D for the printer-oriented Monitor system
are:
LIST PRINTER
ARITHMETIC TRACE
o IF TRACE
o ALL STATEMENT MAP
00 XXXXXXXXX

, 0

o

The first four in the list are compile-time options
previously available through console switch settings.
The last record is a means of obtaining a heading at
the top of each printed page.
The format of these records is the same as described
in the section entitled FORTRAN II-D CONTROL RECORDS.
o LIST PRINTER - This record will cause program
listings and symbol table output to be printed.
o ARITHMETIC TRACE - This record will cause
trace instructions to be compiled for arithmetic
statements.
o IF TRACE - This record win cause trace instructions to be compiled for the purpose of tracing the
value of the expression generated in an IF statement.
o ALL STATEMENT MAP - This record will cause
the address of the first instruction generated for
each statement to be printed.
00 XXXXXXXXX - This record will cause a heading
to be printed at the top of each printed page. The
Xs represent the heading. Up to 78 characters may
be specified.
Listings and Symbol Table Output

Listings and symbol table output will appear on the
printer instead of the console typewriter. The control
records used to obtain these outputs are described
above. The formats of the outputs have been ch8!nged
135.5

All error messages will appear on the printer; in addition, error message D 1 will also appear on the console typewriter. Instructions to the operator, for example, LOAD SUBNAM, will appear on the console
typewriter.
Subroutine error code F9 has been modified to include any printer records that exceed 120-characters,
or 144-characters if using the 144-print position subroutines.
Trace Routine

If the trace routine is used, its output will appear on
the printer. If the 144-print position subroutines are
used, floating variables will appear in E-type format
and fixed variables will appear in I-type format.
Carriage Control Tape

The carriage control tape, when used for assembling
and compiling, should be punched in channel 1 to
indicate the beginning of a page, and punched in
channel 12 to indicate the end of a page. When the
program senses the hole in channel 12, it automatically executes a skip to the channell hole, which indicates the beginning of the next page.
Arithmetic and I/O Subroutines

The arithmetic and I/O subroutine sets used in the
1620-1443 Monitor II System are longer than the sets
used in the standard 1620 Monitor II System. This
means that the starting addresses of FORTRAN object
programs are higher in the printer-oriented systems,
as shown below:
Standard
System
U sing in-core variable
length arithmetic
and I/O subroutines.
13000
Using out-of-core
variable length
arithmetic and I/O
subroutines.
07500
Using in-core fixed
length arithmetic
and I/O subroutines.
11200
Using out-of-core
fixed length arithmetic and I/O subroutines.
07500

120 Print
Position
System

"

144 Print
Position
System

13300

13500

07Boo

OBooo

11500

11700

07Boo

OBOOO

The 120-print position subroutines are a standard
part of the 1620-1443 Monitor II System. If the 144print position subroutines are desired, program number 1620-LM-052 (card) or 1620-LM-053 (tape)
should be loaded to disk in place of the standard set.
The 144-print position subroutines can be loaded over
the standard 120-print position routines. Care should
be taken at this point to define the system for 144-

print positions as previously described. After loading
the 144-print position subroutines, the System Table
Editor program must be executed due to the differences in DIM Table entries between the 120- and 144print position subroutines. If the 120-print position
subroutines are later re-Ioaded, System Tables must
also be loaded.

IBM 1620-1443 Monit01' II System: 135.6

Monitor II System Loader

This program is used initially to load the Monitor n
System from cards or paper tape into disk storage.
Cards contain 75 columns of data followed by a 5position sequence number. Sequence numbers are not
present with tape data.
The system to be loaded,. in card or paper tape
form, is comprised of several blocks of data, each
with a unique deck number, a Heading Control record, and a 9's trailer record. With this arrangement
it is possible to load each new block of data to a
different area of disk storage as specified by the
Heading Control records. For card input, the cards
within a data block must be consecutively numbered
in ascending sequential order.
The combined input data, i.e., all data blocks, must
be preceded by the Loader Program itself. This program is contained in approximately forty cards. If the
sequence of the first four cards is inadvertently altered,
the program may not operate correctly. The loader
program is deck number 00, columns 30-31. All input
.cards, with the exception of the first four cards of deck
00, are sequence checked by the loader.

Data

Columns

1-75 Data to be loaded to disk storage.
76-80 Sequence number.

Trailer

Columns

1-5

99999

6

=f=

7-8

00

Operating Procedures
Switches

The Disk, Parity, I/O and O'FLOW check switches
should be in the PROGRAM position for either card or
tape loading. For card or tape input, the program will
halt after each trailer card if Program Switch 1 is off.
If the switch is on, all data blocks are loaded without
stopping the computer. Therefore, the user can stack
input, if desired.
Paper Tape Loading

1. Ready the paper tape reader with the Loader
tape reel.

Card formats

2. Enter 36 00000 00300 from the typewriter.

Heading Control

Columns

3. Depress the Release and Start keys.

1

Asterisk (0).

2-7

Code word,

9-14

Name of data block (program,
table, etc.) to follow.

LDCNTR.

16-21 Address of first sector to be loaded.
23-28 Address of last sector to be loaded.
30-32

136

Deck number. This number, combined with the two positions 79-80,
constitutes the sequence number.
Blanks are interpreted as zeros.
Therefore, the number 55 and a
blank in columns 30-32 are interpreted as sequence number 55000.
The first card of the data block
must then begin with the sequence
number 55001 in columns 76-80.

4. Ready the tape reader with the Data tape reel.
5. Depress the 1620 Start key.
6. Return to step 4 to load successive Data tapes.
NOTE: When loading with Switch 1 on, the Loader
will continue to read more data after each data group
has been loaded. Therefore, several such data input
groups may be present on one input reel.
Card Loading

1. Ready the card reader with deck number 00,
Loader Program. The remaining decks may be
stacked behind deck 00 as explained under
SWITCHES.

2. Depress the 1622 Load key.

Messages

FOR CARD LOADER ONLY

Message/Cause/Operator Action
FOR BOTH PAPER TAPE AND CARD LOADERS

Message/Cause/Operation Action

AAAAAA LOADED FROM FFFFFF TO LLLLLL,
where AAAAAA is the name of a data block, FFFFFF
is the address of the first sector loaded, and LLLLLL
is the address of the last sector loaded. This message
will type following each successful deck loading. If
Program Switch 1 is on, it is an indication to the
operator to load the next deck.
DISK RD WR ERROR, START TO RETRY. This
message will type if a disk write error occurs that
cannot be corrected by one automatic retry. Depressing the Start key will cause the write operation to be retried twice. If the error is not corrected by the retries, the message will again be typed.

RD ER. This message will type if a paper tap~ or card
reading error occurs. To correct the error, ready the
reader with the corrected record and depress the
Start key. (An error card will be located next to the
last card in the stacker when a halt occurs for a
card reading error.)
CONTROL STATEMENT INVALID, RE-ENTER.
This message will type if any of the following conditions are encountered in Heading Control record
data.
1. A misspelled code word.
2. A record mark in column 6.
3. First sector to be loaded is greater than last
sector to be loaded. The user must supply a
corrected control record and depress the 1620
Start key.

SEQ. This message will type and the program will
halt if any of the cards in the loader program,
with the exception of the first four cards, is out of
sequence. To resume loading, (1) restore the cards
to their correct sequence and place them in the
card hopper, (2) depress the Start keys on both
the card reader and 1620 console.
NNNNN CARD SEQ ERROR, CORRECT AND
START, where NNNNN is the sequence number of
the first data card out of consecutive ascending sequence. After the message is typed, the program
will halt. To restart the computer, (1) restore the
sequence of data cards, starting with the card in
error, (2) place the resequenced cards in the card
read hopper, (3) depress the Start keys on both
the card reader and 1620 console.
NO TRAILER REC. CORRECT, RE-LOAD COMPLETE DECK WITH CNTR REC, AND BR TO
7404. This message will type and the program will
halt if a 9's trailer record is missing following any
data block. To restart the computer, the user
should (1) restack the cards in the card reader so
as to restart card reading with the Header card of
the data block which had the missing trailer record. (2) Depress the Reset and Insert keys. (3) Enter 49 07404 from the typewriter. (4) Depress the
Helease and Start keys. (5) Depress the card reader Start key.
TRAILER CARD SEQ ERROR, CORRECT AND
START. This message will be typed if the sequence
number on the trailer card is incorrect. The procedure for restarting as the same is for any other
card sequence error.

Monitor System Loadn

137

Appendix A

Table 15. Summary of SPS Declarative Operations
NOTE:
Except for the constants in DC, DSC, and DAC, all operands may be actual or symbolic.
All symbolic length and address
operands must be previously defined. All operands may use address adjustment. Remarks may follow operands except in DSA and DVLC
statements. "Alpha Record Address" in the table refers to the leftmost position plus one of an alphameric field, whereas "Field Address"
refers to the rightmost position of a field. The term" Numerical Record Address" refers to the leftmost position of a field.
DECLARATIVE STATEMENT
FORMAT
OP
OPERANDS
LABEL
CODE

AMOUNT ADDED TO LOCATlON ASSIGNMENT COUNTER
IF ADDRESS (A) IS BLANK

VALUE STORED IN SYMBOL
TABLE AS EQUIVALENT
TO "SYMBOL"

DATA FIELDS WHICH ARE
LOAQED AS A PART OF
THE OBJECT PROGRAM

SYM

OS

L,A

l (length).
If l is blank, 0 is added.

A address. If A is blanK, the
field address from .the location
assignment counter is stored.

None.

SYM

DSS

l,A

l (length).
If l is blank,

A address. If A is blank, the
numerical record address from
the location assignment counter
is stored.

None.

SYM

DAS

l,A

2 x L is added . If L is blank,

A address must be odd. If A is
blank, the alpha record address
from the location assignment
counter is stored.

None.

SYM

DC

l,C,A

L is added.

A address. If A is blank, the
field address from the location
assignment counter is stored.

C, the (numeriCal) constant.

SYM

DSC

L,C,A

l is added.

A address. If A is blank the
numerical record address from
the location assignment counter
is stored.

C, the (numerical) constant.

SYM

DVlC

A, l,C,
l,C, etc.

L is added.

First C address.

C, C, etc., the (numericQI)
constants .

SYM

DAC

L,C,A

2 x l is added.

A address must be odd. If A is
blank, the alpha record address
from the location assignment
counter is stored.

C, the (alphameric) constant.

SYM

DSA

D,E,F,G,
H, I, J, K,
l,M

5 x (number of addresses) is
added.

Field address of the first address
on list.

A list of the actual addresses
that correspond to D,E,F, etc.

SYM

DSB

l,N,A

A address. If A is blank, field
length of each element times
the number of elements is added. address of the first element is
stored.

None.

SYM

DNB

L,A

l is added.

A address. If A is blank, the
field address from the location
assignment counter is stored.

Number of blank characters
that equal L.

SYM

DDA

A, D,F ,S,
M

14, length of a disk control
field.

(Same as DSC) •

D,F,S,M.

SYM

DGM

A

1

A address or location counter.

=1=

SYM

DOT

P, A

Length of table.

A address or locati on
counter.

Octal table of powers
to P followed by

138

o is added.

o is added.

(Group Mark) .

Table 16. Summary of SPS Arithmetic Instructions
NOTE: Indirect Addressing and indexing are allowable with all P address operands listed below. An * to the
left of the 0 operand indicates these features may be used with it.
OPERATION

OPERANDS

OPERA TlON CODE
MNEMONIC

ACTUAL

P ADDRESS

o ADDRESS

Add

A

21

Storage address of units position
of augend

Add Immediate

AM

11

Same as code

Subtract

S

22

Storage address of units position
of minuend

Subtract
Immediate

SM

12

Same as code

Multiply

M

23

Storage address of units position
of multiplicand

Multiply
Immediate

MM

13

Same as code

Load Dividend

LD

28

Storage address in product area
to which units position of field
(dividend) is to be transmitted

Load Dividend

LDM

18

Same as code

Divide

D

29

Storage address at which first
subtraction of the divisor occurs

Divide
Immediate

DM

19

Same as code

Floating Add
(special feature)

FADD

01

Storage address of units position
of exponent of augend

*Storage address of units
position of exponent of addend

Floating Subtract (spec i a I
feature)

FSUB

02

Storage address of units position
of exponent of minuend

*Storage address of units
position of exponent of subtrahend

Floating
Multiply
(special feature)

FMUL

03

Storage address of units position
of exponent of multiplicand

*Storage address of units
position of exponent of
multiplier

Floating
Divide (special
feature)

FDIV

09

Storage address of units position
of exponent of dividend

*Storage address of units
position of exponent of divisor

21

22

23

28

29

*Storage address of units
position of addend
011 of instruction is units
position of addend
*Storage address of units
position of subtrahend

011 of instruction is units
position of subtrahend
*Storage address of units
position of multiplier

011 of instruction is units
position of multiplier
*Storage address of units
position of dividend

011 of instruction is units
position of dividend
*Storage address of units
position of divisor

011 of instruction is units
position of divisor

Appendix

139

Table 17.

Summary of SPS Internal Data Transmission Instructions

NOTE: Indirect Addressing and indexing are allowable with all P address operands listed below. An * to the
left of the Q address operand indicates these features may be used with it.
OPERATION

OPERATION CODES
MNEMONIC
ACTUAL

OPERANDS
P ADDRESS

Q ADDRESS

Transmit Digit

TD

25

Storage address to which single
digit is transmitted

*Storage address of single digit
to be transmitted

Transmit Digit
Immediate

TDM

IS

Same as code 25

Q 11 of instruction is the single
digit to be transmitted

Transmit Field

TF

26

Storage address to which units
position of field is transmitted

Transmit Field
Immediate

TFM

16

Same as code 26

*Storage address of units
position of field to be transmitted
Q II of instruction is the units
position of the field to be transmitted

Transmit Record

TR

31

Transmit Record
No Record Mark

TRNM

30

Storage address to which highorder position of the record is
transmitted
Same as code 31

*Storage address of high-order
position of the record to be
transmitted
*Same as code 31

Transfer
Numerical Strip

TNS

72

Storage address of rightmost
position of alphameric field to
be transmitted

*Storage address of the units
position of the numerical field

Transfer
Numerical Fi"

TNF

73

Storage address of rightmost
position of alphameric field

*Srorage address of the units
position of the numerical field to
be transmitted

Floating Shift
Right (special
feature)

FSR

08

Storage address to which units
(rightmost) digit of mantissa is
transmitted

*Storage address (rightmost) digit
of mantissa to be transmitted

Floating Shift
Left (special
feature)

FSL

05

Storage address to which highorder digit of the mantissa is
transmitted

*Storage address of low-order
digit of mantissa to be transmitted

Transmit
Floating

TFL

06

Storage address to which units
*Storage address of units position
position of eXJ?onent is transmitted of exponent of field to be transmitted

Move Address
(special feature

MA

70

Storage address of units position
of 5-digit field to w!:Jich data
is transmitted

*Storage address of units position
of 5-digit field to be transmitted

OR to Field
(special feature)

ORF

92

Storag/i address of leftmost
position of first field for OR
logic input

*Storage address of leftmost
position of second field for OR
logic input

AND to Field
(special feature)

ANDF

93

Storage address of leftmost
position of first field for AND
logic

Exclusive OR
to Field (special
feature)

EORF

95

Storage address of leftmost
position of first field for
Exclusive OR logic

*Storage address of leftmost
position of second field for AND
logic
*Storage address of leftmost
position of second field for
Exclusive OR logic

Complement
Octal Field
(special feature)

CPLF

94

Storage address of leftmost
position of field to which data
is transmitted

*Storage address of leftmost
position of field to be complemented

Octal to
Decimal Conversi')n (special
feature)
Decimal to
Octal Conversion (special
feature)

01'0

96

Storage address of the units
position of the power-of-eight
table

*Storage address of leftmost
position of field to be converted

DTO

97

Storage address of the units
position of the highest power-ofeight required

*Storage address of leftmost
position of field to be converted

14.0

Table 18.

Summary of SPS Logic (Branch and Compare) Instructions

NOTE: Both the BI {Branch Indicator} and BNI {Branch No Indicator} instructions require one of the switch
or indicator codes listed in Table 21 as a Q address. The code indicates the switch or indicator to be interrogated for status. To relieve the programmer of having to code a Q address, unique mnemonics are included
in SPS language for both BI- and BNI-type instructions. For a unique mnemonic, the processor generates the
actual machine language code 46 {Branch Indicator} or 47 {Branch No Indicator} and the Q address that
represents the switch or indicator.
Indirect Addressing and indexing are allowable with all P address operands listed below except Branch Back.
An * to the left of the Q address operand indicates these features may be used with it.
OPERATION

OPERANDS

OPERATION CODES
MNEMONIC ACTUAL

P ADDRESS

Q ADDRESS

Compare

C

24

Storage address of units position
of the field to which another
field is compared

*Storage address of units
position of the field to be
compared with the field at the
P address

Compare
Immediate

CM

14

Same as code 24

Ql1 of instruction is units
position of the field to be
compared with the field at the
P address

Branch

B

49

Storage address of the leftmost
digit of the next instruction to
be executed

Not used

Branch and
Adjust Assignment Counter

B7

49

Storage address of the leftmost
digit of the next instruction to
be executed

Not used. However, these five
10cations.Qlll used by the next
instruction in sequence

Branch
No Flag

BNF

44

Storage address of the leftmost
digit of next instruction to be
executed if branch occurs

*Storage address to be
interrogated for presence of a
flag bit

Branch No
Record Mark

BNR

45

Same as code 44

*Storage address to be
interrogated for presence of a
record mark character

Branch No
Group Mark

BNG

55

Same as code 44

*Storage address to be
interrogated for presence of a
group mark character

Branch on
Digit

BD

43

Same as code 44

*Storage address to be
interrogated for a digit other
than zero

Branch
Indicator

BI

46

Storage address of leftmost
position of next instruction to
be executed if indicator tested
is on

QS and Q9 of instruction
specify the program switch or
indicator to be interrogated
{see Table 21}

Branch High

BH

46

Same as BI

None required

Branch Positive

BP

46

Same as BI

None required

Branch Equal

BE

46

Same as BI

None required

Branch Zero

BZ

46

Same as BI

None required

Branch Overflow

BV

46

Same as BI

None required

Branch Any
Data Check

BA

46

Same as BI

None required

Unique Branch
Indicator
Mnemonics:

Appendix

141

Table 18.

Summary of SPS Logic (Branch and Compare) Instructions (cont'd.)

OPERATION

OPERATION CODE
MNEMONIC ACTUAL

OPERANDS
P ADDRESS

Q ADDRESS

Branch Not
Low

BNl

46

Same as BI

Nonerequ ired

Branch Not
Negative

BNN

46

Same as BI

None required

Branch Band
A Selected

BBAS

46

Same as BI

None required

Branch Band
B Selected

BBBS

46

Some as BI

None required

Branch Neither
Band Selected

BNBS

46

Same as BI

None required

Branch Console
Switch 1 On

BCl

46

Same as BI

None required

Branch Console
Switch 2 On

BC2

46

Same as BI

None required

Branch Console
Switch 3,On

BC3

46

Same as BI

NC'ne required

Branch Console
Switch 4 On

BC4

46

Same as BI

None required

Branch last
Card

BlC

46

Same as BI

None required

Branch Exponent Check
(special feature)

BXV

46

Same as BI

None required

Branch No
Indicator

BNI

47

Storage address of leftmost
position of next instruction to
be executed if indicator tested
is off

Qa and 09 of instruction
specify program switch or
indicator to be interrogated
(see Table 21)

Branch Band A
Not Se lected

BANS

47

Same as BNI

None required

Branch Band B
Not Se Iected

BBNS

47

Same as BNI

None required

Branch Either
Band Selected

BEBS

47

Same as BNI

None required

Branch Not
High

BNH

47

Same as BNI

None required

Branch Not
Positive

BNP

47

Same as BNI

None required

Branch Not
Equal

BNE

47

Same as BNI

None required

Branch Not
Zero

BNZ

47

Same as BNI

None required

Unique Branch
No Indicator
Mnemonics:

142

Table 18.

Summary of SPS Logic(Branch and Compare) Instructions (coned.)

OPERATION

OPERATION CODE
MNEMONIC

OPERANDS
P ADDRESS

ACTUAL

Q ADDRESS

Branch No
Overflow

BNV

47

Same as BNI

None required

Branch Not Any
Data Check

BNA

47

Same as BNI

None requ ired

Branch Low

BL

47

Same as BNI

None required

Branch
Negative

BN

47

Same as BNI

None required

Branch Console
Switch 1 Off

BNCI

47

Same as BNI

None required

Branch Console
Switch 2 Off

BNC2

47

Same as BNI

None required

Branch Console
Switch 3 Off

BNC3

47

Same as BNI

None required

Branch Console
Switch 4 Off

BNC4

47

Some as BNI

None required

Branch Not
Lost Card

BNLC

47

Some as BNI

None required

Branch Not
Exponent Check
(special feature)

BNXV

47

Some as BNI

None required

Branch and
Transmit

BT

27

P address minus one is the
storage address to which the units
position of the Q field is transmitted. P address is leftmost
digit of the next instruction to
be executed

*Storage address of units
position of the field to be
transmitted

Branch and
Transmit
Immediate

BTM

17

Some as cade 27

Q 11 of instruction is units
position of field to be transmitted

Branch and
Transmit
Address

BTA

20

Same as code 27

Storage address of units
position of the field to be
transmitted

Branch and
Transmit Address
Immediate

BTAM

10

Same as cade 27

Q 11 of instruction is units
position of field to be transmitted

Branch Back

BB

42

Not used

Not used

Branch Bock
and Adjust
Assignment
Counter

BB2

42

Not used. However, these
five locations m used by
the next instruction in
sequence

Not used. However, these
five locations 2[! used by
the next instruction in
sequence

Branch and
Transmit
Floating

BTFL

07

P address minus one is the
storage address to which the
units position of the exponent
portion of the Q field is transmitted. P is the storage address
of the leftmost digit of the next
instruction to be executed

*Storage address of units
position of exponent of field to
be transmitted

Branch and
Select

BS

60

Storage address of the leftmost
position of the next instruction

Q
specifies condition to be
se ected

Unique Branch
and Select
Mnemonics:
Branch and
Select Indirect
Addressing

II

"

BSIA

60

Some as BS
,~

,

None required

Appendix

143

Table 18.

Summary of SPS Logic (Branch and Compare) Instructions (cont'd.)

OPERATION

OPERATION CODE

OPERANDS
P ADDRESS

MNEMONIC ACTUAL

Q ADDRESS

Branch and
Se lett No 1/A

BSNI

60

Same as BS

None required

Branch and
Select Band A
(special feature)

BSBA

60

Same as BS

None required

Branch and
Se leet Band B
(special feature)

BSBB

60

Same as BS

None required

Branch and
Select No Index
Register (special
feature)

BSNX

60

Same as BS

None required

Branch and
Modify Index
Register (special
feature)

BX

61

Same as BS

.... Storage address of units
posit ion of field to be added to
selected index register

Branch and
Modify Index
Register
Immediate
(special feature)

BXM

62

Same as BS

**Five digits of Q field are
added to selected index register

Branch
Conditionally,
Modify Index
Register (special
feature)

BCX

63

Same as BS if (after modification)
IX sign has not changed or
result is not' zero

Same as BX

Branch
Conditionally,
Modify Index
Register
Immedidte
(special feature)

BCXM

64

Same as BCX

Same as BXM

Branch and load
Index Register
(special feature)

,SLX

65

Same as BS

**Storage address of units
position of 5-digit field to be
loaded to selected index register

Branch and
load Index
Register
Immediate
(special feature)

BLXM

66

Same as BS

"*Five digits of Q field are
loaded to selected index register

Branch and
Store Index
Register
(special feature)

BSX

67

Same as BS

**Storage address of units
position of field where selected
index register data is to be
stored

Branch on Bit
(special feature)

BBT

90

Storage address of the leftmost
position of next instruction if
comparison is·successful

*Q8-ll specifies storage address
of units position of field to be
compared with bits of the Q7
digit

Branch on Mask
(special feature)

BMK

91

Same as code 90

*QS-Il specifies storage addre.ss
of units position of field to be
compared with Q7 digit

**Specific index register is selected

144

Py

flCl9S over the Q8-10 positions of the instruction.

Table 19.

Summary of SPS Input and Output Instructions

NOTE: Indirect Addressing and indexing are allowable with all P address operands, where a P operand is
required. None of the Q operands shown may be used with Indirect Addressing or Index Registers.
OPERATION

OPERATION CODE
MNEMONIC ACTUAL

OPERANDS
P ADDRESS

Q ADDRESS

RN

36

Storage address at which leftmost
(first) numerical character is
stored

Q 8 and Q9 of instruction
specify input unit

Read
Numerically
Typewriter

RNTY

36

Same as RN

None requ ired

Read
Numerically
Paper Tape

RNPT

36

Same as RN

None required

Read
Numerically
Card

RNCD

36

Same as RN

None required

Write
Numerically

WN

38

Storage address from which leftmost (first) numerical character
is written

Q8 and Q9 of instruction
specify output unit

Write
Numerically
Typewriter

WNTY

38

Same as WN

None required

Write
Numerically
Paper Tape

WNPT

38

Same as WN

None required

Write
Numerically
Card

WNCD

38

Same as WN

None required

Dump
Numerically

ON

35

Same as WN

Same as WN

Dump
Numerically
Typewriter

DNTY

35

Same as WN

None required

Dump
Numerically
Paper Tape

DNPT

35

Same as WN

None required

Dump
Numerically
Card

DNCD

35

Same as WN

None required

Read
Alphamerically

RA

37

Storage address at which numerical digit of leftmost (first)
character is stored. (Zone digit
of first character is at P minus
one)

Q8 and Q9 of instruction
specify input unit

Read
Numerically

Unique Read
Numerically
Mnemonics:

Unique Write
Numerically
Mnemonics:

Unique Dump
Numerically
Mnemonics:

Appendix

145

Table 19.

Summary of SPS Input and Output Instructions (cont'd.)

OPERATION

OPERANDS

OPERATION CODE
MNEMONIC ACTUAL

P ADDRESS

Q ADDRESS

Unique Read
Alphamerically
Mnemonics:
Read Alphamerically
Typewriter

RATY

37

Same as RA

None required

Read Alphamerically
Paper Tape

RAPT

37

Same as RA

None required

Read Alphamerica Ily Card

RACD

37

Same as RA

None req u ired

Read Binary
Paper Tape
{special feature}

RBPT

37

Same as RA

None required

Write Alphamerically

WA

39

Storage address of numerical
digit of leftmost (first) character
to be written. (Zone digit of
first character is at P minus one)

Q8 and Q9 of instruction specify
output unit

Write Alpha ..
merically
Typewriter

WATY

39

Same as WA

None requ ired

Write Alphamerically
Paper Tape

WAPT

39

Same as WA

None required

Write Alphamerically Card

WACD

39

Same as WA

None required

Write Binary
Paper Tape
(special feature)

WBPT

39

Same as WA

None required

Control

K

34

Not used

Q8 and Q9 specify input/output
unit.. Q 11 specifies control
functIons

BKTY

34

Not used

None required

Unique Write
Alphamerically
Mnemonics:

Unique Control
Mnemonics:
Backspace
Typewriter

Tabulate
Typewriter

TBTY

~4

Not used

None required

Index Typewriter

IXTY

34

Not used

None required

Return Carriage
Typewriter

RCTY

34

Not used

None req u i red

Space Typewriter

SPTY

34

Not used

None required

146

Table 19.

Summary of SPS Input and Output Instructions (cont'd.)

OPERATION

OPERANDS

OPERATION CODE
MNEMONIC ACTUAL

P ADDRESS

Q

Seek

SK

34

Storage address of disk control
field

X07Xl

Read Disk/
WLRC

RDGN

36

Same as SK

XOlXO

Write Disk/
WLRC

WDGN

38

Same as SK

X07XO

Check Disk/
WLRC

CDGN

36

Same as SK

XOlXl

Read Disk
Track;WLRC

RTGN

36

Same as SK

XOlX4

Write Disk
Track;WLRC

WTGN

38

Same as SK

X07X4

Check Disk
Track/WLRC

CTGN

36

Same as SK

XOlX5

Read Disk

RON

36

Same as SK

XOlX2

Write Disk

WON

38

Same as SK

XOlX2

Check Disk

CON

36

Same as SK

X07X3

Read Disk
Track

RTN

36

Same as SK

XOlX6

Write Disk
Track

WTN

38

Same as SK

X07X6

Check Disk
Track

CTN

36

Same as SK

XOlX7

Table 20.

ADDRESS

Summary of SPS Miscellaneous Instructions

NOTE: Indirect Addressing and indexing are allowable with all P or Q address operands that are marked with
an *.
OPERATION

OPERANDS

OPERATION CODE
MNEMONIC ACTUAL

P ADDRESS

Q ADDRESS

Set Flag

SF

32

*Storage address at which flag
bit is placed

Not used

Clear Flag

CF

33

*Storage address from which flag
bit is cleared

Not used

Move Flag

MF

71

*Storage address to which flag
bit is moved

*Storage address of flag bit to
be moved

Halt

H

48

Not used

Not used

No Operation

NOP

41

Not used

Not used

Appendix

147

Table 21.

1620/1710 Indicator Codes for SPS BI-BNI
Instructions

NOTE: This table lists only those indicators that do not have unique
mnemonics.
Q ADDRESS

INDICATOR

Q7 Q 8

Q

9

QIO

INDICATOR
Process Branch Indicator 8

Q

II

Q ADDRESS
Q 7 Q 8 Q 9 QIO
7
7

Process Branch Indicator 9

7

8

Process Branch Indicator 10

7

9
0

Process Branch Indicator 11

8

0

6
7

Process Branch Indicator 12

8

I

MAR Check

0

8

Process Branch Indicator 13

8

2
3

Read Check

0

Write Check
MBR-E Check

I

6

Process Bran"ch Indicator 14

8

MBR-O Check

I

7

Process Branch Indicator 15

8

4

Operator Entry

I

8

Process Branch Indicator 16

8

5

Terminal Address Selector (TAS)
Check

Process Branch Indicator 17
2

I

8

6

Function Register Check

2

2

Process Branch Indicator 18
Process Branch Indicator 19

8
8

7
8

Analog Outp..lt (AO) Check

2

Mask

2

3
6

Customer Engineer (CE) Interrupt

2

7

Analog Outp..lt Setup

2

8

Multiplexer Busy

2

9

Multiplex Complete

4

0

Analog Outp..lt Setup Interrupt

4

J

One Minute Interrupt

4

3

One Hour Interrupt

4

4

Any SIOC Interrupt

4

5

Process Interrupt I

4

Process Interrupt 2

4

8
9

Process Interrupt 3

5

0

Process Interrupt 4

5

1

Process Interrupt 5

5

2

Process Interrupt 6

5

3

Process Branch Indicator 20

8

9

SIOC Output Error

6

0

4

3

Alert

6

0

4

5
0

SIOC Unit 1 Response

6

0

7

Sloe Unit 2 Response

6

0

7

I

SIOC Unit 3 Response

6

0

7

2

Sloe Unit 4 Response

6

0

7

3

SIOC Unit 5 Response

6

0

7

4

SIOC Unit 6 Response

6

0

7

5

SIOC Unit 7 Response

0

7

6

SIOC Unit 8 Response

6
6

0

7

7

SIOC Unit 9 Response

6

0

7

8

Sloe Unit 10 Response

6

0

7

9

SIOC Unit I I Response

6

0

8

0

SIOC Unit 12 Response

6

0

8

1

SIOC Unit 13 Response

6

0

8

2

Sloe Unit 14 Response

6

0

8

3

Sloe Unit 15 Response

6

0

8

4

SIOC Unit 16 Response

6

0

8

5

SIOC Unit 17 Response

6

0

8

6

SIOC Unit 18 Response

6

0

8

7

SIOC Unit 19 Response

0

8

8

0

8

9

Process Interrupt 7

5

4

Process Interrupt 8

5

5

Process Interrupt 9

5

6

Process Interrupt 10

5

7

Process Interrupt I I

5

8

Process Interrupt 12

5

9

Process Branch Indicator I

"7

0

SIOC Unit 20 Response

6
6

Process Branch Indicator 2

7

1

Disk Address Check

3

6

WLR/RBC
Cyli nder Overflow

3
3

7
8

Process Branch Indicator 3

7

2

Process Branch Indicator 4

7

3

Process Branch Indicator 5

7

4

Process Branch Indicator 6

7

5

Process Branch Indicator 7

7

6

148

QIJ

Any Disk Check

3

9

Seek Complete

4

2

Table 22.

1710 SPS Operation Codes

OPERATION

OPERANDS

OPERATION CODE
MNEMONIC ACTUAL

P ADDRESS

Q ADDRESS

SAO

84

Not used

Q7 specifies operation;
Q9 - Qll specify a
terminal address

Select Address

SA

84

Same as SAO

.Q7=I;Q9- Q ll
specify terminal address
of analog input point

Select Address
and Contact
Operate

SACO

84

Same as SAO

Q7 = 2; Q9 - Qll
specify terminal aCidress
of contact point

Select Analog
Output Signal

SAOS

84

Same as SAO

Q 7 = 3; Q 9 - Q II
specify terminal aCidress
of analog output
channel

Select Read
Numerically

SLRN

86

Depends upon particular
operation

Depends upon particular
operation

Select TAS

SLTA

86

Core location where
high-orcler position of
TAS is trcinsferred

Q7 = 1; Q8 - Qll are
not used

Select ADC
Register

SLAR

86

Core location where
high-order position of
ADC register is transferred

Q7= 2; Q9- Ql1
specify analog input
address

Select Contact
Block

SLCB

86

Core location where
Q7 = 7; Q9 - Ql1
status of the first contact specifies the contact
block address where
scanned is stored
reading begins

Select RealTime Clock

SLTC

86

Core location where
high-order digi t of RTC
is transferred

Q7 = 4; Q8 - Qll are
not used

Select ADC
and Increment
(1711 Modell)

SLAD

86

Core location where
high-order position of
ADC is transferred

Q7 = 6; Q8 - Qll are
not used

Select Manual
Entry Switches

SLME

86

Core location where
high-order digit of
Manual Entry switches
is transferred

Q 7 = 8; Q8 - Q 11 are
not used

Branch Out Of
Noninterruptible Mode

BO

47

Address to be placed in
IR-3

Q 8 - Q9 = 00; Q 11

Branch Out Of
Noni nterruptible Mode and
Load
Mask

BOLD

47

Address to be placed in
IR-I

Q8 - Q9

= 00; Q 11 = I

MK

46

Not used

Q8 - Q9

= 00; Q J I = 1

Unmask

UMK

46

Not used

Q8 - Q9 = 00; Q II

Select Input
Channel

SLIC

86

Not used

Q 10 - Q 11 specify the
address of an S 10C input
unit

Select Address
and Operate
Unique Select
Address and
Operate
Mnemonics:

Un~ue Select
Re
Numerically
Mnemonics:

=0

=0

Appendix

149

Table 22.

1710 SPS Operation Codes (cont'd.)

OPERATION

OPERATION CODE
MNEMONIC ACTUAL

OPERANDS
P ADDRESS

Q ADDRESS

=

Read Numerical
Input Channel

RNIC

86

Core storage location
where data is to be read

Q 7 5; Q8 - Q 11 not
used

Read Alphameric Input
Channel

RAIC

87

Same as RNIC

Same as RNIC

Wri te Numerica
Output Channel

WNOC

88

Core storage location
from which data is to
be written

Q 10 - Q 11 specify an
SIOC output unit

Write Alphameric Output
Channel

WAOC

89

Same as WNOC

Same as WNOC

Branch Outeut
Record Mar

BOR

46

Branch End of
Message

BRE

46

Core storage address of
None requ i red
leftmost posi tion of next
instruction to be executed if indicator tested
is on
Same as BOR
Same as BOR

Branch Mode
Shift

BMC

46

Same as BOR

Same as BOR

Branch Data
Ready

BIR

46

Same as BOR

Same as BOR

Branch SIOC
Not Busy

BCNB

46

Same as BOR

Same as BOR

Branch No
Outrt Record
Mar

BNOR

47

Core storage address of
leftmost position of next
instruction to be executed if indicator tested
is off

None requ ired

Branch No End
of Message

BNRE

47

Same as BNOR

Same as BNOR

Branch No
Mode Shift

BNMC

47

Same as BNOR

Same as BNOR

Branch No
Data Ready

BNIR

47

Same as BNOR

Same as BNOR

Branch No
SIOC Not Busy

BCB

47

Same as BNOR

Same as BNOR

Unique SIOC
Branch Indicator
Mnemonics:

Unique SIOC
Branch No
Indicator
Mnemonics:

150

.

Table 23.

SPS Subroutine Macro-instruction Execution Times

NOTE: These execution times depict the total time from the encountering of a Macro-statement to returning to the calling program.

AVERAGE EXECUTION TIME

SUBROUTINE
Floating Add

Fi xed length
Average time = 4, 100 ,",sec.
Variable length
Average time (in ,",s) =70L + 3420

where L ~ length of mantissa

Floating Subtract

Fi xed length
Average time" 4, 200 ,",sec.
Variable length
Average time (in ,",s) -" 70L + 3500

Floating Multiply

Fixed length
Average time ~ 5,300 ,",sec.
Variable length
Average time (in ,",s) = 36.6 L2 + 48L + 3240

Floating Divide

Fixed length
Average time = 10,900 ,",sec.
Variable length
Average time (in ,",s) " 98.5L 2 + 200L + 3490

Floating Shift Right

Fixed length and variable length
Average time (in ,",s) = 2270 + 45 (A-B)

Floating Shift Left

Fixed length and variable length
Average time (in fls) = 3830 + 350 (B-A)

2
-t-

7.5 (B-A)

Transmit Floating

Fixed length and variable length
Average time (in ,",s) .. 530 + 15L

Branch and Transmit Floating

Fixed length and variable length
Average time (in ,",s) = 645 + 15L

Floating Square Root

Fi xed length
Average time = 29 ms
Variable length
Average time (in ,",s) = 1OOL 2 + 2000L + 5500

FLoating Sine

Fixed length
Average time = 33.3 ms
*Variable length
Average time (in ,",s) = 5L3 + 320L2 + 3100L + 4900

Floating Cosine

Fixed length
Average time = 33.3 ms
* Variable length
A"erage time (in ,",s) = 5L3 + 296L2 + 2950L + 5400

Floating Arctangent

Fixed length
Average time = 31.7 ms
Variable length
Average time (in fls) = 35L3 + 570L2 + 400L + 7500

Floating Exponential (Natural)

Fixed length
Average time = 38 ms
NOTE: Add 11.4 ms to the average time if the argument is negative.
**Variable length
Average time (in ,",s) = 21L 3 + 240L 2 + 6000L - 1300

Floating Exponential (Base 10)

Fixed length
Average time = 39.8 ms
NOTE: Add 11.4 ms to the average time if the argument is negative.
** Variable length
Average time (in ,",s)

3

= 23L

2
+ 240L + 6050L - 1300

Floating Logarithm (Natural)

Fixed length
Average time 51.7 ms
Variable length
Average length (in ,",s) = 36.5L3 + 590L 2 + 1500L + 8600

Floating Logarithm (Base 10)

Fixed length
Average time = 56.6 ms
Variable length
3
2
Average time (in fls) =33.5L + 680L ~ 2100L + 5900

*NOTE: These execution times are for arguments less than 211. Arguments greater than 211 are reduced by subtractions of 211 until withit.
rcnge. TLerefore, the time required to perform these subtractions should be added to the average time required for an argumenr less than 211 •
** Add time for VL Divide if the argument is negative.

Appendix

151

Table 24.

1620 Character Coding

Character
(Blank)

Input
Typewriter
(Space)

• (Period)

ALPHAMERIC
MODE

Alpha

Num

C

(Blank)

C

C

XOS21

12,3,S

C

3

Output
Typewriter
(Space)

Tape

Card

C

(Blank)

X0821

12,3,S

)

XOCS4

12,4,S

C

4

)

XOCS4

12,4,S

+

+

XOC

12

1

C

+

XOC

12

$

$

XCS21

11,3,S

1

3

$

XCS21

11,3,~

*

*

XS4

11,S,4

1

4

*

XS4

11,4,S

- (Hyphen)

-

X

11

2

C

-

X

11

/

/

OCl

0,1

2

1

/

OCl

0,1

, (Comma)

,

OCS21

0,3,S

2

3

,

OCS21

0,3,S

(

(

084

0,4,S

2

4

(

084

0,4,S

=

=

S21

3,S

3

3

=

S21

3,S

@

@

C84

4,S

3

4

@

CS4

4,S

A-I

A-I

XO,1-9

12, 1-9

4

1-9

A-I

XO,1-9

12, 1-9

0(-)

(None)

(None)

11,0

5

C

- (Hyphen)

X

11,0

J-R

J-R

X,1-9

11, 1-9

5

1-9

J-R

X,1-9

11,1-9

1-9 (.:..)

J-R

X,1-9

11,1-9

5

1-9

J-R

X,1-9

11, 1-9

S-Z

S-Z

0,2-9

0,2-9

6

2-9

S-Z

0,2-9

0,2-9

0(+)

0

0

oor

7

C

0

0

0

1-9 (+)

1-9

1-9

1-9

7

1-9

1-9

1-9

1-9

*

*

OS2

0,2,S

C

CS2

(Stop)

EOl

0,2,S

(Blank)

(Space)

C

(Blank)

C

0

0

0

o (+)

0

0

0

C

0

0

0

o (-)

0

X,XOC

11,0

F

0

X

11

1-9 (+)

1-9

1-9

1-9

1-9

1-9

1-9

1-9

1-9 (-)

1-9

X,1-9

11,1-9

F,1-9

1-9

X,1-9

11, 1-9

*
*
*

=1=

OS2

O,2,S

CS2

(Stop, WN) EOl(WN)
OS2 (ON)
~ (ON)

*

XS2

11,S,2

FS2

*

08421

0,7,S

*C8421

*

X8421

12,7,S

@

C84

4,S

*

;'

Num
Blank t

t For Card Format Use Only
* Recorded as O,S, 4, 2, 1 in disk storage

152

Card

)

~~~tf~~~~rr~~~~fI~~~~I~~~;~~~l

NUMERICAL
MODE

Core Storage

Tape

12,0

+

0,2,S

XS2

11, S, 2

08421

0,7,S

FS421

*
*

X8421

12,7, S

C84

@

C84

(Blank)

Table 25.

Core Storage Data Resulting F'tom Reading Alphameric Card
Data with RN Instruction

Alpha
Character

A
B
C
D
E
F

Bits Entered into Core Storage
by Read Numerically Instruction.
F
4
I
C
8
2

J
K
L
M
..

N
0
P

Q

X

X

X
X
X
X

X
X

0
1

X

2
3

X

4

X
X

X
X
X

X

X

X
X

X
X
X
X
X

X
X
X
X
X
X

X
X

X
X

T
U

X

X

8

X

9

V

X

X

W

X

X

X

X

X

X

'. (period)
I , (comma).

X

a

X
X
X

(

)

X

•

X

X
X

Only

X

11,0

X

X

X

X

X

*

X
X
X

1$

I Int('rpr~too

X

X

12,0

Blank
X

X

X

+
Card
I/O

X

X

X

X
X

X

X
X
X
X

X

X
X
X
X

X
X

X
X

X
X

X

X

X
X

X

I

X

X

X

X
X

X
X

6

X

S

Y

X

'=.

X
X

X

X
X~

7

X

X
X

Bits Entered into COH' Sturagt'
bl Read Numeric.dly Instruction
4
I
C
F
8
2

X

5

X

X
X

R

Z

X

X

G

H
I

Alpha
Character

X

X
X

X

X

X

as Record Mark on WN andTR instrunions.

Appentik

153

Appendix B

Alphabetic Listing of All Messages
Message
XXXX DO TABLE FULL
XXXX IMPROPER DO NESTING
XXXX MIXED MODE
XXXX SYMBOL TABLE FULL
XXXXX ALABEL + XXXX ERN
(see Table 6)
XXXXX CARD SEQ ERROR,
CORRECT AND START
XXXXX CORES USED
XXXXX NEXT COMMON
END OF COMPILATION
XXXXX LDI
XXXXX NAME
XXXXX SECTORS OF DATA
COPIED FROM XXXXXX TO
XXXXXX
XXXXXX LOADED FROM
XXXXXX TO XXXXXX
XX XXXXX OVERLAP
XXXXXXXXXX TYPE CHANGE
XXXXXX XXXXX XXXXX LOADED
XXXX + XXXX ERROR N
ALREADY DEFINED
AND FILE PROTECTED
BAD DISK WRITE. RESET
START
CANNOT RESTORE COMMON RESET AND START TO RETRY
CDP ERR
CDR ERR
CONDITION IGNORED
CONTROL STATEMENT INVALID,
RE-ENTER
CORE CAPACITY EXCEEDED BY
XXXXX LOCATIONS PROGRAM
IS TERMINATED
CORRECTIONS HAVE NOT
BEEN ENTERED
DISK RD WR ERROR, START
TO RETRY
DISK SECTOR XXXXXX
CORRECTED
DK LOADED XX ..... XX
DSK ERR XXXXX 06 07 i6 i 7 36
3738
DSK OFL
DUP * ERROR 01 (01 through 24)
DUP * ERROR 51 (51 through 61)
DUP * TURN OFF WRITE
ADDRESS KEY, START

,154

Program
FORTRAN
FORTRAN
FORTRAN
FORTRAN
SPS

Pages
120
120
120
120
86

Loader

137

FORTRAN
Supervisor
FORTRAN

122
24
126,

DUP

35

Loader
FORTRAN
DUP
FORTRAN
FORTRAN
SPS
DUP

137
129
29
128
120
91
35

Supervisor

22

Supervisor
Supervisor
Supervisor
Supervisor

15
21
21
15

Loader

137

SPS

90

DUP

30

Loader
DUP
DUP

137
30
28, 41

21
Supervisor
21
Supervisor
DUP
38, 39, 40
40
DUP
DUP

28

Message
DUP * TURN ON WRITE
ADDRESS KEY, START
END OF ASSEMBLY
XXXXX CORE POSITIONS
REQUIRED XXXXX
STATEMENTS PROCESSED
END OF JOB
ENT ERROR 06 071617 363738
ENTER DUP CNTRL REC
ENTER MONITOR CONTROL
RECORD
ER Dl (Dl through G7)
ERROR Ll (Ll through LI0)
ERROR X
Eij.ROR IN FIELD AT COL. XX.
SET SW 4 TO IGNORE, OFF TO
RE-ENTER CARD
ERROR IN FIELD AT COLUMN
XX. PHASE TERMINATED
ERROR, INVALID CONTROL
RECORD
ERROR, INVALID OUTPUT
UNIT CODE
EXCEEDED SPECIFIED
CAPACITY BY XXXXX
EXECUTION
EXECUTION INHIBITED
EXECUTION IS INHIBITED
ERROR, F OR K OUTSIDE RANGE
FORTRAN LIBR NAME ENTERED
XXXXXXXXXX
FLIPER XXXXX OVERLAP
IMP ERR
IMPROPER IND CODE IN
SUBR XXXX
JOB ABANDONED '
JOB CARD GROUP ONLY
LD 2
LD 3
LD 4
LOAD SUBNAM
MAP ERR XXXXX XXXX
MAX N2 ALLOWABLE XXXXX
MOD ERR XXXXX
MORE THAN 5 CYLINDERS OF
RELOADABLE OUTPUT SSW 4
ON TO DUMP OUTPUT, OFF
TO CONTINUE, NO OUTPUT
MUST RELOAD
NAME XXXXX OVERLAP

Program
DUP

Pages
28

SPS
Supervisor
Supervisor
DUP

87
10, 15
21
28

Supervisor
FORTRAN
FORTRAN
FORTRAN

15, 17
130
128
120

Supervisor

15

Supervisor

16

FORTRAN

118

FOl\TRAN

119

SPS
Supervisor
FORTRAN
Supervisor
FORTRAN

89
15
' 129
17
119

DUP
FORTRAN
Supervisor

38
129
22

SPS
FORTRAN
Supervisor
Supervisor
Supervisor
Supervisor
FORTRAN
Supervisor
FORTRAN
Supervisor

90
129
15
24
24
24
129
22
130
22

SPS
Supervisor
FORTRAN

89
23
129

Message

Program

NO DIM ENTRY FOR
SUBROUTINE
NO ENTRY FOR SUBROUTINE
NO ROOM IN TABLE
NO TRAILER REC. CORRECT,
RELOAD COMPLETE DECK
WITH CNTR REC, AND BR TO
7404
NOT IN TABLE
OBJECT DIM ERROR PHASE
TERMINATED
OBJECT NAME ERROR PHASE
TERMINATED
PACK NUMBER. ERROR ON
MODULE X. SET SSW4 TO
IGNORE OFF TO RECOMPARE
PTR ERR XXXXX 06 07161736
3738
PTP ERR XXXXX 06 '07 1617 36
3738
RDER
RE-ENTER STATEMENT
RE-ENTER OPERANDS
SECTION

SPS
FORTRAN
SPS

Loader
SPS

Pages
89
129
91

137
91

Supervisor

16

Supervisor

17

Supervisor

15

Supervisor

21

Supervisor
Loader
SPS
SPS
DUP

21
137
87
87
29,30

Message
SECTOR
SECTION NUMBER ILLEGAL,
START TO RE-ENTER 0 DALTR
SECTOR ADDRESS ILLEGAL
START TO RE-ENTER 0 DALTR
SEQ
SUBR NOT LOCATED IN
SUBROUTINE MAP
SYSTEM DIM ERROR PHASE
TERMINATED
TRAILER CARD SEQ ERROR,
CORRECT AND START
TRP ERR
TRP ERROR MUST RELOAD
TYP ERR XXXXX 06 07 16 17 36
3738
TYPE-I~ EXCEEDS SECTOR
LENGTH, START
UNDEFINED SYMBOL XXXXX
WRITE AND SAVE (SEEK
START STOP)
WRITE AND ZERO (SEEK
START STOP)

Pro8!am

Pages

DUP

29

DUP

29

DUP
Loader

29
137

SPS

90

Supervisor

17

Loader
Supervisor
Supervisor

137
22
23

Supervisor

21

DUP
SPS

30
91

DUP

29

DUP

29

NOTE: X's represent variable characters.

Appendix B

155

Index

Page
Absolute format ......................................................................
4
ACCEPT statement ................................................................ 105
ACCEPT TAPE statement .................................................. 105
Add (A) instruction ........................................................ 61, 139
Add Immediate (AI) instruction .................................... 61, 139
Adding macro-instructions to processor .......................... 77, 91
Adding subroutines
'FORTRAN .......................................................................... 131
SPS ...................................................................................... 77
Address
actual, .................................................................................. 49
adjustment '.. ................ .................. ................ .... .... .............. 50
asterisk ................................................................................ 49
equivalents for PICK, ........................................................ 71
symbolic, .............................................................................. 49
types of, used as operands ................................................ 49
Address Check indicator ............... ................................ ....... 23
Altering assignment of disk storage drives .......................... 12
Alter Sector routine .............................................................. 29
Analog Output Check code .................................................. 148
Analog Output Setup code .................................................. 148
And to Field (AND F) instruction ...................................... 140
Arguments (FORTRAN)·.·····.·.· ... ·.· ...... ··.· .... ·.. ··· ... ·.·.·............. 108
Arithmetic Instructions summary ............... '......................... ~ 139
Arithmetic mode .................................................................... 94
Arithmetic precision (FORTRAN) ........................................ 96
Arithmetic statement functions ... ...... ...... ..... .. ...... ............... 114
Arithmetic statements ............................... ,. ..... ............ .......... 98
Arithmetic'subroutines
FORTRAN .......................................................................... 124
SPS ...................................................................................... 66
Arithmetic subroutine macro-instructions ............................ 67
Arrays ................................................................................ 96, 104
Assignment of DIM entries and/or names, rules for .......... 41
ASSEMBLE RELOCATABLE, SPS Control record .......... 85
Assignment of System DIM numbers ..... ....................... 5, 134
Asterisk
FORTRAN .......................................................................... 97
SPS .................................................................................. 46, 49
At(@)sign (special character) ............................................ 47, 49
Automatic Fix/Float .............................................................. 113
Availability list ... ... .... ................. .... ...... ............. ............... ..... 32

I

Backspace Typewriter (BKTY) instruction ..........................
BEGIN CARD INPUT, SPS Control record ......................
BEGIN PAPER TAPE INPUT, SPS Control record ..........
BEGIN TYPEWRITER INPUT, SPS Control record ........
Blank character ......................................................................
headed by, ..........................................................................
Branch and Adjust Assignment counter (B7) .............. 51,
Branch and Load Index Register (BLX) instruction ..........
Branch and Load Index
Register Immediate (BLXM) instruction ........................
Branch and Modify Index Register (BX) instruction .. ........
156

146
85
85
85
47
64
141
144
144
144

Page
Branch and Modify Index
Register Immediate (BXM) instruction ............................ 144
Branch and Select (BS) instruction ... ... ....... ......... ........ ..... ... 143
Branch and Select Band A (BSBA) instruction ....... ... ........ 144
Branch and Select Band B (BSBB) instruction .................. 144
Branch and Select.
Indirect Addressing (BSIA) instruction ............................ 143
Branch and Select No 1/A (BSNI) instruction .................... 144
Branch and Select
No Index Register (BSNX) instruction ............................ 144
Branch and Store Index Register (BSX) instruction .......... 144
Branch and Transmit (BT) instruction ................................ 143
Branch and Transmit Floating
instruction (BTFL) ............................................................ 143
subroutine (BTFS) .............................................................. 75
Branch and Transmit Immediate (BTM) instruction .......... 143
Branch Any Data Check (BA) instruction .......................... 141
Branch Back and Adjust Assignment Counter (BB2) .... 51, 143
Branch Back (BB) instruction .............................................. 143
Branch Band A Not Selected (BANS) instruction .............. 142
Branch Band B Not Selected (BBNS) instruction .............. 142
Branch Band A Selected (BBAS) instmction ...................... 142
Branch Band B Selected (BBBS) instmction ................... ,.. 142
Branch Conditionally, Modify Index
Register (BCX) instmction ................................................ 144
Branch Conditionally, Modify Index
Register Immediate (BCXM) instruction .......................... 144
Branch Console Switch instructions
(BC1, BC2, BC3, BC4) .............................................. 142, 143
Branch Data Ready (BIR)· instruction .................................. 150
Branch End of Message (BRE) instmction .......................... 150
Branch Equal (BE) instruction ..... :...................................... 141
Branch Exponent Check (BXV) instruction ., ............. ......... 142
Branch High (BH) instruction .............................................. 141
Branch Indicator (BI) instruction ........................................ 141
Indicator Codes summary ................................................... 148
Branch instmctions .................................................. 61, 141-143
Branch Last Card (BLC) instruction .................................. 142
~ranch Low (BL) instruction ................................................ 143
Branch Mode Shift (BMC) instruction ................................ 150
Branch Negative (BN) instmction ...................................... 143
Branch No Data Ready (BNIR) instruction ........................ 150
Branch No End of Message (BNRE) instruction ................ 150
Branch No Flag (BNF) instruction .................................... 141
Branch No Group Mark (BNC) instruction ........................ 141
Branch No Indicator (BNI) instmction ................................ 142
Indicator Codes summary .................................................. 148
Branch No Mode Shift (BNMC) instruction ........................ 150
Br:anch No Output Record Mark (BNOR) instmction ........ 150
Branch No Overflow (BNV) instmction .............................. 143
Branch No Record Mark (BNR) instruction ...................... 141
Branch No SIOC Not Busy (BCB) instmction .................. 150
Branch Not Any Data Check (BNA) instruction .............. 143
Branch Not Equal (BNE) instruction ................................ 142
Branch Not Exponent Check (BNXV) instruction ............ 143
Branch Not High (BNH) instruction .................................. 142

Page
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch
Branch

Not Last Card (BNLC) instruction ........................
Not Low (BNL) instruction ..................................
Not Negative (BNN) instruction ............................
Not Positive (BNP) instruction ..............................
Not Zero (BNZ) instruction ..................................
on Bit (BBT) instruction ..........................................
on Mask (BMK) instruction ....................................
on Digit (BD) instruction ......................................
Operands ....................................................................
Out of Noninterruptible Mode (BO) instruction ....
Out and Load (BOLD) instruction ......................
Output Record Mark (BOR) instruction ................
Overflow (BV) instruction ......................................
Positive (BP) instruction ........................................
SIOC Not Busy (BCNB) instruction ......................
Zero (BZ) instruction ..............................................

143
142
142
142
142
144
144
141
51
149
149
150
141
141
150
141

CALL EXIT linkage ............................................................ 18
CALL EXIT statement
FORTRAN .......................................................................... 103
SPS ...................................................................................... 81
CALL LINK linkage ............................................................ 17
CALL LINK statement
FORTRAN .......................................................................... 117
SPS ...................................................................................... 81
CALL LOAD
linkage ............................................................................... .
macro-statement ..................................................................

17
81

CALL statement
FORTRAN ......................................................................... . 116
SPS ..................................................................................... . 81
Card I/O .... -----------------------------------------._-----------_.-_._------_ .... ----_ .. - 19
Card read error ..................................................................... . 21
Card write error ..................................................................... . 21
Check Disk (CDN) instruction ........................................... . 147
Check Disk Track (CTN) instruction ............................... . 147
Check Disk Track/WLRC (CTGN) instruction ............... . 147
Check Disk/WLRC (CDGN) instruction ........................... . 147
Clear Flag (CF) instruction ............................................... - 147
Coding sheet
FORTRAN ....................... _... _............ _.. _...... _............... _....... 94
SPS _........... _........... _............... _................................. _..... _..... 44
Commas ............... _................................................. _............... . 46
Comments
FORTRAN ............... _.. _................................ _....................... 93
SPS
with asterisk .. _.......................................................... _...... 46
see Remarks
Comments Monitor Control record .................... _................. 12
COMMON statement .............. _............................................. 107
Communications Areas ... __ .... _........ _........................... 25, 36, 37
Compare Immediate (CM) instruction ................................ 141
Compare (C) instruction .................................... _................... 141
Complement Octal Field (CPLF) instruction ........... _........ 140
Compilation Process .............. _... _............. _....................... -..... 117
Constants
FORTRAN ........... _.. _.................................................. _........ 95
SPS
at • sign ......... _.................. _................................................. 47
Define Alphameric Constant (DAC) .... _.................. _...... 55
Define Constant (DC) instruction ............. _.................. 54
Define Special Alphameric Constant (DSAC) ............ 56
Define Special Constant (DSC) .................................... 55

Page
Define Variable-Length Constant (DVLC) .................. 55
CONTINUE statement ..... _.. _....... _......................................... 102
Control (K) instruction ...... _................................................. 146
Control Card Formats .......... _......... _._................................... 10
Control operation
codes ._ .. _....................................................................... 43, 146
Control record trap error .......... _........................... _............. 22
Control records
DUP ... __ ....... _._ .................... _.... _............. _.............. _.......... 28, 38
FORTRAN _.. _....... _.................. _........ _.................................. 118
MONITOR ..........................................................................
8
. SPS .... _... _..... _............................. _...... _.................................. 85
Control statements (FORTRAN) ........ _............ _.. _..... _........... 99
Core storage requirements ................ _........ _._........................
7
Customer Engineer (CE) Interrupt code ............................ 148
Cylinder Overflow Error ............................................... _...... 21
Cylinder Overflow indicator ..... _.......................................... 22
DAL TR, DUP control record ........................................ _..... 29
DAT A control record ................. _.................................. _....... 127
Data transmission subroutine macro-instructions .............. 67
Data transmission subroutines .............................................. 66
DCOPY, DUP control record .................... _........................ _.. 35
DDUMP, DUP control record .......... _................................... 31
Decimal Octal Conversion (DTO) instruction .................... 140
Declarative operations
card format (list) ....... _.............................................. _......... 87
codes ...... _.......... _............................................................ 43, 52
summary ................................ _....... _.......... ........ ................... 138
Define Alphameric Constant (DAC) statement .................. 55
at sign ..................................... _............................................ 47
blank character .................................................................. 47
Define Alphameric Symbol (DAS) statement ...................... 54
Define Card Alphameric (DCA) .......................................... 83
Define Card Numerical (DCN) ............................................ 83
Define Disk without WLRC (DD) ........................................ 83
Define Disk with WLRC (DDW) ...................................... 83
Define Constant (DC) statement .......................................... 54
at sign .. _....................... _....................................................... 47
Define Disk Address (DDA) statement .............................. 57
Define Disk Pack Label Routine .................. _..................... 37
DEFINE DISK statement ................................................ _. 108
Define END (DEND) statement ........................................ 63
Define FORTRAN Library Subroutine Name routine ...... 38
Define Group Mark (DGM) statement .............................. 58
Define Message (DMES) statement .................................. _... 58
Define Numerical Blank (DNB) statement ........................ 57
DEFINE OP CODE, SPS Modification Control record .... 91
Define Origin (DORG) statement ...................................... 62
Define Paper Tape Alphameric (DPTA) ............................ 43
Define Paper Tape Alphameric (DPT A) .......................... _... 83
Define Paper Tape Numerical (DPTN) .. _........................... 83
Define Parameters routine .......... _........................... _............. 36
Define Special Constant (Numerical) DSC statement ...... 55
Define Special Symbol (Numerical) DSS statement .......... 53
Define Symbol (Numerical) DS statement ...... _... _............. 52
Define Symbolic Address (DSA) statement ........................ 56
Define Symbolic Block (DSB) statement .............................. 57
DEFINE SYSTEM SYMBOL TABLE, SPS Modification
Control record .................................................................... 91
Define Typewriter Alphameric (DTA) .............................. 83
Define Typewriter Numerical (DTN) ................................ 83
Define Variable-Length Constant (DVLC) statement ...... 55

Index

157

Page

Page

DE LET, DUP control record ______________________________________________ 36
DELETE OP CODE, SPS Modification Control record ____ 91
Delete Programs routine ________________________________________________________ 36
DFINE, DUP control record ________________________________________________ 36
DFLIB, DUP control record ______________________________________________ 38
DIM entry ____________________________________________________________________________ 5, 41
DIM numbers for Monitor System ______________________________________
5
DIM table ______________________________________________________________________________
5
DIMENSION statement ________________________________________________________ 107
Disk control ReId ____________________________________________________________________ 19
Disk I/O constants ________________________________________________________________ 18
Disk I/O options ____________________________________________________________________ 18
Disk pack identification numbers __________________________________ 13, 37
Disk pack label ______________________________________________________________ 6, 7, 37
Disk storage I/O ____________________________________________________________________ 19
Disk storage requirements ____________________________________________________
4
Disk Utility Program ____________________________________________________________ 27
Disk-to-Disk routine _____________ ,________________________________________________ 35
Disk-to-Output routine __________________________________________________________ 30
Divide (D) instruction __________________________________________________________ 139
Divide Immediate (DM) instruction ____________________________________ 139
Divide subroutine __________________________________________________________________ 73
Divisor, incorrect positioning ________________________________________________ 74
DLABL, DUP control record ________________________________________ ,_______ 38
DLOAD, DUP control record ______________________________________________ 33
DO statement ________________________________________________________________________ 101
Dollar sign (special character) __________________________________________ 47, 64
DOT Declarative Statement ____________________________________________ .___ 59
DREPL, DUP control record ________________________________________________ 34
Drive code ______________________________________________________________ 4, 12, 20, 58
Dummy variables __________________________________________________________ 115, 116
Dump Numerically Card (DNCD) instruction ____________________ 145
Dump Numerically (DN) instruction ____________________________________ 145
Dump Numerically Paper Tape (DNPT) instruction ________ 145
Dump Numerically Typewriter (DNTY) instruction __________ 145
DUP, Monitor Control record __________________________________________ 10, 11
Duplicate symbols (labels) ____________________________________________ 63, 132
DWRAD, DUP control record ____________________________________________ 28

SPS ______________________________________________________________________________________ 70
Expressions, FORTRAN ________________________________________________________ 97
F ANDK Control record _________________ .______________________________________ 118
FETCH statement __________________________________________________________________ 105
File protected programs ______________________________________________________
6
FIND statement ______________________________________________________________________ 105
Fixed-length mantissa subroutines (SPS) ____________________________ 67
Fixed-Point Divide (FD) subroutine ____________________________________ 73
Fixed-point variables (FORTRAN) ____________________________________ 96
Flag indicator operand __________________________________________________________ 47
in immediate instructions __________________________________________________ 47
in indirect addressing ________________________________________________________ 47
Flags, set ________________________________________________________________________________ 47

END statement ______________________________________________________________________ 103
End-of-Job Monitor Control record __________________________________ 10, 12
End-of-line character ____________________________________________________________ 47
ENDLIB, SPS Modification Control record _____________________ .__ 91
Entry Check error ____________________________________________________________ ._____ 21
Entry 1?oints of I/O routine __________________________________________________ 17
Equal sign (SPS special character) ______________________________________ 49
EQUIVALENCE statement __________________________________________________ 107
Equivalence table ________________________________________________________________ 5, 32
Error checking, FORTRAN __________________________________________________ 130
Error correction (SPS)
assembly time ______________________________________________________________________
Error correction codes, I/O Error routine __________________________
Error Count Retrieval routine ______________________________________________
Error detection and correction, DUP __________________________________
Error Messages - (see Appendix B) ____________________________________
ERROR STOP, SPS control record ____________________________________
Evaluation of arguments (subroutines)
FORTRAN __________________________________________________________________________
SPS ______________________________________________________________________________________
Exclusive OR to Field (EORF) instruction ________________________
Execution times (SPS subroutines) _. ____________________________________
Exponents
FORTRAN ____________________________________ ._. ______________________ .____ .__ .. ___
158

86
20
23
38
154
85
113
67
140
151
94

Floating Add
instruction (FADD) ____________________________________________________________ 139
subroutine (FA) ____________________________________________________________ 71, 72
Floating Arctangent (F ATN) subroutine ______________________________ 76
Floating Cosine (FCOS) subroutine ____________________________________ 76
Floating Divide
instruction (FDIV) ____________________________________________________________ 139
subroutine (FD) ________________________________________________________ ._________ 73
Floating Exponential (Base 10) FEXT subroutine ____________ 76
Floating Exponential (Natural) FEX subroutine ________________ 76
Floating Logarithm (Base 10) FLOG subroutine ______________ 77
Floating Logarithm (Natural) FLN subroutine __________________ 77
Floating Multiply
instruction (FMUL) . __ .. __ ._. _____ .__________________________________________ 139
subroutine (FM) __________________________________________________________________ 73
Floating-point arithmetic __________________________________________________ 69, 94
Floating-point variables (FORTRAN) __________________________________ 96
Floating Shift Left
instruction (FSL) ________________________________________________________________ 140
subroutine (FSLS) ______________________________________________________________ 75
Floating Shift Right
instruction (FSR) ________________________________________________________________ 140
subroutine (FSRS) ______________________________________________________________ 74
Floating Sine (FSIN) subroutine ________________________________________ 76
Floating Square Root (FSQR) subroutine __________________________ 75
Floating Subtract
instruction (FSUB) ____________________________________________________________ 139
subroutine (FS) __________________________________________________________________ 72
FOR Monitor Control record __________________________________________ 9, 11
Format of DIM entry ____________________________________________________________
5
FORMAT Statement ______ ._________________________________ . _____________________ 109
FORTRAN and SPS Output ________________________________________________ 41
FORTRAN Control records __________________________________________________ 118
FORTRAN II-D ____________________________________________________________________ 93
FORTRAN II-D language ____________________________________________________ 93
FORTRAN subroutine error codes _________________________________ .____ 130
FORX Monitor Control record __________________________________________ 9, 11
Full track disk operation ______________________________________________________ 20
Function Register Check Indicator code ______________________________ 148
FUNCTION statement _______________________________________ .__________________ 115
Functional subroutines _________________________________ .____________________ .___ 67
GET macro-statement ____________________________________________________________
GO TO statements ________________________________________________________________

81
99

Halt (H) instruction ______________________________________________________________ 147
Halt at core address 00467 __________________________________________________ 22
Head character ______________________________________________________________________ 64
Head statement ______________________________________________________________________ 63

Page

Page
Heading
for combining programs ................................... .................
in nesting ...................................... '... ...... ........... .......... .... ....
High indicator ........... ........ .... ........ ............ ... ............. ..... ... .....

63
64
25

I/O constants .......................................................................... 18
I/O Declarative statements .................................................. 82
I/O Error routine .................................................................. 20
I/O routine .............................................................................. 17
ID NUMBER dddd, SPS control record ............................ 86
Identification records, FORTRAN .............................. 122, 132
IF statement .......................................................................... 100
IF (SENSE SWITCH) statement .......................................... 100
Immediate-type instructions .................................................. 47
Imperative operations ................. ........................................... 60
arithmetic ... ........... ......... ........ ...... ................ ..... .......... 60, 139
branch .............................. :........................................... 61, 141
card format (list) ................................................................ 89
codes, 1710 ........................................................................ 149
input/output ................................................................ 62, 145
internal data transmission .......................................... 61, 140
miscellaneous ................................................................ 62, 147
Index, DO .............................................................................. 101
Index Register ........................................................................ 51
Index Typewriter (IXTY) instruction .................................... 146
Indicator codes ..... ..... ............... .... ........ ......... ... .... ...... ....... 23, 24
Indicator codes (1620/1710) ................................................ 147
Indirect addressing ................................................................
4
Initializing the Monitor System ............................................
4
Input/Output options ............................................................ 18
Input/Output statements (FORTRAN) ................................ 103
Input instructions .......................................................... 145, 146
Internal Data Transmission instructions ...................... 61, 140
I/O declarative statements .................................................... 80
lIO macro-statements ............................................................ 81
Job arrangement ....................... ..... ................. .... ........ ..... ...... 13
JOB Monitor Control record .............................................. 8, 10
Label (SPS)
characters permitted in ... ........ ...... ..... .... ......... ......... ... ....... 43
five characters or less, headed .. ...... ...... ... ...... ......... .......... ,63
Symbol table ...................................................................... 87
table, see Symbol table
Label, disk pack
1401, 1410, 1440 ................................................................
6
Monitor ............................................................................ 7, 41
Mutual ................................................................................
6
LDISK Control record .......................................................... 119
LIBR, SPS control record .................................................... 86
Library functions (FORTRAN) .......................................... 112
additional ............................................................................ 113
writing in SPS .................................................................... 134
Link program .......................................................................... 117
Linkage instructions .... ...... ........... ....... ... ..... ....... ... .... 67, 78, 82
Linkage for CALL LOAD and CALL LINK ...................... 82
Linkage for CALL EXIT ........•............................................. 82
Linkage for GET, PUT and SEEK .................................... 82
Linkages for Supervisor I/O routine .................................. 17
LIST CARD, SPS control record .......................................... 86
LIST OP CODE, SPS Modification Control record ............ 91
LIST TYPEWRITER, SPS control record .......................... 86
LIST (FORTRAN) ................................................................ 111

Load Programs routine ................. ............ ........ ........ .... .......
Load Dividend Immediate (LDM) instruction ..................
Load Dividend (LD) instruction ..........................................
Load-on-call subprograms .................................... 117, 126,
Loader, System ...... ... ..... .... ... ...... ... ............... ............ ...... .... ...
Loader routine ....... ..... ....... ...... ...... ............ ... ... ..... ....... ...... .....
Loading the Monitor System to disk storage ..................
LOCAL Control record ........................................................
Location assignment counter (SPS) ........................ 60, 63,
Logic instructions ..................................................................

32
139
139
127
136
23
136
127
138
141

Machine requirements ........................................ '.. ..... ....... .....
4
Macro-instructions (see Subroutines)
operation' of ...................................................... ,. ...... ..... ..... 67
rules for coding ......... ..... ....... ........ ..... .... ... ......... ...... .......... 72
Mantissa
FORTRAN ............................................................ 37, 94, 118
SPS .......................................................................... 36, 69, 85
MANTISSA LENGTH nn, SPS control record .................. 85
Manual restart .............. .......................................................... 18
MAR Check Indicator code ................................................ 148
Mask Digit Operand ............................................................ 48
Mask Indicator code .... .... ... ... ... ...... ............ ................. ...... .... 148
Mask Interrupts (MK) instruction ........................................ 149
Matrix Input/Output (FORTRAN) ...................................... 104
MBR-E Check indicator ...................................................... 23
MBR-O Check indicator ........................................................ 23
Miscellaneous instructions (SPS) .................................... 62, 147
Mode of expressions (FORTRAN) ........................................ 97
Modification of variable-length subroutine .......................... 78
Modification program, SPS II-D .......................................... 91
Modifier constants .................................................................. 78
Module change numbers ............................. ......................... 12
Monitor Control Record Analyzer routine .......................... 14
Monitor Control Records ............ ...... ...... ..... ...... .......... ...........
8
Monitor Disk Pack label ........................................................
7
Monitor System Loader ........................................................ 136
Move Address (MA) instruction ........................................... 140
Move Flag (MF) instruction ... ..... ...... ... ...... ...... ............ ......... 147
Multiplexer Complete, code ................................................ 148
Multiply Immediate (MM) instruction .............................. 139
Multiply (M) instruction ...................................................... 139
Mutual Disk Pack Labels ......................................................
6
NAME aaaaaa, SPS Control record .................................... 86
N (noise) digit, defined .......................................................... 70
NOISE DIGIT n, SPS Control record ............................... , 85
No Operation (NOP) instruction .......................................... 147
Normalizing .......................................................... ;................. 70
NO SUBROUTINES, SPS control record ............................ 86
NO SYMBOLIC DIVIDE, SPS control record,................... 86
OBJECT CORE n, SPS Control record .............................. 85
.object deck format .................................... ,......................... 41
Object program execution (FORTRAN) .............................. 126
Octal Power Table .................................................................. 59
Octal to Decimal (OTD) ...................................................... 140
Operand .................................................................................. 47
address adjustment of ........................................................ 50
asterisk, use of ................................... '. ................ ......... 46, 49
at (@) sign, use of .............................................................. 47
blank in .............................................................................. 47
comma, use of .................................................................... 46

Index

159

Page
dollar sign, use of ............................................................. . 47
end-of-line character, use of ... ~ ....................................... . 46
flag indicator ..................................................................... . 47
modification ............................................................. .
51
special characters in ... .... ... ....... ....... ......... ......................... 46
types of addresses used as .......................................... ~..... 49
see also P and Q operands
Operating procedures (FORTRAN) ............ :............. :.......... 119
Operating procedures, FORTRAN object programs .......... 129
Operating procedures (SPS) ................................ :................. 84
Operation code
coding sheet field ............................................................ ,... 45
Control ....................................................................... ..... 43, 62
Declarative ................. ... ................................................. ... 43,·52
Imperative ...................................................................... 43, 60
Operation of Monitor System .......................................... 4, 136
Operation symbols .................................................................. 97
Operator Entry Indicator code ............................................ 148
Operators
FORTRAN .......................................................................... 97
SPS ...................................................................................... 50
Or to Field (ORF) instruction .......................................... 140
Origin .............................................................................. 62, 79
OUTPUT CARD, SPS Control record .................................. 86
Output format .................................................................. 23, 31
card ...................................................................................... 31
paper tape .......................................................................... 32
typewriter ............................................................................ 32
OUTPUT PAPER TAPE, SPS Control record .................... 86
Output Printer (1710) control codes .................................... 58
Output unit codes ................................................ 145, 146, 147
Output instructions .............................................. 145, 146, 147
Output listing (SPS) .............................................................. 87
Overflow, exponent ................................................................ 70
Overlap errors (FORTRAN) .................................................. 129
P operand .......................................................................... 45, 52
modifier constants .............................................................. 78
see also Operands
Paper tape I/O ............................................ ,....................... 19
Paper tape read error ............................................................ 21
Parentheses
FORTRAN .......................................................................... 98
SPS ...................................................................................... 47
PAUS Monitor Control record ............................... :........ 10, 11
PAUSE statement .................................................................. 102
Period (special character) ...................................................... 43
Permanently assigned programs ..........................................
6
Pick subroutine .................................................................. 67, 72
address equivalents for ...................................................... 71
POBJP Control record .......................................................... 119
PRINT statement .................................................................... 105
Process Branch Indicators 1-20, codes ................................ 148
Process Control Operations .................................................... 62
Process Interrupts 1-12, codes ............................................ 148
Processor (SPS) ...................................................................... 84
Product area .......................................................................... 73
mnemonics .......................................................................... 65
Programming SPS II-D .......................................................... 52
Program switch settings
FORTRAN ........................................................................... 128
Loader ........................................................................ :......... 136
Monitor ................................................................................
4
160

PSTSN Control record ..........................................................
PUNCH RESEQUENCED SOURCE DECK, SPS Control
record ..................................................................................
PUNCH statement ................................................................
PUNCH SYMBOL TABLE, SPS Control record ..............
PUNCH TAPE statement ............ ~ ...... ,...................................
PUT macro-statement ............................................................

119
86
105
85
105
81

Q operand .................. ,........................................................ 45, 51
in Immediate instructions .................................................. 47
see Operands
Range, DO ............................................................................... 101
Read Alphamerically Card (RACD) instruction ................ 146
Read Alphamerically Paper Tape (RAPT) instruction ...... 146
Read Alphamerically Typewriter (RATY) instruction ........ 146
Read Alphamerically (RA) instruction ................................ 145
Read Binary Paper Tape (RBPT) ...................................... 146
Read check indicator ........................................................ 21, 23
Read Disk (RDN) instruction .............................................. 147
Read Disk Track (RTN) instruction .................................. 147
Read Disk Track/WLRC (RTGN) instruction .................. 147
Read Disk/WLRC (RDGN) instruction .............................. 147
Read Numerically Card (RNCD) instruction ...................... 145
Read Numerically Paper Tape (RNPT) instruction ............ 146
Read Numerically (RN) instruction ...................................... 145
Read Numerically Typewriter (RNTY) instruction ............ 146
READ statement .................................................................... 104
Record mark ...................................................................... 50, 54
RECORD statement .............................................................. 106
Relocatable program ............................................................. .
4
Relocatability, rules ............................................................... . 90
Remarks ................................................................................. . 45
Replace Programs routine ................................................... . 34
Repositioning of DISK access arms ................................... . 20
Restart, manual ..................................................................... . 18
Restore (RSTR) statement ................................................. . 65
Return Carriage Typewriter (RCTY) instruction ............... . 146
RETURN statement ............................................................. . 116
Rules for assignment of DIM entries and/or names ......... . 41
Rules for constructing expressions ..................................... . 97
Rules for statement writing (SPS) ......................................... 45
Save (SAVE) statement ........................................................ 65
Save error count procedure ................................................ 20
Scale factors ............................................................................ 111
Sector, disk
address ................................................................................ 58
count .................................................................................... 58
Seek (SK) instruction ............................................................ 147
SEEK macro-statement .......................................................... 81
Select ADC and Increment (SLAD) instruction .................. 149
Select ADC Register (SLAR) instruction ............................ 149
Select Address and Contact Operate (SACO) instruction .... 149
Select Address and Operate (SAO) instruction .................. 149
Select Address (SA) instruction .......................................... 149
Select Analog Output and Signal (SAOS) instruction ........ 149
Select Contact Block (SLCB) instruction ............................ 149
Select Manual Entry Switches (SLME) instruction .......... 149
Select Read Numerically (SLRN) instruction .................... 149
Select Real-Time Clock (SLTC) instruction ........................ 149
Select TAS (SLTA) instruction ............................................. 149
Sequential Program table .................................. ,...................
6

Page

Page
Set Flag (SF) instruction ______________________________________________________ 147
Sign control in floating-point arithmetic (SPS) __________________ 70
Slash symbol
FORTRAN __________________________________________________________________________ 97
SPS __________________________________________________________________________________ 46, 50

Tables
1. Numbered error Messages Generated

by Disk Utility Routines __________________________________________ __

39

2. DMES Representation of Output Printer Control
Codes ____________________________________________________________________________

59

Source program
FORTRAN ______________________________________________________ -__________________ _ 117
SPS _____________________________________________________________________________________ _ 84
Space Typewriter (SPTY) instruction _________________________________ _ 146

3. SPS Subroutine Method of Evaluating Arguments __
4. SPS Subroutine Group and Identification Numbers

67
68

Special characters
for statement writing _________________________________________________________ _ 46
permitted in labels ......... _._ ....... __________ .......... ___ ... _______ .. __ ._ .. __ . 43
Specification statements _______________________________________________________ _ 106
SPS Control records _______________________________________________________________ _ 85
SPS Monitor Control record ______________________________________________ 8, 11
SPSX Monitor Control record ____________________________________________ 9, 11
Stacked input __________________________________________________________________________ 13

7. Disposition of SPS Errors when no Error
Stop Statement is used -- __________________________________________ __
8. Codes and Assembled Data for SPS
Modification Program ________________________________________________

Statements
FORTRAN ________________________________________________________________________ _ 93
SPS _____________________________________________________________________________________ _ 45
STOP statement ___________________________________________________________________ _ 103
STORE CORE IMAGE, SPS Control record ___________________ _ 86
STORE RELOADABLE, SPS Control record _________________ _ 86
Subprogram statements _________________________________________________________ _ 115
SUBROUTINE statement ___________________________________________________ _ 115
Subroutines
FORTRAN
library _____________________________________________________________________________ _ 123
adding to ___________________________________________________________________ _ 131
Arithmetic and I/O ------------------------------------------------------ 124
SUBROUTINE statement _____________________________________________ _ 115
SPS
adding ---------------------------- __________________________ -_______________________ 77
arithmetic ________________________________________________________________________ 66
data transmission, ____________________________________________________________ 66
entry points _________________________________ .__________________________________ 79
equal/zero indicator ______________________________________________________ 71
functional ________________________________________________________________________ 66
high/positive indicator __________________________________________________ 72
identification number ________________________________________________ 68, 79
linkage ________________________________________________________________________ .. __ 68
overflow indicator __________________________________________________________ 72
pairing, --__________________________________________________________________________ 68
sets -----------_______________________________________________________________________ 68
writing, --__________________________________________________________________________ 77
see macro-instructions
SUBROUTINE SET nn, SPS Control record ______________________ 85
Subscripted variables ---_________________________________________________________ 97
Subscripts ---------_______________________________________________________________________ 96
Subtract Immediate (SM) instruction __________________________________ 139
Subtract (S) instruction __________________________________________________________ 139
Supervisor program ----____________________________________________________________
8
Symbol table
FORTRAN __________________________________________________________________________ 125
SPS ---------------------- ____________________________________________________________ 86, 87
system -----------___________________________________________________________________ 86, 91
System error ---------------_____________________________________________________________ 22
System header label area, 1401, 1410, 1440 ______________________
6
System Output format -- ______________________________________________________ 4, 23
indicator codes -----------_________________________________________________________ 24
System Symbol table ----____________________________________________________ 86, 91
SYSTEM SYMBOL TABLE, SPS Control record ______________ 86

~: iJ::cr~:t~~~u~i;~:sr~;:or--C~d~~--:::::::::::::::::::::::::::::::: ~~

9. Program Switch Settings for FORTRAN I1-D
Compilation ___________________________________________________________ __
10. FORTRAN Phase 1 Source Program Errors __________ __
11. FORTRAN I1-D Library Subroutines ____________________ __
12. FORTRAN Arithmetic and Input/Output
Subroutines ________________________________________________________________ __
13. FORTRAN Loader Errors ________________________________________ __
14. FORTRAN Subroutine Error Codes ______________________ __
15. Summary of SPS Declarative Operations ________________ __
16. Summary of SPS Arithmetic Instructions ______________ __
17. Summary of SPS Internal Data Transmission

88
92
120
121
124
125
128
130
138
139

Instructions .... __ . __ . ___ . _________ .. ___ ..... ______ . ______ ... __ ... ____ ........... _. __ .... __ 140
18. Summary of SPS Logic (Branch and Compare)
Instructions __________________________________________________________________ 141

19. Summary of SPS Input and Output Instructions ____ 145
20. Summary of SPS Miscellaneous Instructions ____________ 147
21. 1620/1710 Indicator Codes for SPS BI-BNI
Instructions __________________________________________________________________ 148
22. 1710 SPS Operation Codes ______________________________________ 149
23. SPS Subroutine Execution Times ______________________________ 151
24. 1620 Character Coding ______________________________________________ 152
25. Core Storage Data Resulting from Reading
Alphameric Card Data with RN Instruction __________ 153
Tabulate Typewriter (TBTY) Instruction ____________________________ 146
Trace feature, FORTRAN ____________________________________________________ 123
Transfer Control and Load statement __________________________________ 64
Transfer and Return Address statement ______________________________ 65
Transfer Numerical Fill (TNF) instruction ________________________ 140
Transfer Numerical Strip (TNS) instruction ________________________ 140
Transmit Digit (TD) instruction __________________________________________ 140
Transmit Digit Immediate (TDM) instruction __________________ 140
Transmit Field (TF) instruction ____________________________________________ 140
Transmit Field Immediate (TFM) instruction ____________________ 140
Transmit Floating
instruction (TFL) ________________________________________________________________ 140
Subroutine (TFLS) ____________________________________________________________ 75
Transmit Record (TR) instruction ______________________________________ 142
Transmit Record, No Record Mask (TRNM) ______________________ 140
TWO PASS MODE, SPS Control record ____________________________ 85
TYPE Monitor Control record __ ~_______________________________________ 10, 11
TYPE statement ---___________________________________________________________________ 105
TYPE SYMBOL TABLE, SPS Control record ____________________ 85
Typewriter I/O ---------_____________________________________________________________ 19
Typewriter read error ____________________________________________________________ 21
Typewriter write error ____________________________________________________________ 21
Unavailable disk drive error ________________________________________________ 22
Underflow, exponent --____________________________________________________________ 70
Unmask Interrupts (UMK) instruction ________________________________ 149
Unnormalized numbers --________________________________________________________ 70
Index

161

Page

Page
Variable length, defined ........................................................
Variables (FORTRAN) ...............................~..........................
Variable-length mantissa subroutines (SPS) ........................

66
96
67

WLR-RBC check indicator ....................................................
Working areas, subroutine
FORTRAN ..........................................................................
SPS ......................................................................................
Working cylinders ............................................ 5, 83, 108,
Write Addresses routine ........................................................
Write Alphamerically Card (WACD) instruction ..............
Write Alphamerically Paper Tape (WAPT) instruction ....
Write Alphamerically Typewriter (WATY) instruction ....
Write Alphamerically (WA) instruction ................................

23

162

131
78
130
28
146
146
146
146

Write
Write
Write
Write
Write
Write
Write
Write
Write
Write
Write

Binary Paper Tape (RBPT) ........................................ 146
check indicator ...................................................... 21, 23
Disk (WDN) instruction ............................................ 147
Disk Track/WLRC (WTGN) instruction .................. 147
Disk Track (WTN) instruction .................................. 147
Disk/WLRC (WDGN) instruction ............................ 147
error count error ........ .................................................. 22
Numerically Card (WNCD) instruction .................... 145
Numerically Paper Tape (WNPT) instruction ........ 145
Numerically Typewriter (WNTY) instruction ............ 145
Numerically (WN) instruction .................................. 145

XEQ Monitor Control record ............................................ 9, 11
XEQS Monitor Control record .......................................... 10, 11

C26-S774-1

TIrnlliir
®

International Business Machines· Corporation
Data Processing Division
112 East Post Road, White Plains, New York

READER'S COMMENT FORM
C26-'5774-1

IBM 1620 Monitor II System

Reference Manual

2;!T()'VU\M VlHOt .RO

lQ30 'r DO .:.'

L'f

H~~~ J ~ ffi"nj'~Uv\O:»

• Your comments, accompanied by answers tcYl}i~f·fdii6.~lhg\.~~~k~~s, help us produce better
publications for your use. If your answer If>:;;1;:~~~~,v.~~t~~M~;:~
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:03:04 20:31:26-08:00
Modify Date                     : 2014:03:04 19:57:36-08:00
Metadata Date                   : 2014:03:04 19:57:36-08:00
Producer                        : Adobe Acrobat 9.55 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:f2c1c147-db0d-ee40-98bb-8ea4170d2f27
Instance ID                     : uuid:f70240ab-82a4-7541-97f5-edb431c0a43f
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 184
EXIF Metadata provided by EXIF.tools

Navigation menu