C28 6263 2_IBM_7080_Processor_Autocoder_Language_Sep64 2 IBM 7080 Processor Autocoder Language Sep64

C28-6263-2_IBM_7080_Processor_Autocoder_Language_Sep64 C28-6263-2_IBM_7080_Processor_Autocoder_Language_Sep64

User Manual: C28-6263-2_IBM_7080_Processor_Autocoder_Language_Sep64

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

DownloadC28-6263-2_IBM_7080_Processor_Autocoder_Language_Sep64 C28-6263-2 IBM 7080 Processor Autocoder Language Sep64
Open PDF In BrowserView PDF
File Number 7080-22
Form C28-6263-2

Systems Reference Library

IBM 7080 Processor: Autocoder Language

This publication contains specifications for using
Autocoder, the basic symbolic language of the 7080
Processor. The types of statements that constitute
the Autocoder language include area definitions,
switch definitions, one-for-one instructions, macroinstructions, address constants, and instructions to
the Processor. All statement types, except macroinstructions, are described in detail. A general
discussion of macro-instructions is included. However, the detailed specifications for using them are
provided in the publication 7080 Processor:
General Purpose Macro-Instructions, Form
C28-6356.
The Introduction to this publication reviews some
basic aspects of programming, such as symbolic
programming sys·tems and the IBM 7080 programming systems. Other features of the manual include
descriptions of the following: The organization of
the object program deck, the format of the object
program card, and the standard and optional documentation produced during an Autocoder program
assembly. An extensive sample assembly is also
included to illustrate what the 7080 Processor produces. The assembly contains many examples of
correct and incorrect langu~ge usage.

MINOR REVISION (September 1964)
This publication, Form C28-6263-2, is a minor revision of the
previous edition, Form C28-6263.,;;1, and incorporates the contents
of the Technical Newsletter N28-1l72. This revision does not
obsolete either the previous edition or the Technical Newsletter.

Copies of this and other IBM publications can be obtained through IBM Branch Offices.
Address comments concerning the contents of this publication to:
IBM Corporation, Programming Systems Publications, Dept. 637, Neighborhood Road, Kingston, N. Y. 124

@

1962 by International Business Machines Corporation

CONTENTS

Page
5
5
6
6
7
7
7
8

INTRODUCTION • . • . . . .
Basic Aspects of Programming
Symbolic Programming Systems
The Symbolic Language
The Processor . . . . . .
The Basic 7080 Programming System.
The 7080 Processor . . . . . . .
Autocoder Language • . . . . • .
Input/Output Control Systems for Use with
Autocoder Programs . . . . . . • . .
Higher Languages of the 7080 Processor

10
10

STANDARD FORMAT OF AUTOCODER
STATEMENTS . • . .
Program Identification
Pglin . .
Tag . . .
Operation .
Num
Operand.
Comments.
Flag . • .

11
11
11
12
12
12
12
12
13

Page
Tag Operands . .
Literal Operands
Types of Lozenges .
Omitted Operands
Importance of Properly Defined Data Fields .
Examples of Macro-Instructions and Their Use

38
39
39
39
39
40

ADDRESS CONSTANTS.
ADCON Address Constant
ACON4 Address Constant
ACON5 Address Constant
ACON6 Address Constant
Address Constant Literal

42
43
43
43
44
44

INSTRUCTIONS TO THE PROCESSOR
Instructions to the Processor-Standard Assembly
Procedures . . . . . . .
Location Assignment -- LASN
Special Assignment -- SASN .
Relative Assignment -- RASN
Assignment of Subroutines within MacroInstructions -- SUBRO . . . . . . .
Assignment of Library Subroutines -SUBOR . . . . . . . . . . . .
Assignment of Literals -- LITOR. . .
Transfer Card -- TCD . . . • . . .
Instructions to the Processor-Object Program
Content . . . . . . . .
Include Subroutine -- INC L. . . . .
Translation -- TRANS. . . . . . .
Source Program Language -- MODE
Coding Generated in 7080 Mode . . . . .
Instructions to the Processor-Program Listing
Skip to New Page -- EJECT . . . . . .
Title for Routine or Comment -- TITLE .
Instructions to the Processor-Multiple
Literal Tables • . • . . . .
Literal Start -- LITST. . . . .
Literal End -- LITND . . . . .
Restrictions on Multiple Literals
Flag Characters and Their Meaning

46
46
46
48
48
49
49
50
50

AREA DEFINITIONS
Definition of a Record -- RCD
Definition of a Constant Factor -- CON •
Definition of a Floating- Point
Number -- FPN . • • . . . . • . .
Definition of a Report Format -- RPT
Definition of a Continuous Portion of
Memory-NAME

14
14
17

SWITCH DEFINITIONS
Data Switches . . . •
Character Code -- CHRCD
Bit Code -- BITCD. . . .
Program Switches . • • . .
Switch Set to Transfer -- SWT
Switch Set to No Operation -- SWN. •
Console Switches. . . . . . . .
Alteration Switches -- AL TSW

26
26
27
27
28
29
29
29
29

ONE-FOR-ONE INSTRUCTIONS
One-for-One Instruction Format
Basic Operands
Tag
Literal. . •
Actual . . .
Location Counter
Blank • . . . .
Additions to Basic Operands .
Character Adjustment
Operand Modifier . • . .
Indirect Address
Multiple Additions to a Basic Operand

31
31
31
31
31
33
34
34
34
34
35
35
35

ASSEMBLY OUTPUT . • . . . .
Object Program Deck . • . . . .
Standard Assembly Documentation
Program Listing • . •
Optional Documentation
Operator's Notebook.
Symbolic Analyzer. •
Details of the Program Listing

59
59
59
59
60
60
60
60

APPENDIX

...•

62

SAMPLE ASSEMBLY

64

GENERAL PURPOSE MACRO-INSTRUCTIONS
General Purpose,Macro-Header Format
Types of Macro-Header Operands . . . • . • .

37
38
38

GLOSSARY OF TERMS

89

INDEX

90

18
19
23

51
51
52
53
53
54
54
54
55
55
56
56
57

INTRODUCTION

This manual contains detailed specifications for
coding programs using Autocoder, the basic symbolic language of the 7080 Processor. All parts of
the language except macro-instructions are fully
described. A brief introduction to the generalpurpose macro-instructions provided by IBM for
7080 users is provided in this publication; a full
explanation may be found in the publication, 7080
Processor: General Purpose Macro-Instructions,
Form C28-6356. Procedures for writing new
macro-instructions for incorporation into the language are described in the publication, ,7080 Proce ssor: Preparation of Macro-Instructions, Form
C28-6264.
Just as the Autocoder language described in this
publication is the basic language of the 7080 Processor, so is Autocoder III the basic language of the
predecessor system, the 7058 Processor. The
over-all similarity of the two languages is such that
this manual has been modeled after the manual
describing Autocoder III. The major improvements
that distinguish 7080 Autocoder from Autocoder III
have been fully integrated into the following pages
and may not be apparent, even to long-time users
of Autocoder III. Despite this, no attempt has been
made in the body of the manual to call attention to
the differences; to do so might prove distracting,
particularly to readers without a background in
Autocoder III. However, significant differences
between the two languages have been summarized
in the Appendix for the convenience of experienced
programmers who want a rapid survey of 7080
Autocoder in the light of their knowledge of Autocoder III. But it is expected that every programmer, before writing programs in 7080 Autocoder,
will have become familiar with all sections of this
manual.
The background discussion that follows assumes
that the reader has had little programming experience. Readers already familiar with the IBM 7080
Data Processing System may wish to go directly to
the b,ody of the publication. Further information on
the IBM 7080 may be found in the reference manual,
IBM 7080 Data Processing Syste~ Form
A22-6560-2, and in 7080 Systems Summary, Form
A22-6775. Other publications that may be of
interest to 7080 users are abstracted in the publication, IBM 7080 Bibliography, Form A22-6774.
BASIC ASPECTS OF PROGRAMMING
This explanation is written for the inexperienced
programmer. The material is not detailed or
comprehensive in scope. It is an outline of basic

program requirements, symbolic programming
languages, and the program assembly process.
These concepts are considered within the framework of the IBM 7080 Data Processing and Programming Systems.
A program is written in order to process data in
a specified manner. In commercial data processing,
most of the data is in the form of business records;
e. g., accounts receivable, sales records, inventories, payrolls, etc. The main function of a program is to process these records as specified, and
these record-processing routines may be considered
the body of the program. They are often called the
main-line routines or the main-line coding. However, the program does not consist solely of these
routines.
Any program must also include routines for
bringing the records to be processed into core
storage, and for taking the processed records out
of storage. The routines which handle this data
movement are called input/output routines. Although
records and programs may be stored on magnetic
tape or punched cards, magnetic tape is generally
used with large-scale data processing systems.
A program must also contain actual storage locations for each instruction, and locations for the
storage area or areas that the records will occupy.
Records are usually grouped in blocks; consequently
an entire block enters storage at one time. Similarly, the processed records are reblocked in storage before being placed on tape. Programs dealing
with blocked records generally reserve space for
separate input and output areas, the areas being
equal to the size of the record block. In such a
case, a work area equal to the size of one record
must also be reserved, so that each record can be
taken from the input area, moved to the work area
for processing, and then placed in the output area.
The processing instructions can then be addressed
to the work area, and do not have to be modified.
If the records were to be processed in the input area,
the instructions would have to be modified to operate
on each record in turn. Consequently, most programs must reserve space for input, output, and
work areas.
A program must also provide routines for
detecting and handling error conditions resulting
from input/output operations. Such routines may
reread or rewrite the records in error, place the
invalid records on a special tape, attempt to
determine whether or not the error is in the tape
itself, etc. Error detection routines may include
the procedure to be executed when an error condition
prevents the continuation of processing.
Introduction

5

Finally, there are supplementary procedures
which must be performed by all programs but which
are not directly connected with the main-line processing. They fall into no specific category,
although they might be described as procedures
which implement the operation of the program.
Those which are executed before any main-line
processing begins are called housekeeping routines.
Those which are executed after all main-line processing is completed are called end-of-job routines.
Housekeeping operations include such procedures
as readying input/output units, setting ASUs,
checking and writing tape identifications, and bringing the first block of records into storage. End-ofjob routines include such procedures as moving the
last block of records from storage to tape, writing
tape identifications, rewinding tapes, and writing
messages.
To sum up, a program must incorporate at
least the following procedures:
1. Data processing
2. Input/output
3. Storage assignment
4. Error detection and correction
5. Housekeeping and end-of-job
SYMBOLIC PROGRAMMING SYSTEMS
A program may be written in the actual (i. e. ,
machine) language of the computer on which it will
run, or it may be written in a symbolic language.
If it is written in machine language, it can be
executed by the computer directly; but if it is
written in symbolic language, it must first be
translated into machine language before it can be
executed. The length and complexity of programs
today makes programming in machine language
extremely difficult, and results in programs which
are increasingly liable to error. However, powerful symbolic programming systems have been
developed to relieve the_programmer of the many
burdens involved in machine-language programming.
A symbolic programming system consists of a
symbolic language and a processor. The language
provides a method of representing program functions as a series of meaningful statements rather
than as a collection of alphameric codes and actual
storage locations. The processor converts the
symbolic-language program into a machinelanguage program, assigns storage locations to the
program, and performs various other functions.
The symbolic-language program is generally called
the source program; the machine-language program
is called the object program. In other words, the
source program is the input to the processor, and
the object program is the output of the processor.
6

Thus, processing the data for which a program
is written is the second of two data processing
applications. The first application is the processing
or assembly of the source program itself, with the
object program as output. The second application
is the processing of the actual data by the object
program; the output of the second is the solution of
the problem for which the program was written.
Once the object program is produced, it can be
used in subsequent data processing applications
until it is obsolete, or until it is modified to such
an extent that a reassembly is advisable.
Since the programs written in symbolic language
need not make location assignments, the order of
the statements that compose the program may be
changed and the program reassembled without
modification. For the same reason, it is easy to
insert or delete statements in a symbolic-language
program. When it is reassembled, a new object
program is produced.
The Symbolic Language
Instructions form a major portion of the statements
in a symbolic-language program just as they do in
a machine-language program. A symbolic one-forone instruction contains a mnemonic code representing a machine operation and a symbolic address
representing the storage location of data or an
instruction. Such instructions are called one-forone because the processor replaces each one with
one machine instruction. An important development
in symbolic programming is the macro-instruction,
which is a source-program statement that is
eventually replaced by a sequence of machine
instructions. Essentially, it is a request for
several one-for-one instructions, each of which is
subsequently replaced by one machine instruction.
A macro-instruction also contains a mnemonic
code, but the code does not represent any one
machine operation. A macro-instruction also contains a mnemonic code, but the code does not represent anyone machine operation. A macro-instruction usually contains more than one symbolic
address; each address represents the storage location of data or of an instruction.
Symbolic languages enable the user to write program statements describing the storage areas that
will be occupied by program data. On the basis of
the information the processor obtains from these
statements, it assigns actual storage locations to
the data areas. It also uses this information when
generating one-for-one instructions to replace
macro-instructions that reference these areas. If
the data is to be supplied to the area by input
records, the statement indicates the size of the
area and the type of data that will occupy it. If it is

not, the statement itself supplies the data, which
is placed in storage as a constant.
The programmer is also able to create a
symbolic address for each data area or instruction.
The symbolic address represents the actual storage
location to be assigned by the processor, and it
provides the means of referencing an area or an
instruction. This is done by using the symbolic
address as the operand of the instruction that
makes the reference. Usually, it is desirable to
create symbolic addresses that describe the areas
or instructions to which they are assigned. For
instance, an address such as "master file" might
be assigned to a data area which will be filled by
records from the master tape; an address such as
"start" might be assigned to the first instruction
to be executed; etc. In converting the source
program to machine language, the processor
replaces each symbolic address with an actual
storage location, just as it replaces each mnemonic
code with an actual operation code.
The Processor
The processor of a programming system is a
machine-language program that converts a
symbolic-language program into machine
language. The process of converting is called
assembling the program. In other words, a processor assembles a source program into its objectprogram form. During the assembly, the processor analyzes the source program, generates
one-for-one instructions to replace each macroinstruction it encounters, inserts any subroutines
requested by the program, substitutes machinelanguage instructions for all one-for-one instructions, and assigns storage locations to the object
program.
The processor contains a library of macroinstructions and subroutines. Every macroinstruction contains a set of incomplete one-forone instructions. When a source program
macro-instruction is encountered during assembly,
the processor determines which one-for-one
instructions are appropriate, completes those
which it selects, and inserts them into the object
program. Selection and completion of the appropriate instructions are done on the basis of information from the program analysis made by the
processor. The same macro-instruction may be
used many times in a program, but the one-for-one
instructions generated from it will not necessarily
be the same each time. The variation results
from differences in program requirements or data
format.

Library subroutines differ substantially from
macro-instructions. A subroutine is a fixed set of
instructions. These may be one-for-one instructions or combination!!! of one-for-one instructions
and macro-instructions. When a request for a
subroutine is encountered during assembly, the
set of instructions is taken from the library and
inserted into the program. The instructions will
not vary from program to program unless the
subroutine itself contains macro-instructions. The
programmer can write macro-instructions and
subroutines and add them to the processor library.
The object program is not the only output of the
processor. A sequential listing of the source
program is also produced. Each program step in
the listing is assigned an index number for reference purposes. The one-for-one instructions in
the source program are shown with the corresponding machine-language instructions and the storage
locations assigned to them. The source-program
macro-instructions are followed by the one-for-one
instructions generated from them, the machinelanguage instructions corresponding to the one-forone instructions, and the storage locations assigned
to the instructions. Location assignments are also
shown for all record areas and subroutines.
THE BASIC 7080 PROGRAMMING SYSTEM
A programming system has been defined as a
symbolic language and a processor. The basic
programming system for the 7080 Data Processing
System is composed of Autocoder language and the
7080 Processor.
The 7080 Processor
The 7080 Processor, hereafter called "the Processor," is a machine-language program that
assembles programs written in Autocoder for the
IBM 7080. The Processor operates on the 7080
when it is in 7080 mode. The Processor itself is
so large that it must operate through a number of
interrelated sections, or phases. Each phase is a
program which performs one or more of the
various assembly functions. The phase may be
classified as belonging to one of the two portions
of the Processor: the compiler and the assembler.
The compiler phases analyze the source program
in detail, generate Autocoder statements from
higher-language statements, and generate one-forone instructions from macro-instructions. The
assembler phases assign storage locations, replace
one-for-one instructions with machine-language
instructions, and create the Processor output.

Introduction

7

The output of the Processor consists of the
object program in card form, and the program
listing with related messages. Both are produced
on tape. The listing and messages are the minimum assembly documentation. Additional documentation consisting of the Operator's Notebook
and/or the Symbolic Analyzer can be requested.
The Operator's Notebook lists various types of
information about the program, including the fol~
lowing:
1. Programmed halts and halt loops
2. Titles of, and comments on, the various
portions of the program
3. A list of special 7080 program statements
4. Specific location assignments requested by
the program
5. Program switches set up by the Processor
at the request of the program
The Operator's Notebook is useful to the programmer in debugging the object program, and to
the console operator during the object-program
run.
The Symbolic Analyzer is an alphabetical list of
the symbolic addresses used in the program. Each
symbolic address is followed by a list of the
instructions which reference it. All may be easily
located in the listing because their index numbers
are shown. Referencing a field or an instruction
(as used in this publication) means specifying the
data to be operated on or specifying an instruction
to be executed. For example, an Autocoder
statement that calls for data movement to a work
area references the data and the work area; a
statement that causes the program to transfer to
an instruction references that instruction.
The Processor library contains a set of general
purpose macro-instructions which cover most
commercial data processing functions. Programmers may write their own macro-instructions and
subroutines and insert them in the library. However, the preparation of macro-instructions is a
complicated procedure, requiring a thorough
knowledge of Autocoder and the Processor.
Autocoder Language
Autocoder is the basic symbolic language for
programs' to be assembled by the Processor.
Statements written in the higher languages may be
inserted in Autocoder programs. During the
assembly, certain phases of the Processor translate these statements into a series of Autocoder
statements. Program steps written in Autocoder
language are called statements rather than instructions, because the language contains more than a
set of processing instructions. There are six
types of Autocoder statements:
8

1.
2.
3.
4.
5.
6.

Area definitions
Switch definitions
One-for-one instructions
Macro-instructions
Address constants
Instructions to the Processor

AREA DEFINITIONS: Area definitions reserve
storage space for data supplied either by records
or by the programmer. If the space will be
occupied by data from records, the area definitions
also describe the nature of the data. In all other
cases, the area definitions specify the constant
data to be placed in storage. The storage space
reserved by each area definition is generally called
a data field. Area definitions may also be used to
indicate that a series of adjacent data fields are to
be treated as the interior portions of a single unit.
In defining input/output areas, it is usually
necessary to define a data field for a block of
records without making any attempt to distinguish
one record from another or to identify portions of
a record. However, in defining the work area, the
opposite is true. Since an individual record will be
moved into the work area, it is usually defined as
a series of data fields which correspond to the
various portions of the record.
Suppose that each record in a file contains the
name and yearly salary of an employee, and that
these records are on tape in blocks of ten. Processing consists of updating the yearly salary. The
input (and the output) area is defined as one data
field, although it will contain ten records. However, the work area to which each record is moved
for processing is defined as two data fields: one
for the employee's name, and one for the
employee's yearly salary. Only the salary field
is referenced by processing instructions, but the
entire record is referenced as a unit when it is
moved to or from the work area. Consequently,
the work area must actually be defined as a data
field conSisting of two interior fields.
SWITCH DEFINITIONS: Switch definitions describe
three types of switches: data switches, program
switches, and console switches. All three may be
used to control the path of the program; e. g., to
determine whether or not all the routines in the
program will be executed, to determine the sequence
in which routines will be executed, etc.
Data Switch: A data switch is a data field in which
alphameric codes are placed. The definition of the
switch allows a meaning to be associated with each
code. When a data switch is defined as a portion
of a record area, the records supply the codes for
the switch.

When a data switch is defined independently of a
record area, the program itself supplies the codes.
Referring again to the employee records used
as an example in the section on area definitions,
suppose that each record consists of three fields:
name, yearly salary, and number of exemptions of
the employee. The work area is defined by area
definitions for the name and yearly salary fields,
and a switch definition for the exemption field. In
this case, the codes in the data switch would be
numerical characters. The manner in which each
record is processed depends on the number of
exemptions; the program therefore contains a
number of processing routines. As each record
is placed in the work area, the data switch becomes
the character contained in the exemption field of
the records. The program tests the switch to
determine what code is present, and then transfers
to the processing routine appropriate for that code.
Program Switch: A program switch is an instruction that causes the program either to continue
sequentially or to transfer. When a program
switch is ON, the program transfers to an out-ofline instruction. When the switch is OFF, the
program executes the next in-line instruction.
Suppose that it is desired to type a message if a
certain error condition is detected. The program
switch is defined so that when it is OFF, the program proceeds to the next instruction; and when it
is ON, the program transfers to the messagewriting routine. Initially, the switch is set OFF.
As long as it remains OFF, the program continues
through the switch to the following instruction. If
the error-detection routine encounters the error
condition, it sets the switch ON. Then, when the
program reaches the switch, it transfers to the
message-writing routine.
Console Switch: A console switch is one of the six
alteration switches on the console. They are
numbered 0911-0916. These switches must be set
manually by the console operator. Console
switches are useful when it is desired to execute a
routine only for certain object runs. For example,
a program that is run each week may include a
routine that should be executed only at the end of
the month. If a console switch is defined, the program may test the switch and transfer to the endof-month routine when the switch is ON. The
console operator must, of course, set the switch
ON prior to each end-of-month run.
ONE-FOR-ONE INSTRUCTIONS: One-for-one
instructions are the symbolic equivalents of
machine instructions. Coding any :portion of a
program in one-for-one instructions means much

more hand-coding f<;>r the programmer than coding
the same portion in macro-instructions. This also
increases the possibility of error. One-for-one
instructions should be used only when it is inadvisable to use macro-instructions.
MACRO-INSTRUCTIONS: A macro-instruction is a
powerful programming device. Essentially, it is a
request for those one-for-one instructions that will
accomplish the function stated by the macro-instruction. These instructions are selected to suit the
characteristics of the data fields and/or the other
hand-coded instructions referenced by the macroinstruction. The field characteristics are obtained
from the field definition analysis made by the Processor. Whenever a choice exists among the onefor-one instructions to be generated, the Processor
selects the most efficient coding.
An illustration of macro-instruction scope is:
The basic coding generated from the ADDX macroinstruction adds the contents of two numeric fields
and stores the result in a field designated as the
result field. But, if the result contains more
decimal positions than the number specified in the
result field definition, the generated coding includes
instructions either to round or to truncate the
excess positions before the result is stored. The
choice depends on which process the programmer
specifies in the macro-instruction. Also, if the
result contains more integer positions than the
number specified in the result field definition, the
generated coding includes instructions to truncate
the excess high-order positions before the result
is stored. However, the programmer may request
an option which generates instructions to do the
following: truncate the excess positions if they
contain zeros and store the result; transfer to a
routine designated by the programmer, if the excess
positions do not contain zeros. This entire procedure, which obviously involves many one-for-one
instructions, is generated from one macro-instruction.

ADDRESS CONSTANTS:- An address constant contains the symbolic address of a data field or an
instruction. During the program assembly, a constant is created from the actual location assigned
to the field or instruction. Address constants are
used to initialize an instruction. Initialization is
the process of supplying a reference to an instruction that lacks one, or replaCing the reference made
by an instruction. An instruction makes a reference
by designating the symbolic address of a data field
of another instruction. The symbolic address
designated by an address constant is used to
initialize the instruction.
Introduction

9

Suppose that an input area contains a block of
records, each of which must be moved from the
area in succession. The input area is given a
symbolic address so that the area can be referenced
by the instruction that moves the records. Initially,
the instruction has as its address portion the symbolic address of the area, thus referencing the first
record in the area. However, the address portion
of the ins~ruction must be modified before it can
reference successive records. The modification is
generally an increment equal to the size of one
record. Eventually, the input area is emptied, and
a new block of records is placed in it; but the
modified instruction no longer references the first
record. At this point it is necessary to initialize
the instruction (i. e., return the instruction to its
original form) by means of an address constant.
Assume that the address constant has been coded
and that it consists of the symbolic address of the
input area. Now the address constant can be placed
in the address portion of the modified instruction.
Once the instruction is initialized, it references
the first record in the area again.
INSTRUCTIONS TO THE PROCESSOR: Instructions
to the Processor allow the programmer to control
certain aspects of the assembly process and to take
advantage of the special features of the Processor.
The Processor instructions are written as Autocoder statements in the program. When they are
encountered during assembly, the Processor performs the operations they request. Instructions to
the Processor concern the following aspects of the
assembly:
1. The listing of the program
2. Location assignments made by the Processor
3. Coding generated by the Processor
INPUT/OUTPUT CONTROL SYSTEMS FOR USE
WITH AUTOCODER PROGRAMS
Input/Output Control Systems (IOCS) have been
developed for the IBM 7080. IOCS consists of a

10

group of routines that handle all input/output functions. IBM 7080 IOCS routines are made available
to an Autocoder program when IOCS macro-instructions in the Processor library are used in the
program.
Titles, form numbers, and abstracts of available
publications dealing with 7080 IOCS may be found in
the publication, IBM 7080 Bibliography, Form
A22-6774.

HIGHER LANGUAGES OF THE 7080 PROCESSOR
As mentioned earlier, the 7080 Processor accepts
program statements written in several higher
languages. The languages are: Fortran; Report/
File language; Decision language; Arithmetic
language, and Table-Creating language. Various
Processor phases translate each of these statements
into one or more Autocoder statements.
FORTRAN is the name for FORmula TRANslation
language. As the name implies, complex problems
can be stated in the form of mathematical formulas,
using FORTRAN. Both fixed point and floating
point calculations are possible.
Report/File language is a set of statements that
may be used to describe the format and contents of
a report or file. The routine generated from these
statements will create the report or file.
Decision language can be used to request a
logical decision to be made on the basis of a test of
the various conditions supplied in the statement.
Arithmetic language can be used to request that
a series of mathematical computations be performed on the elements supplied in the statement.
Table-Creating language can be used to describe
tables suitable for data-searching, along with the
associated table entries.
Titles, form numbers, and abstracts of publications dealing with the higher languages of the 7080
Processor may be found in, IBM 7080 Bibliography,
Form A22-6774.

STANDARD FORMAT OF AUTOCODER STATEMENTS

Note: Throughout this publication, the field headed
"SEQUENCE (PGLIN)" will be referred to as the
pglin field, the field headed "NAME (TAG)" will be
referred to as the tag field.

