900506G_Symbol_Meta Symbol_Mar69 900506G Symbol Meta Mar69

900506G_Symbol_MetaSymbol_Mar69 900506G_Symbol_MetaSymbol_Mar69

User Manual: 900506G_Symbol_MetaSymbol_Mar69

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

Download900506G_Symbol_Meta Symbol_Mar69 900506G Symbol Meta Mar69
Open PDF In BrowserView PDF
j
Reference Manual

Price: $3.50

SYMBOL and META·SYMBOL
REFERENCE MANUAL
for

900 SERIES/9300 COMPUTERS

900506G
March 1969

5DS
SCIENTIFIC DATA SYSTEMS/701 South Aviation Boulevard/EI Segundo, California 90245

©1964. 1965.1966. 1967.1968. 1969. Scientific Data Systems. Inc.

Pflnted In USA.

REVISION
This publication, SOS 9005 06G, is a minor revision of the SYMBOL and METASYMBOL Reference Manual, SOS 90 05 06F. Changes to the previous edition are
indicated by a line at the right or left margin of the page.

RELATED PUBLICATIONS

Title of Manual

Pub Iicati on
Number

SOS 910 Computer Reference

90 00 08

SOS 920 Computer Reference

90 00 09

SOS 925 Computer Reference

90 00 99

SOS 930 Computer Reference

90 00 64

SOS 9300 Computer Reference

90 00 50

SOS 92 Computer Reference

90 05 05

SOS MONARCH Reference

90 05 66

SOS 9300 MONITOR Reference

90 05 13

SOS 900 Series FORTRAN II Reference

90 00 03

SOS 900 Series FORTRAN II Operations

90 05 87

SDS FORTRAN IV Reference

90 08 49

SOS FORTRAN IV Operations

90 08 82

SOS Business Language Reference

90 10 22

NOTICE
The specifications of the software system described in this publication are subject to change without notice. The availability or performance of some features me
depend on a specific configuration of equipment such as additional tape units or larger memory. Customers should consult their SOS sales representative for details.

ii

CONTENTS
PREFACE
I.

GENERAL DESCRIPTION

II.

SYNTAX
A.
B.
C.
D.
E.
F.
G.
H.

v

3

Introduction
Characters
Program
Line
Label Field
Operation Field
Operand Field
Comments Fie Id

3
3
3
3
3
4
4
6

III.

INSTRUCTIONS

10

IV.

DIRECTIVES

11

A.
B.
C.
D.
E.
F.
G.
H.
I.

J.
K.
L.
M.
N.
O.
P.
Q.
R.
S.
T.

U.
V.
V.

Introduction
AORG and RORG (Absolute ORiGin and Relative ORiGin)
RES (REServe)
DATA (DATA)
DED (DEcimal Double Precision)
TEXT or BCD (Binary-coded character string)
EQU (E QUa Is)
OPD (Operation Definition)
FORM (FORMat)
RELTST (TeST RELocatability)
END
DO
NAME
PROC and FUNC (PROCedures and FUNCtions)
PAGE (Eject PAGE)
DISP (DISPlay)
INHD (INHibit Display)
SUPR (SUPpRess octal listing of binary output)
INHS (INHibit Suppression)
MARK (insert character in flag region on listing)
SBRK (Set BREAK 1)
SIOR (Set special I/O Relocation)

ADDITIONAL PROGRAMMING FEATURES
A.
B.
C.
D.
E.
F.
G.

Comments Line
Free Form and Continuation
Litera Is
External Definitions and References
Relocation
Concordance Listi ng
System Procedu res

iii

11

11
12
13
14
14
15
17
18
18
19
19

22
22
31
31
31
32
32
32
33
33
34
34
34
35
36
38
39
41

VIo

COMPATIBILITY: SYMBOL/MET A-SYMBOL

44

VII.

COMPATIBILITY: 92 SYMBOL/MET A-SYMBOL

45

A.
B.
C.
D.
E.
VIII.

Symbols
Directives
Expressions
Instruction Generation
Remarks

45
45
47
48
48

OPERATIONAL PROCEDURES
A.
B.
C.
D.
E.
F.

50

Error Flags
MET A-SYMBOL Error Messages
SYMBOL Error Halts
Concordance Routine Error Messages
Use of SBRK
Making Symbolic Changes to Encoded Programs

50
51
54
54
55
57

SDS 900 Series Programmed Operators
SDS 910/925 Instruction List
SDS 920/930 Instruction List
SDS 9300 Instruction List
SDS 92 Instruction List
Special Instructions - SDS 900 Series/SDS 9300
Input/Output - Device EOMs (SKSs)
Input/Output - Channel Operations (SDS 925/930/9300)
MET A-SYMBOL/FORTRAN Interface
Compatibi lity with SDS SYMBOL 4 and SYMBOL 8
SDS Standard Binary Language

60
62
65
69
74
78
82

APPENDIXES
A.
B.
C.
D.
E.
F.
G.

H.
I.

J.
K.

iv

84
87
90
94

PREFACE

This manual describes two SOS Assembly Systems: META-SYMBOL, and its compatible subset, SYMBOL.

For

both systems, it defines a symbol ic programm ing language and the processor that assembles programs written in
th is language.

Although the name SYM BOL (or META-SYMBOL) appl ies to both the language and the proces-

sor, context will normally clarify the distinction.

Since SYMBOL is a compatible subset of META-SYMBOL,

all programs written in SYMBOL may be assembled by META-SYMBOL; the converse is not true.
The introduction to META-SYMBOL is basic since, in many ways, META-SYMBOL represents a radical departure from more conventional assemblers.

The description is del iberatel y syntax-oriented, and the detai Is per-

taining to its implementation on particular SOS computers are relegated to appendixes.
The presentation assumes that the reader is familiar with the basic theory of digital computer programming.

v

I. GENERAL DESCRIPTION

Basically, the solution of problems on a digital computer involves two steps:
Analysis: mathematical description of the problem, or the formulation of a mathematical model
Coding:

transcription of the mathematical equations into a sequence of machine instructions

The result, called a program, operates on data specified to it (input data) and produces data which constitute
the problem's solution (output data).

If the mathematical description is in parametric form, a family of solu-

tions may be obtained by varying the input data.
Both analysis and coding involve language translation:
mathematical to machine code.

normally, the translation sequence is from verbal to

The first two forms are more familiar to humans than machine code, particu-

larly since machine code varies from computer to computer.

Although del iberately simple, the following

example is illustrative:
Verbal
Let x be the sum of y and z

Mathematical

Machine (octal)

=y +

07601000

x

z

05501001
03501002
No wonder, therefore, that the coding phase frequently is the most time-consuming and unrel iable portion of
programming.
Automatic programming systems arose because of early recognition that coding itself had all the attributes of a
typical programming problem.

Ironically, therefore, the computer could solve the very problem it created.

The creation of a program was involved that would generate machine language programs (the output data) from
problem specifications (the input data), as written in some convenient non-machine language; to be convenient, the language had to be easy to teach, learn, read, and write. Since the output data form is immediately
specified by the computer on which the program is to be executed (called the target machine), only the form
(syntax) of the source language input to the translation program rema ined to be described.
Clearly, the source language would occupy a level in between mathematical notation and machine language
but, unfortunately, no single language evolved.

At one end of the language spectrum, several algebraically-

oriented languages developed, such as FORTRAN and ALGOL.
as compilers.

The assoc iated langucge translators are known

Toward the other end of the spectrum, as languages become more machine-dependent, a new

language tends to develop for each new machine.

The associated language translators are called assemblers,

and the input (assembly) language is generally in the form of machine instructions represented symbolically.
Either language becomes more or less appropriate as the problem shifts from mathematical to machine in nature.

But the problem was not yet solved.
ond problem:

For, once specified, the assembler and compiler in turn engendered a sec-

In what language were they to be written? Just as the prol iferation of programs pointed to the

first problem, the prol iferation of mach ines and languages gave rise to the second. A programm ing language
suitable for dealing with programming languages, that is, a programming meta-language, was required.

META-

SYMBOL is the outgrowth of this concept as implemented on SDS computers.
META-SYMBOL consists of two basic parts:

a processing section (the processor proper) and a directive section.

The directive section contains directives that describe the computer, directives that describe the assembler,
and directives that instruct the meta-assembler.

Since directives describe all appl icable computer characteris-

tics, only the directive section need be changed in implementing META-SYMBOL for other target machines.
Similarly, alteration of the assembler-descriptive portion enables variations in the assembler's syntax, or even
the implementation of entirely new programming systems.

In normal usage, META-SYMBOL operates on con-

ventional symbol ic programs as a high-level symbolic assembler.
Operationally, META-SYMBOL is both faster and easier to use than conventional assembly programs.

These

benefits result from an advanced source language encoding scheme that makes modify-and-Ioad assembl ies not
only convenient but efficient.

2

II. SYNTAX
A. Introduction
The syntax of a language is the set of rules governing its sentence (or statement) structure.

All assembly and

compiler languages possess a formal syntax.
Formerly, the syntaxes of many languages were strongly influenced by ease of implementation and/or computer
hardware characteristics; they had numerous restrictions and ex.ceptions.

SYMBOL and META-SYMBOL do not

have these I imitations; consequently, they possess a simpler but rllore powerful syntax.
tions and rules to learn because each one is more comprehensive.

There are fewer defini-

In learning them, however, the experienced

programmer is cautioned since, in many cases, a famil iar term (such as lIexpressionll) is redefined with greater
generality.

Proper use of the language is possible only after completely understanding the basic principles.

For convenient reference, the following definitions oppear without illustration.

Unless otherwise specified,

all rules and definitions apply both to SYMBOL and to META-SYMBOL.

B. Characters

c.

z.

1.

Alphabetic character: one of the characters A -

2.

Numeric character: one of the characters 0 - 9.

3.

Alphanumeric character: any character which is either alphabetic or numeric.

4.

Special character: a nonalphanumeric character (such as *, $, +). The character
-Ht{internal 077) is strictly illegal in Meta-Symbol except for use in comments.

Program

A program is a series of one or more symbolic lines, the last of which must contain an END directive.

D. Line
A I ine is the unit in which the assembler processes information much as a card is the proc.essing unit (unit
record) to a keypunch.
Unl ike a card, a I ine is a logical unit, subdivided into four parts, or fields, and may be equivalent to one or
more (physical) unit records.

The four fields that comprise a line are:

operand field, and the comments field.
must always spec ify an operation.

the label field, the operation field, the

With the exception of a I ine consisting entirely of comments, a line

In the latter case, the presence of information in the other fields is at the

programmer1s option.

E. Label Field
The label field labels an operation or a value so that it can be symbolicolly referred to elsewhere.
is accomp! ished by '.vriting a symbol (see G. Lb. i.) in the label field

3

Labeling

F. Operation Field
The operation field may contain a generative, such as a mnemonic machine instruction, or a non-generative,
such as an assembler directive.
A directive, which always appears in the operation field, has three basic functions:
1.

Describe the computer

2.

Describe the assembler

3.

Instruct the meta-assembler

Sections III and IV describe instructions and directives.

G. Operand Field
The operand field of a I ine may contain a sequence or a I ist of one or inore expressions.
1.

List

A I ist is a parenthetically-enclosed sequence of one or more expressions separated by commas.
These expressions, called list items, are elements of the list.

A list may itself be a list item.

As shown below, I ists are most useful in handl ing PROCedures and FUNCtions.
a.

Expression

An expression is a series of items connected by operators (see G. 2.).The processor evaluates expressions by successively combining items, as spec ified by the connecting operator,
in the order of decreasing operator hierarchy.
b.

Items

An item may be one of the following types:
Definition

Item

i. Symbol

Example

A symbol is a string of alpha-

ALPHA

numeric characters, of wh ich

B1

the first character isalphabetic.

X lY

(Cf. VI, also Appendix J.)
ii. Subscripted

A subscripted symbol is a symbol

ALPHA (2)

Symbol

followed by a I ist of one or more

Bl (1, N)

expressions enclosed with in

X1Y (3*N, 4)

parentheses.
iii. Octal Integer

An octal integer is a string of

012

from one to 15 octal digits pre-

01234567

ceded by a (signed or unsigned)

077777777

zero.

4

Item
iv.

Definition

Example

Decimal

A decimal integer is a (signed

12

Integer

or unsigned) string of from one

1234567

to 15 decimal digits, of which
the first is not zero. The legal
range is 247_1 :! N :! _~7.

v.

Decimal

A decimal number is either a

12

Number

decimal integer or a (signed

0.12

or unsigned) string of dec imal

+12.0*+4

digits and one or more of the

(-12.5)*+( -2)*/3

following:

decimal point,

decimal scale operator, binary
scale operator. When an item
has a decimal point but has no
binary scale operator, the item
is of the floating point mode.
vi.

vii.

viii.

Character

A character data string is a

1811

Data String

string of characters (alphabetic,

IX1Y I

numeric and/or special) sur-

10121

rounded by single quotes.

1121

Current

The current location symbol

$

Location

represents the execut ion-t ime

Symbol

value of the location counter.

Subexpression

A subexpression is a paren-

(ALPHA +81)

thetically-enclosed expression

(12+012)

that occurs as part of another

($ +12)

expression.
ix.

Function

A function reference is a symbol

Reference

followed by a parentheticallyenclosed expression list.

The

symbol must have appeared in
the label field of a NAME directive within a function definition
(see IV, N).

5

MAX (X, Y)

2.

Operators

An operator may be one of the following:
Operator

Representat ion

Hierarchy

Boolean
equals
greater than

>

1

less than

<

1

sum (OR)

++

2

difference (exclusive OR) --

2

**

3

+

4

product (AND)
Arithmetic
sum

4

difference
product

*

5

truncated quotient

5

covered quotient

I
II

5

decimal scale

*+

6

binary scale

*1

6

The covered quotient operator,

II,

allb = (a + b -1 )/b.

is defined:

The dec imal and binary scale operators, *+ and
two expressions.

*1,

respectively, may be used to combine any

Where x and y represent two expressions,

x *+y is equivalent to (x) . (lOY)
x *

Iy

is equivalent to (x) . (2 Y)

Note that the nominal binary point of x is to the right of the least significant bit; that is,
these operations use integer, not fractional notation.
Actually, */ functions as a logical shift operator, so that x */y is equal to x right (left)
logical shifted y places, y

<0

(y ~ 0).

tions as an arithmetiC operator for ±x

Hence, because of operator precedence, */ func-

*/y

but not for (-x)

*/y.

The use of operators is illustrated in the example which appears at the end of this section.

H. Comments Field
The comments field of a I ine may contain comments to annotate the program.
The next two sections describe instructions and directives.
each case.

A format defin ition precedes usage description in

The following example illustrates the instruction format·

6

The assembler ignores comments.

Format:

label

[[$]

LABEL]

Operation

Operand

Comments

[*] El [, E2]

LDA

In this example, some of the parameters are enclosed in brackets to indicate that they are optional.
structions must have at least an operation mnemonic and most must have an operand address.
ing (as indicated by E2) and indirect addressing (*) are optional.

All in-

However, index-

Similarly, the label and comment need not

be present; if the line specifies a label, an optional dollar sign preceding the label indicates that it is an
external label (Cf. ~. D.).
As indicated above, the operand field of a I ine consists of a sequence or a I ist of expressions.

Expressions will

be represented by the symbols E, El, E2, . . . ,EN.
The illustration on the following page is a representative (although not typical) META-SYMBOL program that
uses each directive at least once.

7

77777777

OOOOOOO!

00000
00002
00003
00004
00005
00006
00007
00010
00011
00012
00013
00014
00015
00016
00017
00020
00021

00000000
00000001
00000001
00000000
00000003
7.7777776
00000001
77777777
00000000
77777777
37777776
'7777772
00000024
3110375524202002
3110375524202002
00000012
00000010
00000100
00000002
50224321
45426250
23464565
25516325
24606346
60000600
12224321
45426212
23464565
25516325
24t26346
12000102

1
2
3
4
5
6
7

A
8
C
0
E
F
G

8 H
9 I

10 J
t 1 K
12 L
13 M
14 N
15 0
16 PI
17 PIE
18 TEN

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
OED
DATA

-1

I
A=a
A=(-8)
8>A
8

20 PRINTOUT

BCD

21
22
23
24
25

FUNC
NAME
DO
RESULT EQU
RESULT EQU

< BLANKS CONVERTEU TO 012>

THIS FUNCTION COMPUTES THE ABSOLUTE
VALUE OF THE REFERENCE PARAMETER

