Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Overview1962: An outline of Fortran1962: Operating experience with Fortran1962: Implementation of Fortran on Atlas1962: Proposed target language (BAS)1962: BAS binary card1963: Intermediate Atlas symbolic programming language (INTERASP)1963: Addendum1963: A primer for Fortran programming1964: Atlas Fortran manual: Part I1964: Part II1964: Using HARTRAN1965: System note 41966: Fortran on Atlas □ Atlas 2 at AWRE □ 1965: BAS subroutines1965: System notes1966: S3 Fortran □ Titan □ 1966: System note 11966: System note 21966: Fortran on Titan1966: Compile Master on Titan1966: System Note 31966: Differences between S3 dialect and Fortran II1966: Magnetic tape library subroutines1967: T3 Fortran reference manual
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLApplicationsHartran :: Hartran and Fortran on Atlas
ACLApplicationsHartran :: Hartran and Fortran on Atlas
ACL ACD C&A INF CCD CISD Archives
Further reading

Overview1962: An outline of Fortran1962: Operating experience with Fortran1962: Implementation of Fortran on Atlas1962: Proposed target language (BAS)1962: BAS binary card1963: Intermediate Atlas symbolic programming language (INTERASP)1963: Addendum1963: A primer for Fortran programming1964: Atlas Fortran manual: Part I1964: Part II1964: Using HARTRAN1965: System note 41966: Fortran on Atlas
Atlas 2 at AWRE
1965: BAS subroutines1965: System notes1966: S3 Fortran
Titan
1966: System note 11966: System note 21966: Fortran on Titan1966: Compile Master on Titan1966: System Note 31966: Differences between S3 dialect and Fortran II1966: Magnetic tape library subroutines1967: T3 Fortran reference manual

INTERASP: An intermediate ATLAS symbolic programming language

R C F McLatchie and I C Pyle

March 1963

AERE R 4285

AERE - R 4285

AERE - R 4285
Full image ⇗
© UKRI Science and Technology Facilities Council

ABSTRACT

INTERASP is a symbolic machine language for the ATLAS computer. This report describes an assembly program, IASP, written in FORTRAN and executed on an IBM 7090, which translates the INTERASP language of a routine into basic machine orders for ATLAS. The results of the IASP translation, like those of the ATLAS FORTRAN compiler, are punched on relocatable binary cards in the standard BAS format. Those parts of a job for which FORTRAN is not suitable may therefore be coded as routines in INTERASP, assembled by IASP, and - compiler and assembler output being compatible - the translated routines for the whole job may then be read into ATLAS by the same standard loader program. Flexible intercommunication between FORTRAN and INTERASP routines during the subsequent execution phase on ATLAS, facilitated by their having a common target language (BAS), is ensured by means of the arrangements for sharing storage areas that can be made in INTERASP, and by observing in the INTERASP routines the FORTRAN calling sequence conventions described in this report.

CONTENTS

1. Introduction

INTERASP is a limited form of the ATLAS Symbolic Programming (ASP) language. In order to simplify the IASP program not all of the features of ASP have been included in INTERASP. The main deficiency is that there are no facilities for dealing with parameters whose values are assigned at load time. The report points out the limitations in detail. It is expected, however, that the facilities provided will prove adequate for most coding needs. Care has been taken to ensure that INTERASP is a strict subset of the ASP language. Thus routines coded in INTERASP could also be assembled by the ASP assembly program which it is intended to provide at a later stage. The latter assembler will run on ATLAS as part of the HARTRAN operating system. Note that it will not be necessary (although it will be possible) to re-assemble routines when the ASP assembler becomes available.

IASP is an extended version of the earlier PROTOASP assembler (l) which implemented a rather more limited form of ASP.