Autocoder programs are written on the IBM 70S0
Processor Coding Form, Form X2S-1636-1, shown
in Figure 1. One card is punched for each line of
the coding sheet. The card desigD.ed for 70S0 Autocoder programs is the 70S0 Processor Source
Card, Electro N14106. An Autocoder statement is
formed by filling out the appropriate fields on the
sheet according to the specifications for the type of
statement being written. Some statements may
occupy more than one line. The term "field" applies to the character positions included under each
heading on the program sheet. The position numbers listed with the field headings correspond to the
columns on the card. The lower row of field headings (including "Flag") define the fields for sourceprogram statements. The upper headings list
special fields that are used in th(3 preparation of
user-written macro-instructions.

7080
Program

0

PROGRAM IDENTIFICATION (COLUMNS 75 - SO)
The identification is filled in at the top of the coding
sheet. It should appear in columns 75 - SO of every
card punched for an Autocoder statement.
PGLIN (COLUMNS 1-5)
The sequence of the coding sheets and the statements on the coding sheets is designated by the
five-position entry in these columns. Columns 1
and 2 designate a two-position page number that is
used to determine the sequence of the coding sheets.

PROCESSOR

CODING

or.vocroD

Form X28-1636-1
Printed In U.S.A.

FORM

Pa9"

Punching Instructions

1T I
I I I I I I I i
[

Graphic

[Dote

Programmer

Pooch

[

[

[

[

Identification

Coding on Bock

0

,
I

'5 6

I

I

,

Name
8

(Tog)
1011

Operation

13

15 16

18

Operand

Num
20 21 22 23

2S

I

2728

30

3233

I

I

Comments

35

3738 3940

I

4243

I

45

47 48

I

50

5253

I

55

57 58

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

,I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

L

I
I

I

I

I

I

I

I

I

I

I
I

,
I

I

I
I
I
I

,,I
,
I

I
I

I
I

I

I

I

I

I

I

I

I

I

I

I

I

I

, ,

,

60

I
62163

I

I

I

I

I

I

I

I

I

I

I

,

I

I

165

167

,I I
,, I
, ,I
I
I
I
I
I
I

I

I

I

I

I

I

I

I

,

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

,
I

I

I
I

I

I

I

I
I

I

I

I
I
I

I
I
I
I
I

I
I
I
I

I
I

I
I

,

I
I
I
I

,
I

I

I

I

I

,I
I
,I

I

I

I

I

I

I

I

I

1

I

I

I

I

I

I

I

I

I

r

I

I

I

I

I

I

I
I

I

I

I

I

I

I

I

I

I

I

I
I
I

I

I

I

I

I

I

,

i
I

I

I

,I . ,I

I

,

I
I
I
I

,

i

I
I
I
I
I

I

:

I

I

,

I
I

I

I

I

I

I

,,
,

I

I
I

,
,I

I

I

I

I

I

I

I
I
I

,I

I

I

173 74

I

I
I
I

I

I

I

,
I

I

I

IR a
9

I

I

I

I

'0 F
'I I

I
I
I

I
I

I

I

71

,

,

I

I

Iso I

I
I

I

I

I

169

I

I

I

I

I

I

I

,

I
I

I

I

,

,
,

I

I

I

I

I

,M2 1 M3 , S1 , S2

I

I

I

I

,

175 1 I

I

I

I

I

·1 MI

(Upper Field Designations Apply for Macro Components Only)

Inclusion Test
Sequence
(Pglin)
3
1

af

Cord Form'

I
I

I

I
I
I
I

I
I

I

,I
,I
I
I
I

I
I

I
I

• A standard card fcnw, IBM .Iectro N14106, is available for punching source statements from this cadi,.., form.

~

Figure 1. IBM 7080 Processor Coding Form

Standard Format of Autocoder Statements

11

Any alphameric character may be used in the
entry. Normally, however, special characters are
not used. The IBM 7080 collating sequence, shown
in Figure 2, is used to determine the order of the
pages.
Columns 3 - 5 designate a three-position line
number that is used to determine the sequence of
the statements on the coding sheets. Any alphameric character may be used in these positions,
although special characters are not normally used.
Ordering should be done according to the 7080
collating sequence. It is recommended that column
5 be left blank except when designating the sequence
of insertions.
The back of each sheet may be used for insertions. The insertion page number should be the
page number of the statement that the insertion is
to follow. The insertion line number should be
higher than that of the statement preceding the
insertion, and lower than that of the statement following the insertion. In the case of three-lines
inserted between two statements numbered 03b and
04b (b represents a blank), the insertions might be
numbered 031, 032, and 033; or they might be
numbered 03A, 03B, and 03C.
TAG (COLUMNS 6 - 15)
A tag is the symbolic address that represents the
actual location of a data field or an instruction.
The field is filled in starting in column 6. When an
Autocoder statement references a tag, it refers to
the data field or the instruction at the storage location represented by the tag. During assembly, all
fields and instructions are assigned storage locations, and all references to tags are replaced with
the locations assigned to the tags.
A tag may contain up to ten characters; these
characters may be alphabetic, numerical, and
blanks. A tag may not contain special characters.
If composed of numerical characters only, a tag
must consist of five or more characters. It is
recommended that tags not start with one or more
blanks, because the Processor must left-justify
them, a time-consuming operation. It is also
recommended that pure numerical tags not be used.
It is best to create tags that describe the data
fields or the instructions to which they are assigned.
Tags should not be assigned unless they are referenced by program statements; unnecessary tags
slow the assembly process and produce needless

Blank . tl*& $ * - /

I

%#@

'0 A through I 6 J through R =f S through Z

Figure 2. IBM 7080 Collating Sequence

12

messages. To avoid confusion and possible improper macro generation, it is strongly recommended that no tag begin with either of the following three-letter prefixes: CSF, IBM.
OPERATION (COLUMNS 16 - 20)
The mnemonic code of the Autocoder statement is
placed in the operation field, starting in column 16.
No machine operation code can be used.
NUM (COLUMNS 21 - 22)
The use of the NUM (numerical) field varies
according to the type of Autocoder statement
being written. A one-position entry is placed in
column 22.
OPERAND (COLUMNS 23 - 39)
The use of the operand field varie s according to the
type of Autocoder statement being written. The
field is filled in starting in column 23, and the entry
may be continued into the comments field. Macroinstruction operands may be continued from the
comments field of one line into the operand and
comments fields of succeeding lines of the coding
sheet.
COMMENTS (COLUMNS 40 - 73)
Additional information about an Autocoder statement may be written in the comments field and will
appear in the program listing. Comments are useful for explaining the purpose of program statements. The field can begin before or after column
40. The comments may be continued in the comments field on subsequent lines of the coding sheet;
there is no limitation on the number of comments
continuation lines.
The rules governing comments and comments
continuations vary according to whether or not the
comments accompany a macro-instruction. If they
accompany a macro-instruction, they must be
separated from the operand by a minimum of two
blank spaces, whether the operand termin'ates in
the operand field or continues into the comments
field. The comments continuation lines for macroinstructions may not contain entries in any fields
except the pglin and comments fields.
If the comments do not accompany a macroinstruction, they do not have to be separated from

0 through 9

the operand by blank spaces, and comments continuation lines may contain entries in any columns
except 16 (first position of the operation field) and
21- 22 (numerical field). However, to make the
comments easier to read, it is recommended that
the continuation lines be restricted to entries in the
pglin and comments fields.

FLAG (COLUMN 74)

Characters written in this column are used for
communicating with the Processor. The types of
characters that may be placed in this column (and
an explanation of their meanings) are described in
the section "Instructions to the Processor. "

Standard Format of Autocoder Statements

13

AREA DEFINITIONS

Area-definition statements describe data fields.
The data may be variable data supplied by records,
or constant data supplied by the area definition
statement. The programmer must know the length
and composition of the records, so that each field
may be defined correctly. The Processor uses the
information provided by area definitions when it
reserves storage space for the fields and when it
encounters instructions that reference the fields.
There are five types of area definitions:
1. Definition of a Record -- RCD
2. Definition of a Constant Factor -- CON
3. Definition of a Floating Decimal Point
Number -- FPN
4. Definition of a Report Format Field -- RPT
5. Definition of a Continuous Portion of
Memory -- NAME
An area-definition statement must contain a tag
if the field is to be referenced. The reference is
made by using this tag in the operand of the Autocoder statement making the reference. Since the
tag requirement applies to all area definitions, the
tag field will not be discussed separately in the
remainder of this chapter.

statement, columns 17 - 20 of the operation field
may be used as an expansion of the numerical field.
Under these conditions, in effect, the numerical
field consists of six positions. Thus, data fields
which exceed 99 positions may be defined, but they
may not be the first in a series of RCD statements.
OPERAND FIELD: The operand field contains one
of the follOWing:
1. A descriptive code. This is used to define
alphameric fields or numerical fields containing
integers only.
2. A description of an integer and decimal format. This is used to define numerical fields containing mixed or pure decimals.
3. A layout of group marks and/or record
marks. This is used to describe the position of
group marks and/or record marks in a field.
Alphameric Fields and Numerical Fields of
Integers Only:
Contents of Field

+

DEFINITION OF A RECORD -- RCD
The function of an RCD statement is to define a
data field in which a record block, an individual
record, or a portion of a record will be placed.
The definition speCifies the size of the field and
the nature of data it will contain. The RCD statement is written as follows:

N

F

A
A+

Signed numerical data conSisting of integers.
Unsigned numerical data consisting of integers.
Signed numerical data in floating-point form.
The field must consist of ten positions: a twocharacter exponent, signed in the low-order position, followed by an eight-character mantissa,
also signed in the low-order position. This is the
form in which a floating-point constant appears in
storage.
Alphameric data which mayor may not provide left
protection for the immediately subsequent field.
Alphameric data which always provides left protection for the immediately subsequent field.

OPERATION FIELD: The mnemonic code RCD is
placed here. In a continuous series of RCD statements, only the first need contain the mnemonic
code. The Processor assumes that each immediately subsequent statement with a blank operation
field is an RCD, and treats it accordingly. This
assumption makes it possible in subsequent statements to use columns 17 - 20 of the operation field
as an expansion of the numerical field. (The
operation field is assumed to be blank if column 16
is blank.)

Left protection should be provided when the subsequent field contains signed numerical data. The
low-order position of the field providing left protection
must be occupied by one of the following: an alphabetic character, a signed numerical character, a
blank, or any special character.
Figure 3 shows fields defined with descriptive
codes. Notice that the final field cannot be referenced, because it is not tagged.

NUMERICAL FIELD: The size of the data field is
entered here. A one-digit entry is placed in column 22; it need not be preceded by a zero. When
the operation field contains the RCD code, the
numerical field is limited to a two-digit entry.
However, when the operation field is blank and the
statement has been preceded by another RCD

Numerical Fields Containing Mixed or Pure
Decimals: The operand must indicate the number
of integer and decimal positions in the field and
whether the field is signed or unsigned. This
may be done in either of the following ways.
(The first method is the preferred
use.)

14

Operand

30

32 33

35

37 38 39

Figure 3

1. Enumerating the number of integer and
decimal positions. Signed numerical fields are
represented as #+xx. yy, and unsigned numerical
fields as #bxx. yy, where xx and yy represent the
number of integer and decimal positions respectively (b represents a blank position). If there are
no integer positions, xx is written as 00. If there
are less than ten positions on either side of the
decimal point, the numerical digit is preceded by
a zero. The sum of xx and yy must equal the entry
in the numerical field. The maximum size data
field that can be defined consists of 99 integer and
99 decimal positions.
2. Showing a layout of the integer and decimal
positions. Each integer and decimal position is
indicated by an X, with a decimal point placed in
the appropriate position. The layout of a pure
decimal starts with the decimal point, and is followed by the necessary number of Xs to the right
of it. When signed numerical fields are being
defined, a plus sign is placed in the first position
of the operand, and is followed by the layout. The
operand defining an unsigned numerical field starts
with the layout itself. A blank position is not used
to indicate unsigned numerical data.
The total number of Xs must equal the entry in
the numerical field. Although both the decimal
point and the sign occupy positions in the layout,
neither is included in the count for the numerical
field entry. Neither the point nor the sign exists
in the record as a separate position. However, the
Processor needs this information for various purposes, such as selecting the proper coding to replace macro-instructions.
The definitions in Figure 4 are paired, to show
how the same numerical fields would be defined by
each of these methods. Note that SIGNED3 is too
large to be defined by a layout.
Indicating the Position of Record Marks and/or
Group Marks: This information should be supplied
if the record that contains such characters is
referenced by a macro-instruction. The position
or pOSitions the characters occupy must be defined

Figure 4

as one field of the record, unless no other information is to be given about the record. The operand
must be a layout of the portion of the record that
contains the characters. The operand may indicate
one of the following: a terminal group mark, a
terminal record mark, or an internal group mark
followed by a terminal record mark. The operand
may contain the following symbols only:

t

record mark

$ group mark
b blank
Figure 5 shows two ways in which the position of
a terminal group mark could be indicated in defining
a record conSisting of 31 positions of data, three
blanks, and a group mark.

Name

Operation

Num

Operand

(Tag)
6

8

1011

13

IF: I.R ..t!. 7iLJ..4. y.
I

I

15 16

18

R.. C.]).

~

l<'.E: I' IJ AlI7l1..1 L1 Y IR.t!...1>.
I
I

20 21 22 23

13

J

25

2728

IA.

30

3233

35

3738 39

I

I
~

I

I

I

I

l1.11 IA.

I

I

~

I

I

I

I

.4

1

Figure 5

If the three blanks had been data, the definition
for SECONDWAY would have been used. If the
blanks had been group marks, the definitions in
Figure 6 would have been used.

Area Definitions

15

rQperot.ion

IName

'('1'09)

1>

8

n

HI

ra

ns

~

'Operand

Mum

1'820:21 22 ~325

il6

'27 ,2830

32 33

'33

If all the blanks had been group marks, the
record would have been defined as shown in Figure 1.0.
!Nome

1

:1

3738 :39 '

1
1>

.a

:Operofi'on

Num

'(Tog)

10 11

13

15 '1'618

,2021 2223

27",,2,8,--.=30_=32r-33,-_-=35_--=37_~.

25

~ilp~.I~.R~. S~.~T·I~~~p·¥
. Y++.~~~.C~.~~.~I~~./~a~. ~~++l~~~~~j_~_

Figure ·6

.~~.~.~./:. I I

I
I

If one or more group marks ,appear within a
record" they may be made terminal by defining
them as a seperate field and giving the field a tag..
Figure '1 shows how the .four group marks within
a 90-position record maybe: made terminal by
being defined as a separate field.
;Neme

'cr"g)

1011

.1'3

'Operalion

Num '

,18

20 21 22 23

1$']6

Operand

2S

YJ 28

30

3233

3S

3738 3\1

Figure 10

If a record of less than 51 poSitions is being
defined, and it is not desired to give any information about the contents other than the location of
group marks and/or record marks, the entire
record may be defined by a layout operand.Figure 11 shows the definition of a 20-position record
which contains .a group mark in the fifteenth position,
and a terminal re'cord mark.
Nome

Figure '1

W!/,fi}.R,.K.sIO,N.L y

I

Fi:gure '8 shows two ways in which .a record
terminated by three blanks and a record mark could
be defined.
'Nlome
(Tag)
is

'10 q1

Operation

13

;F,1 "R,$.,T1I·w',4, Y.

,15' 16

r820 21

.lIte J)

'Operand

'Num

n

23

25

'2728

30

32 33

.~ l' iJ.

33

3738 39
:1

Ii

1

:1

I

Flgure8

if the fmal blank had been a group mark, the
record could have been defined in either of the ways
sbown in Figure 9.
Qpera't,i.on

: :Num

'Operand

1

J

Operation

·IR"C.l>

Num

:1 . '0

Operclrrd

1
.1

.1

l

Figure 11

COMMENTS FIELD: Comments may be started
here.. If comments continuation lines are written,
columns 16, 21, ,and ·22 of the continuation lines
must be blank. If the statement following the last
continuation line is blank in ·column 16 (but is not
blank in columns 21 and 22)., the Processor assumes
that the line is another ReD statement.

USING AN ReD OF ZERO LENGTH: If the first
data field ina record exceeds 99 positions, its
ReD definition may be preceded by an RCD of zero
length.. In this way, the definition becomes the
seeondin a series of RCD statemen.ts. The
mnemonic code RGDmay be omitted in this seeon.d
statement. Columns 17 - 20 'Of the operation field
may then be used as an extension of the numerical
field. No space will be reserved for an ReD of
zero length.
Restrictions on an ReD Statement

Figure 9

16

The size of a data fieldma.y not exceed mode memory size minus one. If a single RCD field specifies
a larger field size~ the Processor will assume a
length of one for location and address assignment.
(The macro generator will use the actual size
spe'cified unless it is greater than 159999. In
that case, a size of 'One will be assumed.)

Definitions of one or more terminal group marks
may not indicate internal record marks or internal
group marks. Definitions of a terminal record
mark may not indicate internal record marks.

Name
(Tag)
1.0: 11

,Operation

Num

Ope.rand

13

3233

DEFINITION OF A CONSTANT FACTOR -- CON
The function of a CON statement is to define a data
field that will contain constant data, and to provide
the constant itself. The data may consist of any
combination of alphameric characters and/or
blanks. The CON statement is written as follows:
OPERATION FIELD: The mnemonic: code CON is
placed here. In a continuous series of CON statements, only the first need contain the code in the
operation field. The Processor assumes that each
immediately subsequent statement that is blank in
column 16 of the operation field is a CON, and
treats it accordingly. This assumption makes it
possible in subsequent statements to use columns
17 - 2.0 of the operation field as an expansion of the
numerical field.
NUMERICAL FIELD: The size of the constant is
entered here. A one-digit entry is placed in column
22, and need not be preceded by a zero. When the
operation field contains the CON cadet the numerical field is limited to two positions. However, when
the operation field is blank and the statement has
been preceded by another CON statement, columns
17 - 20 of the operation field may be used as an expansion of the numerical field. Under these conditions:t in effect,. the numerical field consists of
six positions. Thus, constants which exceed 99
positions may be defined, but they may not be the
first in a series of CON statements ..
OPERAND FIELD: The constant is entered here.
If the entry in the numerical field is not equal to the
number of positions specified in the operand, the
Processor will do one of the following:
1. Truncate the excess low-order pOSitions
when the numerical field entry specifies fewer
positions than those contained in the operand.
2. Supply low-order zeros. or blanks when the
numerical field entry specifies more positions than
those contained in the operand. Blanks will be
supplied for alphameric fields; zeros will be supplied
for signed numeric fields.
In Figure 12, the numerical field for TAG2 indicates that the constant contains nine low-order
blanks.
Defining a Numerical Constant: A constant con-

sisting of signed numerical data must contain a

Figure 12

plus sign or a minus sign in column 23 of the operand field. If the data is a mixed or pure decimal,
the decimal point should be placed in the appropriate
position. In storage, the low order position of the
field is signed accordingly. However, neither the
sign nor the decimal point is included in the count of
field positions for the numerical field entry. A
signed numerical constant that exceeds 99 integer
or 99 decimal positions should not be referenced by
a general-purpose macro-instruction.
Unsigned numerical data consisting of integers
only is written starting in column 23 of the operand
field. Unsigned numerical data consisting of mixed
or pure decimals should not be specified as a constant if it is to be referenced by an Automatic
Decimal Point macro-instruction. If this is done,
the data will be treated as alphameric data containing a period.
In Figure 13, note the following: The TAG3 constant will appear in storage as 8bbb, the TAG4 constant will appear as 64000 with a plus sign over the
low-order zero, and the TAG5 constant will appear
as 365 with a minus sign over the 5.

Name
(Tog)

1011

Operation

13

Num

Operand

25

27 2a

3Q,

32 33:

Figure 13

Defining a Constant of Record Marks and/or Group
Marks: It may be desired to supply a constant of
record marks and/or group marks as the terminal
field of a record. For example~ to follow a 33position data field with a blank and a. record mark,
the definition would be written as shown in Fig.ure 14.
If a data field containing a 42-position record is to be
followed by a constant of two group marks and a record
mark, the definitions in Figure 15 would be used.

Area DefinItions

1'1

Name
(Tag)

6

8

1011

Operation

13

I
I~, () ,N..s rilLA!, I.

Operand

Num

18

20 21 22 23

l!l.c 1>

133 II.

1~.t)./tI.

:l

15 16

25

2728

30

32 33

35

1

I
I

:/=

I

3738 3\\ .

I
I

I

Figure 14

COMMENTS FIELD: Comments may be started
here. If comments continuation lines are written,
columns 16, 21, and 22 must be blank. If the statement following the last continuation line is blank in
column 16 (but is not blank in columns 21 and 22),
the Processor assumes that the line is another CON
statement.
Name
(Tog)

6

8

10 II

Operation

13

I

c_ 0 ,IJ/,S, TIA,III, r,

Num

Operand

18

20 21 22 23

II?,C~,

14 ..2 /J.

15 16

Ic

O.IV.

j

25

2728

1:t.~.1:.

I

30

32 33

35

37 38 3~

I

I

I

I
I

I

Figure 15

Restrictions on a CON Statement
A one-position CON statement should be used to
supply a plus sign or a minus sign as an alphameric
constant. If an alphameric constant consisting of a
plus sign or a minus sign followed by numerical
characters is desired, a one-position CON statement should be used to define the sign; another CON
should be used to define the numerical characters
as an unsigned numerical constant.
The size of a CON statement may not exceed
mode memory size minus one. If a single CON field
specifies a larger field size, the Processor will
assume a length of one for location and address
assignment. (The macro generator will use the
actual size specified unless it is greater than 159999.
In that case, a size of one will be assumed.)
DEFINITION OF A FLOATING POINT NUMBER -FPN
The function of an FPN statement is to define a data
field for constant numerical data and to provide the
data in floating-point form. Numerical data should
be defined in floating-point form when there is a
possibility that the limits of the accumulator might
be exceeded during arithmetic operations with the
data if it were defined in fixed-point form.
Floating-point form consists of a mantissa and
an exponent. The mantissa is a pure decimal with
a non-zero high-order digit; the exponent is a

18

number specifying a power of ten. When the mantissa is multiplied by the power of ten that the exponent specifies, the data is produced in fixed-point
form. The following lists show the same data
expressed in both forms.
Fixed
+9427.38
-.3264
+.0035
-623

+.942738 x 104
-.3264 x 100
+.35 x 10- 2
-.623 x 103

The FPN statement is written as follows:
OPERA TION FIELD: The mnemonic code FPN is
placed here. In a continuous series of FPN statements, only the first need contain the code in the
operation field. The Processor assumes that each
immediately subsequent statement that is blank in
column 16 of the operation field is an FPN statement
and treats it accordingly.
NUMERICAL FIELD: This field is left blank.
Processor assumes ten positions.

The

OPERAND FIELD: The exponent and the mantissa,
each preceded by a plus or minus sign, are placed
here in the following format: ±EE±DDDDDDDD.
The exponent must be a two-position number, as
specified by EE. The sign which precedes the exponent indicates the direction in which the decimal
has been moved in order to convert the data from
fixed point to floating point form. A plus sign
indicates that the decimal has been moved to the
left; the minus sign indicates that the decimal has
been moved to the right.
As indicated by DDDDDDDD, the mantissa ma.y
consist of up to eight digits, and is preceded by the
sign of the number itself. If fewer than eight digits
are specified, the Processor will supply low-order
zeros to complete the mantissa; if more than eight
are specified, the Processor will truncate the excess low-order digits. When the data is placed in
storage, the signs are placed over the low-order
positions of the exponent and the mantissa.
Figure 16 shows a list of fixed point numbers,
their corresponding FPN definitions, and the constants that would be created from them.
COMMENTS FIELD: Comments may be started
here. Comments continuation lines are not allowed.
Any continuation line following an FPN is assumed
to be another FPN.
Restrictions on an FPN Statement
The absolute value of the exponent may not exceed
99. An exponent of '00 is signed +.

Fixed Point Form

Name

Operation

Num

Operand

Constants Placed in Storage

(Tag)

1011

13

15 16

18

20 21 2223

25

2728

30

32 33

35

3738 39

2. +.0025

+
+
1. 0358946782
+
2. 0225000000

3. -4327.9

3. 0443279000

4. -.063

4. 0163000000

5. -.4792

5. 0047920000

6. +17482.18936

6. 0517482189

1. +589.46782

+
+

-

+

+

Figure 16

FPN definitions may not be referenced. by any
Automatic Decimal Point macro-instructions. The
programmer must provide his own macro-instructions and/or subroutines in order to calculate with
floating-point numbers, because the Automatic
Decimal Point macro-instructions calculate with
numerical data in fixed-point form only.
DEFINITION OF A REPORT FORMAT -- RPT
The function of an RPT statement is to define a
data field for numerical data which will be printed
in a report and to specify the print format for the
data. The RPT field may be referenced by macroinstructions that place the numerical data in the
field and supply the elements of the desired format.
The following elements may be specified in the
definition:
1. Commas and/or a decimal point
2. Fixed or floating dollar sign
3. The printing or suppressing of leading zeros
4. Asterisk protection
5. Indication of the numerical field sign
6. The blanking of a field of zeros
The RPT statement is written as follows:
OPERA TION FIELD: The mnemonic code RPT is
placed here. In a continuous series of RPT definitions, only the first need contain the code. The
Processor assumes that each immediately subsequent statement that is blank in column 16 of the
operation field is an RPT statement and treats it
accordingly.
NUMERICAL FIELD: The size of the RPT field is
entered here. All positions of the format, as shown
by a layout in the operand field, must be counted. The
count consists of the positions for the numerical data
andanycommas, decimalpoints, dollar signs, orany
positions reserved for printing the sign of the field.

OPERAND FIELD: The layout of the report format
is started here; it consists of the symbols used to
define the numerical characters, and the symbols
for a dollar Sign, a comma, and a decimal point if
any are used. The layout may also contain one or
two blank positions reserved for printing the sign
of the field. Usually, the layout is followed by a
set of indicators that provide the macro-instructions
with additional information about the desired print
format.
Three sets of data will be used as examples
throughout this section to explain the method of
laying out the format. The first consists of four
integer and two decimal positions. The second consists of three decimal positions. The third consists
of five integer positions.
Indicating Numerical Characters, Commas, Decimal
Point: Xs and Zs are used to indicate the position of
each numerical character in the format. If commas
and/or a decimal point are desired, the symbols for
them are placed in the appropriate positions. The
numerical positions of the format are defined as
follows:
1. Decimal pOSitions. Zs must be used to define
all decimal positions. Any trailing (i. e., Significant)
zeros in the data entering these positions will be retained and printed.
2. Integer positions. Xs and/or Zs may be used
to define integer positions. The treatment of any
leading (i. e., insignificant) zeros in the data entering these pOSitions depends on whether the position
in which the zero occurs is defined by a Z or by an
X. If the position is defined by a Z, the zero will
be retained and printed. If the position is defined
by an X, the zero will be converted to a blank. Xs
may be used to the left of Zs, but not to the right
of them. If the format layout does not contain a
decimal point, the Processor assumes that a field
of integers is being defined.

Area Definitions

19

In Figure 17, the MIXED and INTEGER definitions indicate that any leading zeros are to be replaced by blanks. Notice that no decimal point is
specified in the INTEGER field.

The position of the decimal point can be indicated
to macro-instructions that handle numerical data
without having the point appear in the printed report.
This is done by placing the symbol D in the appropriate position of the layout. The D is not included
in the count of positions for the numerical field.
This may be seen in Figure 20.
Noone

Operotion

Num

Ope/ond

(Tog)

1011

p!q---I--1I-+--+-tL"-t'-..p_+-+-t-+~~~~~-I

Figure 17

If 004320 were placed in the MIXED field defined
in Figure 17, it would be printed as bbb43. 20 (the
comma having been replaced by a blank).
The MIXED and INTEGER fields are redefined in
Figure 18 so that leading zeros will be retained.
The MIXED definition requests that leading zeros
that occur in the two low-order integer positions be
printed. The INTEGER definition requests that
leading zeros be printed in all but the high-order
position.
Name

Operation

Num

Operand

(Tag)

p---,,-----:1.::...o~11----'-13"__~~~~~~~~~.~-.:::30~~32:..,.::3~ 38 39.

Figure 18

If 000120 were placed in the MIXED field defined
in Figure 18, it would be printed as bbbOl. 20; and
if 00089 were placed in the INTEGER field, it
would be printed as b0089.
Leading zeros may also be replaced by asterisks.
This is called asterisk protection. It is requested
by an indicator, which is placed immediately after
the format layout. The indicator consists of a
lozenge, an asterisk, and a lozenge (0 * 0); it
is not included in the count for the numerical column. In Figure 19, the INTEGER field is defined
for complete· asterisk protection. The MIXED
field, however, is defined for asterisk protection
only in the positions defined- by Xs.
Name
(Tag)

1011

Figure 19

20

Operation

13

Num

Operand

I

---t-+-t---t-.L+--

-t~~--t-+-t-+-+-+-++--t-+-+-

Figure 20

Indicating the Position and Treatment of Dollar
If the dollar sign is desired in the printed
report, it is written to the left of the high-order
position of the format layout and is included in the
count for the numerical field. A fixed or floating
dollar sign can be specified as part of the print format through indicators, which are placed to the
right of the format layout. The indicators are
surrounded by lozenge symbols (to, and are not
included in the count for the numerical field because
they are not part of the format layout. A fixed
dollar sign is printed in the same pOSition for each
use of the data in the report.
If a fixed dollar sign with asterisk protection is
desired, the format layout is immediately followed
by an indicator consisting of a lozenge, an asterisk,
and a lozenge (0 * 0). If a fixed dollar sign without
asterisk protection is deSired, the format layout is
not followed by any dollar sign indicators. If any
leading zeros occur in the data, they will be maintained or replaced by blanks, depending on whether
Zs or Xs are used in the integer positions of the
format layout.
A floating dollar sign is shifted so that it is
printed to the left of the first numerical character
in each set of data. It is requested by an indicator
conSisting of a lozenge, a dollar sign, and a lozenge
(0 $ t:I) placed to the immediate right of the format
layout.
Figure 21 shows one field as it would be defined
to request each of the following:
1. A floating dollar sign.
2. A fixed dollar sign with asterisk protection.
3. A fixed dollar sign without asterisk protection and with leading zeros converted to blanks.
4. A fixed dollar sign without asterisk
protection and with up to three leading zeros
retained.
5. No dollar sign but asterisk protection.

~:

Name
(Tag)
1011

Operation
13

Operand

Num

25

27 28

30

32 33

35

37 38 39

Figure 21

Assume that 003418 and 000570 are placed in each
of the fields defined in Figure 21. The definitions
would cause the data to be printed as follows:
MIXED1
MIXED2
MIXED3
MIXED4
MIXED5

$34.18
$***34.18
$ 34.18
$ 034.18
***34.18

$5.70
$****5.70
5.70
$
$ 005.70
****5.70

Note that the commas in MIXED2 and MIXED3
are converted to an asterisk and a 1:;>lank respectively. In MIXED4, and MIXED5, the comma is
converted to a blank.
Indicating Field Signs and Zero Fields: Sets of
characters which occupy one or two positions are
available for printing either or both of the following
in the report:
1. An indication of the sign of the field that is
supplying data to be placed in the RPT field
2. An indication that the field that is supplying
data consists of zeros
The requested characters will be printed to the
right of the data.
Depending on which set of characters is
requested, one or two blank positions must be
added to the low-order portion of the format layout.
These blank positions must be included in the count
for the numerical field entry, and are considered
part of the layout. The special characters, called
field Sign indicators, are written to the right of the
dollar sign indicator and its accompanying lozenges.
Each character is also followed by a lozenge.
At this point, it is necessary to discuss the
lozenges that separate the indicators in the RPT
operand. Not only are the indicators significant
to the Processor, but the presence or absence of
the associated lozenges is also significant. When
an option is not desired, the indicator which requests it must be omitted. If no subsequent options
are to be requested in the same operand, the
lozenge associated with the omitted indicator is
also omitted. However, the lozenge is retained
and placed back-to-back with the preceding lozenge

if subsequent options are requested in the operand.
The lozenge placement indicates to the Processor
which option or options are not desired. A lozenge
that may be omitted when its associated indicator
and all subsequent indicators are omitted is called
a conditional lozenge.
The lozenges associated with the dollar sign
indicator are conditional. When a dollar sign is
not included in the format layout or when a fixed
dollar Sign without asterisk protection is desired,
no dollar sign indicator is required. The associated
lozenges may be omitted unless a field sign is being
requested. If a field Sign is being requested, the
dollar sign lozenges must be placed back-to-back,
and must precede all field sign indicators and their
associated lozenges.
The field sign lozenges ·are not conditional. If
any field sign indicators are used, the lozenge
associated with each indicator must be placed after
the indicator itself, or must be placed back-to-back
with the preceding lozenge when the indicator is
omitted.
The full dollar sign and field sign indicator
structure is:
tlX tlX tlX t:lX 1l
4
1
2
3

where
is the dollar sign indicator or is omitted.
The lozenges are conditional.
is the negative field sign indicator or is
omitted.
is the zero field indicator or is
omitted.
X4
is the positive field sign indicator or is
omitted.
The field sign indicators are as follows (b designates a blank):
1. One-position indicators: b - * +
2. Two-pOSition indicators: b - b* ** CR DR
DB
If indicators from the first set are used, one blank
position must appear as the final position of the
format layout. If indicators from the second set
are used, two blank positions must appear as the
final positions of the format layout.
The symbols CR, DB, -, and b- may be used
for the negative indicator only. The symbols DR
and + may be used for the positive indicator only.
The other symbols may be used for either. A blank
is generated in the sign position when the condition
associated with an omitted indicator is encountered.
It is possible to leave one blank position as the
final position of the format layout, use the dollar
sign indicator and its lozenges, but omit all field
sign indicators and their associated lozenges.

Xl

Area Definitions

21

In this case, a blank will be generated in the sign
position for both zero and positive fields, and a
minus sign will be generated for negative fields. If
a dollar sign indicator is not desired, the format
layout can be terminated with the blank position,
which must be included in the count for the numerical field entry.
The definition in Figure 22 requests a floating
dollar sign. It also specifies that a minus sign is to
be printed after a negative field, an asterisk after a
zero field, and a plus sign after a positive field.
One blank position for sign indication terminates
the layout.

indication are counted. The sign indicators specify
that the dollar sign is omitted and that a negative
field is to be indicated by two asterisks.
Nome

Operation

Operand

Num

(Tag)

1011

3233

13

Figure 24

The definition in Figure 25 allows one position
for field sign indication but does not contain a
dollar sign or any sign indicators. Consequently,
a minus sign will be generated for a negative field,
and a blank will be generated for zero andpositive
fields. The Zs specify that leading zeros are not
to be converted to blanks.

Figure 22

Assume that the definition in: Figure 22 defines
the RPT field for the data shown below:
Data Entering
RPT Field

RPT Field Printed
Figure 25
$325.70$.00*
$4,576.38+

03257100000
45763

Assume that the definition in Figure 25 defines
the RPT field for the data shown below:

Figure 23 shows a request for a fixed dollar sign
with asterisk protection, with the symbol CR printed
after negative fields and the symbol DR printed
after positive fields. Two blank positions for sign
indication terminate the format layout.
Name

Operation

Num

Operand

(Tag)

6

1M.

8

1011

I Y.

s: »1.:1

13

15 16

18

I~o-r

1

20 21 22 23

25

, , ~)(v

2728

30

>ll)l . . "Lz

1

32 33

I

35
W.

I

4243

3738 3940
_

.1 ...

'-olw

1

1

Data Entering
RPT Field
0027
000013462

RPT Field Printed

0027800000
34628

Figure 26 specifies a floating dollar sign and two
asterisks printed to the right of zero fields. All
positions of a zero field except the sign positions
will be converted to blanks. This includes the
dollar sign, comma, and decimal-poin,t positions.

Figure 23

Assume that the definition in Figure 23 defines
the RPT field for the data shown below:
Data Entering
RPT Field

RPT Field Printed

00395~

$***39. 55CR
$*****.00
$4, 136. 75DR

000000
413675

Figure 26

Note that the symbol D for the decimal point is not
included in the count of the format positions in Figure 24. Only the three numerical character positions and the two blank positions for field sign

22

Blank-If-Zero Option: If this is requested, any
defined commas, the decimal point, and floating or
fixed dollar signs will be converted to blanks along
with the numeric positions when the field contains
all zeros. To request the option, the symbol BZ
is used as the zero field indicator. All five lozenges
must be included, whether or not BZ is the only

indicator used. This option is independent of the
other sign options. Consequently, when BZ is the
only indicator used, it is not necessary to terminate
the format layout with any blank positions.
The definition for MIXEDI in Figure 27 specifies
only that the field is to be blanked when it contains
all zeros. The definition for MIXED2 calls for a
fixed dollar sign with asterisk protection, a minus
sign following a negative field, and the Blank-ifZero option. A positive field will be printed without
any field sign indication.

Figure 27

COMMENTS FIELD: Comments may be started
here. If comments continuation lines are written,
columns 16, 21, and 22 must be blank. If the statement following the last continuation line is blank in
column 16 (but is not blank in columns 21 and 22),
the Processor assumes that the line is another RPT
statement.
Restrictions on an RPT Statement
The format layout of an RPT operand may not exceed
five positions. One-position and two-position field
sign indicators may not be mixed in the same statement.
The numer of positions in the format layout must
be identical to the entry in the numerical field. If
blank positions for sign indication are included in
the layout, it is important to see that no more than
two blank positions are allocated. The number of
commas in the format layout should not exceed nine.
DEFINITION OF A CONTINUOUS PORTION OF
MEMORY - NAME
A NAME has two functions which may be used independently of, or in conjunction with, each other:
1. to identify a series of adjacent data fields
as the interior fields of an area so that they may
be treated as a unit.
2. to specify the final digit or digits of the
starting location to which a data field is assigned.
ENCLOSING ADJACENT FIELDS: A NAME statement which identifies fields as interior to an area
may be said to enclose the fields. The follOWing
Autocoder statements define fields that may be
enclosed by a NAME statement:

Area definitions:
RCD, CON, FPN, RPT, NAME
2. Switch definitions:
CHRCD, BITCD
3. Address constants:
ACON4, ACON5, ACON6, ADCON
The interior fields of the NAME area may be
referenced individually by their tags, or referenced
as a unit by the tag of the NAME area. For example, a work area may be defined as a NAME area
consisting of four interior fields. Each field may be
operated on individually, but the fields may also be
moved to and from the work area as a unit rather
than one at a time.
1.

SPECIFYING A LOCATION: The location requested
by the NAME statement is assigned to the high-order
position of the immediately subsequent field. The
NAME statement specifies what the final digit or
digits of the address may be. The next available
location that ends in the requested digit or digits is
then assigned to the high-order position of the field
defined immediately after the NAME statement.
Suppose that a 4/9 location is requested: i. e. ,
that the high-order position of the field should be
assigned a location ending in 4 or 9, whichever is
available first. If 00012 is the last location assigned
prior to the request, location 00014 will be assigned.
If 00017 is the last assignment, then 00019 will be
assigned. In either case, if a 00 assignment
had been requested, 00100 would have been assigned.
The NAME statement is written as follows:
OPERA TION FIE LD: The mnemonic code NAME is
placed here. If a subsequent entry to the NAME
contains a blank in columns 16, 21, and 22, the
entry is assumed to be another NAME statement.
NUMERICAL FIELD: This field is left blank if the
Processor is to assign the next available location to
the NAME. * If a specific address ending is desired
for the starting location, one of these codes is
placed in column 22:
Code

Requests Location
Ending In

o or 5

o or 5

lor 6
2 or 7
3 or 8
4 or 9
A

lor
2 or
3 or
4 or

B
C

6
7
8
9

0
00
000

*For purposes of location assignment, an X in column 22 has the
same effect as a blank. However, if an X is used, the Processor will not make the terminal location of the field available for
the macro generator. (The X is used for generation of higher
languages; preferably, it should not be used in Autocoder. )

Area Definitions

23

OPERAND FIELD: This field is left blank when
NAME is used only to request a location assignment.
When NAME is used to enclose a series of interior
fields, the tag of the interior data field that terminates the NAME is placed in the operand field. If an
operand is used, the NAME statement itself must
be tagged.
The NAME statement in Figure 28 requests the
positioning of FIELD1 starting at the first available
address ending in O. The statement also makes four
fields interior to STARTNAME by designating the
ENDNAME field as the terminal field.
Nome

Operation

Num

Operand

Nome
(Tag)

1011

6

8

AI

DUAl

Operation

13

I

15 16
I

18

l!F.1II.DIJ.J Ip.u IJ

I

25

IENJ)

AI. A,"".E".

CoN.

•

Num

20 21 22 23

I .,..

.<

Operand

2728
LJ ,

ID

30
U IJ

I

3233

35

3738 39

I
I

1.2 _~,,.._~

I

I

I

Figure 31

Information Provided by the Processor

(Tag)

1011

13

15 16_._Jil__ .10 21 22 23

The Processor counts the total number of positions
occupied by the interior fields of a NAME area. A
message indicating the total will appear in the listing
immediately following the entry specified as the terminal field definition.

~,B-tR,TIMel"'V',
~letL~111

I

IE'iL~I:Z1

I

Internal NAME s
Figure 28

Figure 29 shows NAME used to position the RPT
field ANYTAG in the next available address ending
in 2 or 7.
Nome
(Tag)

1011

Operation

13

15 16

Num

Jil___ .20 212223

Operand

25 _.E.3~___ )~ 32 ~_..25_3.?.}8 39