F
ASS

F(I)

The programmer often needs the capabi lity to incorporate within programs output messages in binary-coded form.
This may be accomplished by subdividing the message into four-character (24-bit) strings and placing them in
the operand field of a DATA directive line.

For greater convenience, however, a TEXT directive is provided

with which the message may be described independently of the word-size of the target computer.
Using the TEXT directive, the programmer places the character string (not enclosed in quotes) in the operand
field and specifies the total message length in one of two ways: in the first, he precedes the character string
by a character count, separated from the string by a comma; in the second, he encloses the character string by
the characters < and >, respectively.

The latter method is more convenient when it is unnecessary to know the

length of the string for other reasons; but the former method is necessary when the charac ters < and/or> wi II

14

appear within the message.

In this case, the value of the expression E must be defined prior to the TEXT line.

In both cases, the message is left-justified within the block of computer words allocated to it.
acter positions always contain blanks (060).

Unfilled char-

Note that TEXT and DATA differ in these two respects.

Example:
Location

Contents

01000

Label

Operation

MSGE

RORG

01000

TEXT

8, BCD INFO

TEXT



DATA

'BCD', 'INFO'

Operand

01000

22232460

01001

31452646

01002

22232460

01003

31452646

01004

22232460

01005

31452646

01006

22232460

TEXT

4, BCD

01007

60222324

TEXT

4, BCD

01010

00222324

DATA

'BCD'

01011

60222324

DATA

' BCD'

Note that the first three lines result in identical code, whereas the last four do not.
The BCD directive is identical to TEXT, except that the 012 character is used for blank.

The normal use of

BCD, therefore, is to generate messages intended for typewriter or paper-tape output, whereas TEXT is used
for a II other devices.

G. EQU (EQUals)
Format:
Label

[$]

LABEL

Operation
EQU

Operand

Comments

E

LABEL COMPULSORY

(E 1, E2, ... , EN)

LABEL COMPULSORY

or

[$]

LABEL

EQU

Since the directives DATA, DED, and TEXT enable the programmer to centralize and label execution-time
data specifications, they contribute to both the readability and flexibility of the symbolic program.

For the

same reasons, it is frequently desirable to specifiy assembly-time data symbolically; or to use "parametric
programming", a techniql1e that is useful whenever a number of symbolic lines are related to one another by
their common dependence upon one or more values.

Using the parametric approach, the programmer labels the

value(s} by an EQU directive and replaces all references to the appropriate value{s} by its {their} symbol ic
equivalent{s}.

15

The EQU directive usually defines a single datum symbolically, as on the first line appearing above. Since
the operand is a general expression, it is possible to pyramid parametric definition. Moreover, any singleor double-precision value may be defined by the EQU directive, whereas in conventional assembly languages,
EQU (or its equivalent) can only define symbolic addresses.
Example:
Label

Operation

ONE

EQU

TWO

EQU

ONE + ONE

WILL CHANGE THE VALUE TWO

PI

EQU

3.1415926535

FLOATING POINT DEFINITION

DED

PI

Operand

Comments
CHANGING THIS DEFINITION

In Meta-Symbol the EQU directive can also define a symbolic list, similarly to the way in which the
DATA directive can define a data block.
Example:
Label

Operation

Operand

SQUARE

DATA

1,4,9

CUBE

EQU

(1, 8,27)

The difference is the way reference is made to list items. If LABEL is the label of a DATA block, then the address of the ith element may be symbolically referred to as LABEL +(i-1). If, however, LABEL is the,label of a
list definition, then the ith list element may be symbolically referred to as LABEL (i). Thus, in the above example,
SQUARE

contains

SQUARE +0

contains

SQUARE +1

contains

4

SQUARE +2

contains

9

CUBE

has the va lue

(1, 8,27)

CUBE (1)

has the va I ue

CUBE (2)

has the va lue

8

CUBE (3)

has the va lue

27

Note that a list definition must always be enclosed in parentheses. Because of this, it is possible to pyramid
list definitions.
Label

Operation

OPl

EQU

3

OP2

EQU

(3)

A

EQU

(1,2)

B

EQU

(3,4)

C

EQU

(A, B)

Operand

16

Comments
OPl IS NOT A LIST
OP2 IS A LIST OF 1 ELEMENT

EQUIVALENT TO ((1,2), (3,4))

The fifth line illustrates the case in which elements of the list are lists themselves. Thus:
C(l) is equivalent to (1,2)
C(2) is equivalent to (3,4), and
C(l)(l), written C(l, 1), is equivalent to 1
C(1)(2), written C(l, 2), is equivalent to 2
C(2)(1), written C(2, 1), is equiva lent to 3
C(2)(2), written C(2, 2), is equivalent to 4

Subscripting to higher levels follows the same rules of parenthetical notation. Lists are primarily useful as
they apply to PROCedures and FUNCtions, and additional list notation and examples are provided within the
sections describing these two directives. In particular, the concepts of list dimension and symbolic redefinition are explored there.

H. OPD (Operation Definition)
Format:
Label

Operation

Operand

Comments

LABEL

OPD

E

LABEL COMPULSORY

OPD is the counterpart for operations of the EQU directive for values.
Example:
Label

Operation

Operand

LOC

EQU

3

LDA

OPD

07600000

LDA

LOC

Comments

GE N ERAT ES 07600003

Thus, wh i Ie the interpretation of the operand fie Id of an OPD Iine is identica I to that of the single-va lued
EQU directive, the reference to an OPD-defined symbol is made in the operation rather than in the operand
field. Encountering a reference to the OPD-defined symbol, the assembler merges (OR, logical sum) the
operation value with the address portion of the operand value. If the second line above had appeared
LDA

OPD

07600010

then the third line would have generated 07600013
OPD is preserved for compatibility with SYMBOL 4/8.

The use of a FORM or a PROC definition

offers greater flexibi Ii ty.
In Meta-Symbol, OPD is implemented by means of a nested PROC definition.
not be used within a PROC.

17

Hence, OPD may

I. FORM (FORM at)
Format:
Label

Operation

LABEL

FORM

Operand
E1, E2, •••, EN

Comments
DESCRIBE FORMAT

It is frequently desirable to pack multiple data within a single computer word. The computer instruction is a
typical example: the computer word is divided into operation, address, index, and indirect address subfields.
In processing symbolic instructions, the assembler recognizes an implicitly specified subdivision format and,
upon translation to binary, packs the instruction accordingly.
The FORM directive enables the programmer to describe completely general computer word subdivisions, and
to invoke them simply.
Example:
Operand

Comments

Label

Operation

DCHAR

FORM

4, 4, 4, 4, 4, 4

DEFINE DECIMAL SUBDIVISION

INST

FORM

1,2,6,15 t

DEFINE INSTRUCTION FORMAT

X2

EQU

2

LDA

EQU

076

LOC

EQU

3

RORG

01000

01000

04432126

DCHAR

1, 2, 3, 4, 5, 6

PAC K 6 DECIMAL CHARACTERS

01001

27600003

INST

0, X2, LDA, LOC

PAC K COMPUTER INSTRUCTION

For SYMBOL, the sum of the operands on the FORM definition line must be equal to the word size {24 bits for
SDS 900 Series Computers}. For MET A-SYMBOL, the sum may range between one bit and twice the word size;
when the sum is not equal to the word size {or twice the word size}, the expressions in the FORM reference
line are right justified in the generated single {or double} data word.
The FORM definition must precede all references to it.

J. RELTST (TeST RELocatability)
Format:
Label

Operation

Operand

L

RELTST

E

tApplicable to META-SYMBOL only.

Comments

900 SYMBOL will not handle an address field greater than 14 bits.

18

A value is assigned to L depending upon the relocatability of E:

Relocatabilityof
Expression E

Value assigned
to L

o

absolute
relocatable

2

common relocatable (blank common)

K. END
Format:
Label

Operation

Operand

Comments

END

E

(END OF PROGRAM, PROC OR FUNC)

The END directive indicates to the assembler the end of a PROCedure, FUNCtion, or of an entire program.
When the END line terminates a PROCedure, any expression in the operand field is ignored and need therefore
not appear.
When the END line terminates a FUNCtion, the operand field serves to return the FUNCtional value to the
functional reference line (Cf., PROC and FUNC).
When the END line terminates a program, the operand field may (but need not) be used to specify the starting
address of the program.

L. DO
Format:
Label
(LABEL)

Operation
DO

Comments

Operana
El

WITHIN PROC, FUNC OR PROGRAM

El [,E2,E3]

WITHIN PROC OR FUNC ONLY

or
(LABEL)

DO

The DO directive provides for conditional and/or repetitive code or value generation based upon the value of
the first expression in the operand field of the DO I ine.

The DO directive is valuable in conjunction with

parametric programming (Cf. the EQU directive), since it enables assembly-time decisions to be made and processed.

19

Normally, the "range" of the DO (the number of successive statements upon which it is active) is a single statement.

When used within PROCedures and FUNCtions, however, its capability is extended for action upon mul-

tiple I ines.

The use of th is capabi I ity is described below.

The simplest use of the DO directive can be illustrated:
Label

Operation

Operand

DO

K

ADD

C

Comments

ACCUMULATE SUM

Encountering this instruction sequence, the assembler generates the ADD instruction K times for K ~ 0, and will
indicate an error for K

°

DO the next E2 lines E 1 time(s), then
sk ip E3 I ine(s).

°
<°

El =

Skip the next E2 I ine(s)

El

Error

When unspecified, the values of E2 and E3 are 1 and 0, respectively, to coincide with the DO that is used externally to PROCedures and FUNCtions.

Note: When counting lines, the assembler includes all symbolic lines including comments lines.

20

Example 1:
DO

3,2

DATA
DATA

1*1

generates:
DATA
DATA

1* 1

DATA

2

DATA

2*2

DATA

3

DATA

3*3

DO

TYPE

DATA

5

DATA

50

DATA

500

DATA

17

DATA

34

Example 2:

If TYPE

If TYPE

< 8,

~

< 8, 3, 2

E1 = 1 and the following is generated.
DATA

5

DATA

50

DATA

500

8, E1 = 0 and the following is generated.

DATA

17

DATA

34

Example 3:

If TYPE

If TYPE

< 8,

~

< 8)

DO

(TYPE

DATA

5*+(1-1)

DATA

17

DATA

34

*3, 1, 2

E1 = 3 and the following is generated.
DATA

5*+ (1-1)

DATA

5*+ (2-1)

DATA
5*+ (3-1)
8, E1 = 0 and the following is generated.
DATA

17

DATA

34

Examples 2 and 3 illustrate why E2 and E3 may be reterred to as the "true range" and "false range,

21

II

respectively.

M. NAME
Format:
Label

Operation

LABEL

Operand

Comments

[E]

NAME

[CALLING NAME]

The NAME directive labelsa PROCedure or a FUNCtion definition, enabling it to be called by a PROCedure
reference line or a FUNCtion reference item.

Just as multiple entries can be created for subroutines, multiple

NM\E I ines can appear within a PROC/FUNC definition. In such cases, it is normally desirable to have the abi I ity
to determine internally by what NAME the PROC/FUNC was called.

Since only values (not names) can be

tested (as, for example, with a DO directive), the programmer may associate different values with the different
calling NAMEs.

This is accomplished by placing different expressions{usually integers) in the operand fields of

the different NAME I ines.

The use of this feature is illustrated under PROCedures and FUNCtions.

The operand field of the NAME line may also contai n an expression list.

In this case, the expression list

must be surrounded by parentheses.

N. PROC and FUNC (PROCedures and FUNCtions)
Format:
Label

Operation

LABEL

PROC
or
FUNC

LABEL

Operand

Comments
INTRODUCE PROCEDURE DEFINITION
INTRODUCE FUNCTION DEFINITION

PROCedures and FUNCtions are bodies of code analogous to subroutines, but which are processed at assembly
time rather than at execution time.
minated by an END directive.

Introduced by a PROC/FUNC directive, the coding sample is always ter-

Used without the DO directive, the PROCedure is similar to the simpler "macro",

in which a single line of code (the reference line) is replaced by one or more lines specified in a macro definition.

Used together with the DO, however, the PROCedure provides a more powerful capabil ity than simple

line replacement.

This capability is illustrated in examples which follow.

The FUNCtion, I ike the PROCedure, is a generator; whereas the PROCedure generates code, and is invoked
by placing its name in the operation field of a I ine, the FUNCtion generates val ues and is invoked by plac ing
its name in the operand field.
The PROCedure or FUNCtion definition must always precede the first reference line.
The follow ing exampl es of an ord inary macro are provided for ill ustrative purposes only.

There is no MACRO

directive in META-SYMBOL.
Label

Operation

Operand

MOVE

MACRO

A,B

LOA

A

STA

B

Comments
MACRO DEFINITION

END

MOVE

C,D

MACRO REFERENCE LINE

22

The macro definition defines an instruction sequence in terms of dummy parameters A and B that appear on the
MACRO definition I ine.

Encountering the MOVE I ine, the assembler generates the LDA, STA sequence, but

replaces the dummy parameters A and B by the reference parameters C and D.

The macro is said to operate on

a "call by name" principle.
The PROCedure operates, on the other hand, on a "call by val ue II basis.
Example:
Label

Operation

Operand

Comments
PROCEDURE DEFINITION

PROC

P

NAME

MOVE

LDA

P(1)

STA

P(2)

END

MOVE

C,D

PROCEDURE REFERENCE LINE

In this case, the reference parameters are named implicitly in terms of the symbol P that appears in the label
field of the PROC I ine.

They are evaluated before the PROC/FUNC is processed, and it is only these values,

not their names, that can be determined within the sample.
OP

If the PROCedure reference I ines were:

E 1, E2, . . . , EN

then the correspondence between the symbol P and the parameters El, E2, . . . , EN exists as though the reference I ine had been:

P

EQU

(E 1, E2,

EN)

Thus,
P(1) has the value El
P(2) has the val ue E2

P(N) has the value EN
Note that the reference parameters constitute a I ist even though they are not enclosed in parentheses.
If any of the parameters El, E2, . . . , EN is in turn a I ist, the elements can be referred to by subscripting
further the symbol wh ich appears in the PROC line.
Example:
Q

PROC

OP

NAME

PROC DEFINITION

END

OP

(A, (B, C), (D, (E,F)))

PROC REFERENCE

23

This reference I ine contains only one operand, viz., Q.

Thus,

Q

(A, (B, C), (D, (E,F))))

I ist of one element

Q(l)

