IBM 709 17090 DATA PROCESSING SYSTEMS BULLETIN
PRELIMINARY BULLETIN
FORTRAN ASSEMBLY PROGRAM ( F A P ) FOR THE I B M 709
/
7090-
--
SUPPLEMENTARY INFORMATION FOR THE 32K VERSION ---
T h i s bulletin was p r e p a r e d by IBM Applied P r o g r a m m i n g a s a supplement t o the FORTRAN A s s e m b l y P r o g r a m ( F A P ) f o r t h e IBM 70917090, ( F o r m
J28-6098-I), and together with t h a t publication, p r o v i d e s c u r r e n t s p e c i f i c a t i o n s f o r F A P p r o g r a m s t o be r u n on 32K 709 o r 7090 Data P r o c e s s i n g S y s t e m s , operating u n d e r e i t h e r the FORTRAN o r B a s i c Monitor (IBSYS).
Included h e r e i n a r e d e s c r i p t i o n s of new p s e u d o - o p e r a t i o n s , with s e c t i o n s on t h o s e connected with m a c r o - o p e r a t i o n s and updating, and complete S y s t e m Symbol and Combined Operations T a b l e s . F o r additional information on F A P o p e r a t i n g u n d e r the B a s i c Monitor (IBSYS), t h e r e a d e r i s r e f e r r e d t o the IBM p r e l i m i n a r y bulletin, B a s i c Monitor (IBSYS), ( F o r m J28- 8086).
Coding i s indicated throughout t h i s bulletin by the u s e of a l l c a p i t a l l e t t e r s f o r a c t u a l coding; e . g . , CLA.
CONTENTS
The F A P M a c r o - O p e r a t i o n P r o c e s s o r
. . .
E x a m p l e s of P r o g r a m m e r M a c r o - O p e r a t i o n s. . .
Macro-Defining Pseudo.Operations. . .
MACRO
. . .
The Location F i e l d. . .
The A r g u m e n t L i s t. . .
Extending The A r g u m e n t L i s t. . .
Alternative F o r m. . .
. . .
MOP
. . .
The Prototype
. . .
The Location F i e l d
The Operation F i e l d
. . .
. . .
The V a r i a b l e F i e l d
. . .
Nesting Macro-Definitions
. . .
R e s t r i c t i o n s i n Macro-Definitions
. . .
M a c r o - I n s t r u c t i o n s
MAC
. . .
. . .
Punctuation
A r g u m e n t S t r i n g s
. . .
. . .
Nested M a c r o-Ins t r u c tions
. . .
The G e n e r a t e d C a r d s
C r e a t e d S y m b o l s
. . .
NOCRS. . .
ORGCRS. . .
I R P...
RMT. . .
Updating Symbolic F A P T a p e s
. . .
UPDATE. . .
NUMBER. . .
D E L E T E. . .
. . .
IGNORE
SKIPTO
. . .
ENDFIL. . .
. . .
REWIND
. . .
UNLOAD
S K P F I L
. . .
. . .
UMC
. . .
ENDUP
. . .
Tape Positioning
. . .
Update E x a m p l e s
. . .
Additional Symbol Defining P s e u d o - O p e r a t i o n 2 8
S E T
. . .
2 8. . .
Additional P r o g r a m Linking P s e u d o - O p e r a t i o n 2 8
Additional L i s t Control Pseudo-Operations
. . .
. . .
INDEX
PMC
. . .
. . .
N U L LAdditional Conditional Assembly Pseudo - 0 p e r ation
. . .
IFF
...
Revised Pseudo-Operations
. . .
C A L L
. . .
END
. . .
ENTRY. . .
LBL. . .
LOG. ORG. . .
PCC. . .
. . .
PRINT. . .
TAPENO
AdditionalRevisions
. . .
Appendix I: Combined Operations Table. . .
35Appendix 11: System Symbol Table. FORTRAN Monitor
. . .
45. . .
THE F A P MACRO-OPERATION PROCESSOR
A F A P m a c r o - o p e r a t i o n i s a type of pseudo-operation c r e a t e d by t h e p r o g r a m m e r . The m o s t significant p r o p e r t y of a n i n s t r u c t i o n - -
specifying a m a c r o - o p e r a t i o n ( a m a c r o - i n s t r u c t i o n ) i s that i t c a n g e n e r a t e one o r m o r e c a r d i m a g e s . The contents of the c a r d i m a g e s g e n e r a t e d a r e virtually u n r e s t r i c t e d and m a y include any m a c h i n e operation, any pseudo-operation not r e s t r i c t e d t o the f i r s t c a r d group ( e . g . , COUNT, ENTRY), o r any m a c r o - o p e r a t i o n , and any f i e l d p e r m i t t e d on a F A P s o u r c e c a r d .
A m a c r o - i n s t r u c t i o n c a n be r e g a r d e d a s a n abbreviation f o r a sequence of c a r d i m a g e s . The sequence of c a r d i m a g e s g e n e r a t e d by the m a c r o - i n s t r u c t i o n i s d e t e r m i n e d by the p a r t i c u l a r m a c r o - definition c o r r e s p o n d i n g t o the m a c r o - i n s t r u c t i o n code. E a c h m a c r o - o p e r a t i o n h a s i t s own definition, which c o n s i s t s of a head- ing c a r d , a sequence of prototype c a r d i m a g e s , and a n END c a r d . A prototype c a r d image h a s a s t a n d a r d F A P s o u r c e c a r d f o r m a t with location f i e l d , operation code, and v a r i a b l e f i e l d . R e m a r k s m a y a p p e a r on a prototype c a r d ; however, the r e m a r k s will not n o r m a l l y a p p e a r following the v a r i a b l e f i e l d on the m a c r o - g e n e r a t e d c a r d i m a g e . The f i e l d s of a prototype c a r d m a y con- s i s t of: t e x t . which - w i l l be r e p r o d u c e d a s written; substitutable a r g u m e n t s ; and ( s p e c i a l ) punctuation c h a r a c t e r s , which d e l i m i t a r g u m e n t s and, like t e x t , a r e r e p r o d u c e d .
A f i e l d o r subfield i s text if i t i s longer than s i x c h a r a c t e r s o r if i t i s a s t r i n g of one through s i x c h a r a c t e r s , delimited by punctuation m a r k s , which d o e s not a p p e a r in the a r g u m e n t l i s t of the m a c r o - o p e r a t i o n heading c a r d . A field o r subfield i s a substitutable a r g u m e n t if i t i s a s t r i n g of one through s i x c h a r a c t e r s which a p p e a r s i n the a r g u m e n t l i s t af the m a c r o - o p e r a t i o n heading c a r d . A m a c r o - g e n e r a t e d sequence of c a r d i m a g e s c o n s i s t s of e a c h of the prototype c a r d i m a g e s , with text and punctuation c h a r a c t e r s a s on the prototype, but with substitutable a r g u m e n t s r e p l a c e d by
specific a r g u m e n t s t r i n g s (of u n r e s t r i c t e d length) whose position i n the a r g u m e n t l i s t of the m a c r o - i n s t r u c t i o n c o r r e s p o n d s t o that i n the a r g u m e n t l i s t of the macro-definition heading c a r d .
E x a m p l e s of P r o g r a m m e r Macro-Operations
. a .
C L A A D D S T 0
1 . . * a *
SUBCOM C C A A D D S T 0
a * . a a a
C L A ADD
ST0
F E D T A X S T A T AX T O T T A X
P A R T l P A R T 2 T O T A L
The p a t t e r n 05 t h e s e t h r e e instructions might be designated by
s o m e BCD name, say QSUM, which coslld then be defined as s
follows:
t
QSUM MACRO V l r V 2 r V 3
I
C L A V 1
A D D V 2 I
S T 0 V 3
QSUM E N D I
J
The above sequence of five s o u r c e c a r d s g e n e r a t e s no binary words in the object p r o g r a m , but constitutes the definition of the macro-operation which the p r o g r a m m e r h a s chosen t o c a l l QSUM. The f i r s t c a r d i s the macro-definition heading c a r d . J;t. includes the name of the macro-operation in t h e location field and the argument l i s t in the variable field. The next t h r e e c a r d s a r e the prototype, in which V1, V2, V3$ a r e substitutable a r
-
guments<, identified i n the heading c a r d a r g u m e n t l i s t .A31
of the3
other f i e l d s , CLA, ADD, STO, a r e text, since they do not ap- p e a r in the argument l i s t . The fifth c a r d (ENDIJ m a r k s the end of the range of the mmro-definition. It will not t e r m i n a t e a s s e m b l y . Once the macro-operation QSUM h a s been defined i n the s o u r c e p r o g r a m , the sequence of CLA, ADD, STO, instructions m a y be replae'ed by a macru-injstruction c a r d which. g e n e r a t e s the se- quenc& a$ instructions with t h e i r substitutable a r g u m e n t s replaced by the arguments in the variable field of the maaro-instruction QSUM:
*--
* a * I
..a
00127 QSUM F E D T A X I S T A T A X I T O T T A X I
a. a
. a .
11
SUBCOM QSUM X S U B l r Y S U B l e Z S U B l
. a . . a .
1
Note, in the above example, the following points:
1. The string
QSUM
which appears in the location field of the pseudo-operation MACRO is not a symbol, but a code for the macro-operation to be defined, and a s such is entered into the Combined Operations Table. It may be the same a s a location symbol?qpearing anywhere in the assembly, including symboEs\within the macro-definition.The substitutable arguments V1, V2, V3, which appear in the variable field of the macro-definition heading c a r d and a l s o in various fields within the prototype, m e r e l y
characterize the order of the expressions and character strings which may appear in the variable field of a l a t e r macro-instruction using the given macro-operation. If, on the macro-operation heading c a r d , the o r d e r were to be changed to V3, V1, V2, then the macro-instruction
QSUM TOTTAXsFEDTAXvSTATAX
would cause generation of the same c a r d images. Because the substitutable arguments a r e dummy names, they may be identical t o strings used elsewhere in the p r o g r a m in
location, operation, o r variable fields, a s symbols o r operation codes, including the code for this o r any other macro-operation. The programmer should e x e r c i s e caution in constructing the prototype s o the text will not be confused with substitutable arguments, as every string of s i x o r
fewer c h a r a c t e r s , in any field, is compared with the argument l i s t . Special c a r e should be taken with alphameric text, or with fields of VFD,
DEC,
o r OCT pseudo-operations.In the simple example of the macro-definition given above, the substitutable arguments appeared in a d d r e s s fields in the proto- type and were replaced by symbols on the macro-generated c a r d s . In general, substitutable arguments may appear in the location field, the operation field, in any of the subfields of the variable field, or a s a heading c h a r a c t e r in any subfield. The substitutable arguments may be replaced by any valid F A P ex- p r e s s i o n or appropriate alphameric character s t r i n g s .
If a substitutable argument appears in a n operation field, i t may be a string of one through six c h a r a c t e r s ; however, the code which replaces it must be a standard FAP operation code of t h r e e through s i x c h a r a c t e r s .
I
QPOLY MACRO COEFFILOOPPDEGPT~OP
AXT DEG9T
LDQ COEFF
I
LOOP F N P GAMMA
0 P C O E F F + U E G + l p T I
XCA
T I X L O O P r T s l I
QPOLY END I
Here mnemonic c h a r a c t e r strings have been chosen t o r e p r e s e n t the substitutable arguments. Notice that LOOP appears in a
location field, OP in a n , operation field, and that COEFF and DEG r appear a s symbols and within, expressions in a d d r e s s subfields.
Notice also that GAMMA is text * - a symbol, and not a substitutable dummy argument
-
and) presumably will be defined elsewhere in*
the program.. Any use of t h e code QPOLY in a macro-instruction should be accompanied by a n argument l i s t of appropriate sub- stitutions for the substitutable arguments. F o r example, LOOP should be replaced by a symbol, which should not be multiply defined, and O P should be replaced by a valid operation code. AQPOLY
macro-instruction might. be written:I
0 2 0 3 1 X 0 1 5 QPOLY C l d 4 r F I R S T 9 5 r 4 r F A D I
I
% .
The macro-instruction would cause the following s i x c a r d images to be generated:
I '
I
0 2 0 3 1 0 7 7 4 0 0 4 0 0 0 0 5 AXT 5 9 4
0 2 0 3 2 0 5 6 0 0 0 0 0 6 1 6 1 L D Q C 1 - 4 I
9 2 0 3 3 0 2 6 0 0 0 . 0 0 0 1 3 5 F I R S T FMP GAMMA 0 2 0 3 4 0 3 0 0 0 0 0 0 6 1 6 7 F A U C 1 - 4 + 5 + l t 4 0 2 0 3 5 ' 0 1 3 1 0 0 0 0 0 0 0 0 X C A
I
0 2 0 3 6 2 0 0 0 0 1 4 0 2 0 3 3 T I X F I R S T 9 4 9 1
I
I
The symbol X015 i s defined a s the location in which the f i r s t in- struction (AXT) appears; each of the substitutable argument s i s replaced by the corresponding argument in the m a c r o -instruction argument l i s t . The expression arising f r o m the prototype a d d r e s s
C0EFFtDEG-t 1 i s equivaleht t o
C
1 t 2 .Use of the m a c r o-operation p r o c e s s o r p e r m i t s simulation of machine instructions of another computer, o r extending the machine
operation vocabulary of 'the 709/7090.
F o r sxa&iple, S T 0 can be modified to dump the information stored
r
on each execution:
I 0 6 0 1 7 1 1 6 0 0 0 0 * S T 0 OPSYN S T 0
M S T 0 MACRO A I
* S T 0 A
SXA * + 2 9 4 I
TSX DUMP r 4
AX T ** 9 4 I
S T 0 END
The M flag, appearing in the left margin of the a s s e m b l y listing to point out a redefinition of a n existing code,does not indicate a n a s s e m b l y e r r o r .
MACRO-DEFINING PSEUDO-OPERATIONS
MACRO
The pseudo-operation MACRO is used to name a macro-operation and to identify the arguments in the succeeding prototype. The constituents of the MACRO pseudo-instruction a r e :
1 . T h r e e to six-
B C D
c h a r a c t e r s (not all z e r o s ) , appearing in the location' field;. "
2. The operation code MACRO, appearing in the operation field; and
3 . A l i s t o f substitutabledumrnyarguments, a p p e a r i n g i n t h e variable field.
The Location F i e l d
The c h a r a c t e r string in the location field is not a location symbol and will subsequently be used a s a macro-operation code. If i t i s the s a m e a s any other machine ope'ration, pseudo-operation, o r macro-operation, the pseudo-operation will be flagged, the code will be redefined within the Combined Operations Table and the f o r m e r definition l o s t .
. .
The Argument L i s t
The substitutable arguments in the macro-definition heading c a r d argument l'ist m a y be any Iegal FAP symbols, o r m a y consist of a l l numeric c h a r a c t e r s (excluding a l l z e r o s ) . The substitutable a r g u m e n t s i n a rnacko-definition m a y be s e p a r a t e d by any of the following punctuation c h a r a c t e r s :
and the argument l i s t i s terminated by the c h a r a c t e r "blank. 1 1
After a punctuation character, suceeding' punctuation c h a r a c t e r s o r a n explicit z e r o a r e ignored and do not r e s u l t i n a substitutable argument of z e r o .
Suggestive notation ib.a?macro-definition argument l i s t may be used.
y - F o r ~ e x a m p l e
,
in a macro-definition heading argument l i s t\-
I
. ALPHA MACRO, A ( B + C ) - U S E Ii s identical with
I
1 --/ALPHA MACRO AIBPCIDVE I
Extending the Argument L i s t
The argument l i s t of a macro-definition heading c a r d may be ex- tended by the use of the
ETC
pseudo-operation. In o r d e r that afollowing ETC c a r d be recognized, it is necessary that the follow-
u
i q conventions apply to the preceding card:
1. An unmatched left parenthesis exists in the variable field; o r ,
*
2. The variable field i s terminated by a $ immediately followedby a blank or card column 73. This will not be confused with the use of this character to signal a heading character o r a transfer vector name, a s in neither of those c a s e s w i u g h ~ t $ be immediately followed by a blank; o r
3. The variable field extends t o card column 7 2 ; . -
If a card with a n unmatched left parenthesis is not immediately followed by a n ETC c a r d , an assembly e r r o r will be flagged. If a c a r d with a terminal $ is not followed by a n ETC, the terminal $ i s deleted f r o m the macro-definition and ignored.
If the preceding card does not follow these conventions, an ETC c a r d will be treated a s the f i r s t c a r d i n the prototype, and an assembly e r r o r will usually r e s u l t .
Alternative F o r m
An alternative form of the MACRO pseudo-instruction is the following :
1. BXanks, appearing in the location field;
2 . The operation code MACRO,', appearing in the operathxannf%&& and
3. Blanks, a p p e a r i n g i n t h e v a r i a b l e f i e l d .
The above c a r d is immediately followed by a c m & w i t h the= fields:
1. A
FAP
symbol, appearing in the location fieldj;;2 , Three to six-BCD c h a r a c t e r s appearing in the operatiom t o be used a s the macro-operation code; and
3 . A E s t of s ~ i t u t a b l e arguments, appearing in the variable field,
A symbol, which may appear in the location field of the second e a r d , is considered to be a substitutable argument, and not a location symbol. It i s replaced by the corresponding argument in the
location field of the macro-instruction c a r d .This field i n the m a c r o
-
instruction i s a specific argument, and not a location symbol. If it appears i n the variable field of a n instruction, it m u s t be defined elsewhere in the program.MOP
The pseudo-operation MOP i s a l s o used t o define a macro-operation. The constituents of the MOP pseudo-instruction a r e :
1. Blanks, appearing in the location field;
2 . The operation code MOP, appearing in the operation field; and
3 . The macro-operation code, followed
by
the argument l i s t ,appearing in the variable field.
MOP
is identical to MACRO except that the macro-operation code being defined appears a s the f i r s t subfield in the variable field, followed by a punctuation characterand
the argument l i s t .The Prototype
The prototype follows the macro-definition heading c a r d . It
consists of a s e r i e s of F A P instructions which use the substitutable arguments listed in the variable field of the preceding MACRO o r M O P . The prototype must be followed by an
END
c a r d with the macro-operation code in i t s location field o r variable field, o r with both the location field and the variable field blank.To lend g r e a t e r flexibility to macro-operations, parentheses and the apostrophe have been included in the l i s t of special c h a r a c t e r s which may be used within the various fields of the macro-definitions
.
Thus, neither may be used a s p a r t of a substitutable argument.Remarks c a r d s with an a s t e r i s k in column 1, appearing within a m a c r o -definition, will not appear in the expansions.
Heading c h a r a c t e r s in effect within the region in which the m a c r o - definition appears do not apply to the definition.
The Operation Field
1
.J
The following may appear in the operation field of a prototype in- s truction: any substitutable argument, any machine ope ration, any pseudo-operation not r e s t r i c t e d to the f i r s t c a r d group ( e . g .
,
COUNT, ENTRY) ,or any macro-operation code.The Variable Field
v
A blank, if encountered before c a r d column 72 on a prototype c a r d (except the c a r d s BCD, BCI,
REM,
TTL), is considered t o terminate the variable field, and any information o r commentary to the right of the blank will not be included in the macro-definition. If the blank appears following an unmatched left parenthesis, how- ever, the blank does not terminate the scan. Blanks withinparenthesis a r e considered to be text. If a matching right parenthesis i s not encountered before c a r d column 73, a n ETC c a r d m u s t follow. Unmatched parentheses cause a n assembly e r r o r .
Alphameric c a r d s a r e scanned in full f o r substitutable arguments.
If
the variable field of BCD card (beginning in c a r d column 12), o r a BCI card (beginning in card column 12-16), commences with a non-blank, non-numeric c h a r a c t e r , the f i r s t subfield should be a substitutable argument for which a count will be substituted in the m a c r o -instruction argument l i s t .The apostrophe ( 8 - 4 punch) may be used to concatenate (link) p a r t i a l subfields in the operation field o r in the variable field. It i s possible to create a single subfield f r o m a combination of arguments and text, a s delimits a n argument in the macro-de- finition prototype, but i s itself not included in the m a c r o -
definition. The ! character cannot be used to concatenate sub- fields of lower level nested macro-definitions. F o r example, to delimit the count on a BCD prototype c a r d , the following may be used:
i
A L P H A MACRO A I B ~ C
B C D A ' O ' 0 ' ERROR. C O N D I T I O N ' C ' I G N O R E D . I
A L P H A E N D
I
I
The macro-instruction
1
0 2 2 3 3 A L P H A 7 r F I E L U v I I
will cause the following card to be generated:
The following illustrates macro-generation of a n o,peration code b y means of concatenation:
J TAPENO A6B K T A P E N O B l L
NAME4 MACRO A s B I C S D S E S F S G A B ' T ' C ' D E
S D ' F 6
NAME4 END
NAME4 AXSWIDIJIILS** AX WTDJ
SOL
**
NAME4 A Y ~ R S B I S S ~ N S K AY RTB 5
SDN K
If parentheses a r e to be used as a p a r t of text, the enclosed string m u s t not appear in the macro-definition heading argument list, o r the string will be considered a substitutable argument.
If a heading c h a r a c t e r of the f o r m A$B is required, either A o r B o r both may be substitutable arguments.
If a t r a n s f e r vector name is required of the f o r m $NAME, NAME may be a substitutable argument.
If a l i t e r a l of the f o r m =A is required, A may be a substitutable argument for which a valid f o r m of a l i t e r a l must be substituted. The variable field of any c a r d in the prototype may be extended by the use of the ETC pseudo-operation. In o r d e r that a following ETC c a r d be recognized, it is n e c e s s a r y t o follow the conventions stated for extending a macro-definition heading c a r d argument l i s t (page 6 ) . The p r o g r a m m e r should exercise caution that a macro-generated c a r d image which overflows column 7 2 h a s a variable field which is properly extended by a n ETC c a r d . Such variable fields a r e limited t o those of a macro-instruction c a r d , o r a nested macro-definition heading c a r d .
These conventions for ETC c a r d s a r e different f r o m those for ETC c a r d s following
CALL
o r VFD pseudo-instructions.
If a preceding c a r d does not follow these conventions, an ETC c a r d will be t r e a t e d a s is any other card in the prototype, and will be generated with arguments properly substituted. This ETC c a r d may be used t o extend the variable field of a CALL o r VFD pseudo-instruction, provided i t follows the conventions f o r CALL o r VFD.The m a c r o - operation compiler will generate ETC c a r d s , recognized by the macro-operation processor only, t o follow any generated instruction whose variable field overflows c a r d column 7 2 .
Nesting Macro-Definitions
various fields within the nested macro-operation will be scanned f o r substitutable arguments in the argument l i s t of the outermost macro-definition. Those arguments common to both the outer
-
m o s t macro-definition and the nested macro-definition will besubstitutable arguments for this inner macro-operation. Those intended to be substitutable arguments in the nested m a c r o - ope ration, but not appearing in the outermost m a c r o-def inition argument l i s t , will be considerdd a s text within the outermost prototype. A macro-instruction using the outermost code will generate the nested macro-definition heading c a r d s and proto- types of each of the macro-operations nested one level below, with a l l outer level arguments properly substituted. The name of the nested macro-operation may itself be a n argument. This will cause the definition of a lower level macro-operation, the proto- type of which will be scanned for substitutable arguments in the argument l i s t of the c u r r e n t level definition, including those substituted in the outer expansion. Lower level macro-operations will not be defined until a l l higher level macro-operations within which they a r e nested have been expanded.
If macro-definitions a r e nested, the ends of the lower level proto- types must be marked with END c a r d s bearing the name of the macro-operation in the location or the variable field. If no name appears in either field of the END c a r d , the outermost m a c r o - definition i s terminated.
An example of nested macro-definitions i s a s follows:
-1
N E S T l MACRO A B B s C N E S T 2 MACRO ASDIE N E S T 3 MACRO B ~ D I F
0 . 0
I
* * *
N E S T 3 END
I
N E S T 2 END
N E S T l END
I
1
The prototype of a macro-definition may include macro-instructions, the macro-operations of which have not yet been defined; however, such lower level macro-operations must be defined p r i o r to a n appearance of the higher level macro-instruction. Circular definitions, which will r e s u l t in a loop within the m a c r o - operation p r o c e s s o r , must be avoided by the p r o g r a m m e r .
Restrictions on Macr o-Definitions
The following r e s trictions apply to a l l m a c r o-def initions: 1. When operating under the FORTRAN Monitor, a l l m a c r o -
The effective limit of the number of macro-definitions o r the total length of all macro-definitions i s the length of tables which these s h a r e . Macro-operation codes a r e inserted in the Combined Operations Table, and the length of the Table m u s t not exceed 1024 operation codes. Approximately 400 names a r e available to the p r o g r a m m e r to i n s e r t macro-operation codes, o r codes defined by OPD, OPSYN, or OPVFD pseudo- operations.
Macr o-definitions s h a r e c o r e storage with the symbol table; e n t r i e s in one reduce the space available f o r the other. The space taken by macro-definitions is l a t e r occupied if r e - quired by the Symbolic Reference Table.
4. An argument l i s t longer than 63 arguments will be t r u n c a t e d , but will not be flagged.
Macro-Instructions
A macro-instruction i s used to generate, in line, the sequence of instructions given by the prototype,with substitutions f o r the a r g u - ments. The constituents of a macro-instruction a r e :
1. A FAP symbol, appearing in the location field;
2. Apreviouslydefinedmacro-operation, a p p e a r i n g i n t h e operation field; and
3. A l i s t of FAP symbols, expressions, alphameric c h a r a c t e r s t r i n g s , o r operation codes, appearing in the variable field. The symbol in the location field of the macro-instruction will be defined a s the location of the next instruction. A macro-instruction should not appear within the range of a DUP.
MAC
An additional pseudo-operation i s available for use a s a m a c r o - instruction. The constituents of the MAC pseudo-instruction a r e : 1. A FAP symbol, appearing in the location field;
2. The operation code MAC, appearing in the operation field; and
3 . The name of the macro-operation followed by the argument
l i s t appearing in the variable field.
Punctuation
Only commas and parentheses may be used to separate arguments
3
in the macro-instruction argument l i s t . A single comma followinga right parenthesis, o r a single comma preceding a left parenthesis, i s redundant and may be omitted. Consecutive commas define a null argument string; an explicit z e r o , if s o d e s i r e d , m u s t appear in the argument l i s t . A blank not within parentheses t e r m i n a t e s the argument l i s t . A p a i r of parentheses surrounding a string of c h a r a c t e r s in a macro-instruction argument string signifies that everything within the parentheses is to be substituted f o r the c o r - r e sponding argument in the macro-definition prototype. Within such a pair of parentheses, nested parentheses, commas, and blanks a r e considered to be p a r t of the string to be substituted. If a matching right parenthesis i s not encountered before c a r d column 73, a n ETC c a r d m u s t follow. Unmatched parentheses cause a n assembly e r r o r .
P a r e n t h e s e s to be included a s p a r t of a field t o be substituted in a prototype must be enclosed within a n outer p a i r of parentheses which will be deleted in the macro-instruction expansion. F o r example, given the macro-definition
C A L L I O M A C R O I O C O M t T l t O P t L A Q E L t T Z t U N I T t P F X e E R R E T T S X ( T A P E ) r 4
P Z E I O C O M t T l r O P P Z E L A B E L t T 2 t U N I T
I
I F F O t E R R E T
I
P F X ERRET
C A L L 1 0 END
I
the corresponding macro-instruction could be
03072 C A L L 1 0 C I T I O ~ ~ ~ ( ( R B E P ) ) ~ C I T L B ~ ~ C I T T A P I , ,
I
03072 0074 00 4 73406 T S X ( T A P E ) t 4
03073 0 40004 2 06610 P Z E C I T I O t 2 t ( R B E P )
I
03074 0 00004 0 06614 P Z E C I T L B t t C l T T A P
I F F 0 1
I
Note that TAPE should not be a substitutable argument; (RBEP) m u s t be enclosed in an outer pair of parentheses; and that in the macro-instruction argument l i s t , a n explicit null argument bounded by a comma a p p e a r s corresponding in position to the substitutable argument ERRET in the macro-definition argument l i s t . This will cause the fourth word of the calling sequence to be omitted ( s e e I F F on page 3 1)
.
As the character $ does not delimit a n argument in the m a c r o - instruction argument l i s t , i t may be used f r e e l y t o indicate a heading c h a r a c t e r o r a t r a n s f e r vector symbol, to replace a substitutable argument. If the c h a r a c t e r $ i s a t the end of the argument l i s t , a comma must be used t o distinguish this f r o m the c h a r a c t e r used to flag a following ETC c a r d . As the c h a r a c t e r =
Argument Strings
The specific argument s t r i n g s to be substituted must be given in the s a m e o r d e r in the macro-instruction argument l i s t a s the substitutable arguments appear i n the macro-definition heading argument l i s t .
It i s not n e c e s s a r y to r e s t r i c t the length of an argument string t o be substituted into a location field to six c h a r a c t e r s , o r into an operation field t o seven. Even a n e n t i r e c a r d image may be in- s e r t e d into any field. No blank will be i n s e r t e d following
a location field longer than six c h a r a c t e r s , and the operation field, if any, will follow immediately.
Example :
t N A M E 9 MACRO X X X
X X X REMARK
I
N A M E 9 END
04061 NAME9 ( C L A B 1
I
04061 0500 00 0 06104 C L A B REMARK
I
1
Nested Macro-Instructions
It is possible t o nest macro-instructions by including either a macro-operation code o r a substitutable argument which will be replaced by a macro-operation, within an operation field in the prototype.
Example :
X X X MACRO
I
X X X E N D
COS MACRO O P O P
I
T S X S C O S 9 4 COS E N D
I
04155 C O S ( C O S ( X X X ) 1
I
04155 COS ( X X X 1 X X X
T S X B C O S e 4
I
04155 0074 00 4 00005
04156 0074 00 4 00005 T S X S C O S e 4
I
I
Note that the null macro-operation XXX will cause the generation of no c a r d i m a g e s . The same effect could have been obtained by writing :
.
I-0 07774 0 04757 X X X O P S Y N N U L L
I
I
Note a l s o that the a s s e m b l e r will a s s u m e a comma o r an open parenthesis immediately following the operation code, a s e a r l y a s c a r d column 11, t o be the end of the operation field o r the be- ginning of the variable field, respectively. Hence, suggestive notation, such a s
may be used a s a string t o replace a substitutable argument.
3
-J/ The argument and sub-argument l i s t of a macro-instruction may
be extended by the use of the ETC pseudo-operation. In o r d e r that a following ETC c a r d be recognized, i t i s n e c e s s a r y that the preceding c a r d follow the conventions stated f o r extending a macro-definition heading c a r d argument l i s t (page 6 )
.
~f the preceding c a r d does not follow these conventions, an ETC c a r dwill be treated a s the f i r s t card following the macro-generated c a r d sequence, which usually r e s u l t s in an assembly e r r o r .
The Generated Cards
The generated c a r d s a r e similar to the prototype c a r d s , except that the substitutable arguments in the prototype w i l l be replaced with the arguments appearing in the macro-instruction argument l i s t . The heading c h a r a c t e r s i n effect within the region in which the macro-instruction appears will be prefixed to a l l symbols
shorter than s i x c h a r a c t e r s in the location and variable fields. In the 7 0 9 / 7 0 9 0 mode, the macro-compiler will generate the variable field beginning i n c a r d column 16, except f o r the c a r d s BCD, BCI, REM, TTL. In the 704 mode and f o r the c a r d s BCD, BCI,
REM,
TTL, the variable field will begin in c a r d column 12. No note i s taken of the c a r d column in which the variable fieldbegins on a prototype c a r d . At l e a s t one blank will separate the
2
variable field f r o m an operation code which extends beyondthese c a r d columns.
Created Symbols
If arguments a r e missing f r o m the end of the argument l i s t of a macro-instruction, symbols will be created to fill the vacancies. These symbols take the f o r m of
.
.001,.
.002, to.
.nnn, throughout the p r o g r a m . An explicitly null argument terminated by a comma will be treated a s null; created symbols will be supplied only a t the end of the argument string.F o r example, given the macro-definition heading c a r d
1 A L P H A M A C R O A g B g C 9 D I
1
and the m a c r o-instruction c a r d
1
A L P H A X I I I
I
each appearance of the substitutable argument A will be replaced by X, each appearance of the substitutable argument B will be
omitted, a s the argument is explicitly void, and each appearance of the substitutable arguments C and D will be replaced by the
If m o r e than9999 symbols a r e t o be c r e a t e d , the p r o g r a m m e r m u s t r e -origin c r e a t e d symbols using the ORGCRS pseudo- operation, o r assembly will be t e r m i n a t e d .
NOCRS
The pseudo-operation NOCRS is u s e d to s u p p r e s s the c r e a t i o n of symbols to replace specific argument s t r i n g s m i s s i n g f r o m the end of a m a c r o - i n s t r u c t i o n argument l i s t . The constituents of the NOCRS pseudo-instruction a r e :
1. Blanks, a p p e a r i n g i n t h e l o c a t i o n f i e l d ;
2 . The operation code NOCRS, appearing i n the operation field; and
3 . Blanks, appearing in the variable field.
ORGCRS
In o r d e r t o a l t e r the f o r m of c r e a t e d symbols, the pseudo-operation ORGCRS may be used. This pseudo-operation a l s o r e i n s t a t e s the c r e a t i o n of symbols, if they had been s u p p r e s s e d by NOCRS. The constituents of the ORGCRS pseudo-instruction a r e :
1. Blanks, appearing i n the location field;
2 . The operation code ORGCRS, appearing in the operation field;
and
3 . Blanks o r one BCD c h a r a c t e r followed by t h r e e digits, a p - pearing in the variable field.
The BCD c h a r a c t e r in the variable field, if any, will r e p l a c e the second dot (. Annn); the digits, if any, will be the origin of a new s e t of c r e a t e d symbols. This origin will be one lower than the f i r s t symbol actually c r e a t e d . If the BCD c h a r a c t e r is d e s i r e d , the t h r e e digits m u s t be stated explicitly: Annn; but if i t is not d e s i r e d , nnn i s sufficient.
MONSTR MACRO D A V I D ~ A L L E N ~ R O B E R T B S C O T T CAL D A V I D
TZE SCOTT STA ROBERT ALS 18
O A A ROBERT SCOTT SLW ALLEN
RM 1
ROBERT BSS 1
RM 1
In this macro-definition, the t r a n s f e r a d d r e s s SCOTT and the 7
storage a d d r e s s ROBERT must be unique f o r each appearance of the macro-operation i n a macro-instruction. However, neither i s required outside of the resulting expansion. Hence the as- sembler may be permitted t o a s s i g n a location symbol, by omit- ting the corresponding arguments in the macro-instruction
argument l i s t . The pseudo-instruction ORGCRS is used t o a l t e r the format of the created symbol t o
.
Nnnn:I
ORGCRS Nl5O II
I
04170 MONSTR MARLYNBHERB
04170 -0500 00 0 00312 CAL MARLYN
0 4 1 7 1 0100 0 0 0 04175 TZE a N152
I
04172 0621 00 0 06000 STA oN15104173 0767 00 0 00022 ALS 18
I
v04174 -0501 00 0 06000 ORA aN151 I 04175 0602 0 0 0 00313 oN152 sLW HERB
I
The pseudo-operation BSS will be assembled later in the program ( s e e RMT below).
I
06000 oN151 BSS 1
I
I
IRP
The pseudo-operation IRP i s used within a prototype to i t e r a t e a s e r i e s of instructions within the s e t of generated instructions. constituents of the IRP pseudo-instruction a r e :
1. Blanks ap,pearing in the location field;
2 . The operation code IRP, appearing i n the operation field; and
3 . A FAP symbol, appearing in the variable field.
The symbol in the variable field must be the name of a single substitutable argument appearing in the macro-definition a r g u - ment l i s t . An
IRP
c a r d m u s t precede the instructions t o be iterated, and another IRP c a r d with blank location and variable fields must follow the instructions. Both IRP c a r d s must be with- i n the range of the prototype.The argument to be substituted (appearing i n the macro-instruction argument l i s t ) i s a string of sub-arguments separated by commas and enclosed in parentheses. The number of t h e s e sub-argument e s t r i n g s will be the number of iterations of the enclosed c a r d s , and each iteration will be made with the corresponding sub -argument
string substituted f o r the dummy argument. If no argument was b given in the variable field of the f i r s t
IRP,
no iterations will bemade; one argument causes one iteration, etc
.
SUMSQ MACRO T IB I S T 2 T
I R P I3 I
LDQ B 11
FMP B 2 1
I
FAD T 3 )
S T 0 T 4 I
I RP SUMSQ END
I
IThe four instructions marked a r e to be iterated. To compute A = X ~
+Y
+Z,
the following coding could be used:04234 SUMSQ A I ( X I Y I Z )
04234 0600 00 0 06016 STZ A
I
I R P XIYIZ04235 0560 00 0 06062 LDQ X
I
04236 0260 00 0 06062 FMP X
04237 0300 00 0 06016 FAD A
04240 0601 00 0 06016 S T 0 A
I
04241 0560 00 0 06064 LDQ Y
04242 0260 00 0 06064 FMP Y
I
04243 0300 00 0 06016 FAD A
04244 0601 00 0 06016 S T 0 A
I
04245 0560 00 0 06205 LDQ Z
04246 0260 00 0 06205 FMP Z
I
04247 0300 00 0 06016 FAD A
34250 0601 00 0 06016 S T 0 A
I
An IRP pseudo -instruction cannot occur explicitly within the
range of a n
IRP;
the f i r s t nested IRP will cause the termination of the range, and the second, reopening of another range. However, a macro-instruction within the range of IRP pseudo-instructions may itself cause p a i r s of IRP pseudo-instructions to be generated a t a lower level.Note that the macro-operation compiler will not generate a n ETC c a r d for a n IRP pseudo-instruction whose sub-argument string does not f i t on one card, but will p r o c e s s the string internally. The IRP pseudo-operation i s undefined outside of a m a c r o - operation.
RMT
The pseudo-operation RMT i s used to bracket a block of coding which will not be assembled a s encountered, but will be assembled when called for l a t e r in the coding. The constituents of the RMT pseudo-instruction a r e :
1. Blanks, appearing in the location field;
2 . The operation code RMT, appearing in the operation field; and
3 . Blanks, appearing in the variable field.
Macro-instructions may require assignment of temporary storage, definitions of constants, closed subroutines, o r other allocations of memory. Such storage may be assigned within the m a c r o -
and define the n e c e s s a r y symbols whenever convenient. The
pseudo-operation RMT provides a m e a n s by which such s t o r a g e
3
m a y be automatically assigned l a t e r in the a s s e m b l y , a t anypoint the p r o g r a m m e r m a y specify.
A r e m o t e sequence i s defined a s a l l the s o u r c e c a r d s , o r m a c r o - generated c a r d s , bracketed by a p a i r of RMT pseudo-instructions
.
R e m a r k s c a r d s with a n*
i n column 1 appearing within a r e m o t esequence will not a p p e a r i n the expansion. A RMT pseudo-in- s t r u c t i o n cannot appear explicitly within the range of a r e m o t e sequence; the nested p a i r will cause the termination of the range, and the reopening of another r a n g e . However, a m a c r o - i n -
struction within the range of a r e m o t e sequence m a y itself cause p a i r s of RMT pseudo-instructions t o be generated a t a lower l e v e l . A r e m o t e sequence c a n be nested in a macro-operation, and m a c r o - operation prototypes not including r e m o t e sequences m a y be nested t o any d e s i r e d depth within a r e m o t e sequence. When the r e m o t e sequence is a s s e m b l e d , any macro-definitions nested within will be defined and any m a c r o - i n s t r u c t i o n s nested within will be expanded.
Remote sequences may be defined outside of m a c r o - o p e r a t i o n s , but should be used sparingly, a s they may r e s u l t i n termination of a s s e m b l y due to m a c r o-definition table overflow. Little i s gained by the use of this pseudo-operation outside of m a c r o - o p e r a t i o n s .
Example :
3
The following r e m o t e sequence can be written:
R M T
CLA
*
X X DEC 1 E l
Y Y DUP 1 9 2
PZ E
Z Z BSS 10
COS X X X
R M T
Subsequently, a RMT
*
pseudo-ins truction will c a u s e a l l waiting r e m o t e sequences t o be a s s e m b l e d . The constituents of a RMT*
pseudo-instruction a r e :1. Blanks, appearing i n the location field;
2 . The operation code RMT, appearing i n the operation field; and
3 . An a s t e r i s k , appearing in the variable f i e l d .
within a remote sequence, o r conversely, each RMT
*
generated by a macro-instruction, r e q u i r e s t h r e e locations in the Level Table.The total length of this Table i s 112 locations, and the m o s t
s e v e r e use of this Table, an alternate nesting of macro-instructions and RMT
*,
will terminate assembly if there a r e m o r e than 37such nestings.
F o r example, if the remote sequence above had been defined, the following would be assembled following a RMT
0 4 3 0 6 R M T * I
043C6 05CO 0 0 0 04306 CLA *
0 4 3 0 7 +205400000003 X X DEC 1E 1
0 4 3 1 0 Y Y DU P lt2
I
04310 0 00000 0 0 0 0 0 0 P Z E
0 4 3 1 1 0 00000 0 0 0 0 0 0
I
0 4 3 1 2 Z Z BSS 1 0
0 4 3 2 4 COS X X X
I
X X X
0 4 3 2 4 0 0 7 4 0 0 4 00005 T S X SCOS B 4
I
If any remote sequences a r e waiting a t the end of an assembly, they will be assembled following the p r o g r a m END c a r d . As r e - mote sequences may include macro-definitions, and m a c r o - instructions may include remote sequence s , a significant amount of coding may follow the END c a r d . This generated coding will precede any l i t e r a l s .
Heading c h a r a c t e r s for remote sequences a r e those in effect a t the time of definition, and not a t the time of assembly. A remote
UPDATING SYMBOLIC FAP TAPES
1
F A P p e r m i t s reading a n input tape other than Logical Tape 5
J
(the S y s t e m Input Tape) and writing a n updated blocked o r unblocked symbolic tape, with optional deletion of assembly. This updating facility has been included in P a s s 1 of FAP.
Update pseudo-instructions a r e listed in the p r e - p r o c e s s o r update listing, but will normally not appear on a n update output tape o r in the assembly listing. However, if the variable field of the pseudo-instruction is in e r r o r and is flagged, it will appear in the assembly listing and will be copied onto the update output tape.
w
UPDATE
In the FAP language, the UPDATE pseudo-operation i s used to initiate the updating mode, assign update input and output tapes, and determine the mode of assembly. The constituents of the UPDATE pseudo-operation a r e :
1. Blanks, appearing in the location field;
2 . The operation code UPDATE, appearing in the operation field; and
3 . Twosymbolicexpressionsandtwosinglecharacters,all
1
separated by commas, appearing i n the variable field.
The f i r s t expression in the variable field i s a logical tape number, which may be void o r z e r o (no tape provided), o r the number of the tape containing the symbolic input to be updated (Monitor tapes 1 through 8 a r e excluded). Successive use of the UPDATE pseudo- operation will p e r m i t multi-reel input.
The second expression in the variable field i s the logical tape number of the tape on which a n updated symbolic input f o r a future assembly will be written, Unflagged update pseudo- operations will not be copied onto this tape. Successive use of UPDATE will p e r m i t subdividing of, o r extracting f r o m , an input tape.
The f i r s t single c h a r a c t e r in the variable field is any non-void, non-zer o c h a r a c t e r , which indicates that the updated symbolic tape i s t o be unblocked. This will r e s u l t in a significant i n c r e a s e in assembly time. If the c h a r a c t e r i s void or z e r o , the updated symbolic tape will be blocked 14 words p e r card, 16 c a r d s p e r block. Control cards'and END c a r d s a r e alwaysunblocked.
The second c h a r a c t e r is any non-void, non-zero c h a r a c t e r which indicates that assembly i s not required. In effect, this c h a r a c t e r
reduces the F A P p r o c e s s o r to a n updating and / o r blocking routine. No table e n t r i e s a r e made, and P a s s 2 i s omitted. The only c a r d s recognized a r e update pseudo-operations (and
END),
and those with an a s t e r i s k in column 1. The second c h a r a c t e r must a,ppear within the f i r s t c a r d group, and having once a,ppeared, neither it nor i t s preceding comma may reappear on another UPDATE c a r d . Cards with a n*
in c a r d column 1 a r e considered to be control c a r d s and a r e unblocked if they follow another such c a r d , o r any update pseudo-operation o r END. They a r e considered a s comments c a r d s and a r e blocked if they follow any c a r d other than a n update pseudo-operation c a r d or another *-type control c a r d .Note that corrections and additions a r e made on the b a s i s of serialization in c a r d columns 73 through 80.
A
matching c a r d on the Source Input Tape will replace the c a r d on the update input tape; a nonmatching c a r d will be inserted in sequence. A blank i s sequenced following the c h a r a c t e r*
and preceding the c h a r a c t e r/ .
If c a r d columns 75 through 80 on either the source o r update input tapes a r e a l l blank, the serialization i s taken t o be 00000000 f o r sequencing, and the card i s used immediately. A l l c a r d s in-s e r t e d or replaced a r e labeled a s such, and appear on the p r e - p r o c e s s o r assembly listing.
Example :
UPDATE 11
This m e r g e s correction c a r d s appearing on the Source Input
Tape with those appearing on Logical Tape 11, and r e a s s e m b l e s , The Update Input Tape i s on the same channel a s the Source Input Tape; this i s the f a s t e s t combination of tape assignments f o r a two- channel ins tallation.
Example:
UPDATE 1 1 , 1 2
This m e r g e s correction c a r d s appearing on the Source Input Tape with those appearing on Logical Tape 11, writes a blocked symbolic output tape on Logical Tape 12, and a s s e m b l e s .
Example:
r
UPDATE , 1 2 , , D
Example :
UPDATE l l , , , D
This effectively spaces the tape and c h e c k s the sequence of the c a r d s on Logical Tape 11.
NUMBER
The NUMBER pseudo-operation is used t o r e s e r i a l i z e columns 73-80 of the symbolic c a r d s which a r e output on the Listing Tape a n d / o r Update Output Tape.
The constituents of the NUMBER pseudo-instruction a r e : 1. Up t o s i x BCD c h a r a c t e r s appearing in the location field; 2. The operation code NUMBER, appearing in the operation
field; and
3 . A number l e s s than 32768, appearing in the variable field. The s i x BCD c h a r a c t e r s will be left justified in c a r d columns 73- 78 with blanks omitted, and the number will be right justified in c a r d columns 76-80. The p r o g r a m m e r m u s t i n s u r e that the BCD and numeric fields do not overlap for the length of the p r o g r a m . If the variable field i s omitted, r e s e r i a l i z a t i o n i s suspended, and old s e r i a l s ( i f any) appearing i n card columns 73-80 will be
maintained. In o r d e r t o r e s e r i a l i z e f r o m 0, a n explicit z e r o must appear in the variable field, in addition t o any c h a r a c t e r s which m a y appear i n the location field.
DELETE
The DELETE pseudo-operation will cause the deletion of one o r m o r e c a r d s , of, or up through, a c a r d of matching serialization. If matching serialization does not exist, deletions will be made up to, but not including, the next c a r d of logically higher serialization.
The constituents of the DELETE pseudo-instruction a r e : 1. Blanks appearing i n the location field;
2 . T h e o p e r a t i o n c o d e D E L E T E , a p p e a r i n g i n t h e o p e r a t i o n field;
3. THRU, when required, appearing in the variable field; and
4 . A serialization number of eight c h a r a c t e r s , appearing in c a r d columns 73-80.
Deleted c a r d s appear, labeled a s deleted, on the p r e - p r o c e s s o r listing
.
IGNORE
IGNORE i s identical with DELETE except that the c a r d s deleted will not appear on the p r e - p r o c e s s o r listing. IGNORE h a s two f o r m s : IGNORE and IGNORE THRU, which a r e s i m i l a r t o DELETE and DELETE THRU.
SKIPTO
The SKIPTO pseudo-operation will cause the deletion of one o r m o r e c a r d s up t o , but not including, a c a r d of matching
serialization.
The constituents of the SKIPTO pseudo-instruction a r e : 1. Blanks, appearing in the location field;
2 . The operation code SKIPTO, appearing i n the operation
field;
3 . Blanks, appearing in the variable field; and
4. A serialization number of eight c h a r a c t e r s , appearing in c a r d columns 73-80.
C a r d s deleted will not appear on the p r e - p r o c e s s o r listing. C a r d s of higher serialization will not cause this operation to
-
t e r m i n a t e .ENDFIL
The ENDFIL pseudo-operation is used during a n update, with o r without a s s e m b l y , t o cause an e n d ~ f - f i l e t o be written on the up- date tape s o a d d r e s s e d
.
The constituents of the ENDFIL pseudo-instruction a r e : 1. Blanks, appearing i n the location field;
2 . T h e o p e r a t i o n c o d e E N D F I L , a p p e a r i n g i n t h e o p e r a t i o n f i e l d ; and
3 . A F A P e x p r e s s i o n o r logical tape number appearing in the variable field.
instruction, the l a s t partial block of c a r d images waiting t o be output will be written on the update output tape before the end-of- file i s written. If the variable field i s blank, the update output tape i s assumed.
R E WIND
The REWIND pseudo-operation i s used during an update with or without assembly to cause the addressed update tape to be r e - wound.
The constituents of the REWIND pseudo-instruction a r e : 1. Blanks, appearing in the location field;
2 . The operation code REWIND, appearing in the operation
field; and
3 . A FAP expression or logical tape number, appearing in the
variable field
.
If the logical tape number in the variable field i s that of the c u r - r e n t update output tape, specified by a n UPDATE pseudo-in- struction, the l a s t p a r t i a l block of c a r d images waiting to be out- put will be written on the update output tape before the tape i s r e
-
wound. If the variable field i s blank, the update output tape i s a s - sumed. If the update input o r output tape i s rewound, no update operation pertaining to it will be executed unless i t i s addressed by a subsequent UPDATE pseudo-instruction.UNLOAD
The UNLOAD pseudo-operation is used during an update with or without assembly, to cause the addressed update tape t o be r e - wound and unloaded.
The constituents of the UNLOAD pseudo-instruction a r e : 1. Blanks, appearing in the location field;
2 . The operation code UNLOAD appearing in the operation field; and
3 . A F A P expression o r logical tape number, appearing in the
variable field.
If the logical tape number in the variable field i s the c u r r e n t up- date output tape, specified by a n UPDATE pseudo-instruction, the l a s t partial block of card images waiting to be output will be writ- t e n on the update output tape before the tape i s rewound and un- loaded. If the variable field i s blank, the update output tape i s
loaded, no update operation will be performed on i t unless it is a d d r e s s e d by a subsequent UPDATE pseudo-instruction. In the l a t t e r c a s e , the operator should be informed by a PRINT pseudo- instruction to ready the tape sufficiently in advance to avoid delay- ing the a s s e m b l e r .
SKPFIL
The SKPFIL pseudo-operation is used during an update with o r without a s s e m b l y to cause the update tape which i t a d d r e s s e s to be spaced forward until a n end-of-file i s passed.
The constituents of the SKPFIL pseudo-instruction a r e : 1. Blanks, appearing in the location field;
2 . The operation code SKPFIL, appearing in the operation field;
and
3 . A F A P expression o r logical tape number, appearing i n the variable field.
If the logical tape number in the variable field is that of the c u r - rent update output tape, a s specified by a n UPDATE pseudo-in- struction, the l a s t p a r t i a l block of c a r d images waiting to be writ- ten will be placed on the update output tape before the tape is spaced. If the variable field i s blank, the update input tape i s a s s u m e d .
UMC
The UMC pseudo-operation i s used t o output c a r d images generated by a m a c r o-instruction onto a symbolic update output tape and t o delete a l l macro-definition and m a c r o -instruction c a r d s . A subsequent appearance of UMC will cause a r e v e r s i o n t o the normal output of macro-def inition and macro-instruction c a r d s ; alternate appearances cause alternate switching f r o m writing t o not writing macro-generated images.
The constituents of the UMC pseudo-instruction a r e : 1. Blanks, appearing i n the location field;
2 . T h e o p e r a t i o n c o d e U M C , a p p e a r i n g i n t h e o p e r a t i o n f i e l d , and
3 . Blanks, appearing in the variable field.
sequences will be expanded after the END c a r d i s written, they
m u s t be inserted before the END c a r d by the u s e of the RMT
*
1pseudo-operation. The s e r i a l numbers associated with deleted
macro-definition c a r d s will be deleted; a l l c a r d s generated by the
J
macro-instruction will be serialized with the s e r i a l numberassociated with the macro-instruction c a r d . Access t o any of these i s difficult. An IRP pseudo-operation in an expression is never copied on the update output tape.
ENDUP
The ENDUP pseudo-operation signals the termination of a F A P
update with assembly deleted. The constituents of the ENDUP pseudo- * operation a r e :
1. Blanks, appearing in the location field;
2 . The operation code ENDUP, appearing in the o,peration field;
3 . Blanks, appearing in the variable field; and
4. A serialization of eight c h a r a c t e r s , appearing in c a r d columns 73-80.
If assembly i s deleted, END c a r d s will be unblocked, but will not terminate the p a s s . This makes i t possible to update m o r e than one p r o g r a m a t a t i m e . If the assembly i s not deleted, ENDUP will be undefined. A c a r d on the update input tape of matching
serialization will be deleted, and no c a r d of such serialization will appear on the updated output tape. Blank serialization on the ENDUP card will cause immediate termination of the update.
Tape Positioning
In o r d e r to update a FORTRAN source deck, the output tape m u s t be unblocked and the a s s e m b l y deleted. ENDUP i s the pseudo- operation to terminate the job.
In case of illegible c a r d s on the Source Input Tape, the a s s e m b l y is terminated and the Machine E r r o r Record will skip t o the end of the job, to the END c a r d , or to the beginning of the a s s e m b l y , a t the o p e r a t o r ' s option. If a c a r d ( o r block of c a r d s ) on the update input tape i s illegible, the c a r d ( o r c a r d s ) will be omitted, the next source correction c a r d r e a d , a m e s s a g e printed on- and off- line, and the job will continue. It i s possible t o r e i n s e r t l o s t c a r d s during a l a t e r update. The omission of such c a r d s will usually r e s u l t in an assembly e r r o r , but the update input tape will be properly spaced f o r the next assembly, unless an END c a r d o r a "spacerI1 card i s r e a d erroneously.
Update Examples
The following sequence of c a r d s would cause a n end-of-file, an END TAPE c a r d , and another end-of -file to be written on the up- dated Symbolic Tape 12, this tape to be rewound, and Logical Tape 11 to be unloaded:
The following c a r d s could surround a n input deck on the Source Input Tape to obtain a blocked, serialized Tape 12 f o r a l a t e r assembly:
1
DATE 1 / 2 / 6 2 JOB I D E N T I F I C A T I O N PACK
F AP
PAGE T I T L E CARD UPDATE , 1 2
NUMBER 0
DATE 1 / 2 / 6 2 JOB I D E N T I F I C A T I O N PACK
F AP
PAGE T I T L E CARD COUNT 5 0 0 0 ABS
. . .
16 F AP
UPDATE , 1 2 , , D ENDF I L
i~ END TAPE
ENDF I L REWIND
UNLOAD 11
ENDUP
.
. .
.
. .
END
Q F AP
UPDATE , 1 2 ENDF I L
H END TAPE
ENDF I L UNLOAD END (END OF F I L E )
9 END TAPE
The following c a r d s on the Source Input Tape might be used t o up- date and r e s e r i a l i z e symbolic c a r d s on Logical Tape
9,
with a s s e m b l y deleted and with the updated output on Logical Tape 10:Y FAP
UPDATE 9 t l O 9 t D F 0 1 NUMBER 0
CAL ERASE F O l O l O l O
DELETE F 0 1 0 1 2 0 0
NZT SYMBL F 0 1 0 1 4 6 1
TRA ERROR
F 0 2 NUMBER 0 F 0 1 9 Y Y 9 9
DELETE F 0 2 0 1 7 3 0
DELETE THRU F 0 2 0 1 8 4 0
DELETE F 0 2 0 2 0 4 0
IGNORE THRU F 0 2 0 4 1 7 0
F 0 3 NUMBER 0 F 0 2 Y 9 9 9 9
END F 0 3 0 1 7 6 0
ENDUP
ADDITIONAL SYMBOL DEFINING PSEUDO-OPERATION
SET
In o r d e r t o define a symbol, permitting i t t o be redefined l a t e r , the pseudo-operation SET may be used. The constituents of SET a r e :
1. A F A P symbol, appearing i n the location field;
2 . The operation code SET, appearing i n the operation field;
and
3 . A F A P expression, appearing in the variable f i e l d . The symbol i n the location field is defined t o have the value of the F A P e x p r e s s i o n in the variable field. T h i s e x p r e s s i o n m u s t s a t i s f y a l l the r u l e s of writing e x p r e s s i o n s . If the symbol had previously been defined by the SET pseudo-operation, i t will be redefined. If the symbol had previously been defined, but not by a SET pseudo-operation, the symbol will be redefined, but a n e r r o r flag will appear in the left m a r g i n of the listing. T h i s is not a n a s s e m b l y e r r o r . The SET pseudo-operation will o v e r r i d e any p r i o r m e a n s of definition. This pseudo-operation is useful i n providing a value for a p a r a m e t e r used within a macro-operation, which i s not a c c e s s i b l e through the argument l i s t .
ADDITIONAL PROGRAM LINKING PSEUDO-OPERATION
EXTERN
The EXTERN pseudo-operation i s used t o i n s e r t symbols i n the t r a n s f e r vector.
1. Blanks, appearing in the location field;
(I.
2 . The operation code EXTERN, appearing in the operation field; and
3 . A l i s t of FAP symbols, of one through six BCD c h a r a c t e r s , separated by commas, appearing in the variable field. A symbol appearing in an EXTERN l i s t , if already in the t r a n s f e r vector, will be ignored. If a symbol has been previously defined in the location field of a machine instruction o r a symbol defining pseudo-operation, i t will be multiply defined. EXTERN i s
undefined in a n absolute assembly.
ADDITIONAL LIST CONTROL PSEUDO-OPERATIONS
INDEX
The INDEX pseudo-operation i s used to l i s t a table of contents of important locations within the assembly
.
The constituents of the INDEX pseudo-instruction a r e : 1. Blanks, appearing in the location field;
2 . The operation code INDEX, appearing in the operation field; and
3 . A l i s t o f F A P s y m b o l s , o f o n e t h r o u g h s i x B C D c h a r a c t e r s , separated by commas, appearing in the variable field. The f i r s t appearance of a n INDEX card will cause the message
TABLE OF CONTENTS
to be listed. Each subfield of a n INDEX pseudo-instruction will cause the symbol, and i t s definition, t o be listed. The listing of the INDEX card itself i s governed by the mode of the PCC control c a r d .
INDEX pseudo-instructions may appear anywhere in the source p r o g r a m , and need not be grouped. The listing generated by INDEX pseudo-instructions will be inserted where the pseudo-