One or more NAME areas may be made internal to
another NAME. The operand of each internal and
outer NAME statement must contain the tag of the
field that terminates it. Internal NAMEs may be
terminated by the same field that terminates the
outer NAME, or they may be terminated by fields
that are internal to the outer NAME.
In Figure 32, the OUTERNAME is terminated by
the CON field ENDOUTER, while INNERNAME is
terminated by the RCD field ENDINNER.

Figure 29

NAME is used in Figure 30 to identify the interior
fields of the area tagged BEGIN.

Figure 30

Figure 31 shows a way of creating the constant
+12345 in such a way that it will not appear in stor+
age as 1234E (12345).
COMMENTS FIELD: Comments may be started
here. Comments continuation lines are not allowed.

24

Figure 32

In Figure .33, both FIRSTNAME and SECONDNAME are terminated by the RCD field ENDFIRST.

Figure 33

Restrictions on a NAME Statement
The total number of positions enclosed in a NAME
may not exceed mode memory size minus one. If
this limit is exceeded, the Processor will assume
a length of one for address assignment. (The
macro generator will use the actual size specified
unless it is greater than 159999. In that case, a
size of one will be assumed.)
Internal NAME statements should not specify
location assignments. The operand (i. e. , tag of
the termination field) of one NAME statement
cannot be the tag of another NAME entry.
The NAME statement itself must be tagged if
the operand contains a tag.
No more than 32 NAME areas may be defined
concurrently.

Area Definitions

25

SWITCH DEFINITIONS

Switches are programming or hardware devices that
are used to control the path of a program. Three
types of switches may be defined: data switches,
program switches, and console switches. The
statements used for each type are as follows:
1. Data Switches
a. Character Code -- CHRCD
b. Bit Code -- BITCD
2. Program Switches
a. Switch Set to Transfer -- SWT
b. Switch Set to No Operation -- SWN
3. Console Switches
a. Alteration Switch -- ALTSW
With one exception, the format of a switch definition statement varies according to the type of switch
being defined. The exception is the comments field.
Comments about any switch may be started in the
comments field of the definition statement. For
those switches which must be defined by a set of
statements, comments continuation lines may intervene between the first statement and the remaining
statements, or the continuations may be placed in
the comments fields of the remaining statements.
DATA SWITCHES
A data switch is a data field. There are two types
of data switches: character code and bit code. The
character-code switch provides a method of relating
alphameric codes to various meanings or conditions.
The bit-code switch provides a method of relating
the bits that form a storage position to various
meanings or conditions.
Both character-code and bit-code switches are
described by a set of statements, the first, of which
is the switch-definition statement that indicates
whether a character code or a bit code is being defined. The rest of the character-code switch statements specify the alphameric codes which may occupy the switch and the condition that each code represents. The rest of the bit-code switch statements designate the various bits of the storage position and the condition each bit represents. A character-code switch may occupy one or two positions;
a bit-code switch may occupy only one position.
A record field may be defined as a data switch,
and the switch may be interior to a record area defined by a NAME statement. The switch will be set
each time a record is placed in the area. If the data
switch is not defined as part of a record area, the
program itself must set the switch. The way in
which the switch is initially set depends on its use
in the program.

26

If the switch-definition statement follows an RCD,
the statement should not specify the initial setting.
The Processor reserves storage space for the
switch, but does not set it to any code. If an initial
setting has been specified, the Processor ignores it.
However, a switch-definition statement that does not
follow an RCD should specify an initial setting. The
Processor reserves space for the switch and sets it
as specified. If the initial setting has been omitted,
the Processor sets the switch to a blank.
Program Branch Control macro-instructions are
normally used to set the switches ON or OFF or to
test their settings. A character-code switch is set
ON by placing one of the defined codes in it; it is set
OF Fby placing a blank in it. When a character-code
switch is tested, it is examined to see whether or not
a given code is present. If the code is present, the
switch is ON. If the switch contains anything other
than the designated code, the switch is OFF.
A bit-code switch is set ON by setting the designated bits ON; it is set OFF by setting the designated
bits OFF. When a bit-code switch is tested, it is
examined to see whether or not the bit designated in
the test is ON. If the designated bit is ON, the
switch is ON, otherwise, the switch is OFF.
Suppose that statements for a character-code
switch specify that code A represents the condition
of Surplus, and code B represents the condition of
Deficit. If the switch is tested for the Surplus condition and code A is present, the switch is ON. Alternatively, suppose the switch is tested for the Deficit
condition. Now if code B is present, the switch is
ON. In other words, the data switch must be tested
for a condition that has been specified in its definition.
If the code that represents the specified condition is
present, the switch is ON. Otherwise, it is OFF.
Suppose, in a similar example, that the switch is
a bit-code switch. Let the Surplus condition be represented by turning ON the I-bit, and let the Deficit
condition be represented by turning ON the 2-bit. In
this case, if the switch is tested for the Surplus condition and the I-bit is ON, the switch is ON. It does
not matter whether the 2-bit is ON or OFF, because
the test does not specify the Deficit condition. It is
possible, although not logical in this example, for
the switch to be ON for both the conditions of Surplus
and Deficit.
A character-code switch may represent only one
condition at any time, whereas a bit-code switch may
represent multiple conditions simultaneously. In
each case, the number of ON states for a data
switch is equal to the number of codes or bits specified in the switch definition.

Character Code -- CRRCD
A character-code switch is defined by a series of
statements. The first is the CRRCD statement; its
function is to define the switch as a character-code
switch and to specify the size and initial contents of
the switch. The statements which follow the CRRCD
statement specify the codes and the conditions they
represent. The format of the set of statements is
as follows:
Operation Num Operand

Tag

CHRCD
Tl

n Xl
Cl

T2

C2

T3
etc.

C3
etc.

8

10 11

Operation

13

15 16

18

Num

20 21 22 23

8

Operation

1011

13

I

15 16

18

Operand

Num

25

20 21 22 23

II'.. II. J(l e.:JJ

2728

N.E,&./. Y.b 1A,j(,
1La..s. T. .oW,

30

32 33

35

3738 39·

I

j,. T.H,F.~

,/9

I

I

1

1

I

I

Figure 37

The BITCD definition in Figure 38 specifies that
GROSSTOTAL is to be set ON initially. The switch
will contain B (12-2), thus setting the I-bit to zero.
28

Num

18

20 21 22 23

B. J.I.C:J)

Operand

25

2728

B,
I

r."rolr,A,L

,~

30

32 33

35

3738 39

I

I

I

I

I

L

I

I

Figure 38

BI
B2
B3
B4

8

Operation

15 16

I

Xl

TI
T2
T3
T4

13

~ .1,D,~~IT.D,r,A,1.
'N,E,

BITCD

1011

I

Operation Num pperand

Tag

6

8

During the program assembly, the tag of each defined bit is assigned to the storage position occupied
by the switch. Suppose that the switch defined in
Figure 38 is assigned location 000100. When instructions that reference GROSSTOTAL and NETTOTAL are translated into machine language,
000100 will appear as the address portion of each
one.
Figure 39 is taken from a listing. Notice the
machine-language portions for both the switch definition and the instructions that reference the switch.
Operation Num Operand )LOC

Tag

SITeD
EAST
WEST
NORTH

INSTR SU ADDRESS

000237
1
2

4

I
I
Instructions that reference the switch:
I

ReVS

EAST

002319 U0237

000237

Revs

WEST

002464 U0237

000237

Revs

NORTH 002739 U0237

000237

f

~

Figure 39

Restrictions on a BITCD Switch
A bit-code switch may not be used in a program for
the 705 II portion of a 7080 program.
The BITCD statement should not be tagged, since
the switch is referenced by the tags of the bits.
PROGRAM SWITCHES
A program switch is an instruction. Each time the
switch is encountered, it causes the program to do
one of two things:
1. To transfer to a designated instruction when
the switch is ON.
2. To execute the next in-line instruction when
the switch is OFF.
A program switch is defined by a single statement
that specifies the initial switch setting. If the initial
setting is ON, the switch statement becomes a
Transfer instruction in the object program. If the
initial setting is OFF, the statement becomes a No
Operation instruction in the object program.

Program Branch Control macro-instructions are
used to set the switches ON or OFF, and to test
their settings. Setting the switch ON or OFF involves modifying the operation portion of the generated instruction to Transfer or No Operation, respectively. Testing the switch involves determining
whether or not it will cause the program to transfer.
All program-switch definition statements must be
tagged, so that the switches can be referenced by
macro-instructions.
Switch Set to Transfer -- SWT
The function of an SWT statement is to define a program switch that will be ON initially. The format
of the SWT statement is as follows:
Tag

Operation Num Operand

Tl

SWT

T1
Xl

Tag

Operation Num Operand

Tl

SWN

Xl

is the tag of the switch.
is the tag of the instruction to which a
transfer is to be made after the switch
is turned ON.
As long as the switch is OFF, no transfer occurs
when the switch is encountered. The program proceeds instead to the next in-line instruction. After
the switch is set ON, a transfer occurs each time
the switch is encountered.
The SWN statement in Figure 41 indicates that
LOOPSWITCH is to be set OFF initially; and that
when the switch is set ON, the transfer point is the
instruction tagged STARTLOOP.

Xl

is the tag of the switch.
is the tag of the instruction to which a
transfer is to be made when the switch
is ON.
Figure 41

As long as the switch is ON, a transfer occurs
each time the switch is encountered. When the
switch is encountered after it is set OFF, the transfer does not occur. The program proceeds instead
to the next in-line instruction.
The SWT statement in Figure 40 indicates that
LOOPSWITCH is to be set ON initially, and that the
transfer point is the instruction tagged STARTLOOP.

Restrictions on an SWN Statement
A hand-coded No Operation instruction may not be
referenced as a program switch with Program
Branch Control macro-instructions. Since the handcoded instruction will not be recognized as a switch,
the proper coding will not be generated from any
macro-instructions referencing it.
CONSOLE SWITCHES

Figure 40

Restrictions on an SWT Switch
A hand,...coded Transfer instruction may not be referenced as a program switch with Program Branch
Control macro-instructions. Since the hand-coded
instruction will not be recognized as a switch, the
proper coding will not be generated from any macroinstructions referencing it.
Switch Set to No Operation -- SWN
The function of an SWN statement is to define a program switch which will be OFF initially.' The
format of the SWN statement is as follows:

Console switches are the console alteration switches
0911-0916. Each is identified by one console-switch
statement. The switches themselves must be set
ON or OFF manually by the console operator, either
before or during the execution of the program. A
console-switch statement does not specify the initial
switch setting. It merely provides a method of assigning a tag to an alteration switch so that it can be
referenced by a Program Branch Control macroinstruction. The switch statement is not translated
into a machine-language instruction.
Alteration Switches -- ALTSW
The function of the AL TSW statement is to designate
a console alteration switch. The format of the statement is as follows:

Switch Definitions

29

Tag

Operation Num Operand

Tl

ALTSW

T1
Xl

Xl

is the tag of the switch statement.
is a code identifying the console switch.
The codes are as follows:

Switch Being
Identified

~

0911
0912
0913
0914
0915
0916

A
B
C
D
E
F

Figure 42 shows switches 0911 and 0912 being
identified.
Name
(Tag)

1011

Figure 42

30

Operation

13

15 16

18

Operand

Num

20 21 2223

25

2728

30

32 33

35

3738 39

ONE-FOR-ONE INSTRUCTIONS

A one-for-one instruction is a symbolic instruction
which is replaced by one machine instruction. It
consists of a 7080 operation code and an Autocoder
operand. Figure 44 lists the 7080 operation codes.
The basic Autocoder operands are as follows:
1. Tag
2. Literal
3. Actual
4. Location counter
5. Blank
A prefix, a suffix, or both may be added to some
of the basic operands:

The tag may be that of the data field or the sourceprogram instruction involved in the operation.
Name
ITag)

6

8

1011

F.I E.L.DI

I

.r.MS.rAI
1

Operotion

13

18

15 16

'il.I!J1.

Operand

Num

20 21 22 23

25

11.3 iJI..+.d.'7

~
Il.A.IJ.

27 28

iF.1 E

30

3233

35

3738 39

Ie.,,-.

I
".1>1
I

J
1

I
I

Figure 43

Prefix
operand modifier
indirect address

Suffix
character adjustment

The format of an Autocoder one-for-one instruction is summarized in the next section, "One-forOne Instruction Format." The balance of this
chapter describes the basic operands, and the
prefix and/or suffix that may be added to each
operand. The chapter entitled "Address Constants, "
describes a specialized form of Autocoder operand
called an address constant literal.
The details of each 7080 operation are supplied
in the reference manual, IBM 7080 Data Processing System, Form A22-6560.
ONE-FOR-ONE INSTRUCTION FORMAT
Like other Autocoder statements, a one-for-one
instruction is tagged if it is to be referenced. The
mnemonic operation code is placed in the operation
field. No actual operation codes may be used. If
the operation requires designation of the accumulator, an ASU, or a bit, the appropriate entry is
placed in the numerical field. A one-for-one
instruction has a single entry in the operand field;
if necessary, the operand may be continued from
the operand field into the comments field. The
operand may not, however, be continued onto the
next line of the coding sheet. Comments about the
instruction may be started in the comments field.
BASIC OPERANDS
A description of the basic Autocoder operands
follows:

