• No results found

J28 6186 32K FAP pdf

N/A
N/A
Protected

Academic year: 2020

Share "J28 6186 32K FAP pdf"

Copied!
56
0
0

Loading.... (view fulltext now)

Full text

(1)

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.

(2)
(3)

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

(4)

Additional L i s t Control Pseudo-Operations

. . .

. . .

INDEX

PMC

. . .

. . .

N U L L

Additional 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

. . .

35

Appendix 11: System Symbol Table. FORTRAN Monitor

. . .

45

. . .

(5)

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

(6)

. 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 the

3

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

(7)

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 .

(8)

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. A

QPOLY

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

(9)

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 I
(10)

i 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 a

following 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 followed

by 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,

(11)

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 character

and

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.

(12)

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 within

parenthesis 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:

(13)

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

(14)

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 be

substitutable 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 -

(15)

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.

(16)

Punctuation

Only commas and parentheses may be used to separate arguments

3

in the macro-instruction argument l i s t . A single comma following

a 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 =

(17)

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

(18)

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 d

will 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 field

begins 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 beyond

these 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

(19)

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

(20)

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 I

I

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 oN151

04173 0767 00 0 00022 ALS 18

I

v

04174 -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 be

made; one argument causes one iteration, etc

.

(21)

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

I

The 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 XIYIZ

04235 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 -

(22)

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 any

point 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 e

sequence 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 .

(23)

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 37

such 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

(24)

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

(25)

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

(26)

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.

(27)

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.

(28)

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

(29)

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.

(30)

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

*

1

pseudo-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 number

associated 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

(31)

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

(32)

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.

(33)

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-

References

Related documents

(2008) developed a second order multi-variable regression model and a feed forward back-propagation neural network to correlate the input process parameters, such as pulse on