(A, (B, C), (D, (E, F»)

I ist of three elements

Q(l,1)

not a I ist unless A is

A

Q(l,2)

I ist of two elements

(B, C)

Q(l,2,1)

B

not a I ist unless B is

Q(l, 2, 2)

C

not a I ist unless C is

Q(l,3)

I ist of two elements

(D, (E, F»

Q(1,3,1)

not a I ist unless D is

D

Q(l, 3, 2)

I ist of two elements

(E, F)

Q(l, 3, 2, 1)

E

not a I ist unless E is

Q(l,3,2,2)

F

not a I ist unless F is

It is frequently desirable that the PROC/FUNC defin it ion be written without restricting the I ist structure of the
PROC/FUNC reference I ine, although the I ist structure of the reference I ine must be determinable within the
definition.

Notationally, this problem is resolved by the convention that, if L is the name of a list, then: L

has the value lithe number of elements in the list L".

:Q

=1

:Q(l)

=3

:Q(l, 1)

=0

:Q(1,2)

=2

:Q(l,2,1)

=0

:Q(l, 2, 2)

=0

:Q(l,3)

=2

:Q(l,3,l)

=0

:Q(l, 3, 2)

=2

:Q(l, 3, 2, 1)

=0

:Q(l, 3, 2, 2)

=0

Thus, in the above example:

In general, there are two additional quantities of interest with in a procedure: the identity of the operation on
the call ing (reference) I ine and the know ledge whether any of the reference operands was indirectly addressed.

24

Example:
Label

Operation

Operand

Comments

P

PROC

LOA

NAME

076

900 SERIES LOAD/STORE

LOB

NAME

075

INSTRUCTION SET

LOX

NAME

071

STA

NAME

035

STB

NAME

036

STX

NAME

037

INST

FORM

3,6,1,14

INST

P(2), P(O), P(* 1), P(1)

END

LOA

100

GENERATES 07600144

STA

*0200,2

GENERATES 23540200

The above exampl e illustrates how several reference I ines may invoke the same PROCedure.

In the first case,

the INST Iine wi II generate an 076 for the six-bit instruction code, since the operation field on the call ing line
corresponds to the label field of the first NAME line, which, in turn, contains the value 076 in its operand
field.

For the same reasons, the INST line generates an 035 for the six-bit instruction code of the STA line.

The correspondence is establ ished via the subscripted symbol P{O), wh ich stands for the va lue on the NAME
line whose label field agrees with the operation field of the reference line.
The examp Ie a Iso illustrates how a procedure may determi ne whether or not a reference parameter was indirectlyaddressed:

If the reference parameter P{i) was indirectly addressed (preceded by an asterisk), then the

item P{*i) wi" have the value 1; otherwise, P{*i) wi" have the value O.
Moregenera"y, ifP{E1,E2, .•• ,EN) is a subscripted symbol, then the subscripted symbol flag corresponding to
this item, written P{E1, E2, .•• , *EN), has the value 1 if an asterisk preceded the expression that defined this'
item.

Otherwise, the subscripted symbol flag has the value O.

Note that the subscripted symbol flag corre-

sponding to an element is notationally indicated by an asterisk preceding the last subscript of the element.
Normally, the programmer does not have to make this identification.

The MOVE PROCedure, for instance,

generates correct code regardless of whether one or both of the reference parameters is indirectly addressed.
This is true because the MOVE PROC invokes the LDA/STA PROC, which does make the determination. Since
a" META-SYMBOL instructions are defined by PROCs, indirect address determination by the programmer is
necessary onl y when he uses non-mach ine instructions defined by himself.

Note the imp Iication that PROCs

may be defined and/or called within other PROCs, which is illustrated in the third example below~

25

Example:
Operation

Operand

LOAD

OPD

07600000

STORE

OPD

03500000

P

PROC

MOVE

NAME

Label

DO

P(*l), 1,1

LOAD

* P( 1)

LOAD

P(l)

DO

P(*2), 1, 1

STORE

*P(2)

STORE

P(2)

Comments

END
In this example, indirect address determination is necessary because LOAD and STORE are defined by OPD and
not by instruction PROCs.

By the above means, all the attributes of the operation and operand fields at the

reference line can be determined and tested within a PROC.

It is also useful to operate within procedures on

the contents of the label field of the reference line.
Example:
It is desired to define two procedures, one a BSS (Block Started by Symbol) PROC, and one a BES (Block Ended

by Symbol) PROC:
Label

Operation

P

PROC

BSS

NAME

BES

NAME

Comments

Operand

0

DO

P(0),2, 1

DO NEXT 2 FOR BES

RES

P(l)

RESERVE P( 1) LOCA nONS

$

RES

0

THEN DEFINE SYMBOL

$

RES

P(l)

BSS IDENTICAL TO RES

END

RORG

o

LABEL 1

BSS

LABEL 1= 0, BUT

LABEL 2

BES

LABEL 2=2

Normally, when the reference label is not manipulated within the PROCedure, it is equated to the value of
the location counter when the PROCedure is called.

A lone dollar sign placed in the label field of a line

within a PROC, however, has the effect of "postponing" the definition of the reference label from the beginning of the PROC to the processing of the $-Iabeled line.
the label field of a symbolic line.
26

In no other case can a dollar sign appear alone in

The followi ng examp Ie illustrates an interesting use of th i s feature in a nested PROC. The examp Ie, wh ich is the
OPD PROC as it actually appears in the system, shows again how a PROC may be used to si mulate a directive.
Label

Operand

Operation

P

PROC

OPD

NAME

A

EQU

P( 1)*/( -21 )**7

B

EQU

P( 1)*/( -15)**077

C

EQU

P( 1)*/( - 14)* * 1

D

EQU

P( 1)**037777

Q

PROC

1

$

NAME

(A,B,C,D)

Z

EQU

Q(O)

FORM

3,6,1,14

DO

Z(4)=0, 1, 1
Z( 1)++ Q(2), Z(2), Z(3)++Q(* 1), Q( 1)
Z( 1)++Q(2), Z(2), Z(3)++Q(* 1), Q( 1)++Z(4)

END
END
When an OPD line is encountered, the OPD PROC is processed, resulting simply in the definition of another
PROC, which takes its NAME from the label field of the OPD line.

This PROC in turn is processed when its

reference Iine is encountered.
There is one restriction on the nested PROC: All NAME lines in the internal PROC must be rendered external
by the appearance of a "$" alone or preceding the symbol in the label field, therefore, PROC definitions may
be nested only one level.
The example also illustrates a use of a one-pass PROC, conveyed to the assembler by the appearance of the
value 1 in the operand field of the PROC line.

When, as in the preceding examples, the operand field of the

PROC line is vacant, the assembler performs a two-pass "assembly" on the PROC when the reference line is
. encountered.
otherwise.

This is necessary whenever a PROC contains an internal forward reference, but unnecessary

For example, the following PROC can be changed to a "PROC 111 only if the reference to the sym-

bol A is replaced by a reference to $+2.
Label
P

Operation
PROC

SUM

NAME

Operand

Comments

BRU

A

BRANCH AROUND RESULT

DUMMY

RES

o

LABE L RESU LT WITH

$

RES

A

LDA

P( 1)

DO

:P-1

ADD

P{I+ 1)

STA

DUMMY

REFERENCE LINE LABEL

SUM REFERENCE PARAMETERS

STORE RESU LT

END
27

Since FU NCtions onl y generate va Iues, and do not influence storage a Ilocation, they are a Iways processed in
one pass.
Because of the flexible list structure, it is possible to write very general PROCedures and FUNCtions where
the operands can be indexed and/or indirectly addressed.

They may, in addition, be literals (Cf. 'Yl.. C) as the

following example illustrates:
Label·

Operation

P

PROC

ATANF

NAME

Comments

Operand

DO

: P( 1) =0, 1, 1

LDF

P(l)

LDF

P{ 1, 1), P{ 1, 2)

BMA

ATAN

DO

: P( 2) =0, 1, 1

PZE

P(2)

PZE

P{2, 1), P{2, 2)

END

ATANF

(* ARGS, 2), = 1. 0

The code generated by the PROC reference line is equivalent to:
LDF

*ARGS,2

BMA

ATAN

PZE

=1.0

It can be inferred from this example that PROCedure/FUNCtion NAMEs are defined externally to the PROC/
FUNC sample.

However, no symbols appearing on other than NAME lines are defined externally unless they

are preceded by a dollar sign.

Similarly, any PROC/FUNC may refer to symbols defined externally to it. In

cases of conflict (where the same symbol isdefined both externally and internally with respect to a PROC/FUNC
sample), the ambiguity is resolved in favor of the innermost (internal) definition level.

However, this conven-

tion applies only within the sample, and cannot affect the reference line.
Example:
Label

Operation

Operand

Comments

3

X

EQU

P

PROC

LOADX

NAME

X

EQU

2

LDX

P{ 1), X

PROC DEFINITION

END

LOADX

X

PROC REFERENCE
28

The PROCedure reference I ine wi II become LDX 3,2.
The writing of FU NCtions follows the same rules as PROCedures except that:

1.

The FUNCtion call occurs in the operand field of the reference line and not in the operation
field.

2.

The function generates a value-not code -and only nongenerative lines may be used within
FUNCtions.

3.

The reference label symbol, $, has no meaning within a FUNCtion.

Example: The following FUNCtion will determine the maximum or the minimum of two given arguments.
Label

Operand

Operation

F

FUNC

MAX2

NAME

MIN2

NAME

o

DO

F(O)--(F( l)0 1(
l::
i

::;t

h:-:t

k:::

-I-

ut M 0 V E
:::/ L
lll!iiil( : : : : : : il::III

0 C
I

:

1 ,
:

:iii
34

:

I :
:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

c.

Literals

Format:
Operation

Label

[£$]

LABEJ

OP

Operand

Comments

=E

OPERAND SPECIFIED BY VALUE, NOT NAME

In a typical program, machine instructions serve two basic purposes: they operate on variables and on constants.

When operating on variables, the location of the variable is important, but its value is unknown until

tested.

When operating on constants, the converse is generally true in that only the value of the operand is

important.
Symbol ic programming facil itates the representation of both types of operation.

Operands of the first category

(variables) can be given symbol ic names (such as X, ALPHA, etc.), and can be referred to by these names
throughout the symbol ic program.

For operating with constants, however, it is generally desirable to refer to

the constant by value rather than by name; literals provide this capability.
In order to use literals, the programmer writes the value of the expression, rather than a name, in the operand
field of the symbol ic I ine, and precedes the expression by an equals sign (=).

Detecting the leading equals

sign, the assembler computes as usual the value of the expression that follows, but it then stores this value in
a literal table which it constructs following the program.

The address portion of the generated instruction is

then made to refer to the literal table entry rather than to contain the value of the computed expression.
Examples:
Location

Contents

Label

00144
TENS

Operation

Operand

RORG

100

LDA

=010

00144

07600152

00145

07600153

LDA

=10

00146

07600154

LDA

='10'

00147

07600155

LDA

=TENS

00150

07600156

LDA

=010*/15+TENS+l0

00151

07600152

LDA

=1*8

END
00152

00000010

00153

00000012

00154

00000100

00155

00000144

00156

01000156

As shown in this example, the processor detects the multiple equal values (010=1*8) and enters them only once
into the literal tabl e.

35

D. External Definitions and References
One of the most powerful features of SYMBOL and META-SYMBOL is the provision for separate assembly of
interdependent programs.

This feature not only permits programs to refer by name to standard library programs

such as subroutines, but it also allows large programs to be segmented, without in either case shifting the burden of memory allocation to the programmer.

As a result, considerable economies accrue both in reduced

assembl ies and in debugging.
Symbol ic inter-program communication is achieved by means of external labels.
local} labels in that they are defined only internally to a program.

Most labels are internal {or

This means that the assembler recognizes

a symbol ic reference in the operand field of a I ine only when the symbol is defined elsewhere in the program
by its appearance in the label field of a I ine.

When a symool ic reference cannot be satisfied within a program,

references to the symbol are said to be external references {that is, the symbol is assumed to be defined within
some context external to the program in which the symbol ic reference occurs}.
The counterpart of the external reference is the external definition; a symbolic definition is made external by
preceding it by a dollar sign {$}.

The programmer may establ ish an external definition either on the I ine that

defines the symbol, or on a subsequent I ine.

In the latter case, where the entire I ine is simply an external

definition line, it is possible to define additional symbols as external by listing them following the first symbol.
Although additional dollar signs are not required, commas must separate one symbol from another.
External references may appear only in the address field of an instruction or FORM reference line.

External

definitions and references are restricted to six characters in SYMBOL and to eight in META-SYMBOL.

Rela-

tive external references (e. g., Symbol±n) are not permitted.
Example:
Label

Operation

Operand

Comments

X

EQU

01000

ADDRESS OF DATA

$START

LDA

X

BRM

SIN

STA

SINX

LDA

X

BRM

COS

STA

COSX

$SINX

DATA

$COSX

DATA

o
o

END

START

SIN

DATA

o

SIN ENTRY

COS

DATA

o

COS ENTRY

EXTERNAL REFERENCE

EXTERNAL REFERENCE

EXTERNAL DEFINITION
EXTERNAL DEFINITION

$SIN,COS
END

RENDER DEFINITIONS EXTERNAL

36

The above example illustrates both methods of external definition.
make SINX and COSX external.

In the first program, their definition lines

In the second, SIN and COS are made external after their definition.

As indicated above, program segmentation may be useful for maintenance or debugging reasons.

Segmenting

can also be used to fac il itate the assembl y of programs wh ich contain large numbers of symbols.

For espec ially

large programs, the situation may arise that the number of symbols used in a program overflows the capacity of
the assembler1s symbol table (approximately 250 symbols for a 4K 900 Series SDS Computer).

In this event,

segmentation can be accompl ished mechanically in the following manner:

1.

The program is divided into as many physical segments as desired.

Each of these segments

is separately assembled.
2.

A set of external definition lines is prepared from the external reference lists output at
the end of each assembly listing. Relative external references are eliminated.

3.

The set of external defin ition I ines is dupl icated for each program segment and included
before each END card.

4.

The program segments are reassembled.

The loader can now fulfill all external references.

To communicate external definition and reference information to the loader, the assembler outputs the former
prior to the binary output (called "text") and the latter following the text.

The external definition table con-

sists of the alphanumeric symbols accompanied by their (relocatable or not) binary values.

Each entry in the

external reference table consists of the alphanumeric symbol accompanied by the (relocatable or not) binary
address of the last location in which the external reference occurred.

The address portion of that location

will point, in turn, to (contain the address of) the last previous location where an external reference was
made to the same symbol.

The chain terminates when the address portion of an· instruction contains O.

Example:
Location

Contents

Label

Operation

00100

Operand

ORG

0100

LOA

X

00100

07600000

00101

07500000

LOB

Y

00102

03500101

STA

Y

00103

03600100

STB

X

00104

07600103

LOA

X

00105

06400104

MUL

X

00106

03500107

STA

XSQ

00107

00000000

DATA

0

END

START

00105

X

OOi02

y

START

XSQ

37

". Consulting the external reference information, which appears following the END line on the assembly listing,
the programmer can easily find all references to the external label by threading his way backward through the
listing.

As a result, octal corrections for undefined symbols can be made more reliably than with conventional

assemblers.

However, octal corrections are seldom required, since it is simpler to assemble a separate "pro-

gram II consisting solely of I ines to define the symbols.

E. Relocat ion
Particularly because of program segmentation capabil ity, it is normally desirable to assemble a. symbol ic program without being required to allocate the program to any particular memory area or starting location. When
a program is written such that it can be executed independently of its origin (that is, independently of where
it is physically located within the computer), the program is said to be relocatable.

All instructions are relo-

catable that are not affected by an AORG directive (see IV. B. ).
All decimal and octal numbers are clearly non-relocatable.

Assuming the absence of an AORG directive, all

symbols, however, are relocatable that are not equated to a non-relocatable expression by an EQU directive.
As a symbol, $ is always relocatable.
When an expression consists of at least one reiocatable item, the expression is:
1.

Relocatable if R, the sum of the added relocatable items minus the sum of the subtracted relocatable items, is equal to 1, and non-relocatable if R=O.

2.

Illegal if RIO, 1 or if the expression involves any operations other than addition and
subtraction upon two relocatable items.

Example:
Label

Operation

R1

DATA

0

R2

DATA

0

NON

EQU

A

EQU

R1+R2

ILLEGAL

B

EQU

R1-R2

NO N- RELOCA TABLE

C

EQU

R1+NON

RELOCATABLE

D

EQU

Rl*NON

RELOCATABLE

E

EQU

Rl*Rl

ILLEGAL

Operand

Comments

END
The assembler provides relocation information in the text section of the binary output.

Detecting a relocation

flag for any instruction, the loader adds a bias (the loading origin) to the address portion of the instruction.
Further details concerning the binary format are available in Appendix K.

38

F. Concordance Listing
The 900 Series META-SYMBOL system has been extended to include an optional program concordance listing.
The option is selected by the presence of the parameters CONC or EXCP in the MONARCH METAXXXX control message.

The use of CONC results in a standard concordance being generated; the use of EXCP results in

a concordance being generated with exceptions from the standard.

The exceptions from the standard concord-

ance must be specified on INCLUDE or EXCLUDE cards.
The standard concordance includes all symbols that occur in the user1s program except:

1.

Operation codes.

2.

Symbols appearing as part of a function or procedure sample unless the symbols, including procedure or function names, are available for reference by code not occurring within any PROC or
FUNC.

The format of the concordance listing is
T DLN SYMBOL RLN RLN RLN RLN RLN
where:
T i s th e symbo I type code:
Interpretation

Code
A

absolute

R

relocatable

*

undefined

$

externally defined

0

operation code

L

list

DLN

is the line number of the definition.

SYMBOL

is the user1s symbol.

Symbols are Iisted in alphanumeric sort sequence with the collating

sequence:
1\ (blank),

RLN

0 through 9, A through Z,\

are the I ine numbers on which the symbol is referenced.

Reference line numbers appear in

ascending sequence for each symbol.
Whe'1 a concordance is to be generated with the exceptions from the standard, the user must supply INCLUDE
and/or EXCLUDE records specifying the exceptions.
by an end-of-fi Ie record,

(The INCLUDE and/or EXCLUDE records must be followed

.6EOF.)

39

\ EXCLUDE records must precede the INCLUDE records.
/\EXCLUDE/\SYM, SYM, SYM,

••• I

I'JNCLUDE/\SYM, SYM, SYM,

••• I

The format of these records is:

or
/\EXCLU DE/\ * ALL/\
/\INCLUDE/\ *ALL/\
where
/\

represents one or more blanks.

SYM

represents:
1.

Note that /\ is the only legal terminator.

In the case of EXCLUDE, the specific symbols to be excluded from the
concordanc e.

2.

In the case of INCLUDE, the specific symbols to be included in the concordance
(this enables the user to specify symbols that would not be included in a standard
concordanc e).

*ALL

specifies:
1.

In the case of EXCLU DE, no symbol is to be I isted unless it appears on a subsequent INCLUDE.

2.

In the case of INCLU DE, every symbol in the user's program is to be I isted regardless of where it appears in the code unless it is present on a previous
EXCLUDE.

If a symbol is both excluded and included, the exclusion takes precedence.
Examples:
/\EXCLUDE/\ P, X2, XO, A, B, LDA/\
/\INCLUDE/\ *ALL/\

,0.EOF.
In this case all mnemonic codes, labels, and symbol references will be listed except those indicated by the
EXCLUDE record.
/\EXCLUDE/\ *ALL/\
/\INCLUDE/\ BRX, LDX, STX/\

,0.EOF.
This would result in only three symbols (BRX, LDX, and STX) appearing in the concordance.

40

The concord6nce subroutine takes the exception records from the symbolic input device.
unit assigned as X2 is available as a scratch tape.
tape Xl.

It is assumed that the

The user1s program is scanned from the intermediate output

The concordance is produced on the device assigned for listing output. All assignments must be

made prior to calling META-SYMBOl.

G. System Procedures
The user is not restricted as to the number of system procedure decks he may have in the procedure library
on the system tape.

He is free to add specialized procedures to the META-SYMBOL library either as modifica-

tions to an existing system procedure deck or as an entirely new segment on the MONARCH or MONITOR system tape.
Since system procedures are handled somewhat differently than procedures occurring in the user1s program,
caution must be exercised in putting a group of user procedures with the standard system procedures for a given
machine.

For instance, system procedures are selectively loaded by the Preassembler.

Therefore, if a new sys-

tem procedure is to use any of the other system procedures, it must precede those other procedures in the system
procedure deck.

Also, only the parts of the system procedure deck that are within the scope of procedure lines

are processed by the Preassembler.

Thus, whi Ie a simple FORM definition Iine, external to all the procedures

usi ng it, wi II suffice at the user-program level, such a FORM must be i nterna I to all these procedures at the
system-procedure level.

Also, a name line in a system PROC may not have a list in the operand field.

MONARCH
Each system procedure is inserted on the MONARC H tape between PREASSEM and SHRIN K.

It must be preceded

by its 62 MONARCH identification record and its machine series identification record.
The MONARCH ID record has the following format:
~2

PROCXXXX

Column

Contents
6 {delta}

2

2 {identifying a level 2 record}

3 - 8

Blank

9 - 16

The letters PROC occupy columns 9 through 12.

The four alphanumeric charac-

ters that identify the procedure occupy columns 13 through 16.

These four

characters are used in place of XXXX in a MONARCH METAXXXX control
message.

17 - 25

Blank

26 - 72

Comments

Blank is a terminator.

41

The machine series identification record consists of a 2-word, encoded record of the following configuration:
12 f
11

I
I
I
I
I
I
I

0
1
2
3

4
5
6
7

8
9

I
I
I
I
I

col

80

2 3
Column

Row

Contents

12

Punched if the object code is to be run on a 9300 Computer.
Not punched if the object code is for a 900 Series mach ine.

2

11 - 0

Blank

1- 6

Word count (Th is value is always 2, indicating a 2-word record.)

7 - 9

Punched to indicate an encoded card.

12 - 9

Checksum for the card.

(Each row contains the opposite - punch or non-punch

- of the same row in column 1.)

3 -72

Blank

Example:
To add the procedure deck, labelled CUBE, for 9300 machines to the META-SYMBOL system procedure library,
the user must prepare an encoded deck for the procedures, a MONARCH level 2 ID record:

r

fOCCUBE.
column 9

column 1

and the mach ine series identification record:
12

/I
I
I
I
I
I
I

11

o
1
2

3
4
5
6

I

7

I
I

8

I

9

I
~~--------------------------------------------------~
2 3
col
80
42

The procedure is inserted on the system tape via the System Update Routine (see the SDS MONARCH Reference
Manual, publication number 90 05 66). It is called into core with a MONARCH control message:
6METACUBE

Pl' P2' P3' P4' P5' P6 .

See the MONARC H Reference Manual for an explanation of the parameters for th is control message.

MONITOR
Changing a MONITOR system tape is the function of System-Make, a free-standing program.
System-Make is contained in SDS Library Program, Catalog Number 860692.

43

A description of

VI. COMPATABILITY: SYMBOL/META-SYMBOL
The preceding sections described the programming language as though it were identical in SYMBOL and METASYMBOL. Actually, META-SYMBOL requires a larger hardware configuration than SYMBOL, and SYMBOL
does not therefore include all of the features of the meta-assembler.

Aside from the lack of PROCedures and

FUNCtions, these differences are slight, and it is entirely possible to write programs in a common subset of the
language.
The differences between SYMBOL and META-SYMBOL are:

1.

In META-SYMBOL, symbols may be from 1 to 15 characters in length.

External definitions

may not exceed 8 characters in length.
In SYMBOL, no symbol may exceed 6 characters in length.

>, =,

2.

Symbol does not include the Boolean operators

3.

SYMBOL does not inc lude PROCedures and FUNCtions.

and

<.
Therefore, it does not inc lude the

following di rectives:
PROC
FUNC
NAME
DO

It also does not include lists (Cf. IV. G.).
4.

In SYMBOL, the sum of the expressions in the operand field of a FORM definition line must
be equal to the number of bits in a single computer word.

In META-SYMBOL, the sum may

have any value between 1 and twice the word size (in bits).

Double precision is also ex-

cluded in literals and as operands of a SYMBOL EOM line.
5.

In META-SYMBOL, but not in SYMBOL, an OPD line may override a system definition.

44

VII. COMPATIBILITY: 92 SYMBOL/META-SYMBOL
92 SYMBOL is a 1-pass assembly program for the SDS 92.

It operates on a minimal SDS 92 with 4K memory

and a Teletype, model 35ASR, and processes a language which is very similar to SYMBOL and META-SYMBOL
for other SDS computers.

For this reason, the 92 SYMBOL language will be defined in terms of compatibility

with META-SYMBOL.

A. Symbols
A symbol is a string of from one to eight alphanumeric characters of which the first is alphabetic.

Operation

symbols (instruction mnemonics, directives, etc.) are restricted to four characters.

92 SYMBOL provides for the definition, and possible subsequent discarding, of local symbols which retain
value only within a certain region of the program.

(See B.3, below.) A local symbol is a symbol preceded by

the character \ (internal code 076); for example:

\ TEMP 1

The current location counter, indexing, indirect addressing, and literals (which are immediate) are indicated
as in 900 Series/9300 SYMBOL.

B. 0 irect iv es
Data Generation

Assembler Instruction

DATA

AORG

TEXT

RORG

BCD

RES
DO

Value Declaration

REG
DEF

EQU

REF

FORM

PAGE

OPD

END

1.

DED and floating-point items are not implemented.

2.

The DO directive is used to process a line a given number of times.

The expression in the

operand field indicates the number of times the line is to be processed.

45

3.

REG is used to declare the beginning of a local symbol region.
tered, all currently defined local symbols are discarded.

When this line is encoun-

New local labels may now be de-

fined which will not conflict with previous local symbols.

Example:

RORG 0100
TEMPl

RES 1

TEMPl is a valid symbol.

\TEMPl

RES 1

\ TEMPl is a local symbol and is
distinct from TEMP1.

\ TEMPl

REG

All previous local symbols purged.

RES 1

\ TEMPl redefined as present location counter, a value which it will
retain unti I next REG directive.

4.

DEF is used to dec lore external symbols.
operands.

The symbols to be made external are Iisted as

All such symbols must have been previously defined, non-local symbols.

The

DEF line is analogous to the $ line in META-SYMBOL.

Example:
Label

Operation

Operand
ALPHA, BETA

DEF
as opposed to
$ALPHA, BETA
in META-SYMBOL.

5.

REF is used to declare explicitly external references.

All external references and undefined

symbols are published at the end of the assembly; undefined symbols are preceded by a U
diagnostic.

The REF line must precede the first external reference.

Example:
Label

Operation

Operand
ALPHA, BETA

REF

46

6.

The OPD directive has two operands separated by commas.

The second operand may have

the value 6 or 12 to define the field size in which the OPD is effective.

Second Operand

Interpretation

6

The OPD-defined symbol is treated similarly to
a computer instruction (e.g., LDA).

12

The subsequent reference line causes a 12-bit,
single word to be generated.

The value of the

OPD definition line is added to the value of the
reference I ine operand.

The OPD definition line must precede all references.
local symbol definition.

7.

All OPD lines must precede the first

An OPD line may not override a system definition.

The syntax for TEXT and BCD lines is
character count, string

TEXT/BCD
The option
TEXT/BCD



is not implemented.

8.

PROC, FUNC, NAME, FORT2, FORT4, DISP, INHD, SUPR, INHS, MARK, SBRK, REL TST,
and SIOR are not implemented.

9.

All other directives are implemented as in META-SYMBOL.

The sum of the operands on a

FORM line must equal 12.

c.

Express ions

The operations =, >, <, ++, --, **, +, -, */ are implemented, and occupy the same relative hierarchy, as in
META-SYMBOL.

The operations *, /, / /, *+ are not implemented.

Examples:
A

EQU

TYPE>O

\A

EQU

A--O**A

47

Parenthetical expressions are not allowed.

D. Instruction Generation
The typical instruction line may be represented as
ITabeTI

operation

[*]

operand 1 , [?perand

~

where the brackets denote "optional." If the value of the first expression is absolute, greater than zero, and
less than 32, the address is considered to be a Scratch Pad address (unless a literal was indicated).

If the value of the second expression is not zero, indexing is applied.

In this case, the address may not indi-

cate a literal.

If the first operand is a symbol (not an expression composed of a symbol plus one or more items connected by
operations), and the symbol has not been previously defined, the reference will be treated as a forward or external reference. A 2-word instruction will be generated.

The value of the address will be determined when

the program is loaded.

Relative forward or external references are not permitted except when they are relative to the location counter
symbol ($), such as BRU $+5.

The instruction mnemonics recognized by 92 SYMBOL are those provided in the SDS 92 Instruction list
(Appendix E) plus the EOM/SES instructions that address the typewriter/keyboard, paper tape reader/punch,
and card/reader punch.

The mnemonics for magnetic tape and other devices are not recognized.

The syntax

for SDS 92 device EOMs and SESs is identical to that for the corresponding 900 Series/9300 operations (see
Appendix G) with the exception that no channel designation is required, and an asterisk does not denote interlace.

Example:
RPT 1, 1

Read paper tape unit 1 in 1-character mode (EOM 02104)

CRT

Card reader 1 ready test (SES 012106)

For programming convenience there are two additional instruction mnemonics NOP (No Operation-07340) and
XAB (Exchange A and B- 03040).

E. Remarks
Although the assembler's space requirements are modest, table overflows can occur in a minimal configuration
whenever many and/or long symbols are used. Short symbols and local symbols are to be encouraged to alleviate
overflows.

Because 92 SYMBOL is a 1-pass assembler, forward references are "chained" on the assembly I isting and binary
output and are satisfied at load time.

This means that the address portion of an instruction involving a forward

48

reference will not, after loading, correspond to the assembly Iisting.
used as sparingly as possible.

Therefore, forward references should be

A good programming practice is to allocate all data at the beginning of the pro-

gram and to use forward references only in branch instructions.

Relative forward references are not permitted in any case except where they are relative to the current location counter ($).

49

VIII. OPERATIONAL PROCEDURES
A. Error Flags
Certain errors are detected by the assembler and are indicated, during the listing of the program, by special
symbols.

These symbols appear at the left-hand margin of the output listing, preceding the instruction that

contains the error{s}.

Errors, flagged in this manner, do not cause the assembler to terminate the job.
Interpretation

Symbol

*

External address reference.

D

1.

Duplicate definition of a main program symbol.

2.

Multiple use of a variable name within COMMON statements.

1.

Operand field expression error.

2.

Directive syntax error.

E

3.

{Mayor may not be an actual error.}

Examples {not exhaustive}:

a.

TEXT - if the first symbol is a value and the second symbol is not a comma.

b.

DO - more than one expression or improper nesting.

c.

END - external reference in END line.

Procedure syntax error.

Exampl es {not exhaustive}:

a.

LDX, BRX, STX - no index field given.

b.

Shifts - indirect addressing.

F

Illegal forward references in directive.

G

Generative code in function.
Unknown operation code {on 900 Series Computers all POP's are flagged with an I}.

L

1.

III egal label (special characters).

2.

Exceeding PROC or FUNC level.

M

Improper use of SBRK or DISP.

N

Missing END line.

P

Exceeding maximum parenthesis nesting I eve!.

R

1.

Primitive relocation error.

2.

Use of relocatable address in extended mode I/O procedure calls other than lORD,

May occur during use of function.

See .Appendix V section E of reference manual.

10RP, 10SD, IOSP, IOCT.
T

U

1.

Truncation.

Attempt to use a value exceeding the capacity of the specified field.

2.

Request COpy not available in hardware.

1.

Undefined symbol used in manner which does not all ow possibil ity of external reference.

2.

Use of labeled common name in directive or procedure other than COMMON.

Notes:

1.

Error and MARK flags generated within PROCs may appear in three possible places:
a.

On call I ine if generated during pass 1 of a 2-pass procedure.

b.

On the next generated line.

c.

On a blank line following the procedure if no generative line follows error.

50

2.

Labels appearing on PROC reference lines are not defined until the end of the PROC.
This is necessary to mechanize the lone $ feature. Therefore, if such a label is doubl y
defined, the 0 flag will be printed on a blank line following the procedure.

3.

Machine instructions (LOA, etc.) are procedures.

B. META-SYMBOL Error Messages
9300 COMPUTERS
The 9300 META-SYMBOL abort messages are of the form

! META ERROR a xx
where a indicates which overlay segment of the assembler was last loaded:
a

Interpretation

E

Encoder

P

Preassembl er

A

Assembler

xx identifi es the type of error:
xx

Interpretation

01

Insufficient space to complete encoding of input.

02

Corrections to encoded deck but encoded input file is empty.

03

End of file detected before an end card while reading encoded input.

04

Insufficient space to complete preassembly operations.

05

Insuffici ent space to compl ete the assembl y.

06

Data error.

07

Requested output on a device which is not available.

08

Correcti ons out of sequence.

09

End of file detected by ENCODER when trying to read intermediate tape Xl.

10

Request for non-existent system procedures.

11

Byte larger than dictionary (bad encoded deck).

12

Not encoded deck.

13

Checksum error reading system tape.

14

Preassembler overflow (ETAB).

15

Not used.

16

Data error causing META-SYMBOL to attempt to process procedure sample beyond end of table.

17

Shrink overflow.

18

Improperly formatted or missing PROC deck series-specification card.

19

End of fi I e encountered wh i I e readi ng system procedures.

20

Irrecoverable error in attempting to read Xl or X2.

21

Symbol tabl e overflow.

22

Abnormal condi ti on (probobl y end of tape) on X2.

META-SYMBOL does not recognize the data as anything meaningful.

Try using ISET I option in META Control Card.

51

xx

Interpretati on

23

End of file on Xl.

24

Input is not encoded.

25

Checksum error on encoded deck.

26

End of file on Xl.

27

Irrecoverable error in attempting to read INCLUDE, EXCLUDE, or SI.

28

Irrecoverabl e error in attempti ng to read X2.

29

Both SI and EI were specified on the META card, but the first card of EI does not have a + in
column 1 (i.e., is not a correction card).

Note that an empty SI file (a ~EOF only) will not

cause an error 29 abort.
30

The first SI card is a + card, but no EI parameter appears on the META card.

31

No SI or EI parameter has been specifi ed on the META card.

For example, an improperly nested DO pair would cause the printout
!META

ERROR

A

06

900 SERIES COMPUTERS
The standard abort message for 900 Seri es Computers is
MET A-SYMBOL

ERROR

xx

where xx has any of the val ues 01 through 19 as described above for 9300 META-SYMBOL.
For both 9300 and 900 Series Computers errors 05, 06, and 16 are accompani ed by a printout that shows the
value of certain internal parameters at the time of the abort:
LINE NUMBER

yyyyy

BREAK1

yyyyy

LOCATION COUNTER

yyyyy

UPPER

yyyyy

LOWER

yyyyy

BREAK

yyyyy

SMPWRD

yyyyy

LTBE

yyyyy

LTBL

yyyyy

\ second pass only

(yyyyy represents the value of the particular item.) The last six of these are useful in determining the
nature of the assembly overflow and are defined in paragraph E of this section. After the appropriate message
has been typed, control is transferred to the system Monitor.

52

9300 I/O ERROR MESSAGES AND HALTS
When an I/O error is detected, a message is typed, and control is returned to MONITOR.

The message will

be either
!META ERRORa' IOC
indicating checksum error, or
! META ERROR a' IOE
indicating buffer error.

(a' has the same maaning as for abort messages.)

A checksum error is considered to be irrecoverable.

900 SERIES I/O ERROR MESSAGES AN D HALTS
When an I/O error is detected, a simple message is typed and the computer halts.
2-letter indication of the type of error and a 2-digit indication of the I/O device.

The message consists of a
The letter indicators are

defined below; the 2-digit number is the unit address number used in EOM selects (see applicable computer
The action taken if the halt is cleared d~pends upon the type of error and the device in-

reference manual).
volved.

There are three types of error.

BUFFER ERROR (BE)

1.

2.

Exampl es:
BEll

buffer error while reading magnetic tape 1.

BE52

buffer error while writing magnetic tape 2.

Action upon clearing the halt:
a.

Magnetic tape input - since ten attempts are made to read the record before the halt
occurs, continuing causes MET A-SYMBOL to accept the bad record.

b.

Paper tape or card input - try again.

c.

Magnetic tape output - try again.

d.

Output other than magnetic tape - continues.

CHEC KSUM ERROR (CS)

1.

2.

Examples:
CS06

checksum error card reader.

C S 11

checksum error read ing magnetic tape 1.

Action upon clearing the halt:
Accepts bad record.

53

WRITE ERROR (F P)

1.

Example:
F P12

2.

magnetic tape 2 file protected.

Action upon clearing the halt:
Checks again.

c.

SYMBOL Error Halts

Input/output errors during a SYMBOL assembly result in a halt with the relative location of the halt displayed
in the P register.
1.

The recovery procedure depends on the type of error and the device involved.

Paper tape reader or typewriter symbolic input - Upon detection of a buffer error, a halt occurs
with relative location 032 displayed in the P register.
to relative location 025.

To continue the assembly, one can branch

To reread the record, one must reposition the paper tape and branch to

relative location 03.
2.

Magnetic tape input - Input records are required to be card images (20 words).
termination is treated as being equivalent to an end-of-file.

A premature

One end-of-file mark is allowed

to separate input files on a tape reel and is ignored by the assembler at the beginning of the first
pass.

An additional end-of-file mark or one occurring after the first symbolic line but before the

END line causes a halt in relative location 050.

Clearing the halt causes a branch to location01,

which reinstates the assembly process.
In case of tape read errors, ten recovery attempts are made after which a halt occurs in relative
location 021.
3.

Clearing the halt causes the record to be accepted.

Line printer listing - In the event of a printer fault, a halt occurs in relative location 023.

To

continue the assembly, clear the fault on the printer and then clear the halt.

D. Concordance Routine Error Messages (META-SYMBOL only)
If an error occurs whi Ie a concordance is being output, a message is produced on the output I isting device.
Message

Meaning

Write error on magnetic

Unable to write on magnetic

tape.

tape.

Tape fi Ie protected

Write ring removed from tape.

Action
Clear the halt to tryagain.

Insert ring; c lear the hal t
to continue.

Magnetic tape read error

Read failure on magnetic tape.

Clear the halt to accept
record as read.

54

Message

Meaning

Symbol table overflow

Action

Insufficient space to retain all sym-

Run is aborted.

bois requested.
End-of-fi Ie error

End of fi Ie detected on Xl.

Run is aborted.

Input is not encoded

A non -encoded record is detec ted

Run is aborted.

on Xl.
Checksum error

An erroneous checksum is detected

Clear the halt to read next

on Xl.

record.

EXCLUDE follows

An EXCLUDE card follows an

EXCLUDE card is ignored.

INCLUDE

INCLUDE card.

Concordance control card

Control card is not INCLUDE,

not recognized

EXCLUDE, or 6.EOF.

Printer fault

Error on printing.

Run continues.

Print buffer error

Buffer error while printing.

Run conti nues.

Typewriter buffer error

Buffer error while typing listing.

Run continues.

Card is ignored.

E. Use of SBRK
The SBRK directive gives the user the capabi I ity of modifying, at assembly time, the assembler's working
storage memory allocation scheme.

To understand how SBR K may be usefu I; one must first understand how

META-SYMBOL's table storage is arranged.
After the particular system procedures required for the job have been read in and properly arranged, all of
memory from PAC KL (the next ava i lable cell above the system procedures) to TO P (the highest ava i labl e
location) will be used for building the tables required for assembly.
bly-the value BREAK,

At this time-immediately prior to assem-

which determines the relative sizes of the various tables, is set.

For 8K machines

BREAK is set to PAC KL + 600 . For larger machines the increment between PAC KL and BREA K is progressively
8
greater. This increment is BREAK1. In the case of an abort due to lack of table storage, the value of BREAK1
for that run is given in the error printout.
During pass 1 of the assembly, user sample or procedures are assigned storage starting at PACKL and progressing upward toward BREAK.

The next avai lable cell above the user sample is SMPWRD.

Main code sym-

bols and aJd procedure level t symbols are assigned storage starting at the highest ava i Iabl e address and

tIn discussing META-SYMBOL storage, items are referred to by "Ievels.
defined as "Ievel 1,

II

II

The main program is arbitrarily

external definitions to be satisfied at load time are designated as "level 0,

II

and

procedures take on level values 2, 3, 4, etc. (and thus are referred to as "odd" or "even" level procedures).

55

expanding downward.

The next available address is contained in UPPER.

Even procedure level symbols and

main coda definitions are stored starting at BREAK and expanding upward.

The next available address for

this purpose is contained in LOWER.
Two possibilities for pass 1 overflow exist: (1) if LOWER is greater than UPPER, processing must cease, as no
more symbols may be defined; (2) if SMPWRD is greater than BREAK, there are too many user procedures for
avai lable storage.
At the start of pass 2, SMPWRD has attained its final value.
and BREAK is used for two purposes.
next avai lable address in LTBL.

The amount of memory left between SMPWRD

Table storage for literals starts at SMPWRD and expands upward with the

External reference storage starts at BREAK - 1 and expands downward, where

LTBE points to the next location for this purpose.
Above BREAK, the situation in pass 2 is the same as in pass 1 with the exception that since no external definitions are being processed, the difference between BREAK and LOWER becomes only as large as is necessary
to define even procedure level symbols.
Again, two possibi I ities for pass 2 overflow exist: (1) if LOWER is greater than UPPER or (2) if LTBL is greater
than LTBE, processing must cease.
The SBRK directive enables the user to set, at assembly time, the value of BREAK1.

As indicated earlier, the

directive must be used before the first external definition or procedure reference; i.e., before the pointers
have begun to move.

In this manner, the value of the expression E in the operand field of the directive

is used as BREAK1, and BREAK is set to PACKL + E.
This is useful primarily in attempting to recover from an assembler overflow.

For example, suppose one re-

ceives the error printout:
META SYMBOL ERROR 05
LINE NUMBER

1090

BREAK1

01300

LOCA nON COUNTER

00737

UPPER

24155

LOWER

17326

BREAK

17304

SMPWRD

17017

LTBE

17077

LTBL

17077

In th is case, a pass 2 overflow (indicated by the presence of LTBE and LTBL in the diagnostic), the assembler
has run out of storage for literals and references.

However, it is apparent that at this point in the assembly

considerable memory is still available for symbol storage.

56

The only solution short of program modification,

or a larger machine, is to attempt to recover by increasing the amount of pass 2 table storage for literals and
references through an initial increase in the value of BREAK1, currently 1300 ,
8
SBRK

Inserting the card:

01700

at the start of the program would accomplish this.

In any case, the exact value to be used in the directive

is based upon an evaluation of such immediate considerations as the pass and the point in the program at
which overflow occurred, the amount of user sample, and the number of literals and external references that
can subsequently be expected to be encountered.
Odd level
procedure
symbols

UPPER (current)

----------- CD Meeting

point of UPPER and LOWER.
C an no t b e se t •

Even level
proce d ure
BREAK
Can be set
via SBRK. @

.....s__y_m_b_o_1s--:--_ _ _ _+-I LOWE R (c u rren t)
External
LTBE (current)
references

------------ @
Literals

SMPWRD

PAC KL

Meeting point of LTBE and LTBL.
Can not be set.

I---------~ LTBL (current)
User PROCs

...-------....a........t

When UPPER and LOWER meet, an overflow error occurs.
When LTBE and LTBL meet, an overflow error occurs.
BREAK is preset to a fixed point. It can be changed at assembly time via
the directive SBRK.

F. Making Symbolic Changes to Encoded Programs
Symbolic changes are accompl ished by a series of insertions and deletions controlled by specially formatted
symbolic records.

The encodad program is interpreted as a series of logical lines as indicated by the line

numbers given on the assembly listing for that program.

Note that the continuation feature allows two or

more cards to be considered as one logical line.
The format of the symbolic change control record is

+a'f3/\

+ must be in col umn 1.
a is a decimal integer corresponding to the line number given on the assembly listing and specifying

the line following which an insertion is to be made, or the first line of a group of sequential lines
to be deleted or replaced.

57

f>has the same interpretation as a except that it specifies the last line of a group of sequential lines to
be deleted or replaced.
1\

indicates a space which terminates the scan of the + card.

1.

Insertion
Insert 51' ... , 5

n

following line a:

5

n

The 5. are symbolic cards for assembly.
I

To insert before the first line, use:

+0

5

n

2.

Deletion
Delete lines a through f> inclusively:

+ a , f>
(Note that if 0'= f>, only one line is deleted.)

3.

Replacement
Replace lines a through f>, inclusively, with 5 ,5 , ... , 5 :
1 2
n
+0' ,f>

5

n

58

4.

Deck Structure

Symbol ic correction cards. The first
card following the 6METAXXXX card
must be a +.

Note: An encoded deck may not be corrected by merging or juxtaposing other
encoded decks.

59

APPENDIX A. SDS 900 SERIES PROGRAMMED OPERATORS

In 900 Series SYMBOL and META-SYMBOL, non-machine instructions are treated similarly to external references. This enables Programmed Operator definitions and Iinkages to be establ ished at execution rather than
at assembly time. As a resu It, the entire 64 Programmed Operator instructions are at the disposal of the programmer.
To define a Programmed Operator, the Programmer precedes the POP subroutine by a line which has the following format:
Operation

Operand

Comments

POPD

OPERAND IGNORED. POP FOLLOWS

A dollar sign preceding the symbol in the label field causes the POP to be externally defined (so that it can be
referred to in other, separately assembled programs).
To refer to a Programmed Operator, the programmer places its name in the operation field of a symbolic line.

If a corresponding POP definition does not exist within the same program, the assembler assumes that the operation is a reference to an external POP.
POP assignments are established at assembly time in order of appearance, beginning at 0100, and corrected at
loading time if necessary.
EX~PLE:

Location

Contents

Label

Operation

Operand

00000

10000000

PROG1

LDP

X

00001

10100000

FLA

X

00002

10200001

FLM

X

00003

10300002

STD

X

END
00000

$X

RES

2

PROG2

LDP

X

00002

10000000

00003

10100000

FLM

X

00004

10200000

FLA

X

00005

10300000

STD

X

$LDP

POPD

00006

03700014

STX

TEMP

00007

07740000

EAX

*0

00010

27600001

LOA

1, 2

60

EXAMPLE (continued)
Label

Operation

Operand

Location

Contents

00011

27500000

LDB

0, 2

00012

07100014

LDX

TEMP

00013

05100000

BRR
TEMP

00014

0

RES
END

If PROG 1 is loaded first, the operation assignment of PROG 1 overrides those of PROG2i if PROG2 is loaded
first, the converse is true.
Loading PROG 1 first, the loader inherits from the assembler a table equivalent to the following:
LDP:

0100

FLA:

0101

FLM:

0102

STD:

0103

Upon subsequently loading PROG2, the loader detects the mnemonic coincidence(but binary confl ict) of FLA
and FLM. It therefore changes all 0101 instructions (F LM) in PROG2 to 0102 to agree with PROG 1, and all
0102 to 0101.
Also, the loader establishes the necessary POP linkages in locations 0100-01XX.

61

APPENDIX B. SDS 910/925 INSTRUCTION LIST
Instruction syntax is indicated where non-standard (Cf. 111.).
Mnemonic

Instruction
Code

Function

LOAD/STORE
LDA

76

LOAD A

STA

35

STORE A

LDB

75

LOAD B

STB

36

STORE B

LDX

71

LOAD INDEX

STX

37

STORE INDEX

EAX

77

COpy EFFECTIVE ADDRESS INTO INDEX

ADD

55

ADDM TO A

MIN

61

MEMORY INCREMENT

SUB

54

SUBTRACT M FROM A

MDE

60

MEMORY DECREMENT

MUS

64

MULTIPL Y STEP

DIS

65

DIVIDE STEP

ETR

14

EXTRACT

MRG

16

MERGE

EOR

17

EXCLUSIVE OR

ARITHMETIC

LOGICAL

REGISTER CHANGE
RCH

46

REGISTER CHANGE

XAB

04600000

EXCHANGE A AND B

BAC

o 46 10000

COPY B INTO A, CLEAR B

ABC

04620000

COpy A INTO B, CLEAR A

CLR

04630000

CLEAR A, B

62

Mnemonic

Instruction
Code

Function

BRANCH
BRU

01

BRANCH UNCONDITIONALLY

BRX

41

INCREMENT INDEX AND BRANCH

BRM

43

MARK PLACE AND BRANCH

BRR

51

RETURN BRANCH

SKS

40

S KIP IF SIGNAL NOT SET

SKG

73

SKIP IF A GREATER THAN M

SKN

53

SKIP IF M NEGATIVE

SKA

72

SKIP IF M AND A DO NOT COMPARE ONES

SKM

70

SKIP IF A = M ON B MASK

TEST/SKIP

SHIFT
RSH

066000XX

RIGHT SHIFT AB

RCY

066200XX

RIGHT C YC LE AB

LSH

067000XX

LEFT SHIFT AB

LCY

067200XX

LEFT CYCLE AB

NOD

067 100XX

NORMALIZE AND DECREMENT X

CONTROL
HLT I PZE

00

HALT

NOP

20

NO OPERATION

EXU

23

EXECUTE

BREAKPOINT TESTS (Breakpoints specified as expression list in operand field.)
BPT

04920XXO

BREAKPOINT TEST

OVT

040 20001

OVERFLOW INDICATOR TEST AND RESET

ROV

002 20001

RESET OVERFLOW

OVERFLOW (No operand.)

63

Instruction
Code

Mnemonic

Function

INTERRUPT (No operand)
EIR

002 20002

ENABLE INTERRUPT SYSTEM

DIR

o 02 20004

DISABLE INTERRUPT SYSTEM

lET

040 20004

INTERRUPT ENABLED TEST

IDT

04020002

INTERRUPT DISABLED TEST

AIR

002 20020

ARM INTERRUPT

CHANNEL CONTROL (Channel designated by expression in operand field)
ALC

x OX 50XOO

ALERT CHANNEL (925 only)

DSC

X OX OOXOO

DISCONNECT CHANNEL

ASC

X OX 12XOO

ALERT TO STORE ADDRESS IN CHANNEL (925 only)

TOP

X OX 14XOO

TERMINATE OUTPUT ON CHANNEL

CHANNEL TESTS (925 only-Channel designated by expression in operand field)
CAT

X 40 X4XOO

CHANNEL ACTIVE TEST

CET

X 40 X 1XOO

CHANNEL ERROR TEST

CZT

X 40 X2XOO

CHANNEL ZERO COUNT TEST

CIT

X 40 XOXOO

CHANNEL INTER-RECORD TEST

INPUT/OUTPUT
MIW

12

MINTO W BUFFER WHEN READY

WIM

32

W BUFFER INTO M WH EN READY

MIY

10

MINTO Y BUFFER WHEN READY

YIM

30

Y BUFFER INTO M WHEN READY

BRTW, BRTY

0402XOOO

BUFFER READY TEST

BETW, BETY

040200XO

BUFF ER ERROR TEST

POT

13

PARALLEL OUTPUT

PIN

33

PARALLEL INPUT

BPO

11

BLOC K PARALLEL OUTPUT (925 only)

31

BLOC K PARALLEL INPUT (925 only)

02

ENERGIZE OUTPUT M

06

ENERGIZE OUTPUT TO DIRECT ACCESS
CHANNELS (925 only)

BPI
t

EOM
t
EOD

t Indi rect address flag (*) interpreted as interlace control flag.

64

APPENDIX C. SDS 920/930 INSTRUCTION LIST

Mnemonic

Instruction
Code

Function

LOAD/STORE
LDA

76

LOAD A

STA

35

STORE A

LDB

75

LOAD B

STB

36

STORE B

LDX

71

LOAD INDEX

STX

37

STORE INDEX

EAX

77

COpy EFFECTIVE ADDRESS INTO INDEX

XMA

62

EXCHANGE M AND A

ADD

55

ADDM TO A

ADC

57

ADD WITH CARRY

ADM

63

ADD A TO M

MIN

61

MEMORY INCREMENT

SUB

54

SUBTRACT M FROM A

SUC

56

SUBTRACT WITH CARRY

MUL

64

MULTIPLY

DIV

65

DIVIDE

ETR

14

EXTRACT

MRG

16

MERGE

EOR

17

EXC LUSIVE OR

ARITHMETIC

LOGICAL

REGISTER CHANGE (Cf. Appendix E - no operand except for RCH and COPY)
RCH, COpy

46

REGISTER CHANGE

CLA

046 00001

CLEAR A

CLB

046 00002

CLEAR B

CLR

046 00003

CLEAR AB

CAB

046 00004

COpy A INTO B

65

Mnemonic

Instruction
Code

Function

REGISTER CHANGE (continued)
CBA

046 00010

COpy B INTO A

XAB

046 00014

EXCHANGE A AND B

BAC

046 00012

COpy B INTO A, CLEAR B

ABC

04600005

COpy A INTO B, C LEAR A

CXA

04600200

COpy INDEX INTO A

CAX

04600400

COpy A INTO INDEX

XXA

04600600

EXCHANGE INDEX AND A

CBX

046 00020

COpy B INTO IN DEX

CXB

04600040

COpy INDEX INTO B

XXB

04600060

EXCHANGE INDEX AND B

STE

o 46 00122

STORE EXPONENT

LDE

04600140

LOAD EXPONENT

XEE

046 00160

EXCHANGE EXPONENTS

CNA

o 46 01000

COpy NEGATIVE INTO A

BRANCH
BRU

01

BRANC H UNCONDITIONALLY

BRX

41

INCREMENT INDEX AND BRANCH

BRM

43

MARK PLACE AND BRANCH

BRR

51

RETURN BRANCH

SKS

40

S KIP IF SIGNAL NOT SET

SKE

50

S KIP IF A EQUALS M

SKG

73

SKIP IF A GREATER THAN M

SKR

60

REDUCE M, SKIP IF NEGATIVE

SKM

70

SKIP IF A = M ON B MASK

SKN

53

SKIP IF M NEGATIVE

SKA

72

SKIP IF M AND A DO NOT COMPARE ONES

SKB

52

SKIP IF M AND B DO NOT COMPARE ONES

SKD

74

DIFFERENCE EXPONENTS AND SKIP

TEST/SKIP

66

Mnemonic

Instruction
Code

Function

SHIFT
RSH

066000XX

RI GHT SHIFT AB

LRSH

066240XX

LOGICAL RIGHT SHIFT AB

RCY

066200XX

RI GHT CYCLE AB

LSH

067000XX

LEFT SHIFT AB

LCY

067200XX

LEFT CYCLE AB

NOD

067 100XX

NORMALIZE AND DECREMENT X

CONTROL
HLT, PZE

00

HALT

NOP

20

NO OPERATION

EXU

23

EXECUTE

BREAKPOINT TESTS (Breakpoints specified as expression list in operand field)
BPT

04020XXO

BREAKPOINT TEST

OVT

040 20001

OVERFLOW INDICATOR TEST AND RESET

ROV

o 02 20001
o 02 20010

RESET OVERFLOW

OVERFLOW (No operand)

REO

RECORD EXPONENT OVERFLOIV (930 only)

INTERRUPT (No operand)
ENABLE INTERRUPT SYSTEM

DIR

o 02 20002
o 02 20004

lET

040 20004

INTERRUPT ENABLED TEST

lOT

040 20002

INTERRUPT DISABLED TEST

AIR

o 02 20020

ARM INTERRUPTS

EIR

DISABLE INTERRUPT SYSTEM

CHANNEL CONTROL (Channel designated by expression in operand field)
ALC

x OX 50XOO

ALERT CHANNEL (930 only)

DSC

X OX OOXOO

DISCONNECT CHANNEL

ASC

X OX 12XOO

ALERT TO STORE ADDRESS IN CHANNEL (930 only)

TOP

X OX 14XOO

TERMINATE OUTPUT ON CHANNEL

67

Mnemonic

Instruction
Code

Function

CHANNEL TESTS (930 only - Channel designated by expression in operand field)
CAT

X 40 X4XOO

CHANNEL ACTIVE TEST

CET

X 40 X lXOO

CHANNEL ERROR TEST

CZT

X 40 X2XOO

CHANNEL ZERO COUNT TEST

CIT

X 40 XOXOO

CHANNEL INTER-RECORD TEST

INPUT/OUTPUT
MIW

12

MINTO WBUFFER WHEN READY

WIM

32

W BUFFER INTO M WHEN READY

MIY

10

MINTO Y BUFFER WHEN READY

YIM

30

Y BUFFER INTO M WHEN READY

BRTW, BRTY

0402XOOO

BUFFER READY TEST

BETW, BETY

040200XO

BUFFER ERROR TEST

POT

13

PARALLEL OUTPUT

PIN

33

PARALLEL INPUT

02

ENERGIZE OUTPUT M

06

ENERGIZE OUTPUT TO DIRECT ACCESS
CHANNELS (930 only)

t
EOM
t
EOD

tIndirect address flag (*) interpreted as interlace control flag.

68

APPENDIX D. SDS 9300 INSTRUCTION LIST

Mnemonic

Instruction
Code

Function

LOAD/STORE
LDA

16

LOAD A

STA

76

STORE A

LDB

14

LOAD B

STB

74

STORE B

LDX

X - 17

LOAD INDEX

STX

X - 77
0-77

STORE INDEX
STORE ZERO

STZ
LDP, LDF
STD, STF

26
75

LOAD DOUBLE PRECISION (FLOATING)
STORE DOUBLE PRECISION (FLOATING)

XMA

36

EXCHANGE M AND A

XMB

34

EXCHANGE M AND B

XMX

X - 37

EXCHAI'-!GE MEMORY AND INDEX

LDS

06

LOAD SE LECTIVE

STS

70

STORE SELECTIVE

EAX

15

COpy EFFECTIVE ADDRESS INTO INDEX
REGISTER 1

ADD

05

ADD M TO A

DPA

25

DOUBLE PRECISION ADD

SUB

04

SUBTRACT

DPS
MPO
MPT

24
71
72

DOUBLE PRECISION SUBTRACT
MEMORY PLUS ONE
MEMORY PLUS TWO

MUL

63

MULTIPLY

DIV

62

DIVIDE

ADM

35

ADD A TO M

TMU

61

TWIN MULTIPLY

DPN

27

DOUBLE PRECISION NEGATE

ARITHMETIC

69

Mnemonic

Instruction
Code

Function

FLOATING
POINT
FLA

65

FLOATING ADD

FLS

64

FLOATING SUBTRACT

FLM

67

FLOATING MULTIPLY

FLD

66

FLOATING DIVIDE

ETR

11

EXTRACT

MRG

13

MERGE

EOR

12

EXC LUSIVE OR

LOGICAL

REGISTER CHANGE (Cf. Appendix E)
Mode I
RCH, COpy

040 XXXXX

Modell
RCH, COpy

X 40 XXXXX

Mode III
AXB

4X 40 XXXXX

ADDRESS TO INDEX BASE

BRANCH
BRU

01

BRX

X-57

INCREASE INDEX AND BRANCH

BRC

0-57

BRANCH AND C LEAR INTERRUPT

BRM

03

MARK PLACE AND BRANCH

BMA

43

BRANCH AND MARK PLACE OF ARGUMENT
ADDRESS

BRR

41

RETURN ADDRESS

BRANCH UNCONDITIONALLY

70

Mnemonic

Instruction
Code

Function

TEST/SKIP
SKE

45

SKIP IF A EQUALS M

SKU

47

SKIP IF A UNEQUAL TO M

SKG

46

SKIP IF A GREATER THAN M

SKL

44

SKIP IF A LESS THAN OR EQUAL TO M

SKR

73

REDUCE M, SKIP IF NEGATIVE

SKM

55

SKIP IF A = M ON B MASK

SKN

53

SKIP IF M NEGATIVE

SKA

54

SKIP IF M AND A DO NOT COMPARE ONES

SKB

52

SKIP IF M AND B DO COMPARE ONES

SKP

51

SKIP IF BIT SUM EVEN

SKS

20

SKIP IF SIGNAL NOT SET

SKF

50

SKIP IF FLOATING EXPONENT IN B> M

SKQ

56

SKIP IF MASKED QUANTITY IN A GREATER
THANM

SHIFT

60

SHIFT (Used in conjunction with indirect addressing)

ARSA

60-20

ARITHMETIC RIGHT SHIFT A

ARSB

60-10

ARITHMETIC RIGHT SHIFT B

ARSD

60-00

ARITHMETIC RIGHT SHIFT DOUBLE

ARST

60-30

ARITHMETIC RIGHT SHIFT TWIN (A AND B)

LRSA

60-21

LOGICAL RIGHT SHIFT A

LRSB

60-11

LOGICAL RIGHT SHIFT B

LRSD

60-01

LOGICAL RIGHT SHIFT DOUBLE

LRST

60-31

LOGICAL RIGHT SHIFT TWIN (A AND B)

CRSA

60-22

CIRCULAR RIGHT SHIFT A

CRSB

60-12

CIRCULAR RIGHT SHIFT B

CRSD

60-02

CIRCULAR RIGHT SHIFT DOUBLE

CRST

60-32

CIRCULAR RIGHT SHIFT TWIN (A AND B)

-

SHIFT

71

Mnemonic

Instruction
Code

Function

SHIFT (continued)
ALSA

60-24

ARITHMETIC LEFT SHIFT A

ALSB

60-14

ARITHMETIC LEFT SHIFT B

ALSO

60-Q.4

ARITHMETIC LEFT SHIFT DOUBLE

ALST

60-34

ARITHMETIC SHIFT TWIN (A AND B)

LLSA

60-25

LOGICAL LEFT SHIFT A

LLSB

60-15

LOGICAL LEFT SHIFT B

LLSD

60-05

LOGICAL LEFT SHIFT DOUBLE

LLST

60-35

LOGICAL LEFT SHIFT A AND B

CLSA

60-26

CIRCULAR LEFT SHIFT A

CLSB

60-16

CIRCULAR LEFT SHIFT B

CLSD

60-()6

CIRCULAR LEFT SHIFT DOUBLE

CLST

60-36

CIRCULAR LEFT SHIFT TWIN (A AND B)

NORA

60-64

NORMALIZE A

NORD

60-44

NORMALIZE DOUBLE

FLAG REGISTER {Single operand expression}
FLAG

22

FLAG

FIRS

22-0

FLAG INDICATOR RESET/SET

FSTR

22-1

FLAG INDICATOR SET TEST/RESET

FRTS

22-2

FLAG INDICATOR RESET TEST/SET

FRST

22-3

FLAG INDICATOR RESET/SET TEST

SWT

22-4

SENSE SWITCH TEST

CONTROL
HLT, PZE

00

HALT

NOP

10

NO 0 PERATIO N

EXU

21

EXECUTE

INT

07

LOAD OP CODE INTO INDEX 2, SKIP ON
BIT 1

REP

23

REPEAT INSTRUCTION IN M

72

Mnemonic

Instruction
Code

Function

INTERRUPTS (No operand)

o 02 20002
o 02 20004
o 02 20020
o 20 20004
o 20 20002

EIR
DIR
AIR
lET
IDT

ENABLE INTERRUPT SYSTEM
DISABLE INTERRUPT SYSTEM
ARM INTERRUPTS
INTERRUPT ENABLED TEST
INTERRUPT DISABLED TEST

CHANNEL CONTROL (Channel designated by expression in operand field)
DSC

X X2 OOXOO

DISCONNECT CHANNEL

ALC

X X2 50XOO

ALERT CHANNEL

ASC

X X2 12XOO

ALERT TO STORE ADDRESS IN CHANNEL

TOP

X X2 14XOO

TERMINATE OUTPUT ON CHANNEL

CHANNEL TEST (Channel designated by expression in operand field)
CAT

X 20 X4XOO

CHANNEL ACTIVE TEST

CET

X 20 X1XOO

CHANNEL ERROR TEST

CIT

X 20 XOXOO

CHANNEL INTER-RECORD TEST

CZT

X 20 X2XOO

CHANNEL ZERO COUNT TEST

INPUT/OUTPUT

t

t
EOM
t
EOD

02

ENERGIZE OUTPUT M

42

ENERGIZE OUTPUT TO DIRECT ACCESS
CHANNEL

PIN

33

PARALLEL INPUT

POT

31

PARALLEL OUTPUT

MIA

30

MEMORY INTO CHANNEL A BUFFER

AIM

32

CHANNEL A BUFFER INTO MEMORY

.

. . _.

'Indirect address flag (*) interpreted as interlace control tlag.

73

APPENDIX E. SDS 92 INSTRUCTION LIST

Mnemonic

Instruc t ion
Code

Function

LOAD/STORE
LDA

64

LOAD A

LDB

24

LOAD B

STA

44

STORE A

STB

04

STORE B

XMA

74

EXCHANGE M AND A

XMB

34

EXCHANGE M AND B

XMF

17

EXCHANGE M AND F

LDF

57

LOAD F

SFT

0044

SET FLAG TRUE

SFF

0042

SET FLAG FALSE

INF

0046

INVERT FLAG

FLAG

ARITHMETIC
ADA

62

ADD TO A

ADB

22

ADD TO B

ACA

63

ADD WITH CARRY TO A

ACB

23

ADD WITH CARRY TO B

SUA

60

SUBTRACT TO A

SUB

20

SUBTRACT TO B

SCA

61

SUBTRACT WITH CARRY TO A

SCB

21

SUBTRACT WITH CARRY TO B

MPA

76

MEMORY PLUS A TO MEMORY

MPB

36

MEMORY PLUS B TO MEMORY

MPO

16

MEMORY PLUS ONE TO MEMORY

MPF

56

MEMORY PLUS FLAG TO MEMORY

MUA

13

MUL TIPL Y A (0 PTIONAL)

MUB

53

MUL TIPL Y B (0 PTIO NAL)

DVA

52

DIVIDE AB (0 PTIO NAL)

DVB

12

DIVIDE BA (OPTIONAL)

74

Mnemonic

Instruc tion
Code

Function

CONTROL
EXU
HLT

73

0041/00000000*

EXECUTE
HALT

TRAPPIN G (no operand)
SCT

0061

SET PROGRAM-CONTROLLED TRAP

RCT

0060

RESET PROGRAM-CONTROLLED TRAP

TCT

0160

TEST PROGRAM-CONTROLLED TRAP

BREAKPOINT TESTS (single operand)
BRT

0144

BREAKPOINT NUMBER 1 TEST

BRT 2

0145

BREAKPOINT NUMBER 2 TEST

BRT 3

0146

BREAKPOINT NUMBER 3 TEST

BRT 4

0147

BREAKPO INT NUMBER 4 TEST

INTERRUPTS (no operand)
EIR

0051

ENABLE INTERRUPT

DIR

0050

DISABLE INTERRUPT

lET

0150

INTERRUPT ENABLED TEST; SET FLAG IF INTERRUPT SySTEM ENABLED

AIR

00020001

ARM INTERRUPTS

CHANNEL CONTROL AND TESTS (no operand)
DSC

00000100

DISCONNECT CHANNEL

TOP

00012100

TERMINATE OUTPUT ON CHANNEL

TIP

00012100

TERMINATE INPUT 0 N CHANNEL

AlC

00050100

ALERT CHANNEL INTERLACE

ASC

00010500

ALERT TO STORE INTERLACE COUNT

CAT

01004100

CHANNEL ACTIVE TEST; SET FLAG IF NOT ACTIVE

CET

01001100

CHANNEL ERROR TEST; SET FLAG IF ERROR

LOGICAL
ANA

65

AND TO A

ANB

25

AND TO B

ORA

67

OR TO A

+A slash (/) indicates that either instruction code can be used to perform the same operation.

75

Mnemonic

Instruc t ion
Code

Function

LOGICAL (continued)
ORB

27

OR TO B

EOA

66

EXCLUSIVE OR TO A

EOB

26

EXCLUSIVE 0 R TO B

MAA

75

MEMORY AND A TO MEMORY

MAB

35

MEMORY AND B TO MEMORY

COA

45

COMPARE ONES WITH A

COB

05

COMPARE ONES WITH B

CMA

47

COMPARE MAGNITUDE OF M WITH A

CMB

07

COMPARE MAGNITUDE OF M WITH B

CEA

46

COMPARE M EQUAL TO A

CEB

06

COMPARE M EQUAL TO B

BRU

73

BRANC H U NCO N DITIO NALLY

BRC

32

BRANCH, CLEAR INTERRUPT, AND LOAD FLAG

BRL

33

BRANCH AND LOAD FLAG

BFF

31

BRANCH ON FLAG FALSE

BFT

71

BRANCH ON FLAG TRUE

BDA

70

BRANCH ON DECREMENTING A

BAX

30

BRANCH AND EXCHANGE A AND B

BRM

77

BRANCH AND MARK PLACE

BMC

37

BRANCH, MARK PLACE, AND CLEAR FLAG

CYA

42

CYCLE A

CYB

02

CYCLE B

CFA

43

CYCLE FLAG AND A

CFB

03

CYCLE FLAG AND B

CYD

02/42*

CFD

43

CYCLE FLAG AND DOUBLE

CFI

03

CYCLE FLAG AND DOUBLE INVERSE

COMPARISON

BRANCH

SHIFT

CYCLE DOUBLE

*A slash (I) indicates that either instruction code can be used to perform the same operation.

76

Mnemonic

Instruction
Code

Function

INPUT/OUTPUT
WIN

15

WORD IN

RIN

55

RECORD IN

WOT

11

WORD OUT

ROT

51

RECORD OUT

PIN

14

PARALLEL INPUT

POT

10

PARALLEL OUTPUT

BPI

54

BLOC K PARALLEL INPUT

BPO

50

BLOC K PARALLEL OUTPUT

EOM

00(40*)

ENERGIZE OUTPUT M

SES

01(41*)

SENSE EXTERNAL SIGNAL

*Codes EOM 40 and SES 41 are reserved for use in spec ial system appl ications.

77

APPENDIX F. SPECIAL INSTRUCTIONS - SoS 900 SERIES/SoS 9300

A. SOS 9300 Register Change Instruction (040)
This instruction has three main functions:
1.

Interchange and/or modify information between selected bytes of A and B.

2.

Interchange and/or modify information among selected bytes of A, B, and the index registers.

3.

Load the address portion of a se lected index register from the address portion of the instruction.

In modes 1 and 2, the address portion of the instruction serves to extend the operation code; each of
the address bits has a particular significance during instruction decoding and execution. In mode 3,
however, the interpretation of the address portion is the conventional one in which the 15-bit value
defines an operand. Therefore, in mode 3, the instruction is programmed by following the mnemonic,

AXB, by an expression in the operand field. The assembler inserts the value of the expression in the
instruction's 15-bit address portion.
When programmed in Mode 1 or 2, the instruction may be given one of two mnemonics: RCH or COPY.
The assembler processes the operand field of RCH in the conventional manner, inserting the evaluated
operand field expression into the instruction's 15-bit address portion. In general, the expression is an
octal number representing the bit pattern that specifies the function to be performed. This implies a
detailed knowledge of the instruction on the programmer's part.
The operand field of COPY, on the other hand,

IS

interpreted differently. The field consists of a byte

selection "mask" followed by one or more grouped expression lists that describe the desired operation(s).
The programmer need be concerned only with operational legitimacy and not with its specification via
bit patterns.
EXAMPLES:
Label

Effect

Operation

Operand

COpy

(0, (A, B»

Clear A and B

COpy

(A, B)

Copy A into B

COpy

(A, B), (B,A)

Exchange A and B

COpy

077, (A, B, B)

Merge the low order six
bits of A and B in B.

Unless a merge is specified, the assembler automatically sets the "clear" bit.

Thus, the second line

causes the generation of 0 40 37703.
Format:
Label
LABEL

Operation
COpy

Operand
E, (E 11 I

•••

,

E1N) I (E21 I E2N) I

78

•••

I

(EM 1, ••• , EM N)

Since parenthetical notation is used in the operand field, parentheses have not been used to denote
lIoptional". As usual, the label is optional and mayor may not be external. The first operand and all
successive operand I ists are also optional.
RULES:

1.

The byte selection mask, if present, is the first expression to appear in the operand field.

It is

not enclosed within parentheses. In the absence of this expression, the assembler assumes the
mask 077777777 to be implicitly specified. Actually, the assembler cannot insert the mask directly into the byte-selection position of the instruction, since the 24-bit value must be mapped
into three or eight bits. However, it is convenient to think of the mask in this manner. Since
the mask may be an expression, it need not always be written as an octal number.
EXAMPLES:
Operand

Label

Operation

Effect

EXP

EQU

0777

HI3

EQU

070000000

COpy

EXP, (B, 1), (O,B)

(B)15_23-X1 15-23'

COpy

HI3, (A, B)

(A)0-2 -B O- 2

0-(B)15_23

Un less the programmer ind icates that the spec ified index register be cleared (in a Mode 2 register change),
the assembl er automati ca II y sets one of the bi ts 12, 13, or 14 to prevent the regi sterfrom be i ng c Ieared.
2.

Following the mask, one or more parenthetical expression I ists appear, separated by commas.
Within a list, two or more expressions (or expression groups) appear. The first of these specify
the source of information flow, and the last specifies the destination. In the case of three or
more successive expressions, an OR is implied. Thus, COpy operations are specified by ordered
groupings of values. The following definitions relate the value of an expression to the 24-bit
source value/register or destination register. Where actual registers are not involved (0 and -1)
it is convenient to imagine the existence of two fictitious registers always containing all zeros
and all ones, respectively.
Meaning*

Value

The negative (2s complement) of (A)

-5

-(A)

-4

(A)

The inverse (ls complement) of (A)

-3

(B)

The inverse (ls complement) of (B)

-1

-1

0

0

All lis

(X 1)
2

(X2)

3

(X3)

4

(B)

5

(A)

*( ) denote lithe contents of II •
79

Therefore to refer to the registers mnemonically, the programmer must precede his program by
equality directives such as:
A

EQU

5

B

EQU

4

X2

EQU

2

IA

EQU

-4

IS

EQU

-3

ONES

EQU

-1

EXAN\PLES:
Interpretation

Mnemonic Notation

Absolute

COpy (A, B), (B,A)

COpy (5,4), (4,5)

Exchange A and B

COpy (lA, B), (O,A)
COpy (l-A, B), (O,A)

COpy (-4,4), (0,5)

Copy inverse of A into Band
clear A

COpy 070, (ONES, B)
COpy 070, (-l,B)

COpy 070, (-1,4)

Form mask in B 18 21

Thus, the programmer can spec ify any legitimate register change without having to write the
necessary bit pattern explicitly and without being restricted to a pre-selected set of mnemonic
op;..codes. Also, the assembler diagnoses the variable field for legitimacy.

B. SDS 920/930 REGISTER CHANGE INSTRUCTION (046)
The S DS 920/930 Register Change instruction has some, but not a II, of the capabi I ities of its 9300
counterpart. The differences are:
1.

The SDS 920/930

RCH does not provide for byte selection except for selecting the low-order

nine bits.
2.

The SDS 920/930 Computers include only one index register.

3.

There is no capability for copying (or merging) the one's complement of one register into another.

FORMAT:
Label

Operation

LABEL

COpy or COPYE

Operand
(Ell, ••• , E1N), (E21, ••• E2N), ••• ,(EM1, ••• , EMN)

As before, the label is optional and mayor may not be external. All expression lists are optional. The
mnemonic COpy implies that operands are whole-word registers; the mnemonic COPYE causes the exponent portion (the low-order nine bits) only to be affected.

80

COPY(E) operations are specified by ordered groupings of values. The following definitions relate the
val ue of an expression to the 24-bit source val ue/register or destination register.
Meaning

Value

-5

-(A)

The negative (2s complement) of A

o

a

A register contai ni ng all as

2

(X)

The index register

4

(B)

The contents of B

5

(A)

The contents of A

EXAMPLES:
Mnemonic Notation

Absolute

COpy (A, B), (B,A)

COpy (5,4), (4,5)

Exchange A and B

COPYE (B,X), (a, B)

COPYE (4,2),(0,4)

B15-23 - - . X 15 - 23
B15
---. XO- 14

Interpretat i on

a

COpy (A, B, X)

COpy (5, 4, 2)

81

---. B15-23

Merge A and B to X

APPENDIX G. INPUT jOUTPUT - DEVICE EOMs ISKSs)

FORMAT:
label

[[$]

LABEL]

Operation

Operand

OP

E1[, E2 [, E3]]

The format for device (I/O peripheral unit) EOMs (SKSs) is different from that of the standard instruction; for
a definition of the format, refer to the appropriate SDS reference manual. The expressions E1, E2, and E3 have
the following meaning:

Mnemonic

t
El:C :

Channel (Buffer), nominally, 0

E2:U:

Unit Number

E3:CC:

Character Transmission Mode (1-4)
(Paper Tape Channel for PSC;
Number of lines to be spaced for PSP)

Instruction
Code

Function

TYPEWRITER, U=l, 2,3
RKB C, U, CC

EOM 002XOX

Read Typewriter Keyboard

TYP C, U, CC

EOM 002X4X

Type

PAPER TAPE, U=1,2
RPT

C, U, CC

EOM 002XOX

Read Paper Tape

PPT

C, U, CC

EOM 002X4X

Punch Paper Tape

PTl

C, U, CC

EOM OOOX4X

Punch Paper Tape with leader

CARDS, U=l, 2
CRT

C, U

SKS O1200X

Card Reader Test

CFT

C, U

SKS OllOOX

Card End-of-file Test

FCT

C, U

SKS O1400X

First Column Test

RCD C, U, CC

EOM 002XOX

Read Cards Dec i rna I

RCB

C, U, CC

EOM 003XOX

Read Cards Binary

SRC

C, U

EOM O1200X

Skip Remainder of Card

CPT

C, U

SKS O1404X

Card Punch Test

PBT

C, U

SKS Ol204X

Punch Buffer Test

EOM 002X4X

Punch Cards Decimal

EOM 003X4X

Punch Cards Binary

PCD C, U, CC
PCB C, U, CC

tFor the SDS 92 the channel designator (E 1) is absent.

82

Instruction
Code

Mnemonic

Function

MAGNETIC TAPE, U=O, 1, ••• , 7
TRT

C, U

SKS 01041X

Tape Ready Test

FPT

C, U

SKS 01401X

File Protected Test

BTT

C, U

SKS 01201X

Beginning of Tape Test

ETT

C, U

SKS 01101X

End of Tape Test

WTD

C, U, CC

EOM 002X5X

Write Tape Decimal

WTB

C, U, CC

EOM 003X5X

Write Tape Binary

EFT

C, U, CC

EOM 003X7X

Erase Forward Tape

ERT

C, U, CC

EOM 007X7X

Erase Reverse Tape

RTD

C, U, CC

EOM 002X1X

Read Tape Decimal

RTB

C, U, CC

EOM 003X1X

Read Tape Binary

SFD

C, U, CC

EOM 002X3X

Scan Forward Decimal

SFB

C, U, CC

EOM 003X3X

Scan Forward Binary

SRD

C, U, CC

EOM 006X3X

Scan Reverse Decimal

SRB

C, U, CC

EOM 007X3X

Scan Reverse Binary

REW

C, U, CC

EOM 01401X

Rewind

RTS

C

EOM 014000

Convert Read to Scan

MAGNETIC TAPE (41.7KC and 96KC only), U=O, 1, ••• , 7 (META-SYMBOL only)
DT2

C, U

SKS 01621X

Density Test (200 BPI)

DT5

C, U

SKS 01661X

Density Test (500 BPI)

DT8

C, U

SKS 01721X

Density Test (800 BPI)

TFT

C

SKS 013610

Tape File Test

TGT

C

SKS 012610

Tape Gap Test

SRR

C

EOM 013610

Skip Remainder of Record

PRINTER, U=l,2 (These mnemonics appear in META-SYMBOL only.)
PLP

C, U, CC

EOM 002X6X

Pri nt Li ne Pri nter

PSC

C, U, CC

EOM 01X46X

Printer Skip to Channel

PSP

C, U, CC

EOM 01X66X

Printer Up Space

EPT

C, U

SKS 01406X

End of Page Test

PFT

C, U

SKS 01l06X

Printer Fault Test

POL

C, U

EOM 01206X

Printer Off-I ine

PRT

C, U

SKS 01206X

Printer Ready Test

83

APPENDIX H. INPUT/OUTPUT - CHANNEL OPERATIONS (SDS 925/930/9300)
The initiation of an I/O channel operation consists of alerting the channel (generally with a device EOM),
executing an interlace control EOM, and issuing (via POT) an interlace (I/O) control word (IOCW). An
IOCW can accommodate a 14-bit address and a 10-bit word count. Whenever the count exceeds 10 bits or
the address is 15 bits (930/9300 only) the extra high-order bits are required in the EOM. To simplify the programming of input/output, special I/O command PROCs have been incorporated in the standard META-SYMBOL
system PROCs.
1.

The use of these PROCs is described below.

Load Channel with Remote Command
The mnemonic LCH (Load Channel) is written at the point of execution. Its operand field
specifies the location of a remote I/O command. The valid (remote) I/O commands are:
lORD

Input/Output Record and Disconnect

10RP

Input/Output Record and Proceed

10SD

Input/Output until Signal and Disconnect

10SP

Input/Output until Signal and Proceed

IOCT

Input/Output under Count and Terminate
(Non-terminal-function interlace operation)

EXAMPLE:
Source Code
LCH

ALPHA

lORD

Generated Code (expressed symbol ically)

ALPHA

[*] ADDR, COUNT, ICD

ALPHA

EXU

ALPHA

POT

ALPHA + 1

EOM/EOD
IOCW

ADDR,COUNT

The asterisk causes an EOD to be generated instead of an EOM.
ADDR points to the beginning of the buffer area.
COUNT specifies the number of words to be input/output.
ICD is an interrupt control digit (0, 1, 2, or 3).
If ALPHA is tagged, the tag is generated in both the EXU and the POT.

"Overflow" bits for the address and count are automatically inserted into the EOM.
2.

Load Channel with Proximate Command
These mnemonics cause the generation of the entire I/O packet (EOM, POT, IOCW)
and are, therefore, more economical of space in those cases where the programmer
does not desire multiple references to an lORD.

84

The five mnemonics are:
LCRD

Load Channel for I/O Record, Disconnect Mode

LCRP

Load Channel for I/O Record, Proceed Mode

LCSD

Load Channel for I/O until Signal, Disconnect Mode

LCSP

Load Channel for I/O until Signal, Proceed Mode

LCCT

Load Channe I for I/O under Count, Term i nate Mode

These mnemonics are written at the point of execution.
those of the remote I/O commands (e.g., lORD).

Their operand fields are identical to

The assembler generates an EOM-POT

combination and inserts the 10CW in the literal table. The extra high-order address and count
bits are inserted into the EOM by the assembler.

Note that for 930 or 9300 target machines

it is possible for a relocatable buffer area to be loaded such that it can be referenced only by
a 15-bit address.

In this case, the separation of the EOM from the IOCW precludes the possi-

bility of the loader inserting the high-order address bit into the EOM.

The assembler flags such

potential difficulties with an 'R'.
EXAMPLE:
Generated Code (expressed symbolically)

Source Code
LCRD

[*]

EOM

ADDR,COUNT,ICD

POT

LTE

LTE

10CW

The symbol LTE is used to denote a I iteral table entry.
3.

"Hand-Coded" I/O
The Interlace Control EOM may always be written by specifying the EOM's address portion
as an octal number in the operand field.

However, the programmer must then know at what

location the I/O block begins, since the EOM contains the high order address and count bits.
Naturally, this is not always possible, especially in the case of relocatable programs.

In

fact, for relocatable buffer areas (on a 930 or 9300), the programmer should always prefer the
first method since only then does the Loader know where the EOM is relative to the IOCW.

The system provides the following mnemonics to simplify the coding of the Interlace Control
EOM.

Their operand fields are identical in format to those of the IOXX and LCXX Command

PROCs.

85

ICRD

I/O Record and Disconnect EOM

ICRP

I/O Record and Proceed EOM

ICSD

I/O until Signal and Disconnect EOM

ICSP

I/O until Signal and Proceed EOM

ICCT

I/O under Count and Terminate EOM

Detecting one of these mnemonics, the assembler generates the appropriate EOM (or EOD),
inserting the terminal function bits and the high order address and count bits.

The restric-

tion on the use of relocatable buffer areas which applies to the LCXX PROCs also applies
to these.

EXAMPLE:
ICRD

ALPHA

[*]

ADDR, COUNT, ICD

POT

ALPHA

IOCW

ADDR, COUNT

86

APPENDIX I. META-SYMBOL/FORTRAN INTERFACE
(SDS 9300 COMPUTERS ONl YJ
As indicated in the introduction, the merits of any programming language depend strongly upon its application.
Wh i Ie some appl ications demand a mathematica lIy oriented language, such as FORTRAN, others requi re the
close contact with the machine that the programmer can gain only through "machine language II programming.

Frequently, the optimal solution to the programming problem consists of "marrying" two or more languages, and
coding different sections of the program in the languages most appropriate. However, this cannot be accomplished without providing for a common interface, and the burden for the interface is generally placed upon
the language having the least restrictive syntax.

Such interface allows the execution of META-SYMBOL programs in con junction with programs written in the
SOS FORTRAN IV language.

MET A-SYMBOL recognizes the following directives. Note that, as META-SYMBOL directives, they are subject to some restrictions (noted below) not present for the analogous FORTRAN statements.

l.

LOGICAL vl, v2, ••• , vn

2.

INTEGER vl, v2, ••• , vn

3.

REAL vl, v2, • •• , vn

4.

COMPLEXvl, v2, ••• , vn

5.

OOUBLEPRECISION vl, v2, ••• , vn

(Note that OOUBLEPRECISION is one word.)
Each vn represents a variable name. The assembler ignores redundant declarations;
it flags conflicting declarations as errors.
6.

COMMON Vl, ••• , Vn/B l/Vll, ••• , Vln ••• /Bm/Vml, ••• , Vmn
Each V represents a variable name or an array name followed by its dimensions
in parentheses: e.g.,

II

A{3, 4, 5)" •

Each B represents a COMMON block name. If no block name appears, META-SYMBOL
assumes blank common. At the beginning of each COMMON statement, it assumes
blank common.
Since COMMON statements are cumu lative over the program, no variab Ie may meaningfully appear in COMMON twice. The assembler recognizes this error.
No symbol that can be used in the operation field of a MET A-SYMBOL program may
appear as a COMMON block name.

87

Dimension information, legal in type statements in FORTRAN IV, may not be used in
MET A-SYMBOL type directives. Such dimensions must appear in a COMMON statement. For example,
REAL

A(9)

COMMON A
is illegal in META-SYMBOl. The correct form is
REAL

A

COMMON A(9)

It is mandatory that each variable used in a COMMON statement be previously defined in a type directive (REAL, etc.).
COMMON allocation is in SDS mode (integer variables are allocated one word; real,
two words; etc.).
Generalized array bounds as permitted in SDS Extended FORTRAN IV must be translated either to an integer quantity or to an expression resulting in the correct integer
quantity at assembly time. For example, FORTRAN allows
REAL

A

COMMON A(-3: 3)
MET A-SYMBOL must have
REAL

A

COMMON A(E)
where E has the value 7 at assembly time.
No continuation is permitted in type directives; however, any type directive may be
used more than once.

SYNTAX
Columns 1 to 6 must be blank. One or more blanks must appear between the directive name and the list. No
blanks may appear within words or within variable lists. (Blank common is indicated by two successive slashes.)
SEMANTICS
1.

Common variables are assigned relative locations within the appropriate block
in order of appearance in the program. The assembler computes the size of
each named COMMON block by summing the sizes of the variables named.

88

2.

The type directives (LOGICAL, INTEGER, etc.) specify to the assembler the
size of each COMMON variable and array element. The assembler keeps a
table of the space required for each type.

It is essential in a program in which a named COMMON variable is referred to that the COMMON and type
directives give the assembler enough information to compute the size of the block and the relative location of
each variable referred to. It is mandatory to list all variables named in the COMMON block, to give the
dimensions of all'arrays in COMMON directives, and to list each variable in a type directive.

89

APPENDIX J. COMPATIBILITY WITH SDS SYMBOL 4 AND SYMBOL 8
(900 SERIES ONLY)
In 1963, SDS announced two assemblers for the 900 Series Computers: SYMBOL 4 and SYMBOL 8. Patterned
after other familiar assemblers, SYMBOL 4 proved popular with users; literals and macros were added in
SYMBOL 8.
It can be seen from this manual that SYMBOL and META-SYMBOL offer still an additional level of capability

to the SYMBOL 4/SYMBOL 8 user. In some cases, however, the additional generality of the new assemblers
has created some incompatibilities with respect to the 1963 assemblers. To assist users in converting to the new
assemblers, these incompatibilities have been resolved in all but exceptional cases.
Compatibility has been provided in two ways:
SYMBOL
The assembler accepts programs written either in the SYMBOL or in the SYMBOL 4 language.
MET A-SYM BO L
The assembler consists of an Encoder and a Translator. The Translator accepts only encoded META-SYMBOL
language. The conversion from SYMBOL 4/8 to META-SYMBOL is accomp lished by the Encoder, which has a
special Compatibility Mode. Since the Translator offers optional recovery of the source language, SYMBOL 4/8
programs can be easi I y converted, if desired, to META-SYMBOL source language.
The compatibility features are described in greater detail below:
A.

Label Field
Both assemblers allow symbols to begin with a numeric character.
tain special characters.

B.

Symbols are not allowed to con-

The symbol must begin in column 1.

Operation Field
1.

Instruction mnemonics:
The following EOM/SKS mnemonics are included in addition to those

I isted in Appendix B and Appendix C.

90

TOPW/TOPY
DISW/DISY
PTLW/PTLY
PPTW/PPTY
RPTWjRPTY
TYPW/TYPY
RKBW/RKBY
RCBWjRCBY
RCDW/RCDY
RTDWjRTDY
RTBW/RTBY
WTDW/'NTDY

WTBW/'NTBY
ETW

SFBW
SRBW
REWW
Programmed operator mnemonics are not recognized and are treated as indicated in
Appendix A. *
Directives:
Ignored*

Recognized
ORG

FORT

BORG

BLK

BSS

L1L

OCT

TCD

DEC

LIST

BCI

UNLIST

BaaL

**REL

**VFD

**BES

**MACRO

**IDEN
**LOAD
**LTAB
**TITLE
**DETAIL

*Only when a 900 Series target machine is specified.
**I1legal in SYMBOL

91

a.

The FORTRAN interface (FORT, BLK) is solved by the use of
external definitions.

3.

b.

All programs are relocatable unless preceded by AORG.

c.

Bootstrap loaders are available separately.

d.

List suppression may be spec ified when the assembler is loaded.

Indirect Addressing:
Indirect addressing is a Ilowed to be indicated by an asterisk following an instruction
mnemonic.

C.

Operand Field

1.

Location counter:
An asterisk is allowed to denote the location counter. In cases where an expression
which includes the symbol * is to be indirectly addressed, the syntax of SYMBOL and
of SYMBOL 4 cannot be mixed. Thus, either

or

LDA*

*+5

LDA

*$+5

is permissible, but
LDA

**+5

is not.
2.

Octal/Decimal Interpretation:
Octal jnterpretation of the operand field is forced in the case of SYMBOL
and META-SYMBOL for the operations EOM, SKS, RCH and OPD. Decimal interpretation is never forced. Therefore, the instruction
RSH

010

would cause a right shift of 8 places.
3.

Literals:
a.

Leading 0 is converted to zero

b.

Leading H is converted to surrounding quotes.

c.

Internal Band E (binary and decimal scale factors) are converted to
the operator notation using */ and *+, respectively.

92

4.

The VFD line is translated to a list which is then handled by a system PROC.

5.

Macros:
MACROs are translated to PROCs.

6.

Spaces:
Spaces are converted to 060 whenever they occur in a TEXT line or within a
literal character string. The BCI directive is translated to BCD, and the word
count is multiplied by four in order to agree with the BCD syntax.

7.

"Fill" operand:
Whenever the expression

8.

** occurs as an operand, a diagnostic flag will result.

Breakpoint Test (BPT)
Whenever multiple breakpoints are tested with the BPT pseudo operation, incorrect assembly will result.

This is because the BPT mn of SYMBOL 4/8 must be

written BPT m, n for SYMBOL/META-SYMBOL.

93

APPENDIX K. SDS STANDARD BINARY LANGUAGE

The following description specifies a standard binary language for the SDS 900 Series and 9300 Computers. The
intention has been that this language be both computer-independent and medium-independent. Thus, there is
provision for handling Programmed Operator definitions and references even though the 9300 does not have this
hardware feature; similarly, there is a provision for relocation relative to blank COMMON, even though this
requirement is not present in SDS 900 Series FORTRAN II.
In the following, a file is the total binary output from the assembly/compilation of one program or subprogram.
A fi Ie is both a physical and a logical entity since it can be subdivided physically into unit records and logically
into information blocks. While a unit record (in the case of cards) may contain more than one record, a logical
record may not overflow from one unit record to another.
1.

Type (T)

CO NTRO L WORD - 1st word in each type of record

~
~

Mode
(binary)

Word Count (C)

Field

Folded Checksum (FC)

contents

101

o

89

2 3 4

23

11 12

bit number

T

RECORD TYPE

000

Data Record (text)

001

External References & Definitions, Block & Program Lengths

010

Programmed Operator References and Definitions

011

End Record (Program or Subroutine end)

100 thru 111

Not Assigned

C = total number of words in record, including Control Word
Note that the first word contains suffic ient information for handl ing these records by
routines other than the loader (that is, tape or card dupl icate routines.) The format
is also medium-independent, but preserves the MODE indicator positions desirable
for off-I ine card-handl ing.
An exclusive OR checksum is used. If the symbol -- is used to denote exclusive OR,
and W. denotes the i-th word in the record, 1 < i
1

Fe

-

= (W 1'O-11--

< C,

_

(C) 0-11-- (C)12-23

where

C = W2 -- W3 -- ••• -- Wc

94

then

-- 07777

2.

DATA RECORD FORMAT (T=O)

Record
Type (T)

Control
Word

000

o

Load
Address
Word

~

~
~

Mode
(binary)

3~C~30

0
234

Data Word
Modifiers
(M)
~

Word 1

Folded Checksum

101

89

11 12

Load Address
Modifiers (A)

23

Word 2

Load Address (Relative or Absolute)

0

o

Data
Word

1

4 5

8 9

23

Instruction or Constant

o

Word 3
23

Words 3 thru n+2 contain instructions or constants, (where 1~~24)
Load address relocation word (present iff (M) (\l=l)

Load
Relocation

o

23

Blank common relocation word (present iff (M) f"\ 2=2)

Common
Relocation

u

Programmed
Operator
Relocation

Special
I/O
Relocation

Word n+3

Word n+4
23

Programmed operator relocation word (present iff (M).{"\ 4=4)

o

Word n+5

23

Spec ial Input/Output operation rei ocation (present iff (M) f\ 8=8)

o

Word n+6
23

95

Words n+3 thru n+6 are modifier words. Each bit in each of these words corresponds
to a data word (bits 0 thru 23 correspond to words 3 thru n+2, respectively). A bit set
to one (1) indicates that the specified data word required modification by the loader.
There are four (4) types of modification (and hence four possible modifier words) which
are indicated in data records. Presence of a modifier word is indicated by the M (data
word modifier) field in the load address word.
The load address is subiect to modification as indicated by the \I A" field of the load
address word as follows ((A) = 0 means absolute):

(A)f\l=l, current load relocation bias is added to load address
3.

EXTERNAL REFERENCES AND DEFINITIONS, BLOC K AND PROGRAM LENGTHS
(T= 1)

Control
Word

(Inc ludes labeled common, blank common and program. lengths)

Record
Type (T)

~
~

001

0
234

o

Mode
(binary)

4~C~31*

Folded Checksum

Word 1

101

8 9

11 12

23

* From 1 to 10 items per record

Common
or Program
Length
Item

C1

C2

C3

C4

C5

C6

C7

C8

Item
Type

External
Reference
Item

00000

C1
C5

01

o

23

C2

C3
C7

C6

Address
Modifiers (A)**

Item
T~
~

6 7 8 9

1 2

I

Length
Word

Length of Program or Common Block (L)

00
0

I}

1 to 8
char.
LABEL

C4
C8

I
}

Address of Last Reference

Chain
Word

000
1 245

8 9

23

96

Label

External
Definition
Item

~--------~~~~--------~~~~---------~¥7~3--------~~~8~----~IJr
Address
Modifiers (A)**

Item
Type

10

o

Absolute or Relocatable Value

Value
Word

000
8 9

1 2 4 5

Laool

23

External symbolic definitions indude subroutine "identification" as a subset and require
no special treatment of subroutines with multiple names. B = 1 if (L) is program length,
C

= 1 if (L)

is length of a labeled common block.

** See data record, load address word, for interpretation

External
Reference
with
Addend
Item*

l~)

C3

C4

C5

C6

C7

C8

~}

Chain
Word

000

not used
000000000

23

8 9

4 5

2

Label

Address of Last Reference

Address
Modifiers

~

Va I ue of Addend

8 9

0

Control
Word

C2

Item
Type

11

4.

C1

Addend
Word
23

PROGRAMMED OPERATOR REFERENCES AND DEFINITIONS (T=2)
Record
Type (T)

~
~

010

0

o

Mode
(Binary)

4.~C~31**

234.

Folded Checksum

Word 1

101

8 9

11 12

*One of these items for each unique reference; e.g., each of the following
references is represented by a separate item:
A+5, B+5, B+6, C+2, C+5
** From 1 to 10 items per record

97

23

Internal
Programmed
Operator
Item
Type

R

Sequence No.

00

Origin of Programmed Operator Routine

1
1 2

0

7

Programmed
Operator
Reference
Item
T

a

9

23

C1

C2

C3

C4

C5

C6

C7

ca

01
1 2

0

External
Programmed
Operator --<
Definition

7
~1

Not used

0

000000000000000

1
Item
Tvoe
10

Sequence No.

C~ar.

I to 8
MnemOniC

a
C4

C3
C7

C2
C6

C5

o

R

Sequence No.

I}
I

ca

}

1 to a Char.
Mnemonic

Origin of Programmed Operator Routine

R
1

789

1 2

23

R=l iff origin of Programmed Operator Routine is relocatable.
The sequence No. indicates the order in which the definitions or reference occurred
in the source program.
END RECORD (T=3)

5.
Record
Type (1)

Control
Word

Mode
(Binary)

2~C~4

101

0

011

8 9

234

0

11 12

Transfer Word
Modifiers (M)*

Length of
Program

Word 2

0000

000
0

23

l+Maxirnum Value of Location Counter

0
0
Transfer
Word

Word 1

Folded Checksum

4 5

I

8 9
Transfer Address

"BRU"
000001

23

23

89

Word 3
23

This may be followed by modifier words as described in Section 2.
*See data record description for interpretation

98

,
;

505



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Producer                        : Adobe Acrobat 9.13 Paper Capture Plug-in
Modify Date                     : 2009:09:17 08:50:57-07:00
Create Date                     : 2009:09:17 08:50:57-07:00
Metadata Date                   : 2009:09:17 08:50:57-07:00
Format                          : application/pdf
Document ID                     : uuid:3f87020e-a865-4cc6-a23d-f6bd838c1878
Instance ID                     : uuid:f4f3aa13-576f-4c6e-9cce-976a9957046e
Page Layout                     : SinglePage
Page Mode                       : UseOutlines
Page Count                      : 106
EXIF Metadata provided by
EXIF.tools

Navigation menu