Literal
A literal is actual data enclosed by literal signs (#).
It may be any combination of alphameric characters
and/or blanks; e. g., #A#, #bb3C#, #0500#, #GO
TO END#, #+345#, #-.67#, #1234#, #+9.876#. The
Processor creates a constant from a literal operand.
The term "literal" is frequently used to refer to the
literal operand or to the constant created from the
literal.
An example of the use of a literal operand, it
may be necessary to calculate with a constant of
+30. The constant could be defined by a CON
statement, and the appropriate arithmetic instruction could reference the constant by having the tag
of the CON as an operand. On the other hand, it
might be desired to omit the CON and supply the
constant directly by writing it as the literal operand
of the arithmetic instruction. While a literal is a
convenient way of supplying an occasional constant,
those constants that are used repeatedly throughout
the program should be supplied by CON statements.
If a signed numerical constant is desired, the
first character following the literal sign must be a
plus sign or a minus sign. In storage, the loworder position of the constant will be signed. If
the numerical data is a mixed or pure decimal, the
decimal point will not appear in the constant. If
an unsigned numerical constant is desired, the first
character following the literal sign must be the
first character of the numerical data. In storage,
the constant will appear exactly as it is written in
the literal. Thus, the constant created from an
unsigned mixed or pure decimal will contain a
decimal point. For this reason, unsigned mixed

One-For-One Instructions

31

or pure decimals should not be written as the
literal operands of arithmetic instructions; e. g. ,
ADD, SUB.

Name of Instruction
Add
Add Address to Memory
Add to Memory
Backspace
Backspace File
Blank Memory
Blank Memory Serial
Channel Reset
Comma, No Operation
Compare
Control Read (Read 04)
Control Write (Write 04)
Divide
Dump Memory (Write 01)
Enable Compare Backward
Enable Indirect Address
Enter Interrupt Mode
Enter 7080 Mode
Forward Space (Read 01)
Leave Interrupt Mode
Leave Interrupt Program
Leave 7080 Mode
Lengthen
Load
Load Address
Load Four Characters
Load Storage Bank
Multiply
No Operation
No Operation, Comma
Normalize and Transfer
Read 00
Read 01 (Forward Space)
Read 02 (Read Memory Address)
Read 03 (Sense Status Trigger)
Read 04 (Control Read)
Read 05 (Read Memory Block)
Read Memory Address (Read 02)
Read Memory Block (Read 05)
Read While Writing
Receive
Receive Serial
Receive Ten Characters
Reset and Add
Reset and Subtract
Rewind
Rewind and Unload
Round
Select
Send
Sense Status Trigger (Read 03)
Set Bit Alternate
Set Bit 1
Set Bit Redundant
Set Bit 0
Set Control Condition (Write 03)
Set Density High
Set Density Low
Set Left
Set Record Counter (Write 02)
Set Starting Point Counter
Shorten
Sign
Skip Tape

Figure 44.
32

Use In Programs For
Mnemonic Second', Mode
Code
70511 705111 7080
ADD
AAM
ADM
BSP
BSF
BLM
BLMS
CHR
CNO
CMP
CRD 2
CWR 2

x

DIV
DMP2
ECB
EIA
ElM
EEM
FSP2
LIM
LIP
LEM
LNG
LOD
LOA
LFC3
LSB
MPY
NOP
CNO
NTR
RD
FSp2
RMA2
SST2
CRD2
RMB2
R/M2
RMB2
RWW
RCV4
4
RCVS
4
RCvr

x
x

RAD
RSU
RWD
RUN
RND
SEL
SND
SST2
SBA
SBN 1

x

x

x
x

x

x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x

x

x

x

x

x
x

x

x
x
x
x
x

x

x
x

x
x
x

x
x

x

x
x
x
x

x
x
x
x
x
x
x
x

x

x
x

x
x

x
x

x
x

x

x

x

x
x
x

x

x
x

SBR
SBZl
SCC2
SOH
SOL
SET
SRC2
SPC
SHR
SGN
SKP

x
x
x
x
x
x
x

x

x
x
x

x

x

x

x
x
x

x
x

x
x

x

x

x

x
x
x
x
x

x
x

x
x

x
x

x

x

x

x

x

x
x

x
x

Mnemonic Codes for One-for-One Instructions.

x

x

A Ii teral may also supply the floating point form of
a signed numerical constant. It must be written in the
format of an FPN operand: #±EE±XXXXXXXX#.

Name of Instruction

Mnemonic
Code

Stop
HLT
Store
ST
Store for Print
SPR
Subtract
SUB
Suppress Print or Punch
SUP
Ten Character Transmit
TCT
Transfer
TR
Transfer Any
TRA
Transfer Auto Restart
TAR
Transfer Echo Check
TEC
Transfer on Equal
TRE
Transfer on High
TRH
Transfer to Interrupt Program
TIP
Transfer Instruction Check
TIC
Transfer Machine Check
TMC
Transfer Nonstop
TNS
TOC
Transfer Overflow Check
Transfer on Plus
TRP
Transfer Read-Write Check
TRC
Transfer Ready
TRR
Transfer Sign Check
TSC
Transfer on Signal
TRS
Transfer and Store Location
TSL
Transfer Switch A On (0911)
TAA
Transfei SwItch B On (0912)
TAB
Transfer Switch C On (0913)
TAC
Transfer Switch 0 On (0914)
TAD
Transfer Switch E On (0915)
TAE
Transfer Switch F On (0916)
TAF
TSA
Transfer Synchronizer Any
Transfer Transmission Check
TTC
Transfer on Zero
TRZ
TZB 1
Transfer on Zero Bit
Transmit
TMT
Transmit Serial
TMTS
Tum off 1-0 Indicator
10F
Tum on 1-0 Indicator
ION
UNL
Unload
Unload Address
ULA
UFC3
Unload Four Characters
Unload Storage Bank
USB
WR
Write 00
DMP2
Write 01 (Dump Memory)
SRC2
Write 02 (Set Record Counter)
SCC2
Write 03 (Set Control Condition)
CWR2
Write 04 (Control Write)
Write 05 (Write Multiple Control) WMC 2
WRE
Write and Erase 00
WRE 01
Write and Erase 01
Write Multiple Control (Write 05) WMC 2
WTM
Write Tape Mark
IBM 760 Operations
RWT
Read or Write Tape, Early Start
Read or Write Tape, Write on PrlnterRWS
RST
Reset 760 Counter
Write on Printer and Magnetic Tape PTW
IBM 777 Operations
Bypass TRC
Prepare to Read While Writing
Read Tape to TRC
Write TRC to Tape
See NOTES below.

BPC
PRW
RTS
WST

Use In Programs For
Second'y Mode
70511
705111
7980
x

x

x

x
x

x
x
x
x

x
x

)(

x

x

x

x
x

x

x
x

x

x

x
x

x
x
x

x
x

x

x
x

x
x
x
x

x
x

x

x

x
x

x
x
x
x
x

x
x
x
x

x

x

x
x
x

x
x

x
x

x
x

x
x
x

x
x
x

x

x
x
x
x
x

x

x

x
x

x

x
x
x
x

x

x

x
x

x

x
x

x
x
x

x

x

x

x
x

x
x
x
x

x
x
x

x

x

x

x

x

x

x

x
x

x

x
x

x
x

x

x
x

x
x
x

x
x
x
x

x

x
x

x
x

x
x
x
x

NOTES
1

Place a I, 2, 4, 8, A, or B in column 22 to designate the bit
(TZB can also have a C). If column 21 is not blank, the Processor assumes that ASU zoning, valid or invalid, has been
designated.

Name
(Tag)
10 II

Operation

13

Num

Operand

15 16

2preferred mnemonics; RD 01 to 05 and WR 01 to 05 are also acceptable.
3

A blank or a 4 should be placed in column 22 if the Processor is
If a 1. 2. 3. or 5 is written. a 1/6. 2/7.
3/8. or 0/5 check. respectively. results.

to perform a 4/9 check.

4 The three different Autocoder mnemonics for the receive instruc-

tion (RCVS. RCV. and RCVT) indicate to the Processor the type
of address to be assigned. If the mnemonic is RCVS. the location
assigned is the high-order address of the field specified in the
operand of the instruction. For an RCV. four is added to the highorder address of the field. Since an RCV is generally used when
a 4/9 ending is desired (as with a TMT or SND). the high-order
address of the field should end in a 0 or a 5. An RCVT is assigned the high-order address of the field plus nine. Since RCVT
is used when a 9 ending is desired (1. e.. with a TCT). the highorder address of the field should end in a O.

if the generated address does not end in a 4 or a 9 (RCV) or
9 (RCVT). a 4/9 check or a 9 check message is prepared.
An example of assembled machine-language coding for the
three forms of the receive instruction is shown below. The field
tagged WORKAREA. has a high-order address of 3750. Note that
the machine-language operation code (U) is the same for all three
statements:
OP
RCVS
RCV
RCVT

Operand
WORKAREA
WORKAREA
WORKAREA

Op
U
U
U

Address
3750
3754
3759

The operands of all forms of the Receive instruction can be character adjusted. Thus, if the operands above were WORKAREA-3,
the actual addresses would be three less than shown.

Trailing zeros will be supplied when the literal
contains fewer than eight mantissa positions. For
example, the literal #+03-7# will appear in storage
-+'
as 0370000000.
The length of a literal must be a multiple of
five when used with an operation which requires a
4 or 9 location. The literal must also contain a
record mark in the low-order position if it is used
with a TMT operation. Such literals are positioned
in the literal table so that the high-order character
occupies a 0 or 5 location.
If the literal is used with a TCT instruction, its
length must be a multiple of ten with a record mark
in the low-order position. The Processor will
properly position the literal in a 9 location.
The Processor places all constants that it
creates from literal operands in storage areas
called literal tables. Literal constants may be
placed either in the main literal table or in

Figure 45

multiple literal tables (see "Multiple Literal
Tables. ") A literal appears only once in a literal
table, even when it has been used in several different statements.
The Processor classifies literals and makes
literal-table assignments according to whether the
literals are signed or unsigned:
1. Any literal containing a sign in the first position is automatically classified as Signed. If the
signed literal supplies numerical data, it appears
in storage as previously described. If the literal
contains a non-numerical character in the loworder position, the existing zoning in that character
is replaced by the sign.
2. Any literal that does not contain a Sign in the
first position is automatically classified as unsigned.
As previously indicated, the constant appears in
storage in exactly the same form in which it is
written on the coding sheet.
3. A literal symbol may not appear within a
literal unless it is the first character of the literal.
However, the flag character B can be used to allow
literal symbols in any literal position (see ffFlag
Characters and Their Meanings").
Actual
An actual operand is a set of numerical characters,
usually preceded by the actual address symbol (@),
which deSignates one of the following:
1. An actual storage location
2. A setting for the accumulator or an ASU
3. The size of a block of storage positions
The @ symbol need not be used when an operand
containing less than five numerical characters is
used with one of the follOWing operations: BLM,
BLMS, CTL, HLT, LIP, LNG, RND, SEL, SET,
SHR, SPC, SRe, TRANS. Note in Figure 46 that
the SET and BLM instructions have been written
two ways.
Restrictions on an Actual Operand
An actual operand greater than the core-storage
size specified to the Processor should not be used.

One-For-One Instructions

33

6

8

Name
(Tag)
1011

·_ME.

Operation

13

I

Sr.

I

~

I

r:W-b,

18

15 16

I
I

B.L,M,

I

~

,V,E,

~

f.

I

30

32 33

35

3738 39

I

I

I

1.
S,E.T.

I;:. I

2728

I~QQ~IQ~£j
I

SF-To

I

Blank

Operand
25

~~,9G,

IT:H.fl.E,EI
/=;110,1.1.8,

Num
20 21 2223

I
I

I

I

I

I

I

I

I

I

~D,.-'>,D ..:lIQ

j:l,L.M,

;[,/10,

I

A blank operand is one that has blanks in the first
ten columns of the operand field. Blank operands
should be used if the instruction is initialized by
the program, or if the operation itself does not
require an address. In the object program, a blank
operand is replaced by an appropriate address.

I

I

I

I

I

I

I

Name
(Tag)
6

Figure 46

8

1011

15 16

I

If such an operand is encountered during assembly,
the Processor subtracts the maximum corestorage size from the actual and uses the difference
as the operand. A message to this effect is provided at assembly time.
For example, if an 80,000 core-storage size
has been specified, any actual operand in excess of
79999 will have 80000 subtracted from it; the remainder will be used as the operand. The list
below indicates the largest actual operand that may
be used with each available core-storage size:

18

20 21 22 23

/3,s P-

~

1
I

f."

v.L.A.

I

,

Operand

Num

Operation

13

25

2728

30

32 33

35

37 38 3~

I

I

I

I

I

I

1

I

Figure 48

ADDITIONS TO BASIC OPERANDS
A description of the suffix and the prefixes that may
be added to an Autocoder operand follows.
Character Adjustment

Core-Storage Size
20,000
40,000
80,000
160,000

Maximum Actual Operand
19999
39999
79999
159999

Location Counter
A location counter is represented by the asterisk
(*) symbol, which designates the low-order position
of the instruction in which it appears. Since each
instruction occupies five positions in the object
program, an instruction containing a location
counter references its own low-order position. The
effect of the instruction in Figure 47 is to cause the
4 or 9 location assigned to the instruction to be
placed in ASU 14.

6

8

Nome
(Tag)
1011

I
I

Operation

13

18

20 21 22 23

ILn.:».

I I I ~.

15 16

Operand

Num
25

2728

I
I

30

3233

I
I

35

3738 ~

I
I

Figure 47

NOTE: The versatility of a location counter is
more fully utilized when the counter is characteradjusted. This use is explained in the following
section, "Additions to Basic Operands. "
34

Character adjustment is designated by a suffix to
the basic operand. A reference to an untagged
field, an untagged instruction, or a particular
position within a field or an instruction can be made
by using character adjustment. The suffix consists
of an arithmetic operator that specifies the type of
operation, and one or more numerical characters
that .specify the size of the adjustment. The operators are as follows:
Operator
+

*

/

Meaning
Addition
Subtraction
Multiplication
Division

Character adjustment may be used with all basic
operands except the blank operand. The operator
should appear immediately after the operand. It
may not appear beyond column 33, unless the
operand itself continues into column 33 or beyond.
In Figure 49, the character-adjusted operand of
the RAD instruction references the field that follows
EMPLOYEE.
A character-adjusted location counter may be
used to bypass in-line instructions. In Figure 50,
*+10 references the low-order (4 or 9) position of
the ST instruction.

Name
(Tag)

6

8

IFM.P.I

1011

Operation

13

18

15 16

.,.Iy E.E'.

IJ:I. t!.J.

I

~".~

25

2728

I

1
1A'.a~

30

32 33

35

I

I
I

J

G":iI1J.P,I...A

II'" E

I!" .,...;

I

I

3738 39

I
I

I

A.+

~~

I

In Figure 51, the LOD instruction references the
left-hand position of FIELD. When the instruction
is executed, the contents of that position, rather
than the entire contents of FIELD, are placed in
ASU 01.

Operand

Num

20 21 2223

Operation

Name
(Tog)

I

8

6

Figure 49

1011

IF, I

13

Eo ,",.171

20 21 22 23

I.1>

L: IE
I

I#:N_D.

I

I

Operotion

13

Operand

Num

18___ 20 21 22 23

15 16

11':.R.

(
Ir.A.

:z:

25

2728

_~,l~-~L3~

E"Nl>J

I

I

I

1111

I

/

I

8,;-'~ I

)

~

Figure 52

When the Processor encounters an instruction
containing "I, " in the 7080 mode portion of the
program, it generates two instructions: The first
is an EIA (Enable Indirect Address). If the onefor-one instruction containing the indirect address
is tagged, the Processor transfers the tag to the
EIA instruction. The second instruction is the same
one-for-one instruction without the hand-coded "I, "
and without the hand-coded tag. If the first instruction in Figure 52 had been written in the 7080-mode
portion of the program, it would have been followed
by the generated instructions as shown in Figure 53.
MULTIPLE ADDITIONS TO A BASIC OPERAND
The follOWing pair s of additions may be used with
either a tag or a literal operand:

One-For-One Instructions

35

Tag

Operation Num Operand

MIDDLE
MIDDLE

TR

I,END
END
END

EIA
TR

Figure 53

1. Operand modifier and character adjustment
2. Indirect address and character adjustment
The second pair may also be used with a location
counter.
In Figure 54, the operand of the LOD instruction
references the second position in FIELD; i. e., the
position to the right of the high-order position.

Nome
(Tag)

8

6

11=. /

10 II

Operation

13

E.' L..J>I

18

15 16

n...C.:J1.

Operond

Num

20 21 22 23

2728

25

f

I

I

30

32 33

35

I

I

3~·

I

I
I

L ... F./ c1L..J). +.1

L O.D.

37 38

I

I

/.0 A.

I

Figure 54

In Figure 55, COMPUTE is the effective transfer point of the first transfer instruction.
Name
(Tog)

8

6

D.N.I'.

T'.W.D

10 II

15 16

18

I

A.A.:D.

I

T'.R.

I

Jfi.~.1).

J
I
Figure 55

36

Operation

13

r..&

Operand

Num

20 21 2223

25

2728

30

32 33

35

3738 39

D.~l7> ..1.

I

l..r. .iI.."" lie
iI2.r.C c:>.RIJ..2.

I

.Ir.c

I

I

I

IR...t!

; t ........

~

I

GENERAL PURPOSE MACRO-INSTRUCTIONS

A macro-instruction is a source-program statement
which represents multiple operations. When the
program is assembled, each macro-instruction is
replaced by a sequence of one-for-one instructions;
the number varies according to what the macroinstruction is and how it is used. The generalpurpose macro-instructions in the 70S0 Processor
library are shown in Figure 56. The purpose of
this chapter is to present them as a part of the
Autocoder language; consequently, the chapter is
limited to an explanation of their basic coding format
and a few examples of individual macro-instructions.
The specifications for using each general-purpose
macro-instruction are provided in the publication
70S0 Processor: General Purpose Macro-Instructions, Form C2S-6356. Procedures for writing new
~o-instructions for incorporation into the language are described in the publication~ 70S0 Processor: Preparation of Macro-Instructions, Form
C2S-6264. Input/output macro-instructions are a
part of the 70S0 Input/Output Control System, and
are described in the 70S0 IOCS publications. The
titles, form numbers, and abstracts of references
to all publications dealing with macro-instructions
for the IBM 70S0 may be found in IBM 70S0 Bibliography, Form A22-6774.
In addition to individual specifications and examples of generated coding, the macro-instruction
manual provides detailed explanations of the conventions and restrictions governing the use of all the
general-purpose macro-instructions. It also explains restrictions that may apply to only one type
of macro-instruction. It has been necessary to
establish certain conventions and restrictions in
creating a macro-instruction library to serve a
large number of users with a variety of program
needs. However, it is possible for programmers
to prepare their own macro-instructions and insert
them into the library.
Because of the flexibility of the Processor, programmers need not observe most of the restrictions
described in the macro-instruction manual when
creating macro-instructions to meet their particular
requirements. Specifically, they may designate as
acceptable operands any of the basic operands and
additions to basic operands described in the chapter
"One-for-One Instructions." Programmers writing
their own macro-instructions may also designate an
entry in the numerical field as the method of supplying an ASU reference or other special information.
The process of creating a macro-instruction requires a thorough know ledge of a special language
which is described in the IBM publication on the preparation of macro-instruction for the 7080 Processor.

ADDRESS MODIFICATION
Add Address
Compare Address
Decrement Address
Increment Address
Inltlallze Address
Move Address
Subtract Address

(ADDA)
(COMPA)
(DECRA)
(lNCRA)
(IN ITA)
(MOVEA)
(SUBA)

ASSEMBLY CONTROL
Enter Interrupt Program
Leave Interrupt Program
Leave 80 Made
Enter 80 Mode
Speed or Space

(ENTIP)
(LEVIP)
(LEV80)
(ENT80)
(SPEED)

AUTOMATIC DECIMAL POINT
Absolute Value
Add
Decrement
Diminish
Divide
Divide or Halt
Increment
Multiply
Negative Absolute Value
Negative Divide
Negative Divide or Halt
Negative Multiply
Subtract
Sign and Zero Test

(ABSX)
(ADDX)
(DECRX)
(DIMX)
(DIVX)
(DVHX)
(INCRX)
(MPYX)
(NABSX)
(NDIVX)
(NDVHX)
(NMPYX)
(SUBX)
(TESTX)

DATA TESTING
Compare
Test for Numeric Field
Test If In Range

(CaMP)
(IFNUM)
(RANGE)

DATA TRANSMISSION
Blank Memory
Define ASU
Move
Restore Decimal
Zero Memory
Define CASU

(BLANK)
(ASU)
(MOVE)
(DEC)
(ZERO)
(CASU)

PROGRAM BRANCH CONTROL
Alternating Nap
Alternating Transfer
First Time NOP
First Time Nap on a Bit
First Time Transfer
First Time Transfer on a BIt
Set Switches OFF
Set Switches ON
Test Switch

(ALTNP)
(ALTTR)
(FTNOP)
(FTNPB)
(FTTR)
(FTTRB)
(SETOF)
(SETON)
(IFON)

TABLE
Add an Item
Delete an Item
Replace an Item
Search a Table
Table Control

(ADITM)
(DLlTM)
(RPITM)
(SERCH)
(TBCTL)

MISCELLANEOUS
Dead-End Halt
Link to Subroutine
Transfer Indirect
Type a Message

(STOP)
(LINK)
(TRIN)
(TYPE)

Figure 56. 7080 Processor General-Purpose Macro-Instructions
for Use in Autocoder Programs.

The remainder of this chapter is an introduction
to the general-purpose macro-instructions in the
General Purpose Macro-Instructions

37

7080 Processor library.,. The discussion is based on
the conventions and restrictions that apply to these
macro-instructions.
GENERAL-PURPOSE MACRO-HEADER FORMAT
The portion of a macro-instruction that is written as
a source-program statement is called a macroheader. Like other Autocoder statements, a macroheader is tagged if it is to be referenced. The
mnemonic code is placed in the operation field. Entries in the numerical field are rarely permitted.
Those entries which are permitted do not relate to
an ASU number or a bit as they do in a one-for-one
instruction. Most macro-headers have two or more
entries in the operand field; some may contain up to
fifty entries; and a few may have only one. The entries will be called operands throughout this chapter
and in the macro-instruction manual. Each operand
is terminated by a lozenge (0), the same symbol that
was previously explained as part of an RPT statement.
Operands may be placed in the operand and comments fields of the line on which the macro-header
starts, and may be continued in the operand and
comments fields of the next 49 lines on the coding
sheet. However, an operand may not be written on
two lines; i .. e., it may not be started in the comments field of one line and continued in the operand
field of the next line. Similarly, the lozenge which
terminates an operand may not be separated from it.
If the positions at the end of a line are insufficient
for both an operand and its lozenge, the positions
must be left blank, and the operand started in column 23 of the next line on the coding sheet. Operand continuation lines must be blank in the tag, operation, and numerical fields.
Comments may be started in the comments field
of the line on which the operands terminate, but the
comments must be separated from the final lozenge
by a minimum of two spaces. Comments may also
be continued in the comments field of succeeding
lines of the coding sheet.
TYPES OF MACRO-HEADER OPERANDS
The operands of a macro-header designate the data
and/or the instructions involved in the operations
the macro-instruction represents. Most operands
are either tags or literals.
Tag Operands
The tags may be those of defined data fields,
switches, source-program one-for-one instructions,
macro-instructions, and address constants. Other
38

tags that may be used as operands are those of
Class A subroutine items and generated descriptive
tags. Characteristics of items within Class B subroutines are not available to macro-instructions.
For instance, the function of the IFON macroinstruction is to test a switch and to transfer to one
of two specified instructions, depending on the status
of the switch. The operands of the IFON macroheader are the tags of the switch to be tested and the
tags of the transfer points; i. e., the instructions to
which the transfer is made if the switch is ON or
OFF. In the generated coding, the tags appear as
the operands of the appropriate one-for-one instructions.
In most cases, the tag of an instruction is used as
an operand in order to designate the instruction as a
transfer point. This is not true of the operands of
Address Modification macro-headers. Such operands designate the operands of other instructions,
rather than the instructions themselves. When an
Address Modification macro-header must designate
the operand of another macro-header, it may not
reference the macro-header by its tag alone. The
tag must be written as a special form of operand
called the macro suffix tag. This consists of a tag
to which a suffix is added. The suffix is of the form
#x or #xx where x or xx are numbers that designate
one of the operands of the macro-header being referenced. For example, a macro suffix tag designating
the first operand of a macro-header tagged MACRO
would be written as MACRO#l or MACRO#Ol.
Similarly, a macro suffix tag designating the third
operand would be written as MACRO#3 or MACRO#03.
The use of the macro suffix tag is illustrated at the
end of this chapter and in the macro-instruction
manual. No adjustments are permitted on a macro
suffix tag.

Secondary Field Definitions in Tag Operands
A secondary field definition is a description of the
characteristics of a data field. It is written as part
of a macro-header operand that references the field.
That is, the operand is the tag of the field; and it
causes the macro-instructions to treat the field as
having the characteristics that the secondary field
definition provides. Depending on the reason for
which a secondary definition is used, it may supply
characteristics identical to those previously defined
for the field~ or it may supply a different set of
characteristic's. A secondary definition must be
used in a macro-header operand that references a
data field indirectly, because the defined characteristics of the data field are not available to the Processor in such a situation.

The macro-header operand containing the definition is written in this order: the tag of the data field,
a comma, the secondary definition. A secondary
field definition may be supplied by the tag of a field,
a literal, or either of the RCD forms, #+xx. yy or
#bxx.yy.
Using the Tag of a Field: A macro-header operand
containing the tag of a field as a secondary definition
would be one such as TAGA, TAGB 0. The field
specified by TAGA will be treated as having the
characteristics of the field specified by TAGB.
If a field with the desired characteristics has been
defined, its tag may be used to supply the secondary
field definition. Otherwise, two fields must be defined with different tags and overlapped by use of a
location aS$ignment (LASN). Reference to the field
should be made by using the tag of the definition
which is appropriate at the time the reference is
made.
A generated descriptive tag may not be used as a
secondary definition.
Using a Literal: A macro-header operand containing a literal secondary definition would be one such
as TAG, #+XXX. X # 0. Regardless of the defined
characteristics of the field TAG, it is now defined
as a signed fraction consisting of three integer positions and one decimal position. This method can be
used to define only numerical fields other than unsigned fractions.
Note that the letter X is the only character that
can be used in defining integer and decimal positions.
Using the RCD Form: With the RCD form of secondary definition, the example given in item 2
above would be written as TAG, #+03.01 0. This
form is fully discussed earlier in this manual. This
method can be used to define signed or unsigned
fields only.
Literal Operands
A literal is actual data enclosed by pound signs (#)
(see "One-for-One Instructions"). In the coding
generated from macro-headers containing literal
operands, the literals appear as the operands of the
appropriate one-for-one instructions just as tags
appear as one-for-one operands. Whenever the
macro-instruction manual designates the tag of a
field as an operand, a literal may be used instead.
An unsigned numerical literal supplying a mixed
or pure decimal should not be used as the operand
of an Automatic Decimal Point macro-header, because the constant created from the literal will contain a special character (the decimal point). Floating point literals may not be used as the operands of
Automatic Decimal Point macro-headers for the

reason stated in the explanation of FPN. A literal
must not exceed 35 positions, exclusive of the pound
signs.
TYPES OF LOZENGES
Lozenges indicate to the Processor the termination
of each operand and the position which an omitted
operand would normally occupy in relation to the
other operands. There are two types of lozenges:
Fixed: A fixed lozenge must never be omitted. If
the operand it terminates is omitted, the fixed
lozenge is placed back to back with the lozenge that
terminates the preceding operand.
Conditional: A conditional lozenge may be omitted
only if the operand it terminates is omitted an.d no
additional operands are written. If other operands
follow an omitted operand, its conditional lozenge
must be placed back to back with the lozenge that
terminates the preceding operand.
OMITTED OPERANDS
The specifications in the macro-instruction manual
indicate that certain operands may be omitted. The
associated lozenge is assumed to be fixed, unless
the speCifications state that it is conditional.
When the omitted operand is a transfer point, the
generated coding provides a transfer to the next inline source program instruction. This may be most
rapidly seen in those macro-instructions which make
some sort of test and then transfer accordi11g to the
results of the test. The IFON macro-header should
be written with two transfer pOints, one to be used if
a tested switch is ON, and the other if it is OFF.
The second transfer point may be omitted. If it is
omitted, the generated instruction for the OFF condition is a transfer to the next in-line source program instruction.
THE IMPORTANCE OF PROPERLY DEFINED DATA
FIELDS
A macro-header makes a field reference when it has
the tag of a field as an operand. In other words, it
references a field that is defined by either an area
definition or a switch definition. In order to generate coding that is proper for the field, the Processor
must know the characteristics of the data that will
occupy the field. Obviously, it is not possible for
the Processor to examine the actual data at assembly
time. Consequently, the Processor obtains the
characteristics from the definition and generates
coding that is proper for the field according to its
definition. If the data does not conform to these
characteristics, it may be improperly processed.
Howevrer, the generated coding itself is not improper.
General Purpose Macro-Instructions

39

The importance of field definitions may be seen
in a macro-instruction that is used to compare the
contents of two fields. The fields may be alphameric
or numerical. The one-for-one instructions which
should be used to compare alphameric data differ
from those which should be used to compare numerical data. By using the macro-instruction, the programmer is relieved of having to select the proper
instructions, but the Processor cannot assume this
burden unless the characteristics of the field are
available to it. Similarly, if literals are used instead of the tags of fields, the literals must be
written in accordance with the standards previously
specified. For instance, an unsigned decimal
written as a literal will not be treated as numerical
data but as alphameric data.
EXAMPLES OF MACRO-INSTRUCTIONS AND
THEIR USE
The balance of this chapter contains examples of
several general-purpose macro-instructions in the
Processor library. The function and coding format
of each macro-instruction is followed by an example
that illustrates how it might be used and what instructions would be generated for that use. In
Figures 57 through 60, the macro-headers are overlaid with a band of gray to distinguish them from
generated instructions. The explanations should not
be considered as the specifications for the macr~
instructions. In some examples, certain available
options have been omitted entirely. Complete specifications are provided only by the macro-instruction manual.
13lank Memory -- BLANK

Tag

Operation Num Operand

ONE
TWO

NAME
RCD
RPT
~

TAGl

Tag

Operation Num Operand

Tl

BLANK

5

+

8 XXXX. ZZ

RCV
BLM
RCVS.
BLMS

ONE

@OOOOl
TWO

@OOOO8

Figure 57

Test Switch -- IFON
The function of IFON is to test a switch and to transfer according to the results of the test. The basic
format of the IFON macro-header is as follows:
Tag

Operation Num Operand

Tl

IFON

X1D X DX t:1
2
3

T1

is the tag of the macro-header, or is
omitted.
is the tag of the switch to be tested.
Xl
X~
is the tag of the ON transfer point; i. e. ,
2
the instruction to which a transfer should
be made if the switch is ON.
is the tag of the OFF transfer point. The
operand may be omitted, in which case a
transfer will be made to the next in-line
instruction. The lozenge is conditional.
In Figure 58, ON and OFF must be assumed to be
the tags of instructions. If OFF and its associated
lozenge had been omitted, the final instruction would
not have been generated.
Tag

The function of BLANK is to place blanks in a field.
The baSic format of the BLANK macro-header is as
follows:

0

Operation Num Operand
CHRCD

NEWYORK
CHICAGO
TAG2

X10 X 20X 3••••• .X 50D

A
B

~
LOD
CMP
TRE
TR

1
1

/IAN
NEWYORK
ON
OFF

Figure 58

is the tag of the macro-header, or
is omitted.
are the tags of the fields in which
blanks are to be plac~d. The
lozenges are conditional.
In Figure 57, TAGl indicates that the contents of
fields ONE and TWO are to be replaced by blanks.

40

Add -- ADDX
The function of ADDX is to add the data in two
numerical fields and place the result in a numerical
field or an RPT field. The numerical fields may be
signed or unsigned. The basic format of the ADDX
macro-header is as follows:

Tag

Operation Num Operand

Tl

ADDX

1

X1D X DX D
2
3

is the tag of the macro-header or is omitted.
is the tag of one numerical source field;
i. e., the field that is the source of one
set of data to be added.
is the tag of the other numerical source
field.
is the tag of the numerical or RPT re sult
field; i. e., the field in which the result
is to be placed.
Tag

Operation Num Operand

NINE
TEN

RCD

5
6

#t{)2.03
#t{)3.03

5
TAG3

RAD
SET
ADD
ST

NINE
@X)OOO6
#+75.000#
TEN

Figure 59

Increment Address -- INCRA
INCRA is an Address Modification macro-instruction. The function of this type of macro-instruction
is to modify other instructions, either macro-instructions or one-for-one instructions. The function of INCRA is to increment a field reference
made by another instruction, thus modifying the instruction so that it makes a different field reference.
An instruction makes a field reference by having the
tag of a field as an operand. INCRA designates the
instruction which makes the field reference and the

amount by which the reference is to be increased.
The basic format of the INCRA macro-header is as
follows!
Tag

Operation Num Operand

Tl

INCRA

X DX D
2
1

is the tag of the macro-header, or is
omitted.
Xl
is the tag of an instruction that makes the
field reference to be incremented.
X
is the increment.
2
In Figure 60, the first operand of INCRA is a
macro suffix tag,. designating the second operand of
MACRO. Initially, MACRO references FIELD,
However, INCRA modifies MACRO so that it subsequently references whatever is located 500 pOSitions above FIELD. For instanceT assume that
FIELD occupies locations 001000-001002. When
MACRO is executed initially,.. it will cause these
locations to be blanked. Once modified by INCRA,
it will cause locations 001500-001502 to be blanked.
(M00017#02 is a tag generated by the Processor).
Tag

Operation Num Operand

OTHER
FIELD

RCD

MACRO

RCVS
BLMS

OTHER
@X)00,98

BLMS

@X)OOO3

TAG4
TAG4

f

8
3

,

INCRA
RAD
AAM

15
15

A

A

MACR 0#20 #+SOOHO
#+500#
MOOO17#02

Figure 60

General Purpose Macro-Instructions

41

ADDRESS CONSTANTS

An address constant is a numerical constant consisting of a storage location. An address constant
statement designates the storage location by specifying one of four operands: tag, literal, actual, location counter. At assembly time, the locati(;~ as'=-signedto the tag, the literal, or the location counter,
or the location designated by the actual operand is
used to create the constant. ill effect, the function
of an address constant statement is to define a data
field that will contain a constant and to designate the
constant to be placed in the field. The actual
constant is generated by the Processor and placed
in the field created for it. Thus, an address
constant enables the user to reference a constant
that is not created until the program is assembled.
Address constants are used to initialize instructions, a procedure that alters the reference made
by an instruction or supplies a reference to an instruction that lacks one. For example, suppose
that an instruction must reference two record areas
alternately, areas tagged FIRST and SECOND. This
means that the operand of the instruction must contain FIRST at certain pOints in the program, and
SECOND at other pOints. To initialize the instruction (i.e., to modify the reference) address
constants must be created from each of these tags
so that one or the other of them can be placed in the
instruction as required. ill 'the assembled program,
the address portion of the instruction will alternate
between the actual locations assigned to FIRST and
SECOND. Note the difference between an instruction that references FIRST and an instruction that
references an address constant created from FIRST.
ill the former case, the instruction references the
contents of a record area; in the latter case, the instruction references a constant conSisting of the
storage location of the record area.
The basic operand of an address constant statement may be a tag, a literal, an actual, or a location counter. Operand modifiers may be used with
a tag or a literal to request a generated constant:

Modifier
Right-hand

Left-hand

High speed

42

Address Constant
Generated From
Storage location of the loworder position of a field,
instruction, or literal
Storage location of the highorder position of a field,
instruction, or literal
A left-hand address plus
four

Modifier

Address Constant
Generated From

High-speed nine A left-hand address plus nine
Size
The number of positions occupied by a field or literal
If no operand modifier is used, a right-hand address
will be generated as the constant. As the preceding
list indicates, a right-hand operand modifier may be
written, but it is not necessary.
Character adjustments to the basic operand cause
numerical adjustment of the address constant. Addition, subtraction, multiplication, or division by a
specified amount may be requested. For example,
a character adjustment of plus five would cause the
constant to be five greater than the storage location
referenced.
An address constant may be both operandmodified and character-adjusted. (Such an operand
may have to continue into the comments field.) The
operand modifier is a prefix to the basic operand; it
consists of the appropriate modifier symbol followed
by a comma. The character adjustment is a suffix
to the basic operand; it consists of the arithmetic
operator followed by a number designating the
amount of adjustment. The amount may not exceed
160,000. The symbols are as follows:

Operand Modifier
R,
L,
H,
S,
T,

Right-hand
Left-hand
High speed
Size
High-speed nine

Character Adjustment
+
*

/

Add
Subtract
Multiply
Divide

Assume that FIELD, a data field, is assigned to
locations 001300-001309. An address constant
statement having L, FIELD as its operand will cause
001300 to be created as the address constant. The
operand R, FIELD+6 will cause 001315 to be created
as an address constant. The same constant would
be created from FIELD+6. Since the field occupies
ten positions, the operand S, FIELD will cause a
constant of 10 to be created; the operand S, FIELD*5
will create a constant of 50.
Comments about an address constant may be
started in the comments field of the address constant
statement.

locations without regard to the positioning of its
low-order character. ASU zoning, if specified, is
properly generated as part of the constant. The
format of the ACON4 statement is as follows:

ADCON Address Constant
The function of an ADCON statement is to create an
instruction which consists of a four-character, unsigned address constant preceded by the actual code
for No Operation. The instruction is positioned in a
4 or 9 location. The ADCON statement is written as
follows:
Tag

Operation Num Operand

Tl

ADCON

T1
nn
Xl

nn Xl

is the tag of the address constant.
is ASU zoning or is blank.
is a tag, literal, actual, or location
counter.

Name
(Tog)

8

1011

Operation

13

R.F.e DA.i.».O.MF.

Num

.1.~

i.

25

A.'"
Il.&:t!

.4"».&.0"""

P

Operond

20 21 22 23

/l~.~,

I
F.1.~.s.TI

18

15 16

1

Operation Num Operand

Tl

ACON4

T1
nn
Xl

The ADCON statement creates an instruction of
the form Axxxx. A is the actual code for No Operation; xxxx is the address constant. The instruction
Axxxx will be pOSitioned so that the low-order character occupies a 4 or 9 location. Any ASU zoning
will be properly generated as part of the constant.
The ADCON statement in Figure 61 will cause an
address constant to consist of the storage location
of the right-hand position of the RECORDONE data
field. Instructions referencing the constant do so by
referencing its tag, FIRST.

6

Tag

2728

30

3233

35

3738 39

I

I
I
D,czI.D,O,N,£

I

I
I

I

nn Xl

is the tag of the address constant.
is an ASU number or is blank.
is a tag, literal, actual, or location
counter.

In Figure 63, the ACON4 statement is a request
for an address constant conSisting of the storage
location assigned to FIELD1. Since no operand
modifier is specified, the right-hand address will
be generated. The constant may be referenced by
its tag, TAG 1.
Operation

Name
(Tog)

6

1011

8

13

I~ I.E:"L.DIJ

20 21 22 23

IR.C.:!),

10+

1

I
Ir.t).~,1