It will be clear to the reader that many of the ideas involved in INTERASP (and in ASP) have been suggested by our familiarity with the FAP language of ( Ferguson (2) and our respect for its value within the FORTRAN Monitor System on the IBM 7090.

2. Form of Input to the INTERASP Assembly Program

The INTERASP language includes all ATLAS basic and extracode operations as well as some directives to the assembly program which are written in the same form as the ATLAS operations and are known as pseudo-operations. ATLAS operations may be cited by their ASP mnemonic names (see Appendix B) or by their four digit octal codes. Details of the pseudo-operations known to IASP and their effects are given in 2.7. Symbolic names for locations and numbers are also used (see 2.2).

2.1 Card Format

Routines for assembly by IASP are punched on cards with one symbolic instruction on each card. A typical instruction card is divided into four fields: location field, operation field, variable field, and comments field.

Columns 1  to  8 form the location field
Columns 9  to 15 form the operation field
Columns 17 to 40 form the variable field
         

Except for certain pseudo-operations the comments field begins in the column after the first blank column in the variable field (conventionally in column 41 if column 40 is blank) and extends to and includes column 72.

Columns 73 to 80 are not read by IASP

Columns 1 to 72 are copied onto the assembly listing (see 3.1 ).

2.2 Symbols

In INTERASP a symbol is a string of from one to six non-blank characters, the first of which is not numeric, and none of which is among the following set of five characters:-

  +  plus
  -  minus
  *  asterisk
  ,  comma
  .  point

For example, SYMBOL, (BAS) , NOT4U, M/E are legal, But A+, 2DAY, TOOLONG, are not.

In general symbols are defined by appearing in the location field of an operation or a pseudo-operation (see however, ENTRY, 2.7.4.1).

IASP is a two pass assembly program. This means that, in most cases, a symbol may be used in the variable field of an operation before it is defined. The only exceptions in INTERASP are symbols used in the pseudo-operations EQU, BSS, COMMON and ORIGIN. Such symbols must have been defined before the pseudo-operation which uses them is met. A further consequence of the two pass method of assembly is that the definitions of symbols found during pass 1, can be checked during pass two. A failure to check is indicated by a phase error flag (P). For example, this error flag P is set by the use of a symbol in EQU, BSS, COMMON and ORIGIN before it has been defined.

2.3 Value and Mode of a Symbol

The value of a symbol is a 24 bit number in the range -221 to +221-2-3 i.e. an ATLAS half word.

A symbol has one of three modes.

1. Absolute or numeric mode
The symbol value is fixed at assembly time and is independent of the position of the routine within the store at execution time.
2. Relative or relocatable mode
The symbol value is assigned at assembly time relative to the starting point of the routine. At load time the actual value of the starting point is added to the relative value to give the actual value of the symbol. The latter process is known as relocation.
3. External mode
The symbol value is fixed at load time. The assembler collect references to external symbols in the routine. The positions of these references are, of course, relative to the starting point of the routine. At load time the reference positions are relocated arid the loader fills in these references when the actual position of the external symbol becomes known.

The mode of a symbol is determined by the way in which it is defined. Symbols appearing in the location field of most cards, in particular, all ATLAS instruction cards, are relative. Exceptions to this general rule, which occur in the case of certain pseudo-operations, are noted in the descriptions of those pseudo-operations.

2.4 Location Field

The location field (columns 1 to 8) may be blank or may contain a single symbol. If a symbol is present it either labels the instruction on this card so that it. may be referred to by other instructions in the routine or the symbol is defined by the pseudo-operation on the card. A symbol, if present, may be punched anywhere within the field. It is recommended that column 1 be left blank since it is used for special purposes in the HARTRAN system.

A special case arises if the character in column 1 of the card is a * (or $). The contents of the card are then taken to be comments. They are copied onto the assembly listing, but are otherwise ignored.

2.5 Operation Field

The operation field (columns 9 to 15) may contain any one of the following:-

1. the mnemonic operation code for an ATLAS instruction,

2. the octal code for an ATLAS instruction,

3. a pseudo-operation code.

In case 1, where the operation code is exactly four characters long, the code may be followed by a number of up to three decimal digits which gives the Ba register for this instruction. The number begins in column 13 and ends at the first blank column thereafter.

If column 9 contains a digit different from 0 or 1 the error flags I (illegal character), U (undefined subfield) are printed with the instruction on the assembly listing and the operation field of the assembled instruction is zero. If column 9 contains 0 or 1 then columns 9-12 are read as a four digit octal code. No attempt is made to check that the code is a legal ATLAS instruction, responsibility for that rests with the user.

If column 9 contains a non-numeric character, then, apart from the special case of a four character code followed by a number (when only the first four characters are used), the contents of the six columns 9 - 14 are used to identify the operation. Note that blank columns in this field are not ignored but are taken to be part of the name. If the operation code, thus indicated, is not known to IASP the error flag U is printed with the instruction on the assembly listing, and the operation field of the assembled instruction is zero.

If the six columns 9-14 are all blank, the contents of the card are taken to be comments. They are printed on the assembly listing but are otherwise ignored.

If columns 9-14 contain a code known to the assembler then either the directive indicated by the pseudo-operation is carried out, or the octal code for the indicated ATLAS instruction is placed in the operation field of the assembled instruction. If the mnemonic implies a value of Ba this value is filled into the Ba field of the assembled instruction. For example, under main control, TRA (transfer control) implies a Ba value of 127. If the Ba number is also given explicitly by means of a number following a four character code in the operation field or in the Ba subfield of the variable field (see 2.6.2), the error flag B is printed with the instruction on the assembly listing and the Ba subfield is zero in the assembled instruction.

If the mnemonic refers to an operation on a low order halfword, .4 (octal, see 2.6.1) is or-ed to the address field of the assembled instruction.

2.6 Variable Field

The variable field is used for special purposes by the pseudo-operations and these purposes are best described with each pseudo-operation in turn. This is done in 2.7. In the remainder of this paragraph, the form of the variable field in ATLAS instructions is described. Reference to sections of this paragraph, when they apply to particular pseudo-operations, will be made implicitly in 2.7.

The variable field begins in column 17 and ends either at the first blank column thereafter or at column 40 whichever comes first. For compatibility with ASP, the variable field should always be followed by a blank column, in column 41 if necessary. The field is divided, by commas, into, at most, three subfields. These subfields read from left to right give the address A, the Bm number, and the Ba number. Each subfield may contain an expression.

2.6.1 Expressions

In INTERASP only simple expressions, consisting of a symbol term plus or minus a constant term, are allowed. If either the symbol term or the constant term is missing its value is taken to be zero. The order of the terms is important. A constant term plus or minus a symbol term will be misinterpreted.

A constant is an unsigned number less than 221 and is always of absolute mode. It is normally a decimal integer. If the character . appears the digits which follow it (if any) must be in the range 0-7 and are interpreted as octal. The presence of the digits 8,9 after . in a constant will be flagged as an illegal character (I) and the value of the constant will be set to zero. The presence of . also has the effect of adjusting the position of the point within a halfword. The examples should make this clear.

CONSTANT   HALFWORD (in Octal)
10            0000 0120
10.           0000 0012
10.0          0000 0120
10.00         0000 1200
10.7777       0012 7777
  .777700     0077 7700

The mode of an expression is defined to be the mode of the symbolic term appearing in it. If there is no symbolic term the mode is absolute.

Two special symbolic terms are recognised. These are:-

(1) * , which is a relative symbol whose value is the relative location of the current instruction,

(2) ** , which is an absolute symbol whose value is zero.

2.6.2 The variable field subfields

The Bm, Ba subfield expressions must be of numeric (absolute) mode. If this condition is not met the instruction is flagged with B (B register specified illegally) to indicate the error.

A blank column ends the variable field. The remaining subfields (if column 17 is blank, all the subfields) are then unspecified, their presumptive values being taken to be zero. In the case of the Ba sub-field the Ba number may be given implicitly or explicitly in the operation field. This value, if given, overrides a zero value presumed in the variable field. If, however, the Ba value is given in both the operation field and the variable field, then, as noted in 2.5, the error f g B is printed with the instruction on the assembly listing.

If the first character of a subfield is a comma the value of that subfield is taken to be zero.

Some examples of the rules in the above two sections are given below.

    Variable field 
       Blank        All subfields unspecified, values presumed to be zero. 
       A            Ba, Bm unspecified here, are presumed to be zero.
       ,,Ba         Ba specified, A and Bm taken to be  zero. 
       A,Bm,Ba      All  subfields  specified.

2.7 Pseudo-Operations in INTERASP

This paragraph describes the pseudo-operations or directives known to IASP, their syntax and their effects.

To clarify the descriptions we state here that, at the start of each pass of the assembly of a routine, the location counter is set to zero, the common location counter is set to 3 000 000(8), and the control register number is set to 127, i.e. main control. The location counter counts the number of full words of store in the program region used by the routine. It is increased by one by each and every ATLAS instruction in the routine. Pseudo-operations may increase the location counter by one, by more than one, or may leave it unchanged. The common location counter counts the number of full words of store in the common region used by the routine. It may only be advanced by the pseudo-operation COMMON, the actual increase being stated in the variable field of the operation. The control register number is the implied Ba number in certain transfer instructions (see 2.5). The pseudo-operation TEQU allows the user to change this number.

All pseudo-operation mnemonics are punched in the operation field of the card.

2.7.1 Pseudo-operations which direct the assembler: END TEQU

1. END
The physical end of the set of cards constituting the current routine is indicated to IASP by a card bearing the END pseudo-operation. The location and variable fields on this card are not examined. The location counter is not changed.
2. TEQU
The control register number which, as stated above, is taken to be 127 at the start of the routine, may be altered at any point in the routine by means of the TEQU pseudo-operation. IASP expects the word TEQU in the operation field to be followed with no intervening blank columns by a decimal number. That number will be taken to be the control register number from this point in the routine until the next TEQU directive is met, or until the END directive is met. The location and variable fields are not examined. The location counter is unchanged.
The ASP directives BAS and FULL are not recognised by IASP.

2.7.2 Pseudo-operations for the allocation of private storage: BSS ORIGIN

1. BSS
IASP expects a symbol in the location field, the word, BSS, in the operation field, and a variable field consisting of two subfields each of which contain an expression of absolute mode. If the expressions in the variable field are not of absolute mode an expression error (E) is indicated. The symbols used in the variable field expressions must have been previously defined. A phase error (P) is indicated if a symbol used in the variable field is defined later in this routine. An undefined subfield error (U) is indicated if a symbol used in the variable field is not defined in this routine.
BSS directs the assembler to reserve a region of private storage beginning at the next location to be allocated in the program region, of length equal to the value of the first subfield of the variable field. The symbol if any in the location field is defined to be of relative mode and is given the value of the next location to be assigned when the BSS operation was met, plus the value of the second subfield of the variable field (plus zero if there is no second subfield). The location counter is then increased by the value of the first subfield in the variable field.
2. ORIGIN
The ORIGIN pseudo-operation sets the value of the symbol in the location field (if any) and the location counter to the value of the single expression in the variable field. The symbol in the location field is defined to be of relative mode. The variable field expression may only contain a symbol which has been previously defined. A phase error (P) is indicated if the symbol used in the variable field is defined later in the routine; an undefined subfield error (U) if the symbol is not defined in this routine.
The ASP directive ARRAY is not recognised by IASP.

2.7.3 Pseudo-operations which generate words of data: DEC INT TEXT OCT HWDS

In any of the pseudo-operations in this section the symbol (if any) in the location field of the operation is defined to be of relative mode and is given the value of the next location to be assigned (i.e. the current value of the location counter when the operation is met).

1. DEC
IASP expects a symbol or blanks in the location field, the word DEC in the operation field, and a single decimal number in the variable field. The variable field ends at the first blank column after column 16.
The decimal number is converted to ATLAS floating point binary form and is stored in the next location to be assigned. The location counter is then advanced by one.
Two types of decimal number may be specified in the variable field, real and integer. A real number is distinguished by the presence of the character ., which is interpreted as a conventional decimal point (cf. definition of constant: 2.6.1). A real number is converted to a standardised floating point number with an 8 bit octal exponent, sign bit, and 39 bit fraction. This is carried out in single precision on the 7090, so that the lowest 10 bits, at least, are zeros. An integer, a decimal number in which the character . does not appear, is converted to a conventional (unstandardised) floating point form with an 8 bit octal exponent of 12, a sign bit, and a 36 bit integer. The lowest three bits are zeros. Zero is always stored in the standardised form (i.e. as a real number) by the DEC pseudo-operation (cf. INT).
Note that in INTERASP decimal exponents signalled by a sign or by the letter E, are not allowed. A second sign after digits have been found, the letter E or indeed any letter or character apart from ., will be regarded as illegal and indicated as an error (I). The number will then be set to zero.
If the number is positive the plus sign need not be punched.
2. INT
IASP expects a symbol or blanks in the location field, the word INT in the operation field, and a single expression in the variable field.
The expression in the variable field is evaluated, the value converted to a conventional (unstandardised) floating point number with 8 bit octal exponent of 12, sign bit, and a 36 bit integer followed by a 3 bit octal fraction. The number is stored in the next location to be assigned and the location counter is advanced by one.
The symbol (if any) used in the variable field expression need not have been previously defined but must be defined in the routine.
3. TEXT
IASP expects a symbol or blanks in the location field, the word TEXT in the location field, and a string of eight characters in the variable field. For compatibility with ASP, the name TEXT in the operation field may be followed by a decimal number to indicate the number of characters of text it is required to store. In INTERASP this number will be ignored and the first eight characters in the variable field are converted and stored irrespective of its value.
The first eight characters in the variable field are read, converted to ATLAS internal code and stored as one 48 bit word in the next location to be assigned. The location counter is then increased by one.
Note that blank columns or commas do not end the variable field in this pseudo-operation. The comments field begins in column 25.
4. OCT
IASP expects a symbol or blanks in the location field the word OCT in the operation field, and a string of up to sixteen octal digits in the variable field. The first blank column after column 16 ends the variable field.
Up to sixteen of the digits in the variable field are read. Any character other than the digits 0 to 7 causes an error to be indicated (I). The assembled octal word is stored in the next location to be assigned, right adjusted within the ATLAS word if fewer than sixteen octal digits have been specified. The location counter is then advanced by one.
5. HWDS
IASP expects a symbol or blanks in the location field the word HWDS in the operation field, and two subfields in the variable field. Each of the variable field subfields may contain an expression which may be of any mode and which may contain a symbol not previously defined.
The expression in each subfield is evaluated. The values, truncated, if necessary, to 24- bits, are stored as the high halfword (first subfield), and the low halfword (second subfield) in the next location to be assigned. The location counter is then advanced by one.
Note that in INTERASP only a single word of data can generated by a single pseudo-operation.

2.7.4 Pseudo-operations for external symbols: ENTRY DEFINE PUBLIC CSS COMMON

The pseudo-operations in this section provide intercommunication between routines.

1. ENTRY
This directive defines the current location in the routine as its main entry point and gives a relative symbol by which it will be publicly known to other routines. There must be one and only one ENTRY directive in each routine. Subsidiary entry points can be defined by means of the DEFINE directive (see below).
IASP expects blanks in the location field, the word ENTRY in the operation field, and a single symbol in the variable field. The next location to be assigned is defined to be the main entry point for the routine and the symbol given in the variable field is the name of the routine associated with that entry point. The mode of the symbol is relative. It is important to realise that its appearance on an ENTRY card does not constitute a definition of the symbol within the routine. The symbol must be defined elsewhere in the routine if it is to be used within the routine, and that value will not interfere with the position of the main entry point.
The location counter is unchanged by this directive.
2. DEFINE
This directive makes a relative symbol defined in a routine publicly known to other routines.
IASP expects blanks in the location field, the word DEFINE in the operation field, and a single symbol in the variable field. The symbol name is entered in the routine symbol table and marked external. The symbol must be defined elsewhere in the routine, either before or after the DEFINE card. Its value is entered in the routine symbol table when it becomes known. The location counter is unchanged by this directive.
3. PUBLIC
IASP expects a symbol in the location field, the word PUBLIC in the operation field, and a variable field either blank or containing a single expression of numeric mode. A symbol used in the variable field need not have been previously defined. The symbol in the location field is defined to be of external mode. Use of this symbol elsewhere in the routine causes a note of the position of the reference to be made in the external reference table of the routine under the name of the symbol (see 2.3.3). If the symbol is also defined to be of private (internal) mode, for example, by appearing in the location field of an instruction elsewhere in the routine, the error will be indicated during the listing of the external reference table for the routine (3.1) and no references will be recorded. The value of the expression (if any) in the variable field gives the length of the public array in the program region which is to be symbolised by this name. If the value is zero or if the variable field is blank the symbol will be taken by the loader to be a routine entry point defined in another routine by ENTRY or DEFINE. The location counter is unchanged by this directive.
4. CSS
This directive is used to define a Common Storage Symbol and to allocate storage in the block region of main store.
IASP expect a symbol in the location field, the word CSS in the operation field, and a single expression of numeric mode in the variable field. If a symbol is used in the variable field expression it must be defined in the routine, but not necessarily before the CSS pseudo-operation.
The symbol in the location field is defined to be of external mode. Use of this symbol elsewhere in the routine causes a note of the position of the reference to be made in the external table of the routine under the name of the symbol (2.3.3). If the symbol is also defined to be of private (internal) mode, for example, by appearing in the location field of an instruction elsewhere in the routine, the error will be indicated during the listing of the external reference table for the routine (see 3.1 > The value of the expression (if any) in the variable field gives a lower limit for the length of the array of storage in the block region which is to be identified by the symbol in the location. A whole number of blocks is always allocated by this directive. The location counter is unchanged by this directive.
CSS resembles PUBLIC in that a symbol name is made known to other routines, but in the former case the name is associated with an area in the block region whereas in the latter, the area symbolised lies in the program region.
5. COMMON
This directive is used in INTERASP to define a symbol referring to a location in the unnamed common region and to allocate storage in that region.
IASP expects a symbol in the location field, the word COMMON in the operation field, and a single expression of numeric mode in the variable field. If a symbol is used in the variable field expression, it must have been defined in the routine before the COMMON pseudo-operation is met, or else a phase error (P) or an undefined subfield error (U) will be indicated.
The symbol in the location field is defined to have absolute mode and its value is the current value of the common location counter. The common location counter is then advanced by the value of the expression in the variable field. The symbol in the location field is therefore associated with the beginning of an array of storage in the unnamed common region, the length of the array being given by the value of the expression in the variable field. (The symbol refers to a common scalar if this value is one).
The instruction location counter is unchanged by this pseudo-operation. If the total common region storage allocated in a routine overflows position 3 400 000(8) in the common region, a comment to this effect is made on the assembly listing.
Note that there are no facilities in INTERASP for subdividing a named region of common store by using a CSS name in the second subfield of the variable field of a COMMON pseudo-operation. Such facilities will be provided in ASP.
The ASP directive PARAM is not recognised by IASP.
6. Fortran calling sequence conventions
The ASP pseudo-operation CALL is not recognised by IASP. # In INTERASP routines are called by transferring control to a symbolic address which is declared, elsewhere in the routine, to be public and of zero length. The symbol is, of course, defined in the called routine by means of the ENTRY or the DEFINE pseudo-operations. For the sake of compatibility with later ASP assemblers and with the ATLAS FORTRAN compiler, it is recommended that calling sequences take the form:-
  SYMB      CANB1      *+ n
            TRA        SUBR
            HWDS       IRN.LINK 
            HWDS       ,LARGN
            ....................
            HWDS       ,LARG2
            HWDS       ,LARG
where n is the integer three more than the number of arguments, and LARQk is the location of the k th. argument. IRN and LINK are used for backward flow tracing on detecting an error in execution. IRN is a serial number identifying this particular instruction, and LINK is the location in the present routine where the return address to the routine calling this one is stored. Note that the locations of the arguments are in the low halves of words and that they are in reversed order (i.e. first argument last). On entry to the called routine SUBR the location of the k th. argument may be found in -k,1; the return address is 0,1.

2.7.5 Directive for symbol manipulation: EQU

IASP expects a symbol in the location field, the word EQU in the operation field, and a single expression in the variable field. In INTERASP the mode of the expression in the variable field must be absolute or relative. If the expression is of external mode, an expression error will be indicated (E) . If a symbol is used in the expression which has not been previously defined a phase error is indicated (P).

The expression in the variable field is evaluated and its value and mode are given to the symbol in the location field. The location counter is not changed by this directive.

2.7.6 Directives which modify the form of assembler output: LABEL EJECT

1. LABEL
When the word LABEL is encountered in the operation field of a card, IASP records the contents of the first six columns of the variable field (columns 17 to 22) and reproduces the six characters found there in the label field (columns 73 to 78) of the first card produced for the routine. Columns 23 to 72 are available for comments. The location field is not examined. If more than one LABEL card is found in a routine no error is indicated. The label used is the one given on the last LABEL card found. If no LABEL directive is found in a routine no label is punched on the heading card.
The location counter is unchanged by this directive.
2. EJECT
When the word EJECT is found in the operation field of a card, the card is printed on the assembly listing (see 3.1) and the next line in the listing is caused to appear at the top of a new page.
The location and variable fields are not examined, location counter is unchanged by this directive.

2.8 Comments Field

The IASP comments field begins in column 41, and the normal convention is that comments start there, column 40 being blank. However, comments may be written anywhere after the variable field has been terminated. For compatibility with ASP, there should always be a blank column after the variable field. Comments may extend to column 72.

Two other methods of introducing comments into the assembly listing have already been noted. They are:-

(1) punching a π (or $) in column 1 of the card,

(2) leaving columns 9-14, in the operation field, blank.

In both cases the contents of the card are printed on the assembly listing but otherwise ignored.

2.9 Form of the Input Deck

IASP can assemble any number of routines presented as one input deck to the program. The last card in each routine must be an END directive.

3. Output from the INTERASP Assembly Program

3.1 Printed Output: The Assembly Listing

The printed output for each routine, consists, mainly, in a side-by-side presentation of the symbolic card input to IASP and the resulting1 binary word in octal representation. Lists of the symbols in the routine symbol table and of references to external symbols are also given.

Reading each line of the source program listing from left to right, the first column gives the location, in octal, of the instruction on this line. For comments and for some pseudo-operations which use no storage in the assembled routine this column is blank. For most instructions the location is the first location in the program region used by this instruction. For common pseudo-operations, however, the location shown is the first location in the common region allocated by this operation. The location is followed by the octal representation of the machine word (if any), generated by the instruction on this line. The digits of the word are arranged in groups, separated by spaces, to show the division of the 48 bit word into its appropriate parts. On the right-hand part of the line columns 1-72 of the source card are reproduced. If an error has been detected in this instruction the appropriate error flag is printed in the left-hand margin, just before the location column. If an instruction contains more than one error all pertinent letters will appear in the left-hand margin.

The IASP error flags are as follows:-

   B     B register specified illegally
   E     Expression error
   I     Illegal character used
   M     Multiply defined symbol used or defined
   P     Phase error
   U     Undefined subfield.

The listing of the source deck is followed, on the next page, by the routine name and the position of the main entry point in octal. Two statements follow. The first gives the first location, in octal, not used by the routine just assembled. The second gives, also in octal, the first location in the common region not used by the routine. A comment will appear here if the common region storage demanded overruns location 3 400 000 (octal).

A list of the symbols in the routine symbol table (RST) with their values, follows. The symbols in the RST are those declared in DEFINE directives. If a symbol has been declared in a DEFINE directive but has not been defined in the routine, or has been multiply defined in the routine, an appropriate comment will be made in this list. If no symbols have been declared in DEFINE directives in the routine this list is omitted.

Next a list is given of the symbols in the external reference table (ERT) for the routine. With each symbol is printed a list of references to that symbol. If there are no references to a particular symbol a comment is made to draw attention to a possible error.

If a symbol is multiply defined, once as external, once as internal then no external references will be recorded, and a definite error indication given at this point.

This list will be followed by the comment Above Assembly has Failed if at least one error has been found in the routine.

The final statement of the listing gives the time, in seconds, required to assemble the given program, and the number of source cards in the program deck.

3.2 Punched Card Output: BAS Cards

IASP causes cards to be punched off-line. The form of the card deck produced for a routine is exactly that described elsewhere, (3) i.e. BAS cards. The cards may be read into ATLAS by the standard BAS loader. For completeness details of the card formats are given here.

3.2.1 Heading card

This is the first card to be produced for each routine. It is punched in the BCD mode.

Columns 1 to 4     contain the characters *BAS
Columns 5 to 8     are blank
Columns 9 to 16    contain the name of the main entry point, beginning in column 9 
                   and filled out with blank columns
Column 17          is blank
Columns 18 to 23   give the relative location of the main entry point in octal, in 
                   full word units, right adjusted within the field
Columns 24 and 25  are blank.
Columns 26 to 31   give the relative location of the routine symbol table, in octal, 
                   in full word units, right adjusted within the field. 
                   This is the first relative location not used by the routine
Columns 32 and 33  are blank.
Columns 34 to 39   give the number of symbols in the routine symbol table, in octal, 
                   right adjusted within the field. Twice this number gives the length 
                   of the RST.
Columns 40 and 41  are blank.
Columns 42 to 47   give the lower six octal digits of the first location in the common 
                   region not used by the routine.
Columns 48 to 72   are blank.
Columns 73 to 78   contain the label given in the variable field of a LABEL pseudo-operation 
                   within the routine, or are blank if no label has been given.

3.2.2 BAS relocatable binary cards

The heading card is followed by a deck of relocatable binary cards containing the instructions for the routine and the tables of symbols generated by the routine. The routine symbol table is punched to follow the last instruction of the routine (if there are no entries this table is omitted). A word of zeros is punched to inform the loader that there is no parameter use table. Finally the external reference table is punched. The end of each entry (except the last) in this table is marked by the 24 bit halfword represented by 7777 7776 in octal. The next entry begins at the next full word. The end of the last entry is market by the 24 bit halfword represented by 7777 7777 in octal.

The relocatable binary cards have the following format.

Column 1
row + is punched on all but the last card of the deck produced for the routine
rows 2 to 6 contain (in binary) the number of information words on this card (maximum 16), and rows 7 and 9 are punched to indicate a binary (not Hollerith) card.
Columns 2,3 and 4
contain relocation bits for the words to be loaded. Column 2 rows + and - contain, respectively, the relocation bits for the high and the low half words of the first information word on the card. A punch signifies that the corresponding halfword is to be relocated. The 0 and 1 rows of column 2 contain the relocation bits for the halfwords in the second information word on this card, and so on.
Columns 5 and 6
contain a 24 bit logical checksum (i.e. formed with end-around-carry) of all the information on the card. The checksum is such that the logical sum of all the halfwords in columns 1-8 plus the information words is represented by 7777 7777 in octal.
Columns 7 and 8
contain the relative location into which the first information word on the card is to be loaded.
Columns 9 to 12
contain the first word to be loaded, i.e. the first information word.

Subsequent groups of four columns contain words to be loaded into successive locations, the total number of words being given in column 1.

3.2.3 Effect of errors in the routine on the punched output

The heading card for a routine is always punched. If an error has been detected during the first pass of the assembly or if it is detected before the first sixteen instruction words have been assembled, a card with the word FAILED is punched after the heading card and no binary cards are produced. Otherwise the detection of an error suspends the punching of binary cards, the card with the word FAILED is punched and no further binary cards are punched.

References

(1) 'A Preliminary Symbolic Assembly Program for ATLAS' by A.R. Curtis and I.C. Pyle: A.E.R.E. Atlas Paper No.12, (CPN/49), April 1961.

(2) 'Fortran Assembly Program (FAP) for the IBM 709/7090' IBM Bulletin J28-6098 September 1960.

(3) 'BAS - A proposed target language for compilers on ATLAS' by A.R. Curtis and I.C. Pyle: Comp. J, 5 (2) p 100 July 1962.

Appendix A: Pseudo-Operations in INTERASP

Pseudo-operations   Section
BSS                 2.7.2
COMMON              2.7.4
CSS                 2.7.4
DEC                 2.7.3
DEFINE              2.7.4
EJECT               2.7.6
END                 2.7.1
ENTRY               2.7.4
EQU                 2.7.5
HWDS                2.7.3
INT                 2.7.3
LABEL               2.7.6
OCT                 2.7.3
ORIGIN              2.7.2
PUBLIC              2.7.4
TEQU                2.7.1
TEXT                2.7.3
         

Appendix B: Mnemonic Operation Codes for ATLAS Instructions

In this appendix we list the ASP mnemonic codes for ATLAS instructions. Full descriptions of the operations are given in the Ferranti publications: 'List of Basic Instructions' (CS345 October 1962), and 'Extracode Functions' (CS309A December 1962). We have condensed these, by permission, to the brief descriptions given in the list below, for whose accuracy Ferranti Ltd cannot be held responsible.

The list is in the order of the absolute octal instruction codes. Each entry begins with the octal instruction code followed by the ASP mnemonic code for the instruction. The letter T which follows certain of the mnemonics means that a T can prefix these mnemonics to imply that the current control register is to be used for Ba. For example:

0237 AMIB T 1  If accumulator is minus set Ba

means that the mnemonic may also be used in the form TAMI (transfer if accumulator is minus) in which case the number of the current control register will be placed in the Ba part of the instruction word. The letter L which follows certain of the mnemonics means that the letter H in these mnemonics, may be replaced by the letter L to imply the lower half of a word. Thus NAHB and NALB are both mnemonic codes for the instruction 0100. Note that whereas, by suitable addressing, the former may refer to the high or the low half of a word, the latter can only refer to the low half of a word.

A single digit is quoted after each mnemonic and gives the maximum number of B-modifications (0, 1 or 2) that may be used. A minus sign, -, prefixing this digit means that the address subfield is not used in the instruction. Finally there is a phrase briefly describing the instruction.

The following notation - based closely on that of the Ferranti publication - is used in the descriptions:

A   the full double length accumulator:  87 bits
Ax  the fractional part of the accumulator:  79 bits
Ay  the octal exponent of the accumulator:  8 bits
M   the more significant half of Ax;  40 bits including sign bit
L   the less significant half of Ax:  39 bits, no sign bit
Am  the 48 bit floating point register consisting of M and Ay
Al  the 48 bit floating point register consisting of L, Ay and the special sign bit for L 
Ao  the accumulator overflow indicator
N   the 24 bit address bits of an instruction
n   the (modified) address part of an instruction usually regarded as a 21 bit integer 
    with a fractional part of one octal digit
S   n regarded as the address of a 48 bit word in store
H   n regarded as  the address of a 24- bit halfword in store
P   the number given in the block address part of n,  i.e.  in digits 1-11   of n 
K   the least significant three bits of an address i.e.  digits 21-23 of n 
Ba  the B-register specified by the Ba digits of an instruction
Bm  the B-register specified by the Bm digits of an instruction 
Bt  the B-test register,  denoted by the  single letter Q in the mnemonics 
G   the logical accumulator (i.e. B98 and B99):  48 bits 
am, ba,  bm,   g etc.     denote  the  contents  of Am,  Ba, Bm,  G.

A * as the final character of a mnemonic means read the manuals carefully before using this operation.

LIST OF ASP MNEMONICS

B.1 Basic Instructions

0100   NAHB   L 1   Negate  and add half-word to ba
0101   CAHB   L 1   Clear and add half-word to ba
0101   RAHB L T 1   Form of TRAL -  jump indirect -  transfer to  address in h-word 
0102   SUHB   L 1   Subtract half-word from ba
0103   CSHB   L 1   Clear and subtract half-word from ba
0104   ADHB   L 1   Add  half-word to ba
0105   LCHB   L 1   Left-shift character add half-word
0106   NEHB   L 1   Not-equivalence half-word to ba
010?   ANHB   L 1   And half-word to ba
0110   SUBH   L 1   Subtract ba from half-word
0111   SNHB   L 1   Store negatively in half-word
0112   NABH   L 1   Negate and add ba to half-word
0113   STHB   L 1   Store in half-word 
0114   ADBH   L 1   Add ba to  half-word
0116   NEBH   L 1   Not-equivalence ba to half-word
0117   ANBH   L 1   And ba to  half-word
0120   NANB     1   Negate and add number to ba
0121   CANB     1   Clear and add number to ba
0121   RAB    T 1   Form of TRA -  jump
0121   NOP     -1   No operation - dummy
0122   SUNB     1   Subtract number from ba
0123   CSNB     1   Clear and subtract number from ba
0124   ADNB     1   Add number to ba
0125   LCNB     1   Left-shift by one character and add number
0126   NENB     1   Not-equivalence  number to ba
0127   ANNB     1   And number to ba
0143   RBHB   L 1   Right-shift by one bit and subtract half-word
0147   ORHB   L 1   Or half-word to ba
0150   NAHQ   L 1   Negate and add half-word to ba, result to Q  (Bt)
0152   SUHQ   L 1   Subtract half-word from ba, result to Q  (Bt)
0163   RBNB     1   Right-shift by one bit and subtract number
0164   AMBB     0   Add masked bm to ba
0165   CMBB     0   Clear and add masked bm to ba
016?   ORNB     1   Or number to ba
0170   NANQ     1   Negate  and add number to ba, result to Q (Bt)
0172   SUNQ     1   Subtract  number from ba result to Q (Bt)
0200   CIHB   T 0   Count increasing by half-words in Bm set Ba
0201   CIFB   T 0   Count increasing by full-words in Bm set Ba
0202   CDHB   T 0   Count decreasing by half-words in Bm set Ba
0203   CDFB   T 0   Count decreasing by full-words in Bm set Ba
0210   BODB   T 0   If bm is odd set Ba
0211   BEVB   T 0   If bm is even set Ba
0214   BZEB   T 0   If bm is zero set Ba
0215   BNZB   T 0   If bm is non-zero set Ba
0216   BPZB   T 0   If bm is plus or zero  set Ba
0217   BMIB   T 0   If bm is minus set Ba
0220   QIHB   T 0   Test Q increasing by half-words in Bm set Ba
0221   QIFB   T 0   Test Q increasing by full-words in Bm set Ba
0222   QDHB   T 0   Test Q decreasing by half-words in Bm set Ba
0223   QDFB   T 0   Test Q decreasing by full-words in Bm set Ba
0224   QZEB   T 1   If Q is zero  set Ba
0225   QNZB   T 1   If Q is non-zero set Ba
0226   QPZE   T 1   If Q is plus or zero  set Ba
0227   QMIB   T 1   If Q is minus set Ba
0234   AZEB   T 1   If accumulator is zero set Ba
0235   ANZB   T 1   If accumulator is non-zero set Ba
0236   APZB   T 1   If accumulator is plus or zero set Ba
0237   AMIB   T 1   If accumulator is minus set Ba
0300   UAD      2   Unrounded add
0301   USU      2   Unrounded subtract
0302   UNA      2   Unrounded negate and add
0304   UCA      2   Unrounded clear and add
0305   UCS      2   Unrounded clear and subtract
0310   WAD      2   UAD without clearing L first
0311   WSU      2   USU without  clearing L first
0314   CLA      2   Clear and add to am preserve l
0314   CAM      2   Clear and add to am preserve  l
0315   CLS      2   Clear and subtract from am preserve l
0315   CSM      2   Clear and subtract from am preserve l
0320   FAD      2   Floating add
0321   FSU      2   Floating subtract
0322   FNA      2   Floating negate and add
0324   FCA      2   Floating clear and add 
0325   FCS      2   Floating clear and subtract
0330   XAD      2   Fixed-point add
0331   XSU      2   Fixed-point subtract
0332   XNA      2   Fixed-point negate and add
0334   XCA      2   Fixed-point clear A and add
0335   XCS      2   Fixed-point clear A and subtract
0340   UAC     -2   Standardise accumulator
0341   XAC     -2   Test Ay for overflow
0342   UMP      2   Unrounded multiply
0343   UMN      2   Unrounded multiply negatively
0344   CAL      2   Clear and add to l preserve m
0345   CALM     2   Clear and add to l with sign in M
0346   STOZ     2   Store accumulator and clear to zero
0347   STLZ     2   Store al, then clear L to zero
0352   XMP      2   Fixed-point multiply
0353   XMN      2   Fixed-point multiply negatively
0354   XRA     -2   Fixed point round by adding
0355   ULM     -2   Standardise L with sign in M
0356   STM      2   Store am
0356   STO      2   Store accumulator more significant half (am)
0357   STL      2   Store al
0360   FAC     -2   Floating point round by forcing
0360   FRF     -2   Floating point round by forcing
0361   XRF     -2   Fixed point round by forcing
0362   FMP      2   Floating multiply  
0363   FMN      2   Floating multiply negatively
0364   LOA      2   Left-shift one octal digit in accumulator
0365   ROA      2   Right-shift one octal digit in accumulator
0366   FMOD    -2   Floating point modulus of am, clearing L first
0367   FCAM     2   Floating point clear and add modulus
0372   XMP*     2   Included in XMP (0352)
0373   XMN*     2   Included in XMN (0353)
0374   FDV      2   Floating divide
0375   XDR*     2   Fixed point division with remainder
0376   XWD*     2   Without clearing L, fixed point division with remainder 
0377   FDR*     2   Floating-point division with remainder

B.2 Extracode Functions

1001   GOST     1   Go  to  section n on tape Bs
1002   RFKT     1   Read forwards K + 1 sections
1003   RBKT     1   Read backwards K + 1 sections
1004   WFKT     1   Write forward K + 1 sections
1005   MFKT     1   Move forwards K + 1 sections on tape Ba 
1006   MBKT     1   Move backwards K + 1 section on tape Ba
1007   NGET     1   Need next reel of file Ba, call it n
1010   PGET     1   Need private tape Ba, title in S onwards
1011   FGET     1   Need free tape Ba, title in S onwards
1012   PKET     1   Need private tape Ba, title in S onwards, on logical channel K 
1013   FKET     1   Need free tape Ba, title in S onwards, on logical channel K
1014   WTLT     1   Write  title of tape Ba
1015   RTLT     1   Read title of tape Ba
1016   SAVT     1   Unload tape Ba and save  it
1017   FRET     1   Free tape Ba,  return to  common pool
1020   GIVT     1   Give tape Ba to  another program
1021   FREM     1   Free mechanisms
1022   NUMT     1   Change  ogical number of tape
1023   SLHT   L 1   Store length of tape in half word
1024   SPPT     1   Store present position on tape Ba
1030   RFVT     1   Read forwards variable length records
1031   RBVT     1   Read backwards variable length records
1032   WFVT     1   Write forwards variable length records
1033   SLVT     1   Select tape Ba for variable length work
1034   RFFT     1   Read forwards from fixed length blocks to variable length
1035   RBFT     1   Read backwards from fixed length blocks to variable length
1036   VTNB     1   Variable length tape  number to Ba
1037   STMT     1   Store mode  of tape
1040   COPY     1   Transfer words between store and selected tape
1041   SKIP     1   Omit words on selected tape
1042   MARK     1   Write mark K on selected tape
1043   ENVT     1   End variable length work on tape Ba
1044   GOWT     1   Go to specified word on tape Ba
1046   RFOT     1   Read forwards ORION tape
1047   RBOT     1   Read backwards ORION tape
1050   ISEL     1   Select input n
1051   ISNB     1   Number of current input stream to Ba
1052   IPNB     1   Number of current input peripheral to Ba
1053   IFBB   T 1   If next character is in binary code set Ba
1054   ICHB     1   Input character to Ba
1055   IBNB     1   Number of blocks read to Ba
1056   IHAF     1   Read ba halfwords to S onwards
1057   IREC     1   Input record to store
1060   OSEL     1   Select output n
1061   OSNB     1   Number of current output stream to Ba
1062   OPNB     1   Number of current output peripheral to Ba
1063   ODEL     1   Delete output n
1064   OCHN     1   Output character n (the two least significant octal digits of n)
1065   OEOR     1   End of record
1066   OHAF     1   Output ba halfwords from S
1067   OREC     1   Output record
1070   ONIB     1   Define output n to be same as input ba
1071   OBRK     1   Break output n
1072   ODEF     1   Define output n
1100   ESSB     1   Enter subroutine at s, link in Ba
1101   ESNB     1   Enter subroutine at n, link in Ba
1102   ESBB     0   Enter subroutine at bm, link in Ba
1103   EBBN     1   Establish Ba branches, save b-registers from n on
1104   BRAN     1   Start higher priority branch Ba at S
1105   KILL    -1   Kill all branches with number Ba
1106   WBRA    -1   Wait if any branch Ba is active
1107   TBRA     1   Jump if any branch Ba is active
1110   INTRAP   1   Enter trapping mode
1112   EERN     1   Establish error routine entry point as n
1113   ERSN     1   Establish restart entry point as n
1114   TRAT     1   Jump and allow further traps
1115   EDUT     1   Establish tape for dumps
1116   NODU     1   No dump on error
1117   FINISH  -1   End of program, return to supervisor
1120   TIMB    -1   Present time to Ba
1121   DAYB    -1   Present date to Ba
1122   CTRB    -1   Local instruction counter to Ba
1123   ICTR     1   Initialise local instruction counter
1124   STIN     1   Set indicators Ao, Q etc. from n
1125   CMIB    -1   Clear and add masked indicators Ao, Q etc. to ba
1126   HOOT     1   
1127   CMSB     1   Clear and add masked handswitches to ba
1131   TSSB     1   Table search set Ba 
1132   ETVN     1   Establish trap vector origin as n
1133   TVOB     1   Trap vector origin to Ba
1134   TRAP     1   Trap and inhibit further traps 
1135   EBON     1   Establish block overflow routine entry point as n
1136   CTRA    -1   Overall instruction counter to Am

     Instructions 1140 to 1157 (Compiler and Supervisor extracodes): no mnemonics allocated
     
1160   NBLP     1   Need block P soon
1161   FBLP     1   Finished with block P for the present
1162   DRPB     1   Duplicate read block P to block ba
1163   DWPB     1   Duplicate write block P to block ba
1164   RNBP     1   Rename as ba block P
1165   WBLP     1   Write block P
1166   RBAP     1   Read block P to absolute page ba
1167   LBLP     1   Lose block P
1170   CBLN     1   Switch n, -(clear blocks not,) +(clear blocks again) needed 
1171   ABLN     1   Allow n blocks
1172   PAGB     1   Number of available pages to Ba
1173   BLKB     1   Number of available blocks to Ba
1174   BAND     1   Reserve band on drum
1175   RFKD     1   Read forward K+1 blocks from drum
1176   WFKD     1   Write forwards K+1 blocks to drum
1177   LBDD     1   Lose band on drum
1200   AOVS   T 1   If A has overflowed set Ba
1201   ANOB   T 1   If A has not overflowed set Ba
1202   LOVB   T 1   If L has overflowed set Ba
1204   CSGB     1   Count of m.s, agreeing characters in s,g to Ba
1206   GZEB   T 1   If the m.s. character of G is null, set Ba
1216   BPLB   T 0   If bm is plus but not zero set Ba
1217   BMZB   T 0   If bm is minus or zero set Ba
1223   BCIB   T 1   If B-carry indicated, set Ba
1226   QPLB   T 1   If Q(Bt) is plus but not zero set Ba
1227   QMZB   T 1   If Q(Bt) is minus or zero set Ba
1234   JAES     1   Jump over next instr. if am approx equal to s
1235   JNAS     1   Jump over next inst.if am not approx equal to s
1236   APLB   T 1   If accumulator is plus but not zero  set Ba
1237   AMZB   T 1   If accumulator is  minus or zero  set Ba
1250   LDCB     1   Load character into Ba
1251   STCB     1   Store character from Ba
1252   UKPK     1   Unpack n characters
1253   PACK     1   Pack n characters
1265   LCGB     1   Left  shift one character in G, add n, overflow to Ba
1300   FCAB     1   Clear and add fractional part of s to  am;integral part to Ba 
1301   FAIB    -1   Fractional part of am to Am,  integral part  to Ba
1302   MPNB     1   Multiply by number to ba
1303   MNNB     1   Multiply negatively by number to ba
1304   DVNB     1   Divide by number quotient to ba
1312   MPIB     1   Multiply by integer to ba
1313   MNIB     1   Multiply negatively by integer to ba
1314   DVIB     1   Divide by integer quotient to ba
1340   SARB     1   Shift arithmetically right in Ba
1341   SALB     1   Shift arithmetically left in Ba
1342   SCRB     1   Shift cyclically right  in Ba
1343   SCLB     1   Shift cyclically left in Ba
1344   SLRB     1   Shift logically right in Ba
1345   SLLB     1   Shift logically left in Ba
1347   ORBH   L 1   Or ba to halfword
1353   MSNB     1   Most significant bit in n,  position to Ba
1356   NEHQ   L 1   Not-equivalence half-word and ba to Q (Bt)
1357   ANHQ   L 1   And half-word and ba to Q (Bt)
1364   RMBB     0   Replace masked parts of ba by bm
1371   XXXB     1   Dummy B-type extracode
1376   NENQ     1   Not-equivalence  number and ba to Q (Bt)
1377   ANNQ     1   And number and ba to Q (Bt)
1400   CLOG     1   Complex natural logarithm
1402   CEXP     1   Complex exponential
1403   CONJ     1   Complex conjugate
1410   CSQRT    1   Complex square root
1411   CARG     1   Argument of complex number
1412   CMOD     1   Modulus of complex number
1413   CART     1   Cartesian coordinates from polar
1414   CREC     1   Complex reciprocal
1415   RAND     1   Generate pseudo-random number
1420   CAD      1   Complex add
1421   CSU      1   Complex subtract
1424   CCA      1   Complex clear and add
1425   CCS      1   Complex clear and subtract
1430   VAD      1   Vector add
1431   VSU      1   Vector subtract
1432   VMP      1   Vector multiply by scalar
1433   VCM      1   Vector cumulative multiply by scalar
1434   VGA      1   Vector clear and add
1436   FSCPR    1   Floating-point scalar product
1437   USCPR    1   Unrounded scalar product
1452   XMPF     1   Fixed-point multiply and force exponent
1456   CST      1   Complex store
1462   CMP      1   Complex multiply
1466   UMPAD    1   Unrounded multiply and add
1467   POLY     1   Polynomial
1473   XDVF     1   Fixed point divide and force
1474   XDSB     1   Fixed point divide and store
1475   WDSB     1   Without clearing L, divide and store
1476   IDSB     1   Integer divide and store
1477   SQRB     1   Store quotient and give remainder of type Ba
1500   DAD      2   Double length add
1501   DSU      2   Double length subtract
1502   DNA      2   Double length negate and add
1504   DCA      2   Double length clear and add
1505   DCS      2   Double length clear and subtract
1520   FADN     2   Floating add number
1521   FSUN     2   Floating subtract number
1524   FCAN     2   Floating clear and add number
1525   FCSN     2   Floating clear and subtract number
1534   XCAN     2   Fixed-point clear and add number
1535   XCSN     2   Fixed-point clear and subtract number
15^2   DMP      2   Double length multiply
1543   DMN      2   Double length multiply negatively
1556   DST      2   Double length store
1562   FMPN     2   Floating multiply by number
1565   DNEG    -2   Negate double length accumulator
1566   DMOD    -2   Double length modulus of a
1567   DCAM     2   Double length clear and add modulus
1574   FDVN     2   Floating divide by n for remainder
1575   WDVN     2   Without clearing L, divide by n for remainder
1576   DDV      2   Double length divide
1601   CAG      2   Clear and add to g
1604   ADG      2   Add to g
1605   ACG      2   Add cyclically to g
1606   NEG      2   Not equivalence word to g
1607   ANG      2   And to g
1611   COG     -2   Complement each bit of g
1613   STG      2   Store g
1615   GTOA    -2   Move contents of G to Am
1624   HCA    L 2   Half length clear and add
1626   HST    L 2   Half length store
1630   ANCG     2   And complement to g
1633   ATOG    -2   Move the contents of Am to G
1646   ORG      2   Or to g
1652   SUGQ     2   Subtract s from g, result to Q (Bt)
1700   LOG      2   Natural logarithm of s to Am
1701   LOGA    -2   Natural logarithm of am
1702   EXP      2   Exponential of s to Am
1703   EXPA    -2   Exponential of am
1704   INTPT    2   Integral part of s to A
1705   INTPTA  -2   Integral part of a
1706   SIGN     2   Sign of s (-1,0,+1) to A
1707   SIGNA   -2   Sign of a (-1,0,+1)
1710   SQRT     2   Square root of s
1711   SQRTA   -2   Square root of am
1712   RADIUS   2   Polar radius from cartesians am and s
1713   POWER    2   am raised to power s
1714   RECIP    2   Reciprocal of s
1715   RECIPA  -2   Reciprocal of a
1720   ASIN     2   Arcsine of s
1721   ASINA   -2   Arcsine of am
1722   ACOS     2   Arccosine of s
1723   ACOSA   -2   Arccosine of am
1724   ATAN     2   Arctangent of s
1725   ATANA   -2   Arctangent of am
1726   ANGLE    2   In polar coordinates
1727   CFAS     2   Compare accumulator with store and skip
1730   SIN      2   Sine of s
1731   SINA    -2   Sine of am
1732   COS      2   Cosine of s
1733   COSA    -2   Cosine of am
1734   TAN      2   Tangent of s
1735   TANA    -2   Tangent of am
1736   TMGE     2   Skip next instruction if abs(am) greater than or equals s 
1737   TMLT     2   Skip next instruction if abs(am) is less than s
1752   NLMY     2   Move number from L to M adjusting exponent
1753   NMLY     2   Move number from M to L adjusting exponent
1754   FRA     -2   Floating point round by adding
1755   ASCALE   2   In A scale fraction and force exponent
1756   XCH      2   Exchange accumulator and storage
1757   FRAMP    2   Floating reciprocate am and multiply by s
1760   FSQA    -0   Floating square of am to Am
1762   NLM      2   Move number from L to M preserving exponent
1763   NML      2   Move number from M to L preserving exponent
1764   SALA     2   Shift arithmetically left in A
1765   SARA     2   Shift arithmetically right in A
1766   XCAM     2   Fixed point clear and add modulus
1771   XXXA     1   Dummy A-type extracode
1772   IMP      2   Integer multiply
1773   IDV*     2   Integer divide
1774   FDR      2   Floating divide for remainder
1775   WDR      2   Without clearing L, divide for remainder
1776   FBMD     2   Floating remainder
⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site