I

I

I

Operond

Num

18

15 16

~c.

25

2728

30

32 33

35

37 38 3~

I

I
I

I

~, J E.L.1>I('),A/,/E"

0#.1.1

I

1

~

I

Figure 63

Figure 64 shows that the constant will consist of
the location assigned to the RECORDAREA field.
Since the operand modifier "H, " is used, the high
speed address will be generated.

~
Name
(Tog)

Figure 61

1011

Operation

13

15 16

18

Num

20 21 22 23

Operond

30

32 33

35

37 38 39

Figure 62 specifies that the left-hand address
constant consisting of the location of INSTRC TION
is to be zoned for ASU 15.
Nome
(Tog)

1011

Operation

13

15 16

18

Num

20 21 22 23

Operond

25

2728

30

32 33

35

3738 39

Figure 64

ACON5 Address Constant

Figure 62

ACON4 Address Constant
The function of an ACON4 statement is to create a
four-character, unsigned address constant. The
constant is placed in the next four available storage

The function of an ACON5 statement is' to create a
five-character address constant, either signed or
unSigned. The constant is placed in the next five
available storage locations without regard to the
positioning of its low-order character.' The sign,
if specified, is placed over the low-order character.
The format of the ACON5 statement is as follows:
Address Constants

43

Tag

Operation Num Operand

TI

ACON5

T1
s

S

without regard to the positioning of its low-order
character. The format of the ACON6 statement is
as follows:

Xl

is the tag of the address ·constant.
is + for a positive constant, or is - for a
negative constant, or is blank for an unsigned constant.
is a tag, literal, actual, or location
counter.

Xl

The ACON5 statement in Figure 65 specifies that
the location of the literal is to be made an address
constant. Note that the address constant will be
signed. The sign of the address constant is not related to the sign of the literal.
Operation

Name

Tag

Operation Num Operand

TI

ACON6

Xl

is the tag of the address constant.
is + for a positive constant, or
is - for a negative constant, or
is blank for an unsigned constant.
is a tag, literal, actual, or location
counter.
In Figure 67, the ACON6 statement requests that
5000 be generated as a constant.

Operand

Num

S

Name

(Tag)

6

8

-r.~,;C.,~

1011

I

13

15 16

18

20 21 22 23

1A.1!.,b.ll/,t.

25

2728

~..C ....... n.nl

I

I

Figure 65

Figure 67

Figure 66 shows a request for an unsigned constant twice the size of FIELD2. The constant 00012
will be generated.

Restrictions on an ACON6 Statement

Nome
(Tag)

6

J=. /

8

1011

.DI.1,

,Eo L .

I
-r~,&.~.

I
I

~

Operand

Num

Operation

(Tag)

1011

Operation

13

15 16

18

Num

Operand

25

20 21 2223

1JE',p'T.

f'

,~Z.z

IA,t!.oNS

2728

30

32 33

z .21z
I

S,

F. /.G1L-.b-,..w.!7

3233

35

I
I

3738 39

I
I

ASU zoning may not be speCified in an ACON6 statement.

~

35

3738 39

ADDRESS CONSTANT LITERAL

I
I

I

I

"

I

30

I

Figure 66

Restrictions on an ACON5 Statement
ASU zoning may not be specified in an ACON5 statement.
Any ACON5 should not be specified if there is a
possibility that the address from which the constant
is created will exceed 79999. In the event that a
constant is requested for such an address, 80,000 is
subtracted from the address. A message to the
effect that the constant exceeds the address limit is
provided at assembly time.

An address constant literal is an operand with a
double function; it is a request for an address constant and for an operand that references the constant.
The generated address constant is placed in the
literal table. For example, when an instruction
references a tag as part of an address constant
literal, a constant conSisting of the location assigned
to the tag will be created and placed in the literal
table. When the program is assembled, the operand
(address constant literal) of the instruction will be
replaced by the location assigned to the generated
constant. If a program requires many address constants, they should be created with address constant
statements. The address constant literal operand
is useful in a program that requires an occasional
address constant.
Writing an Address Constant Literal Operand

ACON6 Address Constant
The function of an ACON6 statement is to create a
six-character address constant. The constant is
placed in the next six available storage locations

44

The operand may contain a tag or a literal. Operand
modifiers must be used with either one, to specify
the type of address being requested. If ASU zoning
is to be generated as part of the constant, the ASU

number is placed directly after the operand modifier
and is followed by a comma. The basic format of
the entire operand is either of the following:
1. Operand modifier, plus a tag or a literal
2. Operand modifier, plus ASU zoning plus a tag
or a literal
The symbols for the operand modifiers and ASU
zoning are shown in the following list (nn represents
an ASU number):

Figure 69 specifies that the address constant consisting of the right-hand address of FIELD be zoned
for ASU 5. As in the preceding example, when the
instruction is executed, the address constant will be
placed in ASU 15.
Name

Operation

6

8

1011

13

I~ ~.E."L..7)1

Right-hand
Left-hand
High speed
Size
High speed nine

Operand
Modifier

Modifier and
ASU Zoning

R@
L@
H@
S@
T@

R@nn,
L@nn,
H@nn,
S@nn,
T@nn,

NOTE: The modifier and ASU zoning may also be
written in the form R@n, L@n, etc., when specifying
ASUs 1 through 9.
In Figure 68, an address constant is requested
for the right-hand address of FIELD. The instruction specifies that the address constant is to be
loaded into ASU 15. When the instruction is executed, the right-hand address of FIELD rather than
the contents of FIELD will be placed in ASU 15.

..a DJ"n.AlIL

I

18

15 16

.ri>.t!!..31.

25

20 21 222"
.2~.c

tAo

2728

J

.T.

L.O..11.

/.

30

3233

35

37 38 ~~

I
I

~

f

I

Address Type

Operand

Num

(Tog)

.-

.ildQ" C"

I

I

I~.~ E.L.:D

I

I

I

Figure 69

Arithmetic instructions, such as ADD, SUB, etc.,
cause a six-position signed constant to be created;
the constant is signed plus. In a secondary mode, a
five-pOSition constan,t, signed plus, is created. All
instructions requiring a 4 or 9 address, such as
LDA, AAM, TR, TMT, etc., cause a four-position
unsigned constant to be created and properly positioned in a 4 or 9 location regardless of the mode.
All other instructions cause a four-position unsigned
constant, positioned in a 4 or 9 location, to be
created for 705 II mode; a five-position unsigned
constant to be created for 705 III mode; and a sixposition, unsigned constant to be created for 7080
mode. In each case the maximum constant allowed
is dependent on mode memory size.
Restrictions on an Address Constant Literal Operand

Figure 68

Character adjustment may be used for the purpose
of modifying the constant itself. If character adjustment is written in an address constant literal operand, it will not be applied to the location of the
constant.
If an address constant literal operand is used in a
macro-header, it may not designate ASU zoning.

Address Constants

45

INSTRUCTIONS TO THE PROCESSOR

Instructions to the Processor concern the assembly
process. They are executed by the Processor at
assembly time. Consequently, these instructions
do not appear in object programs, although they are
written in the source program wherever they are
required. Through these statements, the programmer is able to communicate with the Processor.
The instructions to the Processor are listed below
according to the aspect of the assembly process that
they concern:
1. Standard Assembly Procedures
Location Assignment - LASN
Special Assignment - SASN
Relative Assignment - RASN
Assignment of Macro-Instruction Subroutines
- SUBRO
Assignment of Library Subroutines - SUBOR
Assignment of Literals - LITOR
Transfer Card - TCD
2. Object Program Content
Include Subroutine - INCL
Translation - TRANS
Source-Program Language - MODE
3. Object Program Listing
Skip to New Page - EJECT
Title for Routine or Comment - TITLE
4. Multiple Literal Tables
Literal Start - LITST
Literal End - LITND
5. Flags
INSTRUCTIONS TO THE PROCESSOR - STANDARD
ASSEMBLY PROCEDURES
Certain instructions to the Processor may be used
to alter standard assembly procedures. To understand how these instructions may be used, it is
first necessary to know what the procedures are:
Location assignments: The Processor assigns
storage locations in ascending order to the object
program. In making the assignments, it uses a
location counter that is set initially to location
00500. The parts of the object program are assigned in the following sequence: the machinelanguage equivalent of the source program, the
library subroutines, the main literal table. If no
subroutines have been requested by either the
source program or the Processor itself, the main
literal table is placed after the source program.
Standard "00" transfer control card: The Processor produces this as the terminal card of the
object program deck. (The next chapter contains
additional information on the object deck.) The
46

standard "00" card contains instructions to set
various ASUs. The final instruction on the card is
a transfer to the first instruction in the object program. At the time the object program is to be executed (object time), it is placed in storage by a loading program. When the loading program encounters
the standard "00" transfer card, it executes the instructions the card contains, thereby transferring
control to the object program itself.
The instructions to the Processor explained in
this section enable the programmer to direct the
Processor to do one or more of the following:
1. To use more than one location counter in making assignments
2. To assign specific locations designated by the
programmer
3. To alter the order of the parts of the object
program
4. To provide additional "00" cards, and to place
them within the object program
It is often necessary to modify the standard assembly procedure. For example, it must be done
when using IOCS (Input/Output Control System), because the IOCS routines occupy a large storage area
starting in location 00500. The object program,
therefore, must be positioned beyond the IOCS area.
The positioning is accomplished by starting the
source program with an instruction to the Processor
to set the location counter to a location above the
IOCS area.
The ability to specify storage assignments allows
the programmer to conserve storage space by overlapping assignments; i. e., by assigning the same
area of storage to more than one routine or block of
data. A housekeeping routine is frequently overlapped with another routine, since the housekeeping
routine is only executed once. By the use of instructions to the Processor, the programmer is able
to cause the housekeeping routine to be placed in
storage and executed before the other routine is
placed in the same area.
Another example of overlapping is the assignment
of two or more NAME definitions to the same area.
This is often desirable when the program is to process sets of records that possess different characteristics but require the same amount of storage
space. As long as all the records need not be in
storage simUltaneously, the same location assignment may be specified for the various NAMEs.
Location Assignment -- LASN
The function of a LASN statement is to set a location counter to a specified .location; 10 counters are

available. A LASN statement may set the designated
counter to one of the following:
1. An actual location specified by the programmer
2. An actual location, unknown to the programmer, that has already been assigned by the Processor to a field or an instruction
3. One location beyond the highest location assigned from the counter at any point in the assignment process
4. Location 00500, the initial location assignment
5. One location beyond the highest location assigned from a point in the assignment process specified by the programmer
Each time the Processor encounters a LASN, it
sets the designated counter and makes subsequent
assignments from that counter. This continues
until another LASN is encountered, or until the assignment process is completed. Multiple counters
are useful when specifying location assignments in a
program of many sections, because one counter can
be allocated to each section.
The LASN is written as follows:
TAG FIELD: This field must be left blank.
OPERATION FIELD: The mnemonic code LASN is
placed here.
NUMERICAL FIELD: The counter to be set is designated in column 22 of this field. The column is
left blank when designating the Blank counter; each
of the other counters is designated by one of the
digits 1 to 9. The Blank counter may be considered
the primary counter, since it is used by the Processor in the absence of any LASN statements. Additional information on the Blank counter is supplied
in the section "Location Assignments from the Blank
Counter. "
OPERAND FIELD: To set the counter designated in
the numerical field, the entry in this field may be
one of the following:
1. An actual operand. The counter is set to the
location specified by the operand.
2. The tag of a statement appearing anywhere in
the program before the LASN. The counter is set
to the location previously assigned to the instruction
or field identified by the tag. The tag may be character-adjusted.
3. A blank operand. The counter is set to one
location beyond the highest location previously assigned from it.
4. A location counter, with or without adjustment.
If there is no adjustment the assignment continues;
i. e., it starts in the next available location.
To reset the counter to location 00500, from
which the standard assignment process starts, leave
columns 23-73 blank, and place the character R in

column 74.. When used in column 74 of a LASN
statement, this character may be considered the
Reset character. (For additional information on the
Reset character see the section entitled "Flag Characters and Their Meanings. ")
COMMENTS FIELD: When a tag or an actual operand is used, comments about the statement may be
placed in this field. When writing comments, column 74 should be examined to make sure it does not
contain R. If it does, subsequent use of the counter
is affected as described in the section, "Flag Characters and Their Meanings. "
In Figure 70, storage assignments are shown to
the right of the hand-coded Autocoder statements.
Note that the assignments made after the LASN
statements are consistent with the requirement of a
4 or 9 location for instructions and with NAME statements that specify a location through an entry in the
numerical field.

Tag

Operation

Num o.perand) ASSIGNMENTS

LASN

@2oo0

f
START
ONE
TWO
END

NAME
RCD
CON

t

TAG

LASN
ADCON

o
4
7
4

~ 002000

~
003007
END
(003010
+
003013
'+04.03) 003020
00f24

* )

1 @500oo ( 050000
START (050004
)

EXTRA

LASN
RCD

1 TWO
7 #4()5.02

\

,
,

LASN

1

LASN

1

LASN

~

069994
003014
003020
) 001000
069995

~
R

r

000500
J
~
) 003025

Figure 70

LOCATION ASSIGNMENTS FROM THE BLANK
COUNTER: The Processor uses the Blank counter
unless directed by a LASN statement to do otherwise.
When the assignment of the machine-language version of the source program is completed, the library
subroutines must be aSSigned. The Processor uses
the Blank counter to make the assignments. It first
sets the Blank counter to one location beyond the
highest location previously assigned, no matter what
counter was used to make assignment. After it completes the subroutine assignments, it repeats the
same process in assigning the main literal table;
i. e., it sets the Blank counter to one location beyond
Instructions to the Proceasor

47

the highest location previously assigned. If no
LASNs have been encountered within a subroutine,
the Blank counter itself contains the highest location
previously assigned at the time the main literal
table is to be positioned. The programmer should
keep this use of the Blank counter in mind when
placing LASN statements in subroutines. (The entire assignment of library subroutines and the main
literal table may be altered by LITOR and SUBOR.
These are instructions to the Processor and are explained on subsequent pages. The assignment of
multiple literal tables is controlled by LITST and
LITND, as explained under "Multiple Literal
Tables. If)

The tag or location counter may be character-adjusted.
Note that the tag and numerical fields must be left
blank. Comments may be placed in the comments
field.
Figure 71 illustrates the fact that SASN assignments are ignored during subsequent LASN aSSignments.
Tag

Operation

~

LASN

Num Operand

SASN

~

@2000

002000

@3000

002499
003000

~
~

Restrictions on a LASN Statement

ASSIGNMENTS

LASN

\

~

004000
002500

A LASN statement may not be referred to by another
Autocoder statement.
Figure 71

Special Assignment -- SASN
Restrictions on a SASN Statement
The function of a SASN statement is to set the Blank
counter as follows:
1. To an actual assignment specified by the programmer
2. To an actual location, unknown to the programmer, that has already been assigned by the
Processor to a field or an instruction
SASN is a limited form of LASN~ Like LASN, it
may be used in library subroutines as well as in
programs. However, it differs substantially from
LASN in the following respect: The highest location
assignment resulting from a SASN is ignored when
the Processor sets the Blank counter to one location
beyond the highest location previously assigned from
the counter. (Such a setting is specified by a LASN
with a blank operand.)
In effect, location aSSignments resulting from a
SASN are no longer significant once the SASN is
terminated. r~.~~!!!~~<;?_~_.2!..~A!:a~es~ wh31 a
LASN .
tered, no matte
counter the
" \~, ()
a ypeofoperan
n'i.
tains.
.,
Because the SASN is a limited form of LASN, it
does not require a detailed explanation. It is written
as follows:

Operation Num Operand

Tag

SASN

is
is
in
is
48

Xl

an actual operand, or
the tag of a statement appearing anywhere
the program before the SASN, or
a location counter.

A SASN statement may not be referred to by another
Autocoder statement.
Relative Assignment -- RASN
This instruction allows a program or portion of a
program to be assembled at one location and to cause
all references to or within the program to be treated
as if they were assembled at a different location.
Various subroutines therefore, can be assembled
relative to the same location, and at object time one
of them can be moved for actual execution.
Locations will be assigned in the normal manner
to the entries following a RASN, but references to
them or anyone of them will effectively be to their
relative address.
A relative assignment will be terminated by any
LASN, SASN, or TCD.
In Figure 72, the routine beginning with TAGA
will be assembled starting at location 2000, but all
references to the routine will be assembled as if the
routine started at location 0300. The instruction
used to move the routine should reference actual
location 2000.
In Figure 73, the routine beginning with TAGA
will be assembled starting at location 5005, but all
references to the routine will be assembled as if the
routine started at location 0300. The LASN is used
to terminate the RASN. The instruction used to
move the routine should reference REFTAG + 5.
There are certain limitations to be observed when
using a RASN:
1. As with SASN, a RASN has no effect on the high
assignment counters.

2. If location assignment is under control of a
LASN or SASN at the time a RASN is encounte"red,
it continues under control of the LASN or SASN.
3. At the time a RASN is encountered, the following (in effect) occurs: The location counter is
incremented by one, and the high-order location of
the operand of the RASN is obtained. The difference
between these two must be a multiple of five, or inconsistent results will occur. Therefore, it is recommended that a RASN always be preceded by a
LASN or a SASN; and that both have as operands
actual addresses or tags that are similarly positioned with respect to the low-order location.
Tag

Operation

TR
LASN
RASN
TAGA CMP
TRE
SHR
TRZ
TR
TAGB
HLT
LaD
TR
CON 1 CON
CON2 CON
LASN
LaD

Num Operand) LOC INSTR
OUT
@2000
@300
CON 1
*+25
1
TAGB
TAGA
9999
01 CON 2
*+ 10
04 XXXX
01 Y

SU ADDRESS

(5004 18004

000004

~ 2000

,0300
2004
) 2009
2014
2019
2024
(2029
( 2034

40343
L0334
COO01
N0329
10304
J9999
803U4

01

~) 2039 10349.

2043
2044
5005
5009 803U4

01 CON 2

01

000343
000334
000001
000329
000304
009999
000344
000349

000344

is a location counter.
A tag or location counter may be characteradjusted.
The tag and numerical fields must be left blank.
Comments may be placed in the comments field.
Restrictions on a RASN Statement
A RASN statement may not be referred to by another
Autocoder statement.
Assignment of Subroutines Within Macro-Instructions - SUBRO
The function of a SUBRO statement is to cause the
Processor to treat the coding that follows it as a
subroutine and to locate it out of line. The Processor assigns storage locations to SUBRO routines
after it has assigned locations to Class A subroutines. The storage location at which the Processor
is to begin assigning. addresses is designated in the
operand of the SUBRO statement.
NOTE: A SUBRO statement must not be written in a
source program. It is designed to be used with
user-written macro-instructions. A complete explanation of the usage of a SUBRO is given in the
pUblication on the preparation of macro-instructions.

Figure 72

Assignment of Library Subroutines -- SUBOR
Tag

Operation

REFTAG TR
RASN
TAGA CMP
TRE
SHR
TRZ
TR
TAGB
HLT
LaD
TR
CON 1 CON
CON 2 CON
LASN
LaD

Num Operand

~

LOC INSTR

SU ADDRESS

(500418004
OUT
TAGAT3000300
CON 1
500940343
5014 L0334
*+25
1
5019 C0001
TAGB
5024 N0329
TAGA
5029 10304
9999
5034 J9999

01

CON2 r~OO3~

*+10
04 XXXX
01 Y

01 CON 2

5044 10349
5048
5049
5050
5054 803U4

000004

01

01

000343
000334
000001
000329
000304
009999
000344
000349

000344

Figure 73

A RASN statement is written in the format shown
below.

is an actual operand, or
is the tag of a statement appearing anywhere
in the program before the RASN, or

The function of a SUBOR statement is to specify the
starting location for the assignment of library subroutines. The SUBOR assignment supersedes
the standard subroutine placement; i. e., after the
last instruction in the program. SUBOR enables the
user to position the block of subroutines anywhere in
storage, and the statement itself may be written at
any point in the program. For a program written in
two modes, it may be necessary to place the subroutines below the storage limit of the secondary
mode. For example, the primary mode of a program
is 7080, and the secondary mode may be 705 III. If
the 705 ill portion of the program must have access
to the subroutines, and it is anticipated that the final
instruction will occupy a location close to or beyond
the storage size of the 705 III, a SUBOR must be
used to position the subroutines in the lower portion
of storage. This would alter the order of the objectprogram parts so that the block of subroutines would
be placed within the machine-language equivalent of
the source program. It may even be desirable to
place the subroutines at the beginning of the object
program.

Instructions to the Processor

49

The SUBOR statement is written as follows:
Tag

Operation Num Operand
SUBOR

Xl

Xl

is an actual operand, or
is the tag of an Autocoder statement, or
is a location counter.
The tag or location counter may be character for consistency adjusted. The tagged
statement must precede the SUBOR statement.
Comments may be placed in the commends field.
Figure 74 indicates that the programmer assumes
the subroutines cannot possibly occupy more than
5,000 positions.

The tag or location counter may be character-adjusted. The tagged statement must
precede the LITOR statement.
Comments may be placed in the comments field.
In Figure 75, the Processor is instructed to start
the main literal table assignment at the same location already assigned to TAG. It must be assumed
either that the contents of TAG are no longer needed
when the main literal table is actually placed in
storage or that the contents of TAG are placed in
storage after the main literal table is no longer
needed.
Nome
(Tog)

6

8

1011

Operand

Num

15 16

I

18

Operand

Num

20 21 22 23

25

?

I
I

Operation

Operation

13

t..

J.T.I'l.~

:1

I

IrA.t:..

2728

30

32 33

35

37 38 3~

I

I

I

I

I

I

I

I

30323335373839.

Figure 75

Restrictions on a LITOR Statement

I : : : : ; : :.: : I : : : : I : I : : : : : : : : : I : : : : : :t
Figure 74

A LITOR statement may not be referred to by another Autocoder statement.
A LITOR statement cannot be used to position
multiple literal tables. The LITST and LITND
statements must be used for this purpose.

Restrictions on a SUBOR Statement
Transfer Card -- TCD
A SUBOR statement may not be referred to by another Autocoder statement.
Assignment of Literals -- LITOR
The function of a LITOR statement is to specify the
starting location for the assignment of the main
literal table. The LITOR assignment supersedes
the standard main literal table placement, which is
after the subroutine block or after the last instruction of the program if no subroutines are used.
LITOR enables the user to position the main literal
table anywhere in storage, and the statement itself
may be written at any point in the program. (The
previous discussion on the use of SUBOR also applies to LITOR.)
The LITOR statement is written as follows:
Tag

Operation Num Operand
LITOR

Xl

is an actual operand, or
is the tag of an Autocoder statement, or
is a location counter.

50

The function of a TCD statement is to create a "00"
transfer control card in addition to the standard "00"
card that terminates the object-program deck. The
additional "00" card will be internal to the object
program, occupying the same relative position in it
that the TCD statement occupies in the source program. If a Z character is placed in column 74 of
the TCD statement, the generated TCD "00" transfer control card will be produced at the end of the
object program and will replace the standard "00"
card (see the section "Flag Characters and Their
Meanings").
.
The TCD statement must be followed by Autocoder
statements that specify the contents of the card; i. e. ,
by the instructions or the instructions and data the
card will contain. The last of these Autocoder statements must be a transfer back to the loading program or to another object-program instruction that
is already in storage. A LASN (or SASN) statement
must be used after the final statement supplying the
contents of the "00" card. A program may contain
more than one TCD statement. Multiple TCDs may
be written consecutively, or interspersed throughout
the program.

The format of the TCD statement is as follows:

Comments about the "00" card may be written in the
comments field. A tag is not needed.
THE EFFECT OF THE "00" CARD ON THE LOADING PROCESS: As previously explained, as soon
as a "00" card is loaded into storage, it causes the
loading program to interrupt the loading procedure
and to execute the instructions on the card. The
area of storage assigned to the contents of any "00"
card is the input area used by the loading program;
i. e., locations 000080-000159. On the standard
"00" card that the Processor automatically produces,
the final instruction is a transfer to the first instruction in the object program. A return is not made to
the loading program, because the standard "00" card
is the final card of the object-program deck. In
contrast, the "00" card created by a TCD statement
is followed by additional object-program cards.
Consequently, this "00" card must contain as its
final instruction a transfer back to the loading program, or to some other routine already in storage,
that will ultimately return control to the loading
program.
A "00" card is often used to execute an overlapped routine, as shown in Figure 76. As soon as the
"00" card is placed in the loading input area, a
transfer is made to the HOUSEKEEP routine, which
is already in storage. The last instruction of the
routine is a transfer back to the "00" card, which
transfers in turn to the loading program. When
loading is resumed, the HOUSEKEEP routine will be
overlapped by the CALCULATE routine.

Restrictions on a TCD Statement
The machine-language version of the Autocoder
statement specifying the "00" card content may not
exceed 65 positions. (A machine-language instruction occupies five positions. )
If an object program contains "00" cards created
from TeD statements, the input area of the loading
program used with the object program must start at
location 000080.
INSTRUCTIONS TO THE PROCESSOR THAT CONCERN OBJECT-PROGRAM CONTENT
Include Subroutine -- INCL
The function of an INCL statement is to designate a
library subroutine that the Processor is to insert in
the object program. The source program must also
contain an instruction or a routine that supplies the
linkage to the subroutine designated by an INCL
statement.
The format of the INCL statement is as follows:

INCL

Name

Operation

13

15 16

18

Num

2728

1011

13

15 16

18

20 21 2223

Operand

I

Ii. I.N.K

30

I

:~

32 33

Operand

Num

Operation

(Tag)

8

(Tag)

1011

Xl

is the five-character mnemonic identification
code of the subroutine to be included.
Comments about the subroutine may be written in the
comments field.
The function of the macro-instruction LINK, used
in Figure 77, is to provide linkage to a subroutine.
The subroutine is ROOTS; the tag of its entry point
is STEP 1.

6
Name

Operation Num Operand

Tag

I
I

l.r.N.~.L

25

2728

30

32 33

35

3738 39;

hs.T.FP1~

I

I

I

IA.D ..D.T.~I

I

I

I

Figure 77

Figure 76

TYPES OF LIBRARY SUBROUTINES: Programmers
may write subroutines in Autocoder language and add
them to the standard Processor library. Such a subroutine will be included in a program assembly only
if it is designated by an INC L statement. The
standard library also contains subroutines that are
required by macro-instructions, but the Processor
automatically supplies these subroutines, and the
details of their inclusion are not relevant to the use
of INCL.

Instructions to the Processor

51

Two types of subroutines may be written in Autocoder language:
1. Class A. These may contain any Autocoder
statement.
2. Class B. These may contain any Autocoder
statement, including NAME entries,
except the following: a macro-instruction other than ENT80 or
LEV80; an INCL that designates a
Class A subroutine; a TRANS entry
having the tag of another location
as an operand.

other than an address constant literal; such an operand will be treated as an actual operand. The
maximum number of TRANS statements with symbolic
operands is 50 per Processor run. This operand
may not be used in Class B subroutines.
COMMENTS FIELD: Comments may be placed here.
In Figure 78, the TRANS statement equates
MASTERTAPE to an actual tape address. In the object-program listing, the machine-language version
of the SEL instruction will contain the address 0200.
Name

Restrictions on an INC L Statement
An INCL statement may not be referenced by another Autocoder Statement.

6

8

13

18

15 16

I

s'E:L

I

~

,.,..(I..So. T.EIAz

Operand

Num

Operation

(Tog)
1011

20 21 22 23

.r. A.P.E ITA.A.N.~

25

2728

32 33

35

37_~

1M AS. T.E1~. T.A.P.E

I

I

I

I

I

I

I

ib .. 2 0 0

I

Translation -- TRANS

30

Figure 78

The function of a TRANS statement is to equate the
operand of a one-for-one instruction into an actual
location derived from the operand of the TRANS.
The TRANS statement designates an actual location and equates it to the reference made by the
operand of a one-for-one instruction. More than
one instruction may reference the same TRANS
statement. In this case, all references will be
equated to the location designated by the TRANS.
The TRANS statement is written as follows:

Assume that location 05009 is assigned to the
first instruction generated from the ADDX macroinstruction in Figure 79. The operand of the TR
instruction is also translated to 05009~ because the
TRANS statement does not exist in the object program. The * operand of a TRANS statement is, in
effect, *+5.
Name
6

TAG FIELD: The entry in this field must be the tag
that appears as the operand of the one-for-one instruction making the reference.
OPERATION FIELD: The mnemonic code TRANS is
placed here.
NUMERICAL FIELD: This field must be left blank.
OPERAND FIELD: The entry in this field may be
one of the following operands:
1. An actual operand. This location will appear
as the operand of an object program requesting instruction, regardless of the memory orientation of
the operation.
2. A location counter without character adjustment (*). The location of the instruction following
the TRANS will appear in an object-program instruction wherever the tag of the TRANS appears as
a source-program operand.
3. A location counter with any character adjustment. The location of the instruction immediately
following the TRANS with character adjustment applied will appear in an object-program instruction
wherever the tag of the TRANS appears as a source
program operand.
4. A tag of another location, including the location of another TRANS. The operand may have a
character adjustment and/or an operand modifier
52

8

13

I
IN:E.X.T.

18

15 16

Operand

Num

Operation

(Tog)
1011

20 21 22 23

I-r.R.

25

IN: &:- X.

2728
'T.

30

32 33

I

I
I

I
I
IR£".E.tr. I

~

I

1r.~ ..4.N.S'

I~.

A.D.J).X

t:> N.t:: .l:t.11L.1.":rI. r. #

I

I

_37~~

I

I

1

35

I

I

Figure 79

If the RD instruction in Figure 80 is assigned to
location 03059, the operand of the TR instruction
will be translated to 03054. This results from the
fact that the TRANS statement does not appear in the
object program. Consequently the BSP instruction
is the instruction actually preceding the RD instruction and is assigned to location 03054.
Name
6

8

(Tog)
1011

I

18

15 16

1

I

18.SP.

~4 . . . . 41

I

I
Figure 80

20 21 22 23

-r:Jfl.

I

Operand

Num

Operation
13

25

27 28

I&Rg~JI:'I

I

I

1-r.R...oJtl.s

,*, -S':

IR"

1.-24ril

J
I
I

30

32 33

3S

3738311·

I
I
I
I
I
I

Restrictions on a TRANS Statement

File or FORTRAN statements. The statement is
used whether or not the Autocoder portion also contains DeCision, Arithmetic, and Table statements.

If a TRANS statement has a location counter, an

actual operand, an operand modifier, or character
adjustment, the statement that references the tag of
the TRANS cannot have an operand modifier. In any
of these cases, an operand modifier would have no
significance.

Nome

Operation

Operand

Num

(Tog)

6

8

1011

I
I

13

15 16

18

M.b.:JJ.£.

20 21 22 23

25

2728

30

1..4.u. 7.(') .l'!in.V .¥Oil.
I

32 33

35

3738 39

I
I

I
I

Source-Program Language -- MODE
Figure 83

An Autocoder program may contain statements
written in the following languages:
1. FORTRAN
2. Report/File
3. Decision
4. Arithmetic
5. Table-Creating
The term "higher languages of the 7080 Pro ....
cessor" includes all of the above-listed languages
except FORTRAN. MODE statements are instructions to the Processor that indicate a change in the
language of the source program, and they must be
used in Autocoder programs that contain Report/
File statements and/or FORTRAN statements.
MODE statements may not be tagged, but comments may be written in the comments field.
FORTRAN MODE STATEMENT: The statement in
Figure 81 must precede each FORTRAN portion of
an Autocoder program.
Name

Operation

Operand

Num

(Tog)

6

8

10.\1

13

I

15 16

18

20 21 22 23

M.lJ:J).E.

I=,

25

2728

30

32 33

I

I

35

I
I

OR.T.AIA..N.

3738 39.

I
I

Figure 81

The operand FORTRAN indicates that the subsequent
statements are in standard FORTRAN format.
REPORT/FILE MODE STATEMENT: The statement
shown in Figure 82 must precede each Report/File
portion of an Autocoder program.

6

8

Nome
(Tog)
1011

I
I

Operation
13

15 16

18

Num

Operand

..20 21 2223

M.,,:r>.#.

~

25

2728

IIrD"II-r

I

30

32 33

I
I

35

3738 39

I
I

Figure 82

AUTOCODER MODE STATEMENT: The statement
shown in Figure 83 must precede each Autocoder
portion of a program if that portion follows Report/

NOTE: This MODE statement is not used when the
entire program consists of Autocoder statements
alone or Autocoder statements in combination with
Decision, Arithmetic, and/or Table statements.

CODING GENERA TED IN 7080 MODE

The terms "7080 mode" and "secondary mode" are
used throughout this manual. They refer to the object machine for which the Processor produces coding, makes location assignments, etc. The program
mode is communicated to the Processor by using the
macro-instructions Leave Eighty Mode (LEVSO) and
Enter Eighty Mode (ENT80), both of which are described in the macro-instruction manual. The 7080
mode is assumed until a LEV80 is encountered.. Of
course, if the entire program is in 7080 mode, the
LEV80 and ENT80 are not necessary. Since these
macro-instructions are Assembly Control macroinstructions, they should be considered along with
other instructions to the Processor.
LEV80 and ENT80 affect the coding generated
fronl the statements in the portion of the program
that each of them precedes. The Processor generates 7080 instructions until it encounters a LEV80.
It then generates 705 II or 705 III coding (depending
on which is designated as the secondary mode for the
assembly) until ENT80 is encountered.
The Processor then resumes generation in 7080
mode. The program mode is a consideration in
using address constants, macro-instructions, onefor-one instructions, and instructions to the Processor. For example, the Processor generates an
EIA instruction when it encounters an indirect address in the operand of an instruction in the 7080
mode portion of a program. This is true whether
the indirect address appears in a hand-coded one-forone instruction or a generated instruction. As another example, an ACON6 should not be referenced
by an instruction outside the 7080 mode portion of a
program.

Instructions to the Processor

53

lines on the coding sheet, the lines of the paragraphs
will be treated as TITLE continuation lines.
NUMERICAL FIELD: This field may contain an
entry in the first TITLE line. However, it must be
left blank in the continuation lines. It is recommended that the numerical field be left blank at all
times.
TAG FIELD, OPERAND FIELD, COMMENTS FIELD:
Any or all of these fields may be used for the descriptive information. The commentary does not have
to start in the first column of any of the fields, and
it does not have to extend to the end of the comments
field before a continuation line is started.

INSTRUCTIONS TO THE PROCESSOR THAT CONCERN THE PROGRAM LISTING
Skip to New Page -- EJECT
The function of an EJECT statement is to advance
the listing to a new page. The program statement
that follows EJECT will be the first statement on
the new page. Unless the listing is controlled by
EJECT statements, each page will contain 55 lines
of print. The statement is written as shown in
Figure 84. It may not be tagged, and it may contain only one line of comments.
Operation

Nome

Common Uses Of Title

Operand

Num

(Tog)

6

8

1011

13

I

20 21 2223

18

15 16

2728

25

30

32 33

I
I

I

E.JE.c.T

I

I

35

37 38 39

Describing the function of each program portion,
summarizing program procedures, and providing a
table of contents for the program listing are some of
the uses for TITLE. In addition to appearing in the
program listing, all TITLEs are also printed in a
special section of the Operator's Notebook, an optional feature of the assembly documentation provided by the Processor. This special page shows
each TITLE and its location in the listing. The
TITLE page of the Operator's Notebook is useful as
an index for the program listing. It is often desirable to have information about the program at the
start of the listing and/or before each major program portion. TITLE can be combined with EJEC T,
as in Figures 86 and 87, to provide a page of commentary only.
When planning pages of commentary or describing
program parts, it should be remembered that an
EJECT statement before each part will cause that
part to appear on a new page of the listing. Thus,
EJECT and TITLE may be used to separate each
part of the program, to describe it, and to provide
a table of contents or an index. The standard listing
page contains 55 lines unless EJECT is used. In
Figure 86, it must be assumed that TITLEs designating the four program parts have been used elsewhere
in the program, and that this TITLE page is to be the
introductory page of the listing.

I
I

Figure 84

EJECT does not appear on the listing page. However, it is assigned an index number, and the number is one greater than the index number of the
statement that precedes the EJECT. (Index numbers
are explained in the section, "Details of the Program Listing. ")
Title for Routine or Comment -- TITLE
The function of a TITLE statement is to place lines
or paragraphs of descriptive information in the program listing. TITLE may be used in any way the
programmer desires. Some of the more common
uses will be discussed following the specifications
for writing the statement.
The TITLE statement is written as follows:
OPERATION FIELD: The mnemonic code TITLE is
placed here (Figure 85). If the information is continued into subsequent lines of the coding sheet (i. e. ,
is written as a paragraph) only the first line must
contain TITLE. If a series of paragraphs is
written, and each is separated by one or more blank

6

1011

I
I

I
Figure 85

54

No",

Operation

Nome
(Tog)

8

13

15 16

18

r.1.7"L £"

25

2728

30 __E ~_3_3_5_~? }11...}~ ~43

..r1JJ.t1. S •

TN._C.T.II!

45

47 48

50

I

I
I

165

167

1
1
169

I

I

I

I

I
5253

55

tljc.+r ~.t!4-~~-+~Etv#-LFlole,

~~P-tV~-.l? 1Z-tA\.£'- .l:.~
I

I
62163

Comments

Operand

20 21 22 23

1

57 58

I

60

I

I
1
1
I
1
I
1
I
I
1
I
oM ~.E04rti'¥tr+-W~~~o Icf-IRIAIMI· 1
1
1
1
I
I

I

I'

I

I

I

I

I

I

1
I
I

I

I

I

I

1

I
171

I

1
I
173
I
I
I

1
I
I
I
1
1
1
I

I
I

I
I

"
7·'
..

Name

6

8

13

18

15 16

I

1T:"7"."T:L

Operand

Num

Operation

(Tag)
1011

20 21 22 23

2728

25

35

.JO.A.l' ID.D

AAle

.#

.P.~JII.T.

I

I

:(

I

I

57 58

I

I

JII.D.U.T..z~

.I.IIN ~,C,

II, 11:. s, .D,Ah,y.

1.

~

#

I

I

I

I

I

I

I

1

I

I
I
I
I
I

I

I

1

I

171

173 74

I

I

I

I
I

I
I

I

I
I
I
I

I
I

I
I
I
I

I

I

I

I
I

I
I

I

I

I

I
I
I

I

I

I
I
I

I

I

I
I

169

I
I

I
I

I

I

167

I

I
I

I

I

I

I

I

I

I

I

I

I

g

I
I

I

I
165

1

I
62163

~. d&:,p.I.AI.&1

1"-

I

60

I

LI. ...

I

1

55

ICI>"",,# IJO ..D.R.~.s"1

-

"L- ..

5253

50

,Ti»,£',

I

'J#'". 1.1r.L!..7

47 48

,~ .0 .N, r..oI.1: ,JIj IS,

I

:?

I

.1

45

I ... _

I~ ~

L.L

I

I
I

4243

3738 3940

I

I

I

Comments

3233

30

I

I

I

T

I

I

I

I

I

I
I
I

I

I

I

1

I
I

I
I
I

I

I

I

I
I

I
I

I

1

I

I

I

I

I

I

I

1

I

I
I
I

I

1
I

Figure 86

Name

Operation

Operand

Num

I

Comments

I

(Tag)

6

6

10 \I

I

13

15 16

16

20 21 2223

IT.~,TJ.I!

25

I~R,~

2726

30

32 33

35

~JP"L,._~ I... "",

. .PIA. Y.JP.n.L IL

1

I~.().N.T,A.I.N,S

I

1F...o.l!,/J, 1~ . .t'.E.

L> ' "

IAA.R.'T.11

ILl.D,

.~,AtjM',~r.P,.:r IAI&

1~L1JP

17J,J:'":':,

r,Alir, r, T ,"',AlI.~

..,..,1

I

I
I

,rlr.JI

I

I

I

,p\.Q JI2 Ir,s

,}:IO,I,).Je

.,

(

~
IFJ.£C.7

4243

3736 39 40

,4,A/,.l)

,I

45

47 46

T.'/,u:ls

,I ,r,)JtE,

50

5253

55

57 56

,P,JP~ L.... tI1 AM

!:D,E,r,A,rl,

I

I

I

I

IDr-,

T ..J!

,2,D,i

In '"

.,. .. 11

.:1..111

I

I

I

I

I

J

I

I

I

I

I

I

I

1

I

I
I

,Ri.E',LI .... ,lJi

I

I

I

171

173 74

I

I

I

I
I

I

I

I

I
I

I

1

I
1

I
I
I

I

I

1

I

I

1

I
I
I
I
I

I

I
I

I

I

I

I

I
I
I

:
1

I

I
1
169

I

I

I

I

I

I

I

I

167

1

I

I

+-

I
I

165

I

L .r:sl"r,r~

I
I

I

I

1

I

I ,/". 1£l.Al.sl"'-,.4.N. T,sl

62163

I

I

.D.~I

.S,

..4,11 .r.JJ.£' Ip,D,IAI,Tls

60

I

9

I

I
I

I
I
I

I
I
I
I
I
I

I

Figure 87

In Figure 87, it must be assumed that the listing
page containing each of the parts is headed by a
TITLE describing that part of the program.

INSTRUCTIONS TO THE PROCESSOR - MULTIPLE
LITERAL TABLES
The Processor can build more than one table of
literals and locate these tables in a program at any
pOints requested. When literals are thus inserted
into a program, the location counter is incremented
by the length of the table of literals. The counter
will then contain the location assignment for the
entry immediately following the termination of the
table. This feature is especially valuable when used
with routines that can be overlaid. It makes it
possible for a routine to be accompanied by its own
literal table, so that both can then be overlaid by
another routine.
A multiple literal table is requested by using
LITST (Literal Start) and LITND (Literal End) statements. (These instructions to the Processor are
described in detail later in this section.) Within the
size restrictions noted in the section "Restrictions
on Multiple Literals, " all literal operands and address constant literal operands that fall between a

LITST and a LITND will be placed in one multiple
literal table by the Processor. Literals that are not
assigned to a multiple literal table will be placed in
the main literal table.
Each multiple literal table will normally follow
the instruction preceding the LITND statement. If
the last instruction is an assignment, the table will
be placed at the location specified, as in Figure 880
The assignment of a multiple literal table cannot be
changed by a LITOR statement.
Literal Start -- LITST
A LITST statement informs the Processor that all
literal and address constant literal operands between
it and the next LITND statement are to be placed in
one multiple literal table. The format of the LITST
statement is as follows:

Comments may be placed in the comments field.
Inl3tructions to the Processor

55

Name
(Togl

6

8

10 II

Operation

13

15 16

I

Num

Operand

Comments

18___ fQ.~ll.. __ ~ __ E?8___ ~2......_...E 3~ ____F3!!_E~

S1J.S./tJ.

A.N. Y.L~+-+_+- --+-+--+--+--h-

4243

45

4748

50

55

5,58

60

62:63

-+-+-1

1

I

III-+--

L .R.S N.

I

--t-+--t--t-h-+-+-t---+--+-+-+--L+- ~~4.N~#~.j...f~_~~·M

I

:65

:67

:69

9

I

:71

:73 74

f,s..A..sj..t+--+r_+t:t~_~E~~_--;-L-~__

--,---+-+-+--l-+-+--+--+- L.r. ToIII. 'D --+--_ ---t-t-+-+++-+-+--+-- -+-+-~--t--!--+- -+--+---+-+-+--+--+-+-+_+_+_+---l---._+-+-I-1
.

I

I
I

5253

I

I

I

I

I

I

I

I

I

I

I
iliA!. T1

I

I

I

I

I
I

I
I

I

I

I
I

I

I

I
I

_

::::::

Figure 88

Restrictions on a LITST Statement

where

A LITST statement may not be referred to by another Autocoder statement.
Literal End -- LITND
Y

A LITND statement informs the Processor that all
the literals that refer to the same multiple literal
table have been processed. The Processor will not
locate the table either at the location following the
entry that precedes the LITND, or at the location
indicated by an assignment instruction. The format
of the LITND statement is as follows:

Comments may be placed in the comments field.
Restrictions on a LITND Statement
A LITND statement may not be referred to by another Autocoder statement.

is the memory size of the first literal following a LITST.
is the memory size of the last literal before
a LITND.
is the number of address constant literals
requested.

Duplicate literal operands should be counted only
once, since they will appear only once in a multiple
literal table.
If Z is greater than 650, not all the literals will
fit into the table. The maximum size of an internal
table used by the Processor when building multiple
literal tables is 650. As each literal is encountered,
it is placed in the internal table, preceded by a
three-position control field. Each address constant
literal requires 17 positions in the table. Thus, in
Figure 89, the address constant literal and the
literal operand will require 24 internal-table positions: 17 positions for the address constant, and 7
positions for the literal operand. (The sign of a
literal is not counted.)

Restrictions on Multiple Literal Tables
A program may request as many as 9,999 multiple
literal tables. The allowable size of a given table
will depend on the type of literals specified. If no
address constant literals are specified, the guaranteed minimum size of a multiple literal table is 200
literal positions. The guaranteed minimum size of
a table that contains address constant literals is 150
pOSitions.
In actual practice, a multiple literal table will
probably hold more entries than these minimums.
To determine whether all the literals between a
LITST and a LITND will fit into a given table, the
following formula can be used:
(X + 3) ••• + (X + 3) + 17Y
1
n

56

z

Figure 89

When the internal table overflows, the literal
causing the overflow will be assigned to the main
literal table, not to a multiple literal table. Any
smaller literals that follow the literal causing the
overflow will be placed in the internal table, as long
as there is room. If both an address constant literal
and its literal operand cannot be located in the
internal table (as in Figure 89), both will be included
in the main literal table.
It is sometimes desirable to place a literal in the
main literal table instead of in a multiple literal

table. This can be effected by placing an L flag in
column 74 (see "Flag Characters and Their Meanings").

flag, must be on a line (card) that does not contain
any other operand.
C -- Entire Card is a Comment

FLAG CHARACTERS AND THEIR MEANINGS
Flags are a means. of communicating with the Processor. Specific single-character flags, explained
below, have been defined for use in column 74 of all
input to the Processor except FORTRAN and
COBOL statements. Additional flags may be allocated in the future, and they will be made available
as soon as they are completely defined. Should any
character be encountered in column 74 when its use
is unintentional, inconsistencies may occur in the
assembled program.
@ -- Force Program Card

This flag will cause the output produced from the
entry containing the flag to begin on a new program
card.
A -- Reduce Location Assignment Phase Assembly
~

This flag is for use within Class B subroutines. It
is placed in column 74 of statements which have tags
that will be the operands of assignment statements
(e.g., LASN, SASN, RASN).
All entries bearing this flag will be placed in a
table that is used when assignment statements are
encountered. This reduces the assembly time for
Class B subroutines (which are processed in the
location-assignment phase).
B -- Scan Entry from Right to Left
This flag will cause the Processor to scan the operand of the entry containing it from right to left,
rather than from left to right.
On encountering a left literal symbol in the operand of a one-for-one instruction that contains the
B flag, the Processor will then scan from column 73
left to a literal symbol. Everything between the two
literal symbols will be considered an unsigned
literal. Valid modifiers and character adjustments
will be honored.
The B flag with an operand of a macro-header
will cause a scan from column 73 left to a lozenge.
Everything from column 24 through the column two
positions to the left of the lozenge will be treated as
an unsigned literal of that length. (The characters
in column 23 and the column to the left of the lozenge
will be assumed to be literal symbols, and will be
dropped. ) The operand to be so treated, with this

Columns 6 through 73 of an entry containing this flag
will be considered a comment. Entries so flagged
will also be printed, single spaced, ona separate
page of the Operator's Notebook. Entries with this
flag that are contained in the input to a librarian run
will not be treated as components of macro-instructions, and will be removed. Their function in this
case is solely for the purpose of listing on an IBM
407.
D -- Delete All Messages Created for This Entry
An entry containing this flag will be processed
normally but diagnostic messages (if any) will not
be produced for it.
F -- Processor Chain Indicator
This flag indicates the beginning and end of a macroinstruction chain. It is used when the chain contains
macro suffix tags and/or generated descriptive tag
operands. (Its use is explained in the macro-instruction manual.)
G -- Treat Change Entry as Generated Entry
This flag is provided for use with change entries
introduced in a high-speed assembly run. It will
cause the entries containing it to be considered as
generated entries during a subsequent reassembly.
That is, during a subsequent reassembly the entries
will be deleted, and during a subsequent high-speed
assembly the entries will be retained.
H -- Halt Loop
This flag, intended for use in entries that constitute
the error-indication portions of a program, will
cause entries containing it to be listed on a separate
page of the Operator's Notebook. The H flag is valid
only on one-for-one instructions.
L -- Main Table Literal
This flag is intended for use with statements that
have literal or address constant literal operands,
and occur between a LITST and a LITND. When the
Processor finds such a statement containing an L
flag, it will treat the operand as a main-table literal
rather than as one belonging in a multiple literal
table. The L flag provides a convenient means of

Instructions to the Processor

57

preventing repeated generations of the same literal
in a program that uses multiple literal tables.

beyond the highest assignment made by the Processor after it encountered the Reset character.

M -- Operand is to be Modified

S -- Suppress Program Cards

This character may be used to flag all entries having operands that are not blank, but are to be initialized and/or modified, and will cause these entries
to be printed on the page of the Operator's Notebook
containing entries with blank operands. The M flag
is valid only on one-for-one instructions. When a
generated instruction is referenced by another
macro-instruction by means of a macro suffix tag,
the macro generator automatically places an M flag
on the referenced instruction, unless another flag is
already present on it.
R -- Reset Location Counter
Placing the Reset character (R) in column 74 of a
LASN statement containing an actual or a tag operand does not modify the setting designated by the
operand. However, it may affect a subsequent setting designated by a blank operand for the same
counter, because the Processor will ignore any assignments it made before encountering the statement
containing the Reset character.
This may best be seen with an illustration. Suppose that the highest assignment made from counter
1 is location 59999. The Processor then encounters
a LASN for counter 1 to location 2000. After setting
the counter, the Processor assigns a block of 500
positions, bringing counter 1 to 2499. Now a LASN
with a blank operand is encountered for counter 1.
The counter is set to location 60000, one location
beyond the highest assignment made from the counter
up to this point in the assignment process. To return to the beginning of this example: Suppose that
when location counter 1 contains 59999, the Processor encounters a LASN for counter 1 to location
2000, but the statement also contains R in column
74. As before, the counter is set to 2000, a block
of 500 pOSitions is assigned, and the counter is
again at 2499. Now a LASN with a blank operand is
encountered for counter 1. Because the Reset character destroyed the previous high location (59999)>>
the counter is set to 2500. This is one location '

58

An Autocoder entry containing this flag will indicate
the beginning of program card suppression. This
entry and all following entries will be processed
normally, except that program cards will not be
produced. A second entry containing this flag will
indicate that program card suppression is to end
after this entry is processed.
T -- Test-Assembly Entry
Entries containing this flag will be retained during
an assembly when the run-type control card so indicates. Otherwise, all entries containing this flag
will be deleted automatically. Statements may
therefore be assembled for testing purposes, and
easily removed.
Z -- Relocate "00" Transfer Control Card
This flag is only used with a TCD statement. It
causes the TCD "00" transfer control card to be
placed at the end of the program in place of the
standard "00" card. If more than one TCD statement contains this flag, the last one encountered
prevails.
1 -- Weight Inner Macro-Instruction as One

This flag may be used with macro-headers when they
are used as components of macro-instructions. It
speCifies that regardless of how frequently the
macro-instruction containing it is used, the inner
macro-instruction will be called by it very infrequently; therefore, the Processor is to consider that
the inner macro-instruction is called one time as a
component of the particular outer macro-instruction.
Effective use of the flag will cause the Frequency
Count Table to more accurately reflect the frequency
with which each macro-instruction is used, so that
the assignment of memory macro-instructions will
be more efficient.

ASSEMBLY OUTPUT

One card is punched for each line of the coding sheet,
as explained in the section on statement format. A
card-image tape produced from the source-program
deck is the input to the Processor. The assembly
output consists of the object-program deck and program documentation. Although the object-program
deck is produced on a card-image tape, it will be
referred to as a deck.

optional documentation consisting of the Operator's
Notebook and the Symbolic Analyzer may be requestedas additions to the listing. A column-bycolumn explanation of the listing format appears
below in the section, "Details of the Listing. "

OBJECT PROGRAM DECK

The program listing is provided only on tape.
contents of the listing are as follows:

The sequence and contents of the deck is shown in
the following list:
1. Load program (LD7080)
2. Main literal table
3. Machine-language equivalent of source program
4. Class A subroutines
5. Subroutines portions of macro-instructions
6. Class B subroutines
7. Standard "00" transfer control card
Note that the main literal table, although assigned
to storage locations above those of the object-program instructions, precedes the instructions into
storage.
The format of the object-program card is as
follows:
Program Identification: Six positions. This is the
source program identification (ident field on coding
sheet).
Serial number: Three positions. This is the number of the object program card. It is assigned by
the Processor and bears no relation to the number
of a source program statement (Pglin field on coding sheet).
Initial address: Four positions. This indicates the
storage location at which the first character on the
card is to be placed.
Number of columns: Two positions. This is the
amount of data being supplied by the card. A
maximum of 65 positions may be indicated; this is
the space required by 13 instructions. The "00"
card contains zeros in these positions.
Instructions and/or constants: One to sixty-five
positions. This is the actual portion of the object
program being supplied by the card. It is placed at
the storage location specified as the initial address
(see above).
STANDARD ASSEMBLY DOCUMENTATION
A listing of the object program itself and diagnostic
messages is the minimum assembly documentation;

Program Listing
The

First Page: This page is blank except for a heading
line and a notation of the highest memory position
used not resulting from a RASN or SASN.
Main Literal Table: The main literal table is divided
into seven parts. (A signed literal is a literal in
which the first position after the pound sign (#) is
occupied by a plus or a minus sign.)
1. Signed literals, length not a multiple of 5 or 10
2. Signed literals, length a multiple of 5
3 .. Signed literals, length a multiple of 10
4. Unsigned literals, length a multiple of 10
5. Unsigned literals, length a multiple of 5
6. Unsigned literals, length not a multiple of 5 or 10.
70 Address constant literals, broken down in the
following order:
a. unsigned, length of 6
b. signed, length of 6
c. signed, length of 5
d. unsigned, length of 5
e. all lengths of 4 ending in a 4 or 9 location
Source Program with Generated Coding: This may
be considered the main portion of the program listing. The source-program statements appear in
their original sequence. Any generated coding appears directly after the statement(s) that caused the
generation.
Multiple literal tables are also included in the
source program, if they are requested. They are
divided into seven parts corresponding to those in
the main literal table. However, within the groups
of signed and unsigned literals, individual literals
are not sorted according to size. Each multiple
literal table will begin on a new page of the program
listing.
Class A Subroutines: The subroutines are inserted
alphabetically; i. e., according to the mnemonic
identification code of each subroutine. Any generated
coding appears directly after the statement that
caused the generation.
Subroutine Portions of Macro-Instructions: The
order of subroutines is the same as that of the
macro-headers causing their generation.
Assembly Output

59

Class B Subroutines: The subroutines are inserted
alphabetically.
Diagnostic Messages: These messages are produced
by the Processor and indicate errors, or possible
errors, in source program statements. When the
Processor detects a possible error condition, it
often makes certain assumptions and generates
coding based on them. It also supplies a warning
message on the nature of the possible error or the
action taken to correct an error. Diagnostic messages are described in the publication on 7080 Processor system operation.
Unreferenced Tags (NO REQS): On a separate page,
hand-coded tags that are not referred to elsewhere
in the program are listed.
OPTIONAL DOCUMENTATION
Operator's Notebook
This is an index to the location of certain types of
Autocoder statements, both hand-coded and generated, that appear in the program listing. The pages
that make up the Notebook are as follows:
TITLES
C FLAG
HFLAG
80 SP OP

80 SP 1

ASSGNS
SWITCHES
TRANS

MFLAG

-- All TITLE statements
-- Comment statements with a C flag
-- Statements with an H flag; all
halts
-- All ENT80, LEV80, ENTIP,
LEVIP, SPC, TIP, and LIP
statements
-- All statements in 7080 mode containing indirect address; i. e.,
the "I, " prefix
-- All LASN, SASN, RASN, and
SUBRO statements
-- All SWN and SWT statements
-- All TRANS statements with descriptive operands; i. e., operands that are tags
- - All statements with an M flag;
all statements with blank operands

Symbolic Analyzer
This is an index of every hand-coded and generated
tag in the program. The tags are listed in collating
sequence. Each tag is followed by a list of every
instruction, hand-coded or generated, that references the tag. Tags that are used incorrectly are
flagged with an error indicator appearing as *ERR*.
Each program entry that defines a tag will be
listed. All entries having operands that reference
the tag will be listed, three per line, following the
tag definition. Any operand modifier and/or
60

character adjustment in a referenCing entry will be
included, but comments, and ASU zoning in address
constant literals will not. Entries that refer to undefined tags will be listed separately. When multiple
literal tables occur in a program, the symbolic
analyzer will contain a section on them preceding the
index to descriptive tags.

DETAILS OF THE PROGRAM LISTING
The heading of each page in the listing contains the
program identification, revision number (if any),
and the date (from the date control card), and page
number.
The listing page contains 16 fields. The entries
in the PGLIN through the FLAG fields comprise an
Autocoder statement. The machine-language translation of the statement (i. e., an object-program instruction or constant) appears in the INSTR field.
Other fields contain information on storage locations,
statement sequence, and references to other statements. The fields of the listing are as follows:
INDEX: This is a number that the Processor creates
for each line of the listing. A hand-coded statement
is assigned a number of the form xxbyy; a generated
statement is assigned a number of the form bxxyy.
In each case, xx is the listing page number, and yy
is the line number. On a reassembly, a number of
the form xx*yy is assigned to a statement that has
been replaced or added, or one that follows a deleted
statement. The INDEX number is not identical to
the pglin number on the coding sheet.
S: Origin of entry (i. e., whether it is a sourceprogram statement or a Processor-generated entry)
and type of entry. Both items of information are
conveyed by a Single-character code, as follows:
Code

Origin

A
B
E
F
G
I
J

Source Program
Source Program
Source Program
Source Program
Source Program
Source Program
Generated
Generated
Generated
Generated
Generated
Generated
Generated

K

N
0
P
R

*

Type of Statement
One-for-One
Macro-Header
Decision, Arithmetic, Table
Report/File
FORTRAN
TITLE, C flag, and COBOL
One-for-One
Macro-Header
Decision, Arithmetic, Table
Report/File
FORTRAN
TITLE and CFlag
EIA and Related Instruction,
and Multiple Literal Tables

NOTE: All subroutine entries are generated.
PGLIN: The entry in this field corresponds to the
pglin entry on the coding sheet.

TAG: Any hand-coded or generated tag appears in
this field, which corresponds to the tag field on the
coding sheet.
OP: Any mnemonic code appears in this field,
which corresponds to the operation field on the coding sheet.
NU: The entry in this field varies just as it does
when hand-coded. The field corresponds to the
numerical field on the coding sheet.
AT: An entry in the AT (address type) field is
either an operand modifier or an indirect address.
On the coding sheet, such entries are written in
columns 23-24 of the operand field
OPERAND: The entry of this field varies just as it
does when hand-coded. The field corresponds to
the operand field on the coding sheet with the exception of the placement of a prefix to the basic operand. The prefix appears in the AT field explained
in the preceding paragraph.
COMMENTS: Any source-program comments appear in this field, which corresponds to the comments field on the coding sheet.

F: Flag code.
LOC: The entry in this field is a six-character
number designating the location assigned to the
object-program instruction or constant.
INSTR: The entry is a five-position field containing
the actual operation code of the instruction followed
by the actual address with ASU zoning.
SU: The entry in this field is an ASU number. It
does not necessarily correspond to the NU field,
which is used for other purposes besides ASU assignments.
ADDR: This field contains the actual address portion of an instruction as six positions.
SER: An entry in this field is the three-character
serial number of an object-program card. The
number appears only in the line containing the first
character on the object-program card. Subsequent
lines with blanks in the SER field contain data that
appear on the same card.
REF: An entry in this field is the INDEX number of
the operand, and serves as a cross-reference.
(Within a NAME, the number in this column is the
cumulative length of the NAME.)

Assembly Output

61

APPENDIX

The more significant features that have been
incorporated into Autocoder for the 7080 Processor
are summarized below, by section headings. The
reader can consult the appropriate sections of this
manual for details on the changes.
Source programs that could be assembled by the
7058 Processor can also be assembled by the 7080
Processor. However, certain mnemonics which
were accepted by the previous processor will not
be accepted by the 7080 Processor. These invalid
mnemonics are listed below:
1. DRCD, DCON, or DFPN
2. AACON, LACON, or RACON
3. AASN, OASN, or CASN
4. *ASUnn
5. Actual operation codes
In addition, CTL, while it may be used and will
be accepted, will cause a warning message to be
produced; it will be assumed that the programmer
has indicated the proper operand.
Certain differences between 7058 Autocoder and
7080 Autocoder result from expansion of the language and the incorporation of new features. Those
difference s are listed below.
1. A character in column 74 of a source statement, except one in FORTRAN or COBOL, will be
considered a flag having specific significance to
the 7080 Processor. The flag codes are described
in the section on flags.
2. A character adjustment following an address
constant literal request (e. g., L@TAG+5) will
cause an increment to the assembled location of the
address constant.
3. A literal may not be followed by a multiply
or divide character adjustment, nor may the
amount of the character adjustment be outside the
range ±99; i. e., be stated in more than two significant numbers. However, an increment or decrement can be written with leading zeros; e. g., +1
and +001 will cause the same increment, and -55
and -000055 will cause the same decrement.
4. No operand of a macro-header may exceed
10 positions unless it is surrounded by literal
symbols. No literal used as a macro-header
operand or in a macro-instruction component may
exceed 35 positions including the sign and decimal
point, but not including the literal symbols.
5. If the numeric portion of a character adjustment is less than six positions, the position
immediately following the adjustment must be nonnumerical.

62

Standard Format of Autocoder Statements: A new
multipurpose coding form has been developed for
use with the 7080 Processor. Column headings
have been changed to accommodate certain new
features of the Processor.
Area Definitions: Area-definition length may be
specified by a six-digit number written in columns
17 -22. Restrictions on comments continuation
lines with area definitions have been altered to
reflect the new meaning of the columns. RPT
statements are restricted to nine commas in the
layout format.
One-for-One Instructions: The list of acceptable
mnemonics has been expanded and provision has
been made for additional numerical codes to
accompany various operation codes. The changes
are detailed in Figure 44. Restrictions on character adjustment have been expanded, particularly
with respect to literal operands. A new operand
modifier (T, ) has been provided for both one-forone instructions and address constants.
General Purpose Macro-Instructions: Up to 50
operands can be written in the macro-header. As
many as 50 lines in the coding form can be used for
the operands of one macro-instruction. Literal
operands must not exceed 35 characters excluding
the literal (#) signs.
Address Constants: An ACON6 can have a sign
associated with it. Address constant literal
requests of arithmetic operations will be six positions long with a signed plus. Formerly, such
address constant literals were five positions.
Character adjustment may be used for the purpose
of modifying the constant itself.
Instructions to the Processor: The initial setting
of the location counter is now 00500. Restrictions
on LASN, SASN, SUBOR, and LITOR statements
have been eased. The location counter, with or
without adjustment, is now a valid operand for these
statements. Two new assignment statements
(RASN and SUBRO) have been added. Two statements (LITST and LITND) have been provided for
creating multiple literal tables. A TRANS statement can have the tag of another location as its
operand. A TCD statement can now occupy 65 positions. 7080 mode is assumed until a LEV80 is

encountered. To return to 7080 mode following a
LEV80, the ENT80 macro-instruction is given.
Additional instructions to the Processor in the
form of Flag characters have been added to the
Autocoder language. The use of Flags,
particularly the F Flag, should be carefully
considered.
Assembly Output: The listings that are provided
have been expanded considerably. This entire
sectioH should be reviewed.

Appendix

63

SAMPLE ASSEMBLY
INDEX S PGlIN

CP

TAG

NU AT OPERAND 80SMPL-001

08-28-63

PATCHES

PG 001

FLOC

INSTR SU

ADDR

SER

REF

SER

REF

005449

TAG

QP

DA01
DA02
DA03
PA04
DA05
PA06
DA01
aAoa
aA09
aAlO
PAll

SIGNED
SIGNED
SIGNED
SIGNED
SIGNED
SIGNED
SIGNED
SIGNED
SIGNED
SIGNED
SIGNED

LITERAL
LITERAL
LITERAL
LI TERAL
LITERAL
LITERAL
LITERAL
LI TERAL
LITERAL
LI TERAL
LITERAL

PA12
PA13
PA 14
CAl5
PA16
DAn
DA1B
DA19
DA20
aA21
PA22
aA23
PA24
aA25
aA26
aA27
DA28
aA29

UNSIGNEO
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNEO
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED
UNSIGNED

INDEX S PGlIN

1
1
2
4
4
7

7
5
5
5
10

LITERAL 50
LITERAL 50
LITERAL 5
LITERAL 5
LITERAl 1
LITERAL 1
11 TERAL 1
LITERAL 1
Ll TERAL 2
LITERAL 2
LITERAL 3
LITERAL 4
LITERAL 4
LlTERAL 4
LITERAL 1
LITERAL 8
LITERAL 9
LITERAL 14

80S~PL-001

08-28-63

COMMENTS

PG 002

F

LOC

tNSTR SU

ADDR

005175
,005176
005178
005182
005186
005193
005200
005209
005214
005219
005229

001

002
003

60
300
ABLE
DUPE
0010
1234567
-BALANCE
LOCAT IONA
NOT AVAIlABLEc

005279
005329
005334
005339
005340
005341
005342
005343
005345
005347
005350
005354
005358
005362
005369
005377
005386
005400

A
1&
1230
395G
BALANCN
981654C
OOOOA
00000
002lE
0145678000&
AGE
CLOSING LIT SYMBOL OM ITTED
THIS LITERAL OVERflOWS INTO THE NEXT CARD WHICH IS
ABCDE
APPLE
F

G
J
1

004

&AOI

NAMEA

RIGHT

6

001099

005406

AC51

$A01

NAMEA

SIZE

6

00004&

005413

AC51

*A01

NAME A

SIZE

5

0004&

005419

AC51

-A01

NAMEA

RIGHT

5

01099

005424

At51

lAO 1
IA02
IA03
IAOIt

1230
-&000025
EXIT
NAMEA
NAMEA

RIGHT
RIGHT
RIGHT
HI-SP
RIGHT

4
4
4
4
4

5182
2CI4
1599
1074
lA03

005429
005434
005439
005444
005449

aA04

IA05

64

NU AT OPERAND

005
AF55
AC51
AC51

INDEX

PGLIN

AA 01

AAOI

AA 02

AA02

AA 03
AA 04
A.A 05
AA 06
AA 01
AA 08
AA 09
AA 10
AA 11
AA 12

AA03
AA04
AAC5
AA06
AA07
AA08
AAC9
AAI0
AAll
AA12

AA 13

A.A 13

AA 14
AA 15
AA 16

AA14
AA15
AA16

AA 17

AA17

AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
A4
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA

18
19
20
21
22
23
24
25
26
21
28
29
30
31
32
33
34
35
36
31
38
39
40
41
42
43
44
45
46
41
48
49
50

I
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

AA18
AA19
AA20
AA21
AA22
AA23
AA24
AA25
AA26
AA27
AA28
AA29
AA30
AA31
AA32
AA33
A434
AA35
AA36
AA37
AA38
AA39
4A40
AA41

AA
AA
AA
AA
A4
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA
AA

51
52
53
54
55
56
51
58
59
60
61
62
63
64
65
66
61
68
69
10
11
12

I
A
A
4
A
4
A
A
4
A
A
A
A
A
A
A
A
A
A
A
4
A

AA51
AA52
AA53
AA54
AA55
AA56
AA51
AA58
AA59
AA60
U61
AA62
AA63
AA64
A465
A466
AA61
AA68
AA69
4A10
U11
AA72

TAG

CP

NU AT OPERAND

TITLE

08-28-63

COMMENTS

PG 003

LOC

INSTR SU

ADDR

SER

REF

ASSE~BLY

INTRODUCTION
THIS ASSEMBLY ILLUSTRATES CORRECT AND INCORRECT USAGES OF THE 7080
PROCESSOR. SHCRT CODING EXAMPLES ARE USED TO SHOW WHAT THE
PROCESSCR PRCDUCES, INCLUDING ERROR AND CAUTIONARY MESSAGES, FOR
TYPICAL VALIC AND INVALID STATEMENTS. COMMENT AND TITLE STATEMENTS
ANC THE COMMENTS fIELD OF ILLUSTRATIVE STATEMENTS, HAVE BEEN USED TO
DESCRIBE THE USAGES. THIS ASSE~BLY IS FOR ILLUSTRATIVE PURPOSES ONLY
AND DOES NOT REPRESENT AN EXECUTABLE PROGRAM. THE OBJECT MACHINE IS
ASSUMED TO BE AN 80K 1080, ASUS 1-6 ARE ASSUMED seT TO LENGTHS OF
1-6 RESPECTIVELY, AND THE OTHER ASUS AND ACC ARE AT SOME RANDOM
LENGTH.
TITLE

C
C
C
C
C
C
C
C
C
C

rlCRMAL ORIGIN

SINCE NC STARTING LOCATION IS SPECIFIED, THE ORIGIN OF THE
PROGRAM IS ASSUMED TO BE AT LOCATICN 0500.
RCD
1
TO SHOW STARTING LOCATION.
TITLE
RCDA

Reo

C

C

000500

AREA DEFINITIONS
DEFINITION OF A RECORD FIELD - RCD
TEN DIGIT UNSIGNED NUMERIC FIELD

000510

10

N

17

A
SEVENTEEN POSITION ALPHA-NUMERIC
FIELD WHCSE lOW ORDER POSITION MAY NOT PROVIOE
LEfT PROTECTION FOR ANY SIGNED NUMERIC FIELD IT
PRECEDES.

000521

2 00

A&
TWO HUNDRED POSITION ALPHA-NUMERIC
fIELD WHCSE LOW ORDER POSITION WILL ALWAYS SUPPLY
LEfT PROTECTION. NOTE THAT THE LENGTH INDICATION
CVERFLOWS INTO THE OPERATION FIELD. THIS IS
PERMISSIBLE eN A CONTINUATICN ENTRY AS LONG AS
COLU~N 16 IS BLANK.

000121

10

&
TEN DIGIT SIGNEO INTEGER. DECIMAL
POINT IS ASSUMED TO RIGHT OF THE LOW ORDER DIGIT.
LEfT PROTECTION IS PROVIDED fOR THE FOLLOWING FIELD

000131

RCDS5X3
RCDS5X3A

8

8

&XXXXx.xxx
TWO ALTERNATE DEFINITIONS OF AN
'&05.03
EIGHT DIGIT SIGNEO NUMERIC FIELD
HAVING FIVE INTEGER AND THREE DECIMAL POSITIONS.

000745
000753

RCDSOX3

3
3

&.XXX
• &00.03

000756
000159

5

05

XX.XXX
TWO ALTERNATE OEFINITIONS OF A
, 02.03
FIVE DIGIT UNSIGNED NUMERIC FIELD
WITH TWO INTEGER AND THREE DECIMAL POSITIONS.
II

RECORD MARK INDICATION.

10

F

TEN POSITION FLOATING POINT RCO.

AM2

AA43
AA44
AA45
AA46
AA41
AA48
AA49
U50

80S~PL-OOl

7080 PROCESSOR - SAMPLE

RCDN2X3A

TWO ALTERNATE DEFINITIONS OF A
THREE DIGIT SIGNED DECIMAL •

INVALID USAGES
RCD
0
1000 00

RCD

4

fIELD

2

A
ALTHOUGH IT IS VALID TO SPEC IFY A
SIX DIGIT LENGTH IN THIS FASHION, THE SIZE OF
OBJECT MEMORY IS SPECIfIED AS 80K FOR THIS PROGRAM.
THiS STATEMENT WOULD BE VALID IF MEMORY SIZE WAS
SPECIFIED AS 160K.

000164
000169
000170
000780
C

000780
000781

THIS WILL RESERVE FOUR PLACES BUT
WILL BE TREATED AS AN UNDEFINED RCO AREA BECAUSE
&, N~ A, OR A& ARE NOT INDICATED IN THE OPERAND

000185

THE WORD FIELD. INTE~OED AS A
COf'MENT CONTINUATION. WAS TREATED AS /!. /(OP BECAUSE
IT WAS IN THE OPERATION fIELD AND WAS NOT A VALID
OPERATION.

000194 AOOOO

N
THIS STATE~ENT, INTENDED AS A RCD
CONTINUATION, WIlL COMPILE AS A CON BECAUSE IT HAS
A BLANK CPERATION AND FOLLOWS A STATEMENT WHOSE
OPERATION IS /(OT A OATA DEFINItION. IT WILL COMPILE
AS N FOLLOwED BY A BLANK.

000196

000000 006

65

INDEX S PGLIN
A8
A8
A8
A8
A8
A8
A8
A8
A8
A8
A8
A8
AB
AB
AB
liB

01
02
03
04
05
06
01
08
09
10

AB
A8
AB
A8
A8
AB
A8
AB
AB
AB
AB
AB
A8
AB
AB
A8
A8
AB
AB
AB

17 I A811
18 A A818
19 A A819
20 A A820
21 A A821
22 A AB22
23 A AB23
24 A AB24
25 A AB25
26 A AB26
27 A AB27
28 A A828
29 A AB29
30 A AB30
31 II AB31
32 A A832
33 A AB33
34 A AB34
35 A AB35
36 A A836

AB
AB
A8
A8
A8
AB
A8
A8
A8
AB
AB
A8
A8
AB
A8
A8
A8
A8
A8
A8
AB

31
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
51

11

12
13

14
15
16

I ABOl
I AB02
A A803
A ABC4
A A805
A A806
A A807
A A808
A A809
A A810
A A811
A A812
A A813
A AB14
A AB15
A A816

I A837
A A838
A A839
A A840
A AB41
A A842
A A843
A A844
A A845
A AB46
A A847
A AB48
A AB49
A AB50
A AB51
A A8'l2
A AB53
A AB'l4
A AB55
A A856
A A851

AB 58 I A858
AB 59 A A859

TAG

CP

NU AT OPERAND

80S~PL-00l

08-28-63

COMMENTS

PG 004

3

4

000802

INSTR SU

ADOR

SER

THIS OPERAND SHOULD HAVE 8EEN
OMITTING THE 8LANK CAUSED IT TO COMPILE
AS A FOUR POSITION UNSIGNED FRACTION WITH 21
INTEGER PLACES AND 20 DECIMAL PLACES.

000806

'02.02

II 02.02.

CONA
CONN5XO
CONMIXEO

TITLE
ceN

WORSTCASES ceN

5
.5
6

-123499
CONSTANT.

6

tl234.99
SIX POSITION SIGNED CONSTANT WITH
FOUR INTEGER AND TWO DECIMAL POSITIONS. WILL
APPEAR AS 123491 IN MEMORY.

000833

6

123.45
SIX POSITION CONSTANT WHICH WILL
APPEAR AS 123.45 IN MEMORY.

000839

3

THREE POSITION CONSTANT OF WHICH
A
THE FINAL TWO POSITIONS ARE 8LANKS.

000842

2

D'OF

000844

2

A GROUP

SIX POSITION SIGNED INTEGER
WILL APPEAR AS 12349R IN MEMORY.

~ARK

007

000821

TWO POSITION CONSTANT CONSISTING
ANO A RECORt MARK.

INVALIO USAGES
C
,aecoF.
CON WITH OPERAND OF GREATER LENGTH 000846
THAN NUMERIC FIELD STATES. ~ILL COMPILE AS AS WITH
NO ~ESSAGE.
000849

123
THIS WILL NOT COMPILE BECAUSE THE
NUMERIC FIELt STATES A LENGTH OF ZERO POSITIONS.

000849

62

THE NUMERIC FIELD STATES A LENGTH WHICH INCLUDES A
SECOND CARD. THE FIRST LINE WILL COMPILE, FOLLOWED
BY 12 BLANKS. THE REST IS TREATED AS A COMMENT.

000911

14

-599690961139550 THIS CON, INTENDED AS PART OF A
MESSAGE AND PUNCHED -ERROR ROUTINE, WAS STRIPPED OF
lONING A~D T~EATED AS A SIGNED NUMERIC CON 8ECAUSE
THE LEADING CASH WAS INTERPRETED AS A MINUS SIGN.

000925

CEFINITION OF A FLOATING POINT CONSTANT - FPN
t03&123456
REPRESENTS &123.456

NOTE THAT THE NU~ERIC FIELD IS 8LANK AND THAT THE MANTISSA IS ONLY
SIX DIGITS. A LENGTH OF TEN WILL 8E ASSUMED AND TRAILING ZEROS ADDED
TO MAKE AN EIGHT DIGIT MANTISSA. THE FPN APPEARS IN MEMORY AS
OC12345600 WITH THE UNITS DIGIT SIGNED PLUS. THE LISTING DOES NOT
SHOW THE ADDEO ZEROS OR ASSUMEt LENGTH.

A8
AB
A8
AB
AB
A8
A8
AB
AB

70 I AB70
71 I A871
72 I A872
13 I A813
74 I AB14
15 I A875
76 I A876
17 I A611
18 A AB78

THE TWO ENTRIES IMMEDIATELY ABOVE WERE INTENDED AS COMMENTS
COUTINUATIONS. THIS IS INVALID ON ,a FPN AND TWO FPNS WERE GENERATED
FROM THE OPERAND FIELDS. THE LISTING ONLY SHOWS THE MEMORY ALLOCATED
BUT THE CARDS SHOW 5E38103850 AND 3071519201.

FPN

000811
000816
000821

&120
SIGNED CONSTANT WITH OPERAND
SHORTER THAN NUMERIC FIELD STATES. IT WAS PUNCHED
&12 BUT WILL COMPILE AS 120 WITH THE LAST DIGIT
SIGNED PLUS. HERE THE LISTING SHOWS THE ZERO.
0

Tl TLE
FPN

OfF INIT ION OF A CONSTANT FIELD - CON
FIVE POSITION ALPHABETIC. UNSIGNED
NUMERIC, ANO MIXEO CONSTANTS. WILL
APPEAR IN MEMORY AS WRITTEN.

AeCOE
00003
4JK9*

5

60 I A860
61 I A861
62 J A862
63 1 A863
64 I A864
65 I AB65
66 I A866
61 A AB61
68 A ABt.8
69 A AB69

66

LOC

.to.3
THIS OPERAND SHOULD HAVE 8EEN
.tOO.03. OMITTING THE ZEROS CAUSED IT TO COMPILE
AS A THREE POSITION SIGNED INTEGER WITH ONE INTEGER
AND NO DECIMAL POSITIONS.

A8
A8
AB
AB
AB
AB
A8
AB
A8
AB

AB 19 I AB19
AB 80 I A880
A8 81 A AB81

F

THE FOLLOWING THREE INVALIO RCO ENTRIES PRODUCE INCONSISTENT
C
DATA DEFINITIONS.
C
RCD
tOO.03
3
THIS OPERAND SHOULD HAVE 8EEN
000199
.tOO.03. OMITTING THE ., SIGN CAUSED IT TO COMPILE
AS A THREE DIGIT SIGNED INTEGER WITH NO INTEGER ANO
NO DECIMAL POSITIONS.

INVALID USAGES
t04&9816543210
THIS OPERAND EXCEEDS THE MAXIMUM
LENGTH. THE ~ANTISSA IS TRUNCATED TO EIGHT DIGITS.
IT APPEA~S IN MEMORY AS 0098165438.

THIS FPN WAS INTENDED TO REPRESENT 123.456. OMITTING THE LEADING
ZERO OF THE CHARACTERISTIC CAUSED IT TO REPRESENT THE NUM8ER
234560000000000000000000000000.
FPN
&3&123456
THIS OPERAND WAS INTENCED TO REPRESENT 123.456. OMITTING THE SECOND
PLUS SIGN CAUSED IT TO REPRESENT 234.56
FPN
&03123456

008

000935
C
C
C
C
C
C
C

C
C
C
C
C
C
C
C
C
C

000945
000955
000965

000915

000985

009

REF

INDEX S PGLIN
AC 01

AC01

AC 02
AC 03

AC02
AC03

AC 04

TAG

OP

NU AT OPERAND 80SMPL-001

08-2B-63

COMMENTS

PG 005

F

INSTR SU

ADDR

SER

REF

DEF INITION OF A REPORT FORMAT - RPT

TITLE

THESE ILLUSTRATIONS ALL SHOW EIGHT NUMERIC POSITIONS WITH VARIOUS
PUNCTUATION AND SIGN INDICATIONS.

C
C

IN THIS SERIES NO COMMAS, DECIMAL POINTS, DOLLAR SIGNS, OR ASTERISKS
ARE SPECIFIEC. ONE POSITION IS RESERVED FOR A BLA~K OR MINUS SIGN.
IN THE FIRST FORMAT ALL EIGHT POSITIONS WILL PRINT, LEADING ZEROS
INCLUDED. IN THE SECOND FORMAT LEArlNG ZEROS IN ANY OF THE FIVE HIGH
ORDER POSITICNS ARE NOT PRINTED. IN THE THIRD FORMAT, NO LEADING
ZEROS wILL PRINT.
RPT
9
llZZlZZZ
XXXXXZZZ
9
XXXXXXXX
9

C
C
C
C
C
C

IN THIS FORMAT VARIOUS EDIT PUNCTUATION IS ADDEO. THE DOLLAR SIGN
WILL ALWAYS PRINT EIGHT POSITICNS TO THE LEFT OF THE DECIMAL POINT.
THE COMMA WILL PRINT IF THERE ARE ANY SIGNIFICANT FIGURES TO THE
LEFT OF IT. THE DECIMAL POINT AND THE POSITIONS TO THE RIGHT OF IT
WILL ALwAYS PRINT, EVEN FOR A ZERO AMOUNT. A TWO POSITION SIGN
INDICATOR IS SPECIFIED AS CR, **, CR DR FOR MINUS, ZERO, OR PLUS
AMCUNTS, RESPECTIVELY.
RPT
SXXX. XXX.ZZ aaCRa**aDRa
13

C
C
C
C
C
C
C

AC04

AC
AC
AC
AC
AC
AC
AC
AC
AC

05
06
07
08
09
10

AC
AC
AC
AC
AC
AC
AC
AC

14 I AC14
15 I AC15
16 I AC16
11 I AC17
18 I AC18
19 I AC19
20 I AC20
21 A AC21

AC
AC
AC
AC
AC
AC

22
23
24
25
26
27

I
I
I
I
A
A

AC22
AC23
AC24
AC25
AC26
AC27

THESE TWO EXAMPLES ILLUSTRATE AMOUNT PROTECTION IN A RPT FORMAT. IN
THE FIRST, T~E S SIGN IS FIXED BUT. WILL PRINT IN ALL SPACES
BETWEEN IT AND THE HI-ORDER DIGIT PRINTED. IN THE SECOND. THE $ SIGN
WILL PRINT I~MEDIATElY TO THE LEFT OF THE HI-ORDER DIGIT PRINTED.
SXXX.XXZ.ZZ a.a
RPT
12
$XXX,XXZ.lZ DSD
12

C
C
C
C

AC
AC
AC
AC

2B
29
30
31

I
I
I
A

AC2B
AC29
AC30
AC31

THE OPERAND ez IN THIS EXAMPLE INDICATES THAT THE ENTIRE FIELD.
INCLUDING THE DECIMAL POINT AND POSITIONS TO THE RIGHT OF IT. IS TO
BE BLANKED IF THE RESULT IS ZERO.
XXXX.ZZcacBzac
RPT
07

C
C
C

I
I
I
I
I

I

11 A

12 A
13 A

AC05
AC06
AC07
AC08
AC09
AC10
ACll
AC12
AC13

AC 32 I AC32
AC 33 A AC33

RPT

AC 34

TITLE

AC34

AC 35
AC 36
AC 37
AC 38
AC 39
AC 40
AC 41
AC 42
AC 43
AC 44
AC 45
AC 46
AC 41
AC 48
AC 49
AC 50
AC51
AC 52
AC 53
AC 54
AC 55

LOC

9

ZZZXXXXX

AC36
AC37
AC3B
A09
AC40
AC41
AC42
AC43
AC44
AC45
AC46
AC47
AC48
AC49
AC50

J

A
A
A
A

AC 56
AC 57
AC 5B

NAME
RCD
CCN

RFT
RCO
CCN
BITCD
CONOl
COND2

2

A

CONDP
CONDQ
NAMEAEND
NAMEA

CON

NAME
RCD

AC 61
AC 62
AC 63
AC64

A AC60
A AC61
A AC62

NAMEC

NAME
RCO

AC 65
AC 66
AC 67
AC6B
AC 69
AC 10
AC7l

A AC63
A AC64
A AC65
J

A AC66
A AC67

001037
001049

001056
C
001065

3

NAMECEND
NAMEC
NAMED
NAMEBEND
NAMEB
NAMEDEND
NAMED

NAME
RCO

001010
001071
001015
001018
001019
001087
001091
001094
001095

NAMEAEND
N
A
XXX

THIS ENTRY CONSISTS OF THIRTY
CONSECUTIVE POSITIONS, THE LAST
TWO BEING A GROUP MARK AND RECORD
MARK. THE CHRCD AND THE BITCD EACH
OCCUpy ONE MEMORY POSITION. SOME
XXXX.lZ
SEGMENTS OF THE ENTRY ARE
SEPARATELY TAGGED~ THE A IN THE
&
NUMERIC FIELD OF THE NAME
STATEMENT POSITIONS THE ENTRY TO
2
START AT A 0 LOCATION. THE
OPERAND OF THE NAME HEADER IS THE
TAG OF THE LAST SEGMENT OF THE
NAME ENTRY. THE TAG OF THE NAME
P
Q
STATEMENT IS USED TO REFER TO THE
at
COLLECTIVE ENTRY. NOTE THAT A
30 CHARACTER POSITIONS
THIS DEFINITION OCCUPIES
COMMENT CONTINUATION IS BROKEN BY THE GENERATED
~AME TRAILER. NOTE ALSO THE USE OF THE REF FIELD
OF THE LISTING TO DISPLAY A CUMULATIVE TOTAL OF THE
POSITIONS USED WITHIN THE NAME.

THE FOLLOWING SERIES ILLUSTRATES T~E USE OF CONCURRENT NAME
DEFINITIONS. NAMEC IS ENTIRELY WITHIN NAMEB. NAMED IS ONLY PARTLY
WITHIN NAMEB. BOTH USAGES ARE VAlIC.
NAMES
RCDS6XO

J

A
2
4
3
1
B
4
3

CHRCD

AC 59 A AC58
AC 60 A AC59

J

001025

011

NORMAL USE
NAMEA

AC51
AC52
AC53
AC54
AC55
AC56
AC57

010

COLLECT IVE AREA DEFINITION - NAME

AC35
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

INVALID USAGES
ZS AND XS REVERSED

000994
001003
001012

001099

AC50
2
6
9
012
10
18
22
013
25
26

001096

27

001099
001099

30

C
C
C
AC67

&

001100
001105

001129

6

NAMECEND
N
A
THIS DEFINIT ION OCCUPIES

001106
001107
001113
001113

001113

2
6

AC63
B
14

001114
001117
001129
001129
001132
001136
001136

001136

Ae70
18
30

NAME BEND

4
12
3
4

NAMED END
A
A
THIS DEfINIT ION OCCUPIES
N
A&
THIS DEFINITION OCCUPIES

8 CHARACTER POSITIONS

30 CHARACTER POS ITIONS
23 CHARACTER POS tTIONS

6

67

INDEX S PGLIN
AD 01

TAG

NU AT OPERAND 80SMPL-00 1 08-28-63

A001

TlTLt

A002
AD03
A004
AD05
AD06

NAME
CON

0
6

AD 07 A AD07
AD 08 A AOOB
AD 09 A AD09

NAME
RCO

B
01

AD
AD
AD
AD
AD

02
03
04
05
06

A
A
A
A
A

AD 10
AD 11
AD 12
AD 13
AD14
AD 15

A
A
A
J
A

COMMENTS

PG 006

THE B IN THE NUMERIC FIELD OF
THIS NAME STATEMENT CAUSES THE RCD
WHICH FOLLOWS IT TO BEGIN IN THE NEXT 100 LOCATION.

NAMEE

AD14

NA~EEEND

A015
A016
AOl7

THIS NAME ENTRY kILL NOT COMPILE CORRECTLY BECAUSE THE NUMERIC
FIELD OF THE INTERNAL NAME ENTRY SPECIFIES A STARTING LOCATION NOT
IMMEDIATELY FOLLOWING THE PORTION OF THE NAME ENTRY ALREADY DEFINED.

NAMEE

INSTR SU

AD DR

SER

REF

2
2

014

001200
001200
C

AOll
A012
AD13

NAME
RCD

LOC

ALTHOUGH THIS NAME STA TEMENT HAS A 001140
£246807
BLANK TAG AND OPERAND. THE lERO
001145
IN THE NUMERIC FIELD WILL CAUSE THE CON DEFINITION
WHICH FOLLOWS IT TO BEGIN IN THE NEXT 0/5 MEMORY
LOCATION RAT~ER THAN THE NEXT SEQUENTIAL LOCATION.

INVALID USAGES

CHO

F

SPECIAL USES OF NAME STATEMENTS

A010

AD 16
AD 17
AD 18

001210
001201
AD15
001202
2
001209 .0-&.0 11 000000 015
001209
001210

NAMEEEND
THIS NAME IS INVALID BECAUSE IT
A
CONTAINS AN ITEM WHICH IS NOT AN
RH
AREA DEFINITION, CON MISSPELLED.
THIS DEFINITION OCCUPIES
CHARACTER POSITIONS

RCD
C
C

C

AD 19 A AD18
AD 20 A AD19

NAMEF

NAME
RCD

0
2

NAME FEND
A

001215
001216

001222

AD23
2

AD 21
AD 22
AD 23
A024
A025

A A020
A AD21
A AD22
J
J

NAMEG

NAME
RCO

4
3
1

NAMEF END

001219
001221
001222
001222
001222

001222

AD23
7
8

AD 26
AD 27
AD 28
AD29

A A023
A A024
A A025
J

NAMEFI

tlAMEF lEi'll:
THIS IS INVALID FOR A SIMILAR
A
REASON, THE ADCON BREAKS THE
CONTINUE
CONTINUITY OF ASSIGNMENT.
THIS DEFINITION OCCUPIES
12 CHARACTER POSITIONS

001223
001226
001234 A1674
001234

001234

NOTEND
A

THIS WILL NOT COMPILE CORRECTLY
BECAUS'E THE OPERAND OF THE NAME
DOES NOT SPECIFY THE TAG OF THE
XXX
ENDING SEGMENT.
FORCE TERMINATION OF NAMEH
THIS DEFINITION OCCUPIES
CHARACTER POSITIONS

001235
001238
001240
001243
001249 A1249
001249

NAMEJ

001250
001251
001254

001260

A042
2
5

001255
001259
001260
001260
001269 Al269
001269

001260

AD41
10

AD 30 A A026
AD 31 A Ao27
AD28
AD 33 A A029
AD 34 A AD30
AD35 J

NAI':EFEND
NAMEF
NAMEG

NAMEF1END
NAMEFI
NAMEH

AD 32 A

68

OP

NOWENO

NAMEI

AD 39
AD 40
AD 41
AD42
AD 43
AD44

NAMEJ

A034
A035
A036
AD37

AD 45

AD38

AD 46

A039

AD
AD
AD
AD
AD
AD
AD
AD
AD
AD
AD

47
48
49
50
51
52
53
54
55
56
57

I
A
A
A
A
A
A
A
A

AD40
A041
A042
A043
A044
A045
A046
AD47
A048
A A049
A A050

AD
AD
AD
AD
AD
AD
AD
AD
AD

58
59
60
61
62
63
64
65
66

I
A
A
A
A
A
A
A
A

AD
AD
AD
AD
AD

61
68
69
70

A051
AD 52
A053
A054
A055
A056
A057
A058
A059

I A060
A A061
A A062
A A063
71 A A064

NAME
RCD
ceN
Nep

4

4
2
3

NAMEH

AD 36 A AD31
AD 37 A AD32
AD 38 A AD33
A
A
A
J
A
J

NAME
RCD
ADCON

NAMEJEND
NAMEJ
NAMEI

NAME
RCD
NAME
RCO

2
3

N
THIS DEFINITION OCCUPIES
THIS DEFINITION OCCUPIES

8 CHARACTER POSITIONS
4 CHARACTER POSITIONS

NAMEI IS INVALID BECAUSE IT ENDS
AT THE SAME TAG AT WHICH NAMEJ
BEGINS.

At;

£
NAMEJEND

05
1

&
D

THIS DEFINIT ION OCCUPIES
6 CHARACTER POSITIONS
FORCE TERMINATION OF NAMEI
DEFINITION OCCUPIES
CHARACTER POSITIONS

NCP

•THIS

TITLE

SWITCH DEFINITIONS

A028
4
001674 016 AG33

017
001249 018

11

001269 019

DATA SW ITCHES
AGE
TWENTY
FORTY
SI XTY
SEX
MALE
FEMALE

CHRCD

RCO
CHRCO

TITLe
PAYTYPE
BITCD
HOURLY
WEEKLY
BI WEEKL Y
MONTHLY
COMMISSION
FLAT FEE

SPLIT TAG
BAD1
BA02

2

40
20
40
60
N

CHARACTER CODE - CHRCD
A TWO DIGIT CODE WHOSE INITIAL
VALUE IS 40, AS SPECIFIED BY
THE NUMERIC AND OPERAND FIELDS
OF THE CHRCD STATEMENT.

001271

001272
001273

A ONE POSITION CODE WILL BE SET UP
M
WITHOUT INITIALIZATION SINCE A
F
CHReD WHICH FOLLOWS A RCO WITHOUT
ANY INTERVENING STATEMENTS CAN NOT SPECIFY AN
INIT IAL VALUE. IT IS CONSIDERED PART OF THE RCD.
BIT coDe - BITCO
A ONE POSITION BIT CODE FIELD WILL
BE DEFINED. THE TITLE ENTRY CAUSES
THE INITIAL VALUE TO BE VALID.
ALTHOUGH ALL SIX OF THE SPECIFIED
CODES WILL BE SET UP INO CAN BE
TESTED, THE USE OF THE B OR 8 BIT
IS QUESTIONABLE SINCE IT MAY
RESULT IN CREATING INVALID CHARACTERS IN MEMORY.

001274

G

1
2
4
8
A
B

RCD
BITCD

A
G

1
2

INVALID USAGES
THIS BITCD DEFINITION WILL GENERATE
AND CAN BE REFERENCED BUT WILL NUT
BE INITIALIZED TO THE VALUE SHOWN.

C
001275
001276

4
6
9

020

69

INDEX S PGlIN
AF 01

AF01

AF 02

AF02

TAG

05
06
07
08

I AF05
I AF06

A AF07
A AF08

AF
AF
AF
AF
AF
AF

15 I AF15
16 A AF16
17 A AF17
18 A AF18
19 A AF19
20 A AF20

AF
AF
AF
AF
AF
AF
AF
AF
AF
AF
AF
AF

21
22
23
24
25
26
27
28
29
30
31
32

I
A
A
A
A
A
A
A
A
A
A
A

36
37
38
39
40
41
42

I
A
A
A
A
A
A

COMMENTS

PG 008

F

lOC

INSTR SU

ADDR

SPl IT TAG

TAG OPERANDS
SINGLE BLANKS ARE VALID IN TAGS.

THE MEANING OF A TAG OPERAND DEPENDS ON THE INSTRUCTION AS WELL AS
THE DATA DEFINITION FOR THE TAG.
RCDSOX3
SET ACC TO SIZE OF RCDSOX3.
SET
RCDSOX3
LOD
LOD ACC WITH VALUE OF RCDSOX3.

C

INVALID USAGES
WORST CASES
TAG OPERAND T.oO LONG
RD/WR
SPECIAL CHARACTERS ARE INVALID

C

C

~~:.

SND
TR
GAP
GAP
RD/WR

04

NOP
NOP
SGN

LITERAL OPERANDS
1t00215#
A FIVE DIGIT SIGNED LITERAL
IlAPPLE#
A FIVE PLACE UNSIGNED LITERAL
IINOT AVAILABLEall A FOURTEEN PLACE LITERAL MESSAGE
II II
TWO BLANKS
11-04&567811
FPN LITERAL &.00005618
INVALID USAGES
C
OPENING LIT SYMBOL OMITTED
LITERAL INDICATED WITH TAG OPERAND
INTENDED.
TRANSFER TO A LITERAL
"DUPEII
ADD REQUIRES A SIGNED OPERANO
"001011
IlAGE
CLOSING LIT SYMBOL OMITTED
IITHIS LITERAL OVERFLOWS INTO THE NEXT CARD WHICH IS
INVALIDa# NOTE THAT ONLY THE FIRST LINE COMPILES.

ADD
LOD

&1411

IILOCA TI ONA.

TRE
ADD
LOD
WR

AF36
AF31
AF38
AF39
AF40
AF41
AF42

HERE. GAP HAS A LEADING BLANK.
HERE. GAP HAS NO LEADING BLANK.
LEADING BLANK ON GAP IS IGNORED.

L, GAP

TITLE
RAD
LOD
WR
CMP
LOD
10

AF21
AF22
AF23
AF24
AF25
AF26
AF27
AF28
AF29
AF30
AF31
AF32

001275

AD68

001449 BOO03
001454 80156

000003
000756

AA41
AA41

001459 10/100 04 000000
001464 10000
000000
001469 A1469
001474 A1474
001479 Tl470

001469
001471t
001410 024 AF13

001484
001489
001494
001499
001504

005219
005339
005387
005345
005229

OA10
OA15
OA29
oA20
OAll

001509 GOOOO
001514 85.386

000000
005386

OA28

001519
001524
001529
001534

L5358
G5362
85279
R5280

005358
005362
005279
005280

oA24
oA25
OA12
DAB
oA06

H5219
85339
R5387
45345
851
Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2012:06:02 10:17:10-08:00
Modify Date                     : 2012:06:03 02:24:51-07:00
Metadata Date                   : 2012:06:03 02:24:51-07:00
Producer                        : Adobe Acrobat 9.51 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:0b4c9671-5026-4b48-9b01-0be97762380a
Instance ID                     : uuid:32a9de88-9b17-45bc-af09-ba1c8fbf1d97
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 92
EXIF Metadata provided by EXIF.tools

Navigation menu