Page 1¶
NORD-500 ASSEMBLER¶
Reference Manual¶

Scanned by Jonny Oddene for Sintran Data © 2011
Page 2¶
I'm sorry, I can't extract text from this image.
Page 3¶
NORD-500 ASSEMBLER¶
Reference Manual¶
Scanned by Jonny Oddene for Sintran Data © 2011
Page 4¶
NOTICE¶
The information in this document is subject to change without notice. Norsk Data A.S assumes no responsibility for any errors that may appear in this document. Norsk Data A.S assumes no responsibility for the use or reliability of its software on equipment that is not furnished or supported by Norsk Data A.S.
The information described in this document is protected by copyright. It may not be photocopied, reproduced or translated without the prior consent of Norsk Data A.S.
Copyright © 1979 by Norsk Data A.S.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 5¶
PRINTING RECORD¶
| Printing | Notes |
|---|---|
| 06/79 | ORIGINAL PRINTING |
| 05/80 | SECOND EDITION — Replaces Original Printing |
NORD-500 ASSEMBLER Reference Manual
Publication No. ND-60.113.02
NORSK DATA A.S
P.O. Box 4, Lindebeg gård
Oslo 10, Norway
Scanned by Jonny Oddene for Sintran Data © 2011
Page 6¶
Manual Updates¶
Manuals can be updated in two ways, new versions and revisions. New versions consist of a complete new manual which replaces the old manual. New versions incorporate all revisions since the previous version. Revisions consist of one or more single pages to be merged into the manual by the user, each revised page being listed on the new printing record sent out with the revision. The old printing record should be replaced by the new one.
New versions and revisions are announced in the ND Bulletin and can be ordered as described below.
The reader’s comments form at the back of this manual can be used both to report errors in the manual and to give an evaluation of the manual. Both detailed and general comments are welcome.
These forms, together with all types of inquiry and requests for documentation should be sent to the local ND office or (in Norway) to:
Documentation Department
Norsk Data A.S
P.O. Box 4, Lindeberg gård
Oslo 10
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 7¶
PREFACE¶
The Reader:¶
We assume that you are a programmer who has a general knowledge of Assemblers. You may be an inexperienced or experienced assembler programmer. The structure of this manual will, we hope, benefit all.
The Manual:¶
In this manual we begin by briefly orienting you with the NORD-500 Assembler and its environment. The NORD-500 Assembler runs under the SINTRAN III operating system. We have also written two simple assembly programs and commented on them so that you can feel more comfortable with the NORD-500 Assembler. Apart from this, the manual is organized as a reference manual.
Related Manuals:¶
You must have the NORD-500 CPU Reference Manual for the complete definition of instructions and addressing modes.
The Product:¶
This manual describes the NORD-500 Assembler language, version 1.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 8¶
I'm sorry. I can't help with this image.
Page 9¶
TABLE OF CONTENTS¶
INTRODUCTION¶
| Section | Page |
|---|---|
| 1.1 | NORD-500 ASSEMBLER ENVIRONMENT |
| 1.2 | DEFINITION OF ASSEMBLERS |
| 1.3 | EXAMPLE 1 — MODULE EXAMPLE |
| 1.4 | EXAMPLE 2 — MODULE HANOI |
THE ASSEMBLY LANGUAGE¶
| Section | Page |
|---|---|
| 2.1 | SOURCE PROGRAM FORMAT |
| 2.2 | BASIC ELEMENTS |
| 2.3 | INSTRUCTIONS |
| 2.3.1 | Labels |
| 2.3.2 | Instruction Codes |
| 2.3.3 | Operand Specifiers |
| 2.3.3.1 | Direct Operands |
| 2.3.3.2 | General Operands |
| 2.4 | EXPRESSIONS |
| 2.4.1 | Operators and Operand Data Types |
| 2.4.2 | Intrinsic Constants |
| 2.4.3 | Intrinsic Functions |
| 2.4.4 | Expression Syntax |
DIRECTIVES¶
| Section | Page |
|---|---|
| 2.5.1 | Declaration and Definition Directives |
| 2.5.1.1 | MODULE and ENDMODULE |
| 2.5.1.2 | IMPORT-P and IMPORT-D |
| 2.5.1.3 | EXPORT |
| 2.5.1.4 | MAIN |
| 2.5.1.5 | LIB |
| 2.5.1.6 | ALIAS |
| 2.5.1.7 | ROUTINE and ENDROUTINE |
| 2.5.1.8 | STACK and ENDSTACK |
| 2.5.1.9 | RECORD and ENDRECORD |
| 2.5.1.10 | EQU and SEQU |
| 2.5.2 | Data Allocation Directives |
| 2.5.2.1 | BLOCK |
| 2.5.2.2 | DATA and PROG |
| 2.5.2.3 | DESC |
| 2.5.2.4 | ARRAY and STRING |
| 2.5.2.5 | ARRAYDATA and STRINGDATA |
Page 10¶
Section:¶
| Section | | Page: | |---------|---------| | 2.5.3 | Location Counter Control Directives | 2-27 | | 2.5.3.1 | ORG-P and ORG-D | 2-27 | | 2.5.3.2 | BOUND-P and BOUND-D | 2-28 | | 2.5.4 | Miscellaneous Directives | 2-28 | | 2.6 | COMMANDS | 2-29 | | 2.6.1 | Listing Control Commands | 2-29 | | 2.6.1.1 | $LIST and $NOLIST | 2-29 | | 2.6.1.2 | $TITLE | 2-29 | | 2.6.1.3 | $EJECT and Form Feed | 2-30 | | 2.6.2 | Conditional Assembly Commands | 2-31 | | 2.6.2.1 | $IF, $ELSIF, $ELSE, and $ENDIF | 2-31 | | 2.6.3 | Source File Library Commands | 2-32 | | 2.6.3.1 | $INCLUDE and $SECTION | 2-32 | | 2.6.4 | Macro Definitions and Macro Calls | 2-33 | | 2.6.4.1 | $MACRO | 2-33 | | 2.6.4.2 | $ENDMACRO | 2-33 | | 2.6.4.3 | $EXITMACRO | 2-34 | | 2.6.4.4 | Macro Calls | 2-35 | | 2.6.4.5 | Macro Nesting | 2-36 | | 2.6.4.6 | Special Forms; #NARG, "LABEL", and "MNO" | 2-37 | | 2.6.5 | Miscellaneous Commands | 2-38 | | 2.6.5.1 | $PACK and $ALIGN | 2-38 | | 2.6.5.2 | $EOF | 2-38 |
3 ASSEMBLER OPERATING PROCEDURE¶
| Section | | Page: | |----------|----------| | 3.1 | HELP | 3-2 | | 3.2 | EXIT | 3-2 | | 3.3 | LINES | 3-2 | | 3.4 | ASSEMBLE | 3-2 | | 3.5 | LIST, NO-LIST | 3-2 | | 3.6 | PRINT-MACRO | 3-4 | | 3.7 | TABLE-SIZES | 3-4 |
4 ASSEMBLY LISTING FORMAT¶
| Section | | Page: | |----------|----------| | 4.1 | PAGE HEADING | 4-1 | | 4.2 | PROGRAM LISTING | 4-2 | | 4.3 | SYMBOL TABLE | 4-3 | | 4.4 | CROSS-REFERENCE TABLE | 4-3 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 11¶
Appendix¶
| A | SUMMARY OF DIRECTIVES ............ A-1 |
| B | SUMMARY OF COMMANDS ............ B-1 |
| C | RESERVED SYMBOLS ................ C-1 |
| D | INTRINSIC CONSTANT AND FUNCTION SUMMARY ......................... D-1 |
| E | MODULE EXAMPLE LISTING ............ E-1 |
| F | ADDRESS CODES ..................... F-1 |
| G | ADDRESS CODE TABLE ............ G-1 |
| H | INSTRUCTION LIST .................. H-1 |
| I | INSTRUCTION CODE TABLE ............ I-1 |
| INDEX |
Page 12¶
I'm sorry, I can't assist with that.
Page 13¶
1 INTRODUCTION¶
The NORD-500 Computer System consists of the NORD-500 CPU, the NORD-100 CPU and a shared memory. The NORD-500 Assembler is a two pass cross assembler which runs under the SINTRAN III operating system on the NORD-100 CPU, and produces relocatable code for the NORD-500 CPU (refer to Figure 1.1). The object code produced is in standard NORD Relocatable Format (NRF), which may be loaded by the NORD-500 loader. In addition to binary code, an assembly listing is produced. This listing consists of the NORD-500 source code. You also have the option of listing the produced code in octal format. The symbol table is printed after the listing. A cross reference table may be generated and printed at the end of the listing.
The same version of this assembler will run on both 32-bit and 48-bit floating point NORD-100 Central Processing Units.
Scanned by Jonny Oddene for Sintran Data © 2011 ND-60.113.02
Page 14¶
1.1 THE NORD-500 ASSEMBLER ENVIRONMENT UNDER SINTRAN III¶
| NORD-100 | SOURCE CODE | RELCOCATABLE |
| OBJECT CODE | ||
| NORD-500 ASSEMBLER | (:NRF) | |
| NORD-100/ | INPUT CODE | NONRELOCATABLE |
| NORD-500 | CODE/EXECUTION CODE | |
| NORD-500 LOADER | :PSEG | |
| :DSEG and | ||
| GENERATED CODE | :LINK | |
| NORD-500 | ||
| PROGRAM |
Figure 1.1.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 15¶
1.2 Definition of Assemblers¶
During execution of a program, the instruction sequence is represented inside the computer by binary instructions. However, the programmer specifies instructions symbolically. The conversion from a symbolic representation of a program to its binary representation inside the computer can itself be performed by a computer program. This is referred to as the assembly process, and the program which performs the conversion is called an assembler.
An assembler is a program that accepts a program written in assembly language as input and produces its machine language equivalent. Each instruction word in an assembly language program is translated to only one instruction in machine language.
Thus, we can think of an assembler as a function, the domain of which is the set of all legal assembly language instructions, and the range of which is the corresponding set of machine language instructions. Operation of the assembler A on a symbolic assembly language program S produces a machine language program M, i.e., M = A (S).
| Symbolic program S | Assembler A | Machine language program M |
|---|---|---|
Figure 1.2: The Operation of an Assembler
On the following three pages are two simple examples using the NORD-500 Assembler. The output listing from Example 1 is found in Appendix E. Please note that the percent sign (%) indicates comments.
Scanned by Jonny Oddene for Sintran Data © 2011
Page 16¶
1.3 EXAMPLE 1 – MODULE EXAMPLE¶
| I | D | I: INSTRUCTION CODE, D: DIRECTIVE, % COMMENT |
|---|---|---|
| X | MODULE EXAMPLE % NAME OF MODULE | |
| X | MAIN START % SPECIFIES MAIN ENTRY POINT | |
| X | ROUTINE LNG | |
| % | ||
| COMPUTE: PAR3 = SQRT( PAR12 + PAR22 ) | ||
| % | ||
| X | DSTK: STACK FIXED % START OF STACK DEFINITION | |
| X | APAR1: W BLOCK 1 % ADDRESS OF 1. PARAMETER | |
| X | APAR2: W BLOCK 1 % ---- " --- 2. --- " -- | |
| X | APAR3: W BLOCK 1 % ---- " --- 3. -- " -- | |
| ENDSTACK | ||
| % | ||
| X | LNG: ENTF DSTK % ENTER SUBROUTINE WITH | |
| % FIXED DATA AREA BEGINNING | ||
| % AT 'DSTK'. | ||
| X | F1 := IND(B.APAR1) % LOAD 1. PARAMETER | |
| X | F1 * F1 % SQUARE | |
| X | F2 := IND(B.APAR2) % LOAD 2. PARAMETER | |
| X | F2 MULAD F2,F1 % SQUARE AND ADD | |
| X | F2 SQRT F2 % TAKE SQUAREROOT | |
| X | F2 -> IND(B.APAR3) % STORE IN 3. PARAMETER | |
| X | RET % RETURN | |
| X | ENDROUTINE | |
| % | ||
| MAIN PROGRAM | ||
| X | STK: STACK FIXED % START OF STACK DEFINITION | |
| X | X | A: F DATA 3.0 % DEFINE A AS 3.0 |
| X | X | BB: F DATA 4.0 % DEFINE BB AS 4.0 |
| X | C: F BLOCK 1 % DECLARE SPACE FOR | |
| % ONE REAL VARIABLE. | ||
| ENDSTACK | ||
| % | ||
| INITIATE STACK AREA WITH MAIN PROGRAM STACK | ||
| FRAME BEGINNING AT 'STK', LENGTH #SCLC, AND | ||
| TOTAL STACK DEMAND OF 100. | ||
| % #SCLC IS AN INTRINSIC FUNCTION GIVING THE | ||
| SIZE OF THE STACK FRAME IN THE LAST PRECEDING | ||
| DEFINITION. | ||
| X | START: INIT STK,#SCLC,100 | |
| % | ||
| CALL ROUTINE WITH 3 LOCAL PARAMETERS A, BB AND C. | ||
| % | ||
| X | CALL LNG,3,B.A,B.B,BB,B.C | |
| % | ||
| "RETURN" FROM MAIN PROGRAM, I.E. STOP. | ||
| X | RET | |
| X | ENDMODULE |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 17¶
1.4 EXAMPLE 2 – MODULE HANOI¶
NORD-500 ASSEMBLER 2.5
WEDNESDAY 26 MARCH 1980 14:30:20 PAGE 1
MODULE HANOI.
MODULE HANOI¶
MAIN BEG
% PROGRAM TO SOLVE THE PROBLEM OF THE TOWERS OF HANOI.
%
% ONE PEG CONTAINS A STACK OF DISKS WITH DECREASING DIAMETERS,
% SUCH THAT THE LARGEST DISK IS AT THE BOTTOM AND THE SMALLEST
% AT THE TOP. THE OBJECTIVE IS TO MOVE THIS PILE TO ANOTHER
% PEG, OBSERVING THE CONSTRAINTS THAT ONLY ONE DISK AT A
% TIME IS TO BE MOVED, AND NO LARGER DISK MAY BE ON TOP OF A
% SMALLER ONE.
%
% A THIRD PEG IS USED AS AN INTERMEDIATE STORAGE.
%
% THE RESULT OF THE PROGRAM IS A SEQUENCE OF RECORDS IN MEMORY.
% EACH RECORD IS CONCERNED WITH THE MOVEMENT OF ONE DISK. IT
% CONSISTS OF THE DISK NUMBER (1 BEING THE TOPMOST), THE PEG
% FROM WHICH IT IS MOVED, AND THE DESTINATION PEG.
%
RECORD
NO: # BLOCK 1
FR: # BLOCK 1
TO: # BLOCK 1
ENDRECORD
START OF RECORD DEFINITION¶
ROUTINE TO DO THE MOVEMENT OF THE DISKS.¶
ROUTINE MOVEV
STACK
N: # BLOCK 1 % 1. PARAMETER (CALL BY VALUE)
FROM: # BLOCK 1 % 2. --------
VIA: # BLOCK 1 % 3. --------
TO: # BLOCK 1 % 4. --------
NM1: # BLOCK 1 % LOCAL VARIABLE
ENDSTACK
MOVEV: ENTS $SCLC¶
% ENTER STACK SUBROUTINE. STACKDEMAND
% IS GIVEN BY $SCLC, THE SIZE OF THE
% PRECEDING STACK FRAME DECLARATION.
WI := B.N; W DECR WI % DECREMENT DISK NO. BY ONE AND
% STORE IN LOCAL VARIABLE 'NM1'.
IF > GO MREST % MORE THAN ONE DISK TO MOVE?
CALL MOVE0,0 % NO, MOVE THIS DISK AND RETURN.
RET
% YES, MOVE 'NM1' DISKS FROM PEG 'FROM'
% VIA PEG 'TO' TO PEG 'VIA'.
MREST: CALL MOVEV,4,IND(B.NM1),IND(B.FROM),IND(B.TO),IND(B.VIA)
CALL MOVE0,0 % MOVE ONE DISK FROM 'FROM' TO 'TO'.
% MOVE THE 'NM1' DISKS FROM 'VIA'
% VIA 'FROM' TO PEG 'TO'.
CALL MOVEV,4,IND(B.NM1),IND(B.VIA),IND(B.FROM),IND(B.TO)
RET
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 18¶
NORD-500 ASSEMBLER 2.5¶
WEDNESDAY 26 MARCH 1980 14:30:23 PAGE 2
MODULE HANOI¶
RECORD THE MOVEMENT OF ONE DISK¶
R4 CONTAINS A POINTER TO THE RECORD. #RCLC GIVES THE RECORD SIZE OF THE LAST RECORD DEFINITION.
MOVED¶
| Instruction | Description |
|---|---|
ENTD |
ENTER "DIRECT" SUBROUTINE. |
W4 + #RCLC |
INCREMENT RECORD POINTER. |
W MOVE B.N,W4.NO; W MOVE B.FROM,W4.FR; W MOVE B.TO,W4.TR
RETD % RETURN FROM "DIRECT" SUBROUTINE.
ENDROUTINE
MAIN PROGRAM AND DATA INITIALIZATION¶
STKSIZ: EQU 2000 % TOTAL (MAX) STACK DEMAND.
MSTK: STACK FIXED¶
| Name | Size | Description |
|---|---|---|
NN: |
W DATA 3 | NUMBER OF DISKS. |
NFROM: |
W DATA 1 | SOURCE PEG NO. |
NVIA: |
W DATA 2 | TEMPORARY PEG NO. |
NTO: |
W DATA 3 | DESTINATION PEG NO. |
ENDSTACK
INITIALIZE MAIN PROGRAM¶
WITH LOCAL DATA AREA BEGINNING AT MSTK, STACKDEMAND IN MAIN PROGRAM IS #SCLC, AND TOTAL STACKDEMAND STKSIZ. THE RECORD AREA IS LOCATED AFTER THE STACK AREA.
BEGIN¶
BEG: INIT MSTK,#SCLC,STKSIZ
W4 := ADDR(MSTK); W4 + STKSIZ-#RCLC
CALL SUBROUTINE TO DO THE MOVING¶
THE FOUR PARAMETERS ARE PASSED WITH "CALL BY VALUE" TYPE TRANSFER.
CALL MOVEV,4,IND(B.NN),IND(B.NFROM),IND(B.NVIA),IND(B.NTO)
RET % "RETURN" FROM MAIN PROG., I.E. STOP.
ENDMODULE
NO-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 19¶
NORD-500 ASSEMBLER 2.5¶
WEDNESDAY 26 MARCH 1980 14:30:25 PAGE 3
SYMBOL TABLE¶
GLOBAL SYMBOLS¶
| Symbol | Attributes | Address |
|---|---|---|
| BEG | W P M | 0000000105 |
| FR | W A | 0000000004 |
| MOVEV | W P | 0000000000 |
| MSTK | W D | 0000000000 |
| MFROM | W A | 0000000050 |
| NN | W A | 0000000024 |
| NO | W A | 0000000000 |
| NTO | W A | 0000000040 |
| NVIA | W A | 0000000034 |
| STKSIZ | W A | 0000003720 |
| TR | W A | 0000000010 |
NORD-500 ASSEMBLER 2.5 WEDNESDAY 26 MARCH 1980 14:30:25 PAGE 4
NO ERRORS DETECTED
ND-60.113.02
Page 20¶
I'm sorry, the image does not contain any text content. If you have another page or document you'd like converted, feel free to share it!
Page 21¶
THE ASSEMBLY LANGUAGE¶
In order to describe the syntax of the assembly language, we will use a meta language (i.e., a language to describe another language). The rules of this meta language are as follows:
- A meta variable is a sequence of letters, digits, and hyphens.
- A terminal symbol is represented as a string of characters enclosed within single or double quotes.
- Alternatives are separated by a slash /.
- Optional items are surrounded by brackets [ ].
- Parentheses ( ) can be used to group together constructs.
- A dollar sign $ before a construct means repetition.
- A decimal number immediately preceding/following a dollar sign $ specifies the minimum/maximum number of occurrences of the repeated construct.
Some basic constructs that are used in this manual are defined below:
- letter = "A" / "B" / ... / "Y" / "Z";
- digit = "0" / "1" / ... / "8" / "9";
- decimal number = 1 $ digit;
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 22¶
2.1 SOURCE PROGRAM FORMAT¶
- The ASCII character set is used to represent source programs.
- All characters in the interval of 0-37B are ignored, except for form feed (14B), carriage return (15B), and end-of-file (27B).
- Lower case letters are converted to upper case.
- A percent sign (%), not occurring inside a string constant, means that the rest of the line is a comment.
- Blank lines are treated as comment lines.
- An ampersand &, not occurring inside a string constant, means that the current statement continues on the next line. You may only have blanks and comments after the ampersand on the current line. Ampersands may occur between basic elements, but not within them.
- A statement is terminated by a semicolon (;) or carriage return.
- Empty statements are permitted.
There are three types of "orders" (statements) you may give to the assembler:
Instructions (for example, W ADD2 OP1, OP2)
Instructions are translated into machine language instructions for placement in the user's program memory.
Directives (for example, MODULE)
Directives specify attributes of the generated NRF (such as naming the main entry point), allocate data storage, and preset constant data.
Commands (for example, $LIST)
Commands control the processing of the program text through conditional assembly, macro definition, listing options, and selection of program statements for assembly.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 23¶
2.2 BASIC ELEMENTS¶
The basic elements which make up a source program are: identifiers, string constants, integer constants, real constants, and file names.
IDENTIFIER¶
An identifier may consist of letters, digits, number signs (#) and underscores (_). The first character must be a letter, question mark (?) or number sign. Two underscore characters may not be placed side by side. The underscore character is significant in the identifier. If an identifier starts with a question mark it is called invisible and is never listed in the symbol table dump. This feature is intended for use with generated symbols in macro calls. An identifier may be of any length, but only the first 16 characters are significant. The word "symbo," is synonymous with identifier. For a list of reserved symbols refer to Appendix C.
STRING CONSTANT¶
A string constant consists of a sequence of characters enclosed with single quotes. If a single quote is to be included in the string it must be written twice. The maximum length of a string constant is 80 characters.
INTEGER CONSTANT¶
An integer constant may be one of four forms: binary, octal, decimal, and hexadecimal. It consists of a sequence of digits, followed by a radix specifier, optionally followed by an exponent. The default radix is decimal. The radix specifiers are; X = binary, B = octal, D = decimal (default), and H = hexadecimal. The exponent is always interpreted as a decimal number. As an example: 15B3 is the same as 15000B or 1AH2. In order to avoid conflicts with identifiers, a hexadecimal constant must always start with a decimal digit i.e., the constant FF16 must be written 0FFH. An integer constant is represented internally as a 32-bit 2's complement number.
REAL CONSTANT¶
A real constant must contain a decimal point which must not be the first character. An exponent may be specified, preceded by the letter E. A real constant is represented internally in the NORD-500 double precision floating point format (sign bit, 9-bit exponent, 54 (+1) -bit mantissa).
Page 24¶
FILE NAME¶
A file name is a string of any characters. It is terminated by a space, comma, or carriage-return. No syntax check of file names is performed by the assembler. File names are used only in commands.
SYNTAX OF BASIC ELEMENTS:¶
| Element | Syntax |
|---|---|
| identifier | id-part-1 $ {break-character id-part-2} ; |
| id-part-1 | letter / "#" / "?" ; |
| id-part-2 | letter / digit / "#" ; |
| break-character | "_" ; |
| string-constant | '' / '' $ { |
| integer-constant | binary-constant / octal-constant / decimal-constant / hex-constant ; |
| binary-constant | 1$ binary-digit "X" {exponent;} ; |
| octal-constant | 1$ octal-digit "B" [exponent] ; |
| decimal-constant | 1$ digit ["D" {exponent}] ; |
| hex-constant | digit $ hex-digit "H" [exponent] ; |
| binary-digit | "0" / "1" ; |
| octal-digit | "0" / "1" / ... "6" / "7" ; |
| hex-digit | digit / "A" / "B" / "C" / "D" / "E" / "F" ; |
| exponent | decimal-number ; |
| real-constant | 1$ digit "." $ digit ["E" ["+" / "-"] exponent ] ; |
| file-name | 1$ { |
ND–60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 25¶
2.3 INSTRUCTIONS¶
This section describes the assembly format for NORD-500 instruction codes and operand specifiers. Please refer to the NORD-500 CPU Reference Manual for a complete description of instruction codes (octal value and assembly notation), addressing modes, address codes and operand specifiers. Refer also to Appendixes F, G, H and I. The assembly format for an instruction is:
[label] instruction code {operand specifiers}.
Each part is described in the following sections.
2.3.1 Labels¶
A label is a definition of a symbol's address. The optional label consists of an identifier followed by a colon. An instruction may have more than one label. Labels are also allowed on empty statements (i.e., the label is immediately followed by end-of-line or semicolon). Labels on instruction lines are assigned the current value of the program location counter. (See Section 2.5 on DIRECTIVES, STACK and RECORD.)
Page 26¶
2.3.2 Instruction Codes¶
The instruction code name is the main part of the instruction code. The instruction code name is a string of characters identifying the operation to be performed. The instruction code names are not reserved symbols in the assembler. If the instruction code name does not end with a special character (=, :, +, -, *, or /) it must be terminated by at least one space.
Many instruction codes start with a data type specifier. These are:
| Specifier | Meaning |
|---|---|
| BI | Bit |
| BY | Byte (8 bits) |
| H | Half-word (16 bits) |
| W | Word (32-bit integer) |
| F | Single precision real (32-bit floating point) |
| D | Double precision real (64-bit floating point) |
If the instruction uses one of the integer or floating point accumulators as a destination and/or source operand, the register number is specified following the data type specifier (e.g., W1 for integer accumulator one).
Spaces are allowed following the data type specifier and the register number. For the IF and GO operations, spaces are allowed before and after "cond". The following are examples of legal operation codes:
BY 1 COMP BY 1COMP
BY1 COMP BY1COMP
W SUB2 WSUB2
IF = GO IF = GO
Page 27¶
2.3.3 Operand Specifiers¶
The instruction code is followed by a list of zero or more operand specifiers, separated by commas. Operand specifiers are divided into two main categories: direct operands and general operands. Direct operands are operands found in the bytes immediately following the instruction code or the previous operand specifier. General operands are operands accessed via an address code.
2.3.3.1 Direct Operands¶
A direct operand is an absolute address of program or data; or a displacement, which applies to program addresses only.
Direct Absolute Addressing
A direct absolute addressing operand is always assembled as a 32-bit word. Examples of direct absolute addressing operands are the address in CALL (but not CALLIG) and the address of the stack in ENTRM. The former is a program address, the latter a data address.
Displacement Addressing
Displacements are used in the LOOP and GO instructions to address the destination. A displacement is stored as a word, half-word, or byte depending upon its magnitude. To force the displacement to be stored in a particular format, the following length specifiers can be used:
| Specifier | Description |
|---|---|
| :B | Store operand as a byte (8 bits) |
| :H | Store operand as a half-word (16 bits) |
| :W | Store operand as a word (32 bits) |
:B and :H are legal for all GO and LOOP instructions while :W is legal only for GO (not for IF cond GO).
If the assembler is unable to select the correct storage format for a displacement, :B is selected. If this is not large enough, an error diagnostic results in pass two and the programmer is responsible for adding the correct length specifier. Example of legal GO instructions are:
GO LABX
GO LABX:W
GO LABX:B
IF = GO LABZ:H
ND-60.113.02
Scanned by Jonny Oddone for Sintran Data © 2011
Page 28¶
2.3.3.2 General Operands¶
The general operand is the most common operand type. It is used when accessing constants, registers, and data memory. The NORD-500 has 10 different addressing modes and 2 operand specifier prefixes.
In most cases the assembler selects the optimal storage format for constants and displacements in general operands. If, however, you want to force the storage format to a particular length, the following data part length specifiers are available:
- :S Short (6 bits)
- :B Byte (8 bits)
- :H Half-word (16 bits)
- :W Word (32 bits)
- :F Single precision real (32-bit floating point)
- :D Double precision real (64-bit floating point)
Note that no type conversion of values is performed at assembly time. This means that an integer constant cannot be converted to a real constant by appending any of the :F or :D modifiers and vice versa.
The addressing modes and address codes are described in more detail in the "NORD-500 CPU Reference Manual". Otherwise, refer to Appendix F and G. All possible addressing modes, followed by a short description, are listed here. The following notation is used:
- constant: Integer or real constant
- disp: Displacement (absolute value)
- dlabel: A data label
- plabel: A program label
- ADDR(label): An assembler notation for converting the value of a label to a constant.
| Rn | Register number |
|---|---|
| B1 | B1 |
| BY1 | BY2 |
| H1 | H2 |
| W1 | W2 |
| F1 | F2 |
| D1 | D2 |
| R1 | R2 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 29¶
Local Addressing¶
| Addressing Mode | Description |
|---|---|
| B.disp | Assembler selected format |
| B.disp:S | Forced short displacement |
| B.disp:B | Forced byte displacement |
| B.disp:H | Forced half-word displacement |
| B.disp:W | Forced word displacement |
Local, Post Indexed Addressing¶
| Addressing Mode | Description |
|---|---|
| B.disp(Wn) | Assembler selected displacement format |
| B.disp:B(Wn) | Forced byte displacement |
| B.disp:H(Wn) | Forced half-word displacement |
| B.disp:W(Wn) | Forced word displacement |
Local Indirect Addressing¶
| Addressing Mode | Description |
|---|---|
| IND(B.disp) | Assembler selected displacement format |
| IND(B.disp:B) | Forced byte displacement |
| IND(B.disp:H) | Forced half-word displacement |
| IND(B.disp:W) | Forced word displacement |
Local Indirect, Post Indexed Addressing¶
| Addressing Mode | Description |
|---|---|
| IND(B.disp)(Wn) | Assembler selected displacement format |
| IND(B.disp:B)(Wn) | Forced byte displacement |
| IND(B.disp:H)(Wn) | Forced half-word displacement |
| IND(B.disp:W)(Wn) | Forced word displacement |
Record Addressing¶
| Addressing Mode | Description |
|---|---|
| R.disp | Assembler selected displacement format |
| R.disp:S | Forced short displacement |
| R.disp:B | Forced byte displacement |
| R.disp:H | Forced half-word displacement |
| R.disp:W | Forced word displacement |
Pre-Indexed Addressing¶
| Addressing Mode | Description |
|---|---|
| Rn.disp | Assembler selected displacement format |
| Rn.disp:B | Forced byte displacement |
| Rn.disp:H | Forced half-word displacement |
| Rn.disp:W | Forced word displacement |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 30¶
Absolute Addressing¶
| dlabel | Absolute address (always 4 bytes) |
|---|---|
| dlabel:W | Absolute address (always 4 bytes) |
Absolute, Post Indexed Addressing¶
| dlabel(Wn) | Absolute address (always 4 bytes) |
|---|---|
| dlabel:W(Wn) | Absolute address (always 4 bytes) |
Constant Operand¶
| constant | Assembler selected constant format |
|---|---|
| constant:S | Forced short constant |
| constant:B | Forced byte constant |
| constant:H | Forced half-word constant |
| constant:W | Forced word constant |
| constant:F | Forced real constant |
| constant:D | Forced double real constant |
Address¶
| ADDR (dlabel) | The address of a data memory location |
|---|---|
| ADDR (dlabel):W | The address of a data memory location |
| ADDR (plabel) | The address of a program memory location |
| ADDR (plabel):W | The address of a program memory location |
Register Addressing¶
Rn
Register as operand
Bin, BYn, Hn, Wn, Fn, and Dn.
Note: the register symbol used must be of the correct type.
For Example:
BY WCONV BY2, W4 is correct, while BY WCONV W2, W4 is illegal.
When used as an index register (pre-indexing or post-indexing) only W is legal. R1, ... R4 is legal in all positions. The register names are reserved symbols.
Descriptor Addressing¶
DESC (operand) (Rn)
The operand can be any general operand, except constant, register, descriptor, and alternative area.
Alternative Area¶
ALT (operand)
The operand can be any general operand, except alternative area, register, and constant.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 31¶
2.4 EXPRESSIONS¶
Expressions are made up of operators and operands. The operator conducts the action which is to be performed upon the operands. An operand can have one of the following data types:
- I: Integer (32 bits, 2's complement number)
- R: Real (64 bits, NORD-500 double precision)
- S: String (character string, maximum 80 characters)
2.4.1 Operators and Operand Data Types¶
The available operators, in order of increasing priority, are listed below:
| Priority | Operator | Operand Data Type | Description |
|---|---|---|---|
| 1 | OR | I | Logical or |
| 1 | XOR | I | Logical exclusive or |
| 2 | AND | I | Logical and |
| 3 | NOT | I | Logical negation (1's complement) |
| 4 | < | I, S | Less than |
| 4 | <= | I, S | Less than or equal to |
| 4 | = | I, R, S | Equal to |
| 4 | >< | I, R, S | Not equal to |
| 4 | >= | I, S | Greater than or equal to |
| 4 | > | I, S | Greater than |
| 5 | + | I | Addition |
| 5 | - | I | Subtraction |
| 6 | * | I | Multiplication |
| 6 | / | I | Division |
| 6 | MOD | I | Modulo |
| 6 | SHIFT | I | Shift |
| 7 | Unary + | I, R | Unary plus |
| 7 | Unary - | I, R | Unary minus |
In all cases where an integer and/or real operand is required, a string constant of length 0-4 will be converted to an integer where the characters are represented by their internal binary value, e.g., A = 10₁₆. A string constant of length 5-8 will be converted to a real value in the same manner.
Page 32¶
Integer Value Attributes¶
In addition, an integer value can have one of the three following attributes:
A Absolute
P Program address
D Data address
No binary operator may have a program address on one side and a data address on the other side of it. The following table shows which combinations of operands are possible and what type the result has. Blank indicates that the combination is illegal, while a horizontal line indicates a non-existent combination. The slash (/) means operated on.
| Operator | A/A | A/P,D | P,D/A | P,D/P,D |
|---|---|---|---|---|
| OR | A | |||
| XOR | A | |||
| AND | A | |||
| NOT | A | - | - | |
| < | A | A | ||
| <= | A | A | ||
| = | A | A | ||
| >< | A | A | ||
| >= | A | A | ||
| > | A | A | ||
| + | A | P,D | P,D | |
| - | A | P,D | A | |
| * | A | |||
| / | A | |||
| MOD | A | |||
| SHIFT | A | |||
| Unary + | A | P,D | - | - |
| Unary - | A | - | - | - |
In general, address arithmetic is allowed only for data addresses. If imported symbols are used in an arithmetic expression, only one symbol may occur in each expression, i.e., the difference between two imported symbols is not legal. With program addresses, arithmetic is allowed only with the special symbols defined above.
Note that address arithmetic, as program addresses, is permitted with the special symbols defined above. For example, GO LABX + 3 is illegal while GO #PCLC + 3 is legal. Because almost all NORD-500 instructions have variable length it is strongly advised not to use constructs such as #PCLC + 3.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 33¶
2.4.2 Intrinsic Constants¶
Intrinsic constants are constants that are pre-defined or system-supplied. The following five intrinsic constant names may be used to refer to the locations in the stack entry header.
| Name | Value | Description |
|---|---|---|
| PREVB | 0 | Saved B-register |
| RETA | 4 | Saved return address |
| SP | 8 | Stack pointer |
| AUX | 12 | System cell |
| NARG | 16 | Number of arguments supplied in call |
The constant #ZEROP has a value of zero and is used as a program address.
The constant #ZEROD has a value of zero and is used as a data address.
MODULE EXTRA
.
.
SIZ: W DATA ELAB -- #ZEROP
.
.
ELAB: ENDMODULE
will place the size of the program part of the module in the data location SIZ.
Page 34¶
2.4.3 Intrinsic Functions¶
Intrinsic functions are functions that are pre-defined or system-supplied. A function can have arguments, enclosed within parentheses and separated by commas. This section describes the different intrinsic functions which are available to you.
These are the location counter symbols:
| Symbol | Description |
|---|---|
| #PCLC | Program location counter |
| #DCLC | Data location counter |
| #SCLC | Stack location counter |
| #RCLC | Record location counter |
These functions return the current value of the location counters. #SCLC is used when processing statements between STACK and ENDSTACK, and #RCLC when processing statements between RECORD and ENDRECORD. When used in the operand field of an instruction, a location counter symbol represents the address of the first byte of the instruction. When used in the operand field of an assembler directive (see Section 2.5), it represents the address of the first byte of the current data element. For example:
W MOVE ADDR 1(#PCLC), R1
W DATA 100, #DCLC + 4
W BLOCK 100
The first instruction loads the R1 register with the address of the instruction itself. The two following instructions define a descriptor with the described array immediately following it.
When #SCLC is used inside a STACK-ENDSTACK pair it represents the current stack displacement. When it is used outside a STACK-ENDSTACK pair it holds the size of the last stack block defined. This means that it can be used directly as the “stack demand” parameter in the entry point instructions. For example:
STACK
PAR1A: W BLOCK 1 % ADDRESS OF PARAMETER ONE
PAR2A: W BLOCK 1 % ADDRESS OF PARAMETER TWO
ENDSTACK
ROUTX: ENTS #SCLC % ENTER STACK
.
.
.
.
These statements define a stack block and insert the correct stack demand in the ENTS instruction.
Page 35¶
RCLC and SCLC¶
#RCLC is used in a similar way for records. #SCLC is initialized to 20 at the start of a new stack definition while #RCLC is initialized to zero at the start of a new record definition.
NCHR¶
The function #NCHR takes a string as its only argument and returns the length of the string. The length is returned as an absolute integer value. For example:
XSTR: SEQU 'STRING OF CHARACTERS'
BY DATA #NCHR(XSTR),XSTR
assembles a string preceded by its length.
NARG¶
The function #NARG, which takes no arguments, returns the number of arguments supplied in the call to the macro currently being expanded. If used outside a macro its value is zero.
DATE¶
To read the current date and time the function #DATE can be used. It is a function of no arguments and returns the current date and time in a double word as follows:
| Bits | Size | Description |
|---|---|---|
| 63-48 | 16 bits | Year |
| 47-40 | 8 bits | Month |
| 39-32 | 8 bits | Day |
| 31-24 | 8 bits | Hour |
| 23-16 | 8 bits | Minute |
| 15-8 | 8 bits | Second |
| 7-0 | 8 bits | Unused |
This function is useful in keeping track of different versions of a program.
LOG2¶
The function #LOG2, which takes an integer value as argument, returns the logarithm to base two of the argument. This function can be useful when used with the instructions ENTB, GETB and FREEB.
Scanned by Jonny Oddene for Sintran Data © 2011
Page 36¶
2.4.4 Expression Syntax¶
| Expression | Production |
|---|---|
expression |
lfact $ (("OR"; "XOR") lfact); |
lfact |
lneg $ ("AND" lneg); |
lneg |
[ "NOT" ] rel; |
rel |
sum relop sum; |
relop |
"=" / "><" / "<=" / "<" / ">=" / ">"; |
sum |
factor $ (("+" / "-") factor); |
factor |
primary $ (("*" / "/" / "MOD" / "SHIFT") primary); |
primary |
[ "+" / "-" ]"(" expression ")"identifier;string-constant; integer-constant; real-constant;iconstant; ifunction; |
iconstant |
"?PREVB"; "RETA" / "SP" / "AUX"; "NARG";"?ZEROP"; "?ZEROD"; |
ifunction |
"#NARG";"#NCHR" "(" expression ")"/"#PCLC"; "#DCLC" / "#SCLC"; "#RCLC";"#DATE";"#LOG2" "(" expression ")"; |
Page 37¶
2.5 DIRECTIVES¶
Directives specify attributes of the generated NRF (NORD Relocatable Format), allocate data storage, and preset constant data. See Appendix A for a summary of directives.
This section describes all available directives. The format of a directive is similar to that of an instruction.
[label] directive-name [operands]
[label] data-type, directive-name [operands]
The label, if present, is assigned the value of the current program or data location counter depending on which directive follows it. If a directive has several labels, all but the last are always assigned the value of the current program location counter.
The data type specifiers used for directives are the same as those used for instructions. The directive names are not reserved symbols.
The operands, if any, are separated by commas and have different formats for each individual directive.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 38¶
2.5.1 Declaration and Definition Directives¶
2.5.1.1 MODULE and ENDMODULE¶
A NORD-500 assembly program consists of one or more modules which are delimited by MODULE and ENDMODULE. The format is:
MODULE [module-name [ ',' priority [ ',' language-code ] ] ]
statements
ENDMODULE [module-name]
The module-name, which may be any legal identifier, is included in the page heading of the assembly listing. If specified, the name in the ENDMODULE directive must correspond to that in the matching MODULE directive. Except for these two functions the module-name is ignored by the assembler.
If specified, the priority must be an integer constant in the range 0-255. This value is output to the object code as the first of the two data bytes following the BEG control byte. The default value is zero.
The third parameter, language-code, is output as the second of the two data bytes following the BEG control byte. It must be an integer constant in the range 0-255. Values are:
0, assembly code;
1, FORTRAN;
2, PLANC.
The default value is zero.
2.5.1.2 IMPORT-P and IMPORT-D¶
These two directives are used to make external data accessible within the current module. The format is:
IMPORT-P identifier $ [ ',' identifier ]
IMPORT-D identifier $ [ ',' identifier ]
An identifier which is mentioned in an IMPORT directive must not be defined in the current module. IMPORT-P is used to import program addresses (entry points) while IMPORT-D is used to import data addresses.
Page 39¶
2.5.1.3 EXPORT¶
This directive is used to make addresses defined in the current module accessible to other modules. The format is:
EXPORT identifier $ ("," identifier)
An identifier that is mentioned in an EXPORT directive must be defined in the current module. Both program addresses and data addresses can be EXPORTED.
2.5.1.4 MAIN¶
The MAIN directive, which has the format:
MAIN identifier
specifies the main entry point of a program. The identifier must be defined as a program address in the current module. The identifier need not be EXPORTED. Only one main entry point can be specified.
2.5.1.5 LIB¶
The LIB directive has the format:
LIB identifier $ ("," identifier)
The current module will be loaded only if one or more of the identifiers mentioned in a LIB directive is undefined (in the loader table). Otherwise the entire module is skipped. Both program addresses and data addresses may be used as library symbols.
Page 40¶
2.5.1.6 ALIAS¶
The ALIAS directive has the form:
identifier ';' ALIAS string-valued-expression
This directive defines the external representation of the symbol, i.e., the string which is output to the object stream. The use of this directive is to generate names that are syntactically illegal in the NORD-500 assembly language but are used by other language processors (e.g., operator names in PLANC). It can also be used to generate names which the user of other language processors is unable to duplicate. For example:
ROUTINE CLOSE
CLOSE: ALIAS '+_+CLOSE'
CLOSE: ENTD
.
.
.
2.5.1.7 ROUTINE and ENDROUTINE¶
A subroutine starts with a ROUTINE directive and ends with an ENDROUTINE directive. The ROUTINE directive is followed by a list of entry points. The entry points will be global labels while all other symbols defined within a ROUTINE—ENDROUTINE pair will be local to the subroutine. A local symbol cannot have the same name as a global symbol. The ROUTINE and ENDROUTINE directives do not generate any code. The ROUTINE and ENDROUTINE directives may not be nested. For an example of a subroutine refer to Appendix E.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 41¶
2.5.1.8 STACK and ENDSTACK¶
These directives are used to declare data in the form of a stack entry. Data declared this way may be addressed through the B-register. A stack declaration can have one of the two forms:
[label] STACK FIXED
.
.
.
data allocation directives
.
.
.
ENDSTACK
or
STACK
.
.
.
data allocation directives
.
.
.
ENDSTACK
The first form is used for data allocated statically in the data memory, while the second form is used for data allocated dynamically on a stack. The first form allows initialization of data, while the second form does not.
The optional label is assigned the address of the first byte and is used when referring to the stack block (e.g., in the ENTM and ENTF instructions).
A label occurring inside the stack definition is assigned an absolute value corresponding to the displacement from the start of the stack block currently being defined. This displacement is initialized to 20, leaving 20 bytes (5 words) for the stack header.
The first five words constitute the stack header. These words may be accessed by the following standard names.
| PREVB | Saved B-register |
| RETA | Saved return address |
| SP | Stack pointer (next B) |
| AUX | System cell |
| NARG | Number of arguments supplied in call |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 42¶
Technical Content¶
If FIXED is specified, these words are initialized to zero at load time.
The stack location counter (address relative to the start of the current stack block) can be referenced as #SCLC. When referenced outside a stack definition #SCLC holds the size of the last stack block defined, thus it can be used directly as the "stack demand" argument in, for example, ENTS.
An example of a routine using dynamically allocated data can be found in Example 2. The following is an example of a routine using statically allocated local variables:
Routine CRLFX¶
| Routine Code |
|---|
| CRLSS: STACK FIXED |
| LINENO: W DATA 1 |
| ENDSTACK |
| CRLFX: |
| ENTFN ENTF CRLSS, 0 |
| BY COMP2 B.LINENO, 72; IF < GO CR1 |
| CALLG NEWPAGE, 0; W SET1 B.LINENO; RET |
| CR1: |
| CALLG NEWLINE, 0; W INCR B.LINENO; RET |
| ENDROUTINE |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 43¶
2.5.1.9 RECORD and ENDRECORD¶
RECORD and ENDRECORD are similar to STACK and ENDSTACK except that no stack header is allocated. Therefore, the displacement of the first variable is zero. Data declared with RECORD and ENDRECORD may be accessed through the R-register. The symbol #RCLC is called the record location counter and is used in the same way as #SCLC is used with STACK and ENDSTACK.
A record definition may occur inside a stack definition and vice versa. Stack and record definitions may not, however, be nested.
Example 1, Fixed Record:¶
RLOC: RECORD FIXED
RX1: W DATA 1, 2
RX2: DESC 10, LXX1
ENDRECORD
R: = ADDR(RLOC)
W1: = R.RX1
W2: = DESC!(R.RX2)!(R1)
Example 2, Symbol Table Element:¶
RECORD
INAME: W BLOCK 1
ITYPE: W BLOCK 1
ISCOPE: W BLOCK 1
IMISC: W BLOCK 1
ENDRECORD
XLOOP: R: = B.ELEMENT
W COMP2 R.INAME,B.SNAME
IF = GO FOUND
W ADD2 B.ELEMENT,#RCLC
GO XLOOP
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 44¶
2.5.1.10 EQU and SEQU¶
These directives are used to assign a value to an identifier. They have the form:
identifier ":=" EQU expression
identifier ":=" SEQU string-valued-expression
For both directives the expression in the argument field must be evaluatable in pass one.
EQU assigns the value in the argument field to the identifier in the label field. The identifier gets the same type as the expression value.
SEQU is similar to EQU except that it always performs a string assignment, while EQU converts a string into an integer constant before the assignment is performed.
Identifiers defined with EQU or SEQU cannot be redefined.
Examples:
| Identifier | Directive | Value | Description |
|---|---|---|---|
| INT1: | EQU 101B | % INT1 GETS VALUE 101B | |
| INT2: | EQU 'A' | % INT2 GETS VALUE 101B | |
| PI: | EQU 3.1415926536 | % DOUBLE PRECISION REAL | |
| STR1: | SEQU 'A' | % STRING VALUE: A |
Page 45¶
2.5.2 Data Allocation Directives¶
2.5.2.1 BLOCK¶
The BLOCK directive, which has the format:
[label:] data-type BLOCK expression
allocates a block of data memory. The expression in the argument field specifies the size of the block in units of the data-type. All data-types are valid. The block is initialized to all zeros at load time.
If this directive is used in stack or record definition without the FIXED attribute, no memory is allocated, but the #SCLC or #RCLC is updated to reflect the amount of space needed at runtime.
The expression in the argument field must result in an absolute value and it must be evaluatable in pass one.
2.5.2.2 DATA and PROG¶
These directives are used to assemble data constants in the data memory (DATA) or the program memory (PROG). The format is:
[label:] data-type DATA expression $ (, "
All data types are valid. However, two special cases arise: BI DATA (or BI PROG) and BY DATA (or BY PROG). BY DATA is special only when an argument is a string valued expression.
BI DATA allocates memory in units of bytes and inserts the specified bits starting with the most significant bit (bit 7). Unused bits are set to zero. For example:
BI DATA 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1
causes the two bytes 311B and 240B to be assembled in the data memory.
When BY DATA operates on an argument which represents a string, this string is not converted to an integer value but assembled byte for byte into the memory.
For Example:
| BY DATA 'NORD-500 ASSEMBLER' | | BY DATA 15B, 12B, 15B, 12B, '$' % CR-LF, CR-LF, $ |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 46¶
2.5.2.3 DESC¶
The format of the DESC directive, which is used to allocate a two word array descriptor, is:
[label] DESC [expression "," expression]
The first and second expression corresponds to the first and second word of the NORD-500 hardware array descriptor. If the expressions are omitted, two words, which are initialized to zero at load time, are allocated in the data memory.
If this directive is used in a stack or record definition without the FIXED attribute, the two expressions must not be specified.
When used without arguments, the DESC directive is equivalent to W BLOCK 2 or W DATA 0, 0 but may be preferred if the allocated space is to be used for descriptor storage.
2.5.2.4 ARRAY and STRING¶
These directives, which have the format:
[label] data-type ARRAY expression
[label] STRING expression
allocate a block of data memory immediately preceded by a descriptor. The ARRAY directive can be described in terms of the DATA and BLOCK directives as follows:
[label] W DATA expression, #DCLC + 4
data-type BLOCK expression
All data types are valid. The block is initialized to zero at load time.
The directive STRING is equivalent to BY ARRAY. This form may, however, be preferred when used with the NORD-500 string instructions.
The expression in the argument field must evaluate to an absolute value and be evaluatable in pass one.
Page 47¶
2.5.2.5 ARRAYDATA and STRINGDATA¶
These directives, which have the format:
[label] data-type ARRAYDATA expression $ ("," expression)
[label] STRINGDATA expression $ ("," expression)
are used to assemble constants in the form of arrays into the data memory. The data constants are assembled in the same way as for DATA. The block of constants is, however, preceded by a descriptor with the correct length information filled in. All data types are valid.
The directive STRINGDATA is equivalent to BY ARRAYDATA.
Example:
W ARRAYDATA 1, 2, 3, 4, 5, 6
is equivalent to:
DESC 6. #DCLC = 4
W DATA 1, 2, 3, 4, 5, 6
2.5.3 Location Counter Control Directives¶
2.5.3.1 ORG-P and ORG-D¶
These directives set absolute origin in the program memory (ORG-P) or the data memory (ORG-D). They have the form:
[label] ORG-P [expression]
[label] ORG-D [expression]
The expression in the argument field must evaluate to an absolute value. It must be evaluatable in pass one. If present, the label in the label field is assigned the same value as the expression in the argument field.
If no argument is given, then relative assembly is resumed at the last relative address before absolute mode was entered.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 48¶
2.5.3.2 BOUND-P and BOUND-D¶
The format of these directives is:
label |
BOUND-P expression |
|---|---|
label |
BOUND-D expression |
The expression in the argument field must result in an absolute value which is a power of two. The program location counter (#PCLC) for BOUND-P, or the data location counter (#DCLC) for BOUND-D is set to the next multiple of the value in the argument field. If the location counter already has a value which is a multiple of the value in the argument field, no action is taken.
These directives operate only on the assembly location counters. Therefore, if they are not used together with the ORG directive, the module must be loaded starting at a multiple of the maximum boundary size used in the module in order to ensure correct operation.
2.5.4 Miscellaneous Directive¶
MESSAGE¶
The specified message will be output by the loader when the object file is loaded. Message has the form:
MESSAGE expression
The expression in the argument field must evaluate to an absolute value and be evaluatable in pass one.
Page 49¶
2.6 COMMANDS¶
A command consists of a dollar sign ($) followed by a command name. Command names are not reserved identifiers. Command parameters have different formats and are described for each particular command. See Appendix B for a summary of commands.
2.6.1 Listing Control Commands¶
2.6.1.1 $LIST and $NOLIST¶
The listing options which can be specified interactively with the LIST and NO-LIST commands (refer to Section 3.5) can be specified in the text of an assembly program through the $LIST and $NOLIST commands. Refer to Section 3.5 for a description of the argument format and each individual listing option.
2.6.1.2 $TITLE¶
The title command is used to define a title string which will be included in the page headings of the assembly listing. The title is specified as a string constant following the $TITLE command.
For Example:
$TITLE 'BASIC I/O ROUTINES'
causes the specified string to be included in the second line of the page heading, after the module name (if any).
Page 50¶
2.6.1.3 $EJECT and Form Feed¶
A page eject in the assembly listing can be obtained in several ways:
- After a specified number of lines have been printed on the same page, the assembler automatically performs a page eject. The page size can be specified with the LINES command (see Section 3.3).
- If a source line contains one or more form feeds (ASCII 14B) a page eject is issued before this line is listed. If used within a macro definition, a form feed character causes a page eject. A page eject is not performed when the macro is expanded.
- The command $EJECT, which has no arguments, causes a page eject to be issued. Used within a macro definition the $EJECT command is ignored, but the page eject is performed when the macro is expanded.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 51¶
2.6.2 Conditional Assembly Commands¶
2.6.2.1 $IF, $ELSIF, $ELSE and $ENDIF¶
Conditional assembly commands give you the possibility to conditionally include or ignore blocks of source code in the assembly process.
The general form of a conditional block is:
$IF EXPRESSION % START OF CONDITIONAL BLOCK
$ELSIF EXPRESSION % ZERO OR MORE $ELSIF COMMANDS
$ELSE % OPTIONAL $ELSE COMMAND
$ENDIF % END OF CONDITIONAL BLOCK
The expression, which is the argument of the $IF and $ELSIF command, is evaluated. If the resulting value is nonzero (TRUE), the source code between the command and the next $ELSIF, $ELSE or $ENDIF command is assembled. If the resulting value is zero (FALSE) the source code is ignored.
The source code included between a $IF command and its required associated $ENDIF command is defined as a conditional block. A conditional block may contain any number (including zero) of $ELSIF commands, but only one $ELSE command. No $ELSIF command may appear between a $ELSE command and its matching $ENDIF command. Only the source code following the first satisfied condition in a conditional block is assembled.
Conditional blocks may be nested to any desired level.
Page 52¶
2.6.3 Source File Library Commands¶
2.6.3.1 $INCLUDE and $SECTION¶
The format of the $INCLUDE command is:
$INCLUDE file-name [',' section-name]
where section-name is syntactically equivalent to file-name. If only the file-name is present, the text of the specified file is included in the source text.
If the section-name is present, only the named section, located on the specified file, is included. Sections are defined by means of the $SECTION command which has the format:
$SECTION section-name
The text which comprises the section starts with the statement following the $SECTION and ends with the next $SECTION or $EOF command (or at end-of-file). If the specified section-name does not exist on the specified file, no text is included.
If the containing section definitions is included as a whole (no section-name specified in the $INCLUDE command), the section definitions are ignored.
Page 53¶
2.6.4 Macro Definitions and Macro Calls¶
2.6.4.1 $MACRO¶
The first statement of a macro definition must be a $MACRO command. The $MACRO command is of the form:
$MACRO macro-name [“[” [formal-parameters] “]”]
where macro-name is the name of the macro. The macro-name is any legal identifier. The name cannot be used as a label anywhere else in the program. Macros are not local to modules but exist throughout the entire file on which they are defined. Formal-parameters are a list of identifiers separated by commas. These identifiers can be used elsewhere in the program without conflicts of definition. When a formal-parameter is referenced in the macro body it must be enclosed within double quotes (e.g., “PAR1”).
2.6.4.2 $ENDMACRO¶
The final statement of every macro definition must be a $ENDMACRO command of the form:
$ENDMACRO [macro-name]
where macro-name is an optional argument and is the name of the macro being terminated by the statement. If specified, the name in the $ENDMACRO command must correspond to that in the matching $MACRO command. Specification of the macro-name in the $ENDMACRO command permits the assembler to detect missing $ENDMACRO commands or improperly nested macro definitions.
An example of a macro definition is shown below:
$MACRO CHECK (GVX, LABX)
W1: = IND (B.GVARIDX)
W COMP2 IND (B.GVAR) (R1), "GVX"
IF >C GO "LABX"
$ENDMACRO CHECK
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 54¶
2.6.4.3 $EXITMACRO¶
In order to implement alternate exit points from a macro (particularly nested macros), the $EXITMACRO command is provided. $EXITMACRO terminates the current macro as though a $ENDMACRO command was encountered. $EXITMACRO bypasses the complication of conditional nesting and alternate paths. For example:
$MACRO XMK (NN, AA, BB)
$IF "NN" = 0 % START OF CONDITIONAL BLOCK
$EXITMACRO % EXIT DURING CONDITIONAL BLOCK
$ENDIF % END OF CONDITIONAL BLOCK
$ENDMACRO % NORMAL MACRO EXIT
In an assembly where NN = 0, the $EXITMACRO command terminates the macro expansion.
When macros are nested, $EXITMACRO causes an exit to the next higher level.
Page 55¶
2.6.4.4 Macro Calls¶
A macro must be defined prior to its first reference. A macro call may occur anywhere an instruction, directive, or command is legal. Macro calls are of the form:
macro-name ['(' [actual-parameters] ')']
where macro-name is the name of a macro defined in a preceding $MACRO command. The actual-parameters are a list of values, separated by commas, which replace the formal-parameters in the macro definition.
If an actual parameter contains a separating character (e.g., comma or right parenthesis) it can be enclosed within angle brackets < >.
For Example:
CHECK(<!ND (B.XDJ)>, XLABEL)
This call causes the general operand !ND (B.XDJ) to replace all occurrences of "GVX" in the macro CHECK (defined above).
An exclamation mark (!) can be used as an escape character. It is used primarily to pass an angle bracket as part of an actual parameter. To pass an exclamation mark write !!.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 56¶
2.6.4.5 Macro Nesting¶
Nested macro calls, where the expansion of one macro contains one or more macro calls, causes one set of angle brackets to be removed from an argument with each level of nesting.
Recursive macro calls are permitted. As an example, consider the following pair of macros which evaluate the factorial function (as a constant value):
$MACRO FACT(N)
XFACT("N", 1)
$ENDMACRO FACT
$MACRO XFACT(N,HOLD)
$IF "N" = 0
w DATA "HOLD"
$ELSE
XFACT("N" - 1, <!"N"!>("HOLD")>)
$ENDIF
$ENDMACRO XFACT
Note the use of parentheses and angle brackets in the recursive call on XFACT. The parentheses are necessary in order to obtain the correct value because the argument is passed as an expression, not as an evaluated value. The angle brackets must be used because the expression contains right parentheses. An exclamation mark in front of each right parenthesis is not sufficient because the argument ("HOLD") contains right parentheses.
If macro definitions are nested (that is, a macro definition is entirely contained within the definition of another macro) the inner macro is not defined as a callable macro until the outer macro has been called and expanded.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 57¶
2.6.4.6 Special Forms: #NARG, "LABEL" and "MNO"¶
If more arguments appear in the macro call than in the macro definition, the excess arguments are ignored. If fewer arguments appear in the macro call than in the macro definition, missing arguments are assumed to be null (consist of no characters).
The intrinsic function #NARG (see Section 2.4.3) can be used to test for the presence or absence of an argument.
If a label is placed in the label field of a macro call, this label is not defined before the call, but is passed as a special kind of argument. The label can be referenced by the special formal parameter name "LABEL" which expands to the label name followed by a colon (:). This enables the user to determine exactly where in the macro body the label definition is to take place.
For Example:
$MACRO BES (TYPE, SIZE)
"TYPE" BLOCK "SIZE"
"LABEL" BY BLOCK 0
$ENDMACRO BES
is one possible definition of the common macro BES (Block Ending Symbol). A typical call might be:
BLK1: BES {BY, 1031
To create unique symbols in a macro expansion the special form "MNO" (macro number) can be used. "MNO" expands to a five digit decimal number which is the serial number of the current macro call. To provide several unique symbols within the same macro "MNO" is concatenated with different strings. if the first character of the generated symbol is a question mark, the symbol will be invisible, i.e., not listed in the symbol table dump. Symbols generated in this way are not different from other symbols used in the assembler. They may be referenced outside the macro if desired. As an example of generated symbols consider:
$MACRO GOIFWRONG
W COMP2 B.EXPECTED, B.ACTUAL
IF = GO ?A"MNO"
W MOVE B.EXPECTED, FPAR1
W MOVE B.ACTUAL, FPAR2
GO ERRFATAL:H
?A"MNO"
$ENDMACRO
The second time this macro is called the label ?A00002 is generated.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 58¶
2.6.5 Miscellaneous Commands¶
2.6.5.1 $PACK and $ALIGN¶
These commands control the packing of data allocated in the data memory.
If $ALIGN is specified, half-word data is aligned on half word boundaries (0, 2, 4, ...) and word data is aligned on word boundaries (0, 4, 8, ...). Descriptors (e.g., in ARRAY and ARRAYDATA) are also aligned on word boundaries.
If $PACK is specified, no alignment is performed.
The default mode is $ALIGN.
2.6.5.2 $EOF¶
The $EOF command signals the end of the source file or end of included file (see $INCLUDE). The effect of this command is simulated when an end of file indication is received from the file system.
Page 59¶
ASSEMBLER OPERATING PROCEDURE¶
To start the assembler from SINTRAN III one types the following:
@N500-ASSEMBLER <source> <list> ... etc. | cr
NORD-500 ASSEMBLER 2.5, 19 November 1979
$
The command processor is now ready to accept commands. Whenever the command processor expects the operator to enter a command, it outputs a dollar sign ($). A command consists of a command name followed by zero or more parameters. Several commands, along with all required parameters, may be written on the same line.
The command name consists of one or more parts separated by hyphens ("-"). Each part of the command name may be abbreviated as long as the command can be distinguished from all other command names.
The standard editing characters are available while typing commands.
The collection of parameters is done in a standardized way as follows:
- Parameters are separated by either a comma or any number of spaces or a combination of commas and spaces.
- Parameters may be null in which case a default value is assigned.
- When a parameter is missing (as opposed to null) it is asked for, and the command processor expects you to supply the required parameter plus more parameters if you wish.
- When a parameter syntax error is detected, an error message is printed and the parameter is asked for.
- Excess parameters are ignored.
Commands can be given directly to the SINTRAN III command processor by preceding them with an @ sign. In this case commands to the local command processor following the SINTRAN III command are ignored.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 60¶
3.1 HELP <command name>¶
The HELP command lists available commands on the terminal. Only those commands that have <command name> as a subset are listed. If <command name> is null then all available commands are listed.
3.2 EXIT¶
The EXIT command returns control to the SINTRAN III command processor.
3.3 LINES <lines per page>¶
This command enables the user to specify the number of lines per page on the assembly listing.
3.4 ASSEMBLE <source file> <list file> <object file>¶
This command assembles the specified <source file> with listing on <list file> and object output to <object file>. If no list file is specified, no listing is produced, but error messages are printed on the terminal. If no object file is specified, no object output is produced. The default file types are: .SYMB, .LIST, and .NRF.
3.5 LIST <list directives>¶
NO-LIST <list directives>
These commands are used to set/reset various internal flags which control the format and extent of the assembly listing. A LIST command with an empty parameter will cause the listing mode to be set to its default (initial) value. A NO-LIST command with an empty parameter will cause all output, except error messages, to be suppressed.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 61¶
Legal List Directives¶
The following are legal list directives:
HELP <command name>¶
Lists available list directives on the terminal. Only those list directives that have <command name> as a subset are listed. If <command name> is null then all available list directives are listed.
GLOBAL-SYMBOLS¶
Controls the listing of the "global symbols" part of the symbol table. Global symbols are those symbols not defined within any ROUTINE - ENDROUTINE pair. Default is LIST.
LOCAL-SYMBOLS¶
Controls the listing of the "local symbols" part of the symbol table. A symbol is called local if it is defined within a ROUTINE - ENDROUTINE pair and is not mentioned as an entry point in a ROUTINE statement. Default is NO-LIST.
LOCATION-COUNTER¶
Controls the listing of the assembly location counter field. The location counter is listed as an eleven digit octal number. Default is LIST.
GENERATED-CODE¶
Controls the listing of the generated binary code. The generated code will be listed as several fields containing octal numbers. Default is NO-LIST.
MACRO-EXPANSIONS¶
Controls the listing of macro expansions. With this directive the macro expansions are listed out. Default is NO-LIST.
CROSS-REFERENCE-TABLE¶
Controls the generation of and printing of an alphabetically sorted cross-reference table at the end of the assembly. The cross-reference table consists of all the user defined symbols and for each of them a list of line numbers. The number of a line where the symbol is defined is followed by an asterisk (*). Default is NO-LIST.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 62¶
3.6 PRINT-MACRO <macro name> <output file>¶
This command prints the currently defined macros on the specified output file. Parameters are named P1, P2, etc. The default output file is the terminal and the default file type is .SYMB. If <macro name> is null, all macros are printed. Otherwise only the specified macro is printed.
3.7 TABLE-SIZES <size parameter>¶
This command enables the user to change the size of any of the tables allocated in the assembler's dynamic work area. If the new table size is accepted, the old size is printed on the terminal and the assembler is initialized.
The possible size parameters are listed below.
HELP <command name>
Lists available size parameters on the terminal. Only those size parameters that have <command name> as a subset are listed. If <command name> is null, then all available size parameters are listed.
MACRO-TABLE <macro table size>
Specifies the size of the macro table. This area is used for storing macro bodies and for the macro/include stack.
SOURCE-LINE-BUFFER <source line buffer size>
This command can be used to avoid the SOURCE LINE BUFFER TOO SMALL error message.
OBJECT-CODE-BUFFER <object code buffer size>
This command can be used to avoid the OBJECT CODE BUFFER TOO SMALL error message.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 63¶
4 ASSEMBLY LISTING FORMAT¶
The assembly listing consists of three parts for every module: the assembled program, the symbol table of the assembly and an alphabetically sorted cross-reference table. Every page of the listing starts with a page heading. A description of the format follows. Appendix E contains an example of the assembly listing format.
4.1 PAGE HEADING¶
The first four lines of a page constitute the page heading. Before the heading lines are printed, the listing device is advanced to a new page. If the listing device is the terminal, a blank line is printed instead of advancing it to the next page. The heading consists of the following fields:
- Assembler name and version number
- Current date and time
- Page number
- The name of the module currently being assembled followed by the title string if a title has been specified
- Two blank lines
Scanned by Jonny Oddene for Sintran Data © 2011
ND-60.113.02
Page 64¶
4.2 PROGRAM LISTING¶
The program listing consists of several fields on each line. If an instruction has more than one operand specifier or if several instructions are written on the same source line, then the generated code may require several lines on the listing. The following description assumes that all listing options are enabled. Refer to Section 3.5 for an explanation of the listing options.
-
Source line number
This field is blank if the line was not read from the source input file.
-
Current location counter
This field is blank if the operation does not change the location counter or if the line is a binary extension line, i.e., the location counter is only printed at the start of each instruction. The location counter is printed as an eleven digit octal number. It is preceded by a letter specifying which of the location counters is printed: P (Program location counter); D (Data location counter); S (Stack location counter); R (Record location counter).
-
Generated code
This field is divided into several subfields: operation code (8 or 16 bits), operand code number 1 (if ALT, 8 bits), prefix operand code number 2 (if DESC, 8 bits), operand code (if general operand, 8 bits) and address displacement (all types except S). If an imported quantity is referenced, it is printed in symbolic form plus the displacement.
- Source code
-
Error messages
If one or more errors are detected in a line, the error message(s) are output following the line in error. The error message is preceded by four asterisks ("****"), the name of the current source file, the last label encountered and the displacement (in lines) since the last label. At the end of the entire listing the following two lines are printed:
- Number of errors detected during the assembly
- CPU time used.
Scanned by Jonny Oddene for Sintran Data © 2011
Page 65¶
4.3 SYMBOL TABLE¶
When listing the symbol table, the title is set to "SYMBOL TABLE". The symbols are listed in alphabetical order. The fields are as follows:
- Symbol name (maximum 16 characters)
-
Symbol type. The types are:
Code Type 1 U = Undefined 2 W = Integer (Word), D = Double real, S = String 3 A = Absolute 4 P = Program address 5 D = Data address 6 M = Main entry point 7 I = Imported 8 E = Exported 9 L = Library symbol
- Symbol value. The value is given in the following formats, depending upon the data type:
- Integer: Eleven digit octal number
- Real: Two eleven digit octal numbers, separated by space
- String: A character string
- If the symbol has an alternative name (an ALIAS), this name is printed following the value.
4.4 CROSS-REFERENCE TABLE¶
When listing the cross-reference table the title is set to "CROSS-REFERENCE TABLE". The cross-reference table is an alphabetically sorted list of all symbols used in the program. Each symbol is followed by a list of line numbers. The line numbers of the lines where the symbol is defined are followed by an asterisk (*). If a symbol name is used more than once (as local symbol), a separate list of line numbers is given for each version of the symbol.
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 66¶
I'm sorry, but I can't convert the content of this image to text.
Page 67¶
Appendix A¶
Summary of Directives¶
| Directive | Description |
|---|---|
| MODULE [module-name [',' priority [',' code]]] | Define start of module. The default value for priority and code is zero. |
| ENDMODULE [module-name] | Define end of module. The name must be the same as in the matching MODULE. |
| IMPORT-P identifier-list | Import external routines. |
| IMPORT-D identifier-list | Import external data. |
| EXPORT identifier-list | Export internal routines or data. |
| MAIN identifier | Define main entry point. |
| LIB identifier-list | Define library symbols. |
| identifier ':' ALIAS string | Define alternative external representation. |
| ROUTINE identifier-list | Start of subroutine with local symbols. |
| ENDROUTINE | End of subroutine. |
| STACK | Start of stack definition. |
| ENDSTACK | End of stack definition. |
| RECORD | Start of record definition. |
| ENDRECORD | End of record definition. |
| data-type BLOCK size | Allocate block in data memory. |
| data-type DATA data element list | Allocate constant data in data memory. |
| data-type PROG data element list | Allocate constant data in program memory. |
| DESC [limit ',' address] | Allocate descriptor. |
| data-type ARRAY size | Allocate storage preceded by array descriptor. |
Page 68¶
Technical Reference¶
| Command | Description |
|---|---|
| STRING size | Same as BY ARRAY. |
| data-type ARRAYDATA data-element-list | Allocate constant data preceded by array descriptor. |
| STRINGDATA data-element-list | Same as BY ARRAYDATA. |
| ORG-P origin | Set absolute program origin. |
| ORG-D origin | Set absolute data origin. |
| BOUND-P base | Advance program location counter to next multiple of base. |
| BOUND-D base | Advance data location counter to next multiple of base. |
| MESSAGE | Output message string to object code |
Page 69¶
Appendix B¶
Summary of Commands¶
| Command | Description |
|---|---|
| $LIST listing-options | Enable listing options. |
| $NOLIST listing-options | Disable listing options. |
listing-options:¶
| Option | Description |
|---|---|
| GLOBAL-SYMBOLS | Global symbols in symbol table. |
| LOCAL-SYMBOLS | Local symbols in symbol table. |
| LOCATION-COUNTER | Location counter field. |
| GENERATED-CODE | Code fields. |
| CROSS-REFERENCE-TABLE | Cross-reference table. |
| Command | Description |
|---|---|
| $TITLE title-string | Define title string. Also performs page eject. |
| $EJECT | Page eject. |
| $IF expression | Conditional assembly. |
| $ELSIF expression | 0 = FALSE, > < 0 = TRUE. |
| $ELSE | Optional $ELSE command. |
| $ENDIF | End of conditional block. |
| $INCLUDE file-name ["," section-name] | Include source file. |
| $SECTION section-name | Define section. |
| $MACRO macro-name [("(" parameters")")] | Start of macro definition. |
| $ENDMACRO [macro-name] | End of macro definition. |
| $EXITMACRO | Immediate macro exit. |
| $PACK | Pack data elements. |
| $ALIGN | Align data elements. |
| $EOF | End-of-file. |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 70¶
I'm sorry, but the image you provided is blank and doesn't contain any text to convert. Please provide a different image.
Page 71¶
Appendix C¶
Reserved Symbols¶
The symbols listed in this appendix are reserved symbols and may not be redefined by the user.
| Symbol | Value | Description |
|---|---|---|
| B | D1 | ALT |
| D | D2 | AND |
| F | D3 | AUX |
| H | D4 | BI1 |
| R | F1 | BI2 |
| S | F2 | BI3 |
| W | F3 | BI4 |
| F4 | BY1 | |
| H1 | BY2 | |
| H2 | BY3 | |
| H3 | BY4 | |
| H4 | IND | |
| OR | MOD | |
| R1 | NOT | |
| R2 | XOR | |
| R3 | ||
| R4 | ||
| SP | ||
| W1 | ||
| W2 | ||
| W3 | ||
| W4 |
Additional Symbols¶
| Symbol | Description |
|---|---|
| ADDR | #DATE |
| DESC | #DCLC |
| NARG | #LOG2 |
| RETA | #NARG |
| #NCHR | |
| #PCLC | |
| #RCLC | |
| #SCLC | |
| PREVB | |
| SHIFT | |
| #ZERO | |
| #ZEROD |
Page 72¶
I'm sorry, I cannot process the image as it appears to be blank. Could you please provide another image or describe the content?
Page 73¶
Appendix D¶
Intrinsic Constants and Function Summary¶
| Constant | Value | Description |
|---|---|---|
| PREVB | 0 | Saved B-register |
| RETA | 4 | Saved return address |
| SP | 8 | Stack pointer |
| AUX | 12 | System cell |
| NARG | 16 | Number of arguments supplied in call |
| #ZERO P | 0 | Program address zero |
| #ZEROD | 0 | Data address zero |
| Function | Description |
|---|---|
| #PCLC | Program location counter |
| #DCLC | Data location counter |
| #SCLC | Stack location counter |
| #RCLC | Record location counter |
| #NCHR (string) | Number of characters in string |
| #NARG | Number of arguments in current macro call |
| #DATE | Current date and time (double word) |
| #LOG2 (integer) | Logarithm to base 2 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 74¶
I'm unable to extract any text or layout from the provided image as it appears to be blank. Please provide a different image with visible text for conversion.
Page 75¶
Appendix E¶
Module Example Listing¶
This appendix shows the output listing from Example 1. The following options were enabled during the assembly.
- LOCATION-COUNTER
- GENERATED-CODE
- GLOBAL-SYMBOLS
- LOCAL-SYMBOLS
- CROSS-REFERENCE-TABLE
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 76¶
MODULE EXAMPLE¶
Wednesday 26 March 1980¶
Page 1
ASCII¶
| Column | Data |
|---|---|
| 1 | WEDNESDAY |
| 2 | 26 MARCH 1980 |
| 3 | MODULE EXAMPLE |
| 4 | MAIN START |
| 5 | ROUTINE LNG |
| 6 | -- |
| 7 | -- |
| 8 | NORD-50 ASSEMBLER 2.5 |
| 9 | |
| 10 | |
| 11 | 0000000000 |
| 12 | 0000000000 |
| 13 | 00000000034 |
| 14 | |
| 15 | |
| 16 | 00000000012 |
| 17 | P |
| 18 | 00000000005 |
| 19 | P |
| 20 | 00000000021 |
| 21 | P |
| 22 | 00000000034 |
| 23 | P |
| 24 | 00000000015 |
| 25 | P |
| 26 | 00000000027 |
| 27 | 00000000014 |
| 28 | S |
| 29 | 00000000047 |
| 30 | P |
| 31 | 00000000040 |
| 32 | 00000000040 |
| 33 | 00000000040 |
| 34 | 00000000040 |
| 35 | 00000000021 |
| 36 | 00000000034 |
PROGRAM¶
- COMPUTE: Param3 = SQRT(Param 2 + Param 2)
- Start of Stack Definition
- Parameter 1: Load 1
- Parameter 2: Square
- Parameter 3: Square Root
- Main Program
- Fixed: Yes
- Data: Yes
- Block: 1
- Address: 0
Parameters¶
| Parameter | Address | Square Root | Store Result |
|---|---|---|---|
| F1 | (B, A*) | INV | Param1 |
| F2 | (B, A*) | END | Param2 |
| F3 | N/A | F1 * F1 | Param3 |
Output¶
- EndStack: Offset 335
- Fixed Block: 305 024
- Fixed Data: 305 030
Initiate Stack (AR* with Main Program Stack).
Page 77¶
Table¶
| 37 | 38 | 39 | 40 | 41 | 42 | 43 P | 44 | 45 | 46 | 47 |
| P | P | |||||||||
| 48 P | 49 | 51 P | 52 P | 53 P | 54 P | |||||
| 0000000 | 0000000 | 0000000 | 0000000 | 0000000 | 0000000 | 000 | 00000000 | 30 | 33 | 34 |
| 003 | 315 | 340 | 315 | 144 | 0000000041 | 303 | 0000000040 | |||
| Start: | STK | 100 | . | . | 31 | 6 | . | |||
| Call | STK,/SCLC,/100 | |||||||||
| Routine | with 3 | Local | Parameters A, BB |
Other Information¶
-
Frames Beginning at
STK,: LengthSCLCand Total Stack Demand of100¶
-
SCLC: next internal function giving the size of the stack frame in the last preceding instruction.¶
-
"Return from main program, i.e., STOP."¶
-
RET¶
End Module¶
Scanned by Jonny Oddene for Sintran Data © 2011
ND–60.113.02
Page 78¶
NORD-500 ASSEMBLER 2.5¶
SYMBOL TABLE¶
GLOBAL SYMBOLS¶
| A | B | C |
|---|---|---|
| LNKART | STK |
|---|---|
| P | M |
| W | A |
| W | PM |
| W | P |
| W | W |
| W | P |
00000000000024
00000000000030
00000000000034
00000000000000
00000000000000
00000000000000
00000000000040
SYMBOLS LOCAL TO LNG¶
APAR1 APAR2 APAR3¶
| A | B | C |
|---|---|---|
| W | A | A |
| W | W | A |
| W | W | W |
| A |
NORD-500 ASSEMBLER 2.5 CROSS-REFERENCE TABLE¶
| A | |
|---|---|
| APAR1 39* | |
| APAR2 10* 23 20 | |
| APAR3 11 32 43* | |
| BAPAR1 34 | |
| BAPAR2 38 | |
| BAPAR3 44 |
- LNKART STK START
| WEDNESDAY 26 MARCH 1980 |
| 15:04:26 |
| NO ERRORS DETECTED |
| WEDNESDAY 26 MARCH 1980 | | 15:04:26 |
| WEDNESDAY 26 MARCH 1980 | | 15:04:27 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 79¶
Appendix F¶
Address Codes¶
| Name | Size | Operation | Octal Layout |
|---|---|---|---|
| LOCAL | :S | ea=(B)+d*#4 | 1dd |
| LOCAL | :B | ea=(B)+d | 301 |
| LOCAL | :H | ea=(B)+d | 302 ddd ddd |
| LOCAL | :W | ea=(B)+d | 303 ddd ddd ddd ddd |
| LOCAL P.I. | :B | ea=(B)+d+p*(Rn) | 324+y ddd |
| LOCAL P.I. | :H | ea=(B)+d+p*(Rn) | 330+y ddd ddd |
| LOCAL P.I. | :W | ea=(B)+d+p*(Rn) | 334+y ddd ddd ddd ddd |
| LOCAL INDIRECT | :S | ea=((B)+d) | 305 ddd |
| LOCAL INDIRECT | :B | ea=((B)+d) | 306 ddd ddd |
| LOCAL INDIRECT | :H | ea=((B)+d) | 307 ddd ddd ddd ddd |
| LOCAL INDIRECT P.I. | :B | ea=((B)+d)p(Rn) | 344+y ddd |
| LOCAL INDIRECT P.I. | :H | ea=((B)+d)p(Rn) | 350+y ddd ddd |
| LOCAL INDIRECT P.I. | :W | ea=((B)+d)p(Rn) | 354+y ddd ddd ddd ddd |
| RECORD | :S | ea=(R)+d*#4 | 2dd |
| RECORD | :B | ea=(R)+d | 311 ddd |
| RECORD | :H | ea=(R)+d | 312 ddd ddd |
| RECORD | :W | ea=(R)+d | 313 ddd ddd ddd ddd |
| PRE INDEXED | :B | ea=(Rn)+d | 364+y ddd |
| PRE INDEXED | :H | ea=(Rn)+d | 370+y ddd ddd |
| PRE INDEXED | :W | ea=(Rn)+d | 374+y ddd ddd ddd ddd |
| ABSOLUTE | ea=a | 304 aaa aaa aaa aaa | |
| ABSOLUTE P.I. | ea=a+(Rn)*p | 314+y aaa aaa aaa aaa | |
| CONSTANT | :S | op=c | 0cc |
| CONSTANT | :B | op=c | 315 ccc |
| CONSTANT | :H | op=c | 315 ccc ccc |
| CONSTANT | :W | op=c | 317 ccc ccc ccc ccc |
| CONSTANT | :F | op=c | 317 ccc ccc ccc ccc ccc |
| CONSTANT | :D | op=c | 314 ccc ccc ccc ccc ccc |
Notes¶
Register¶
op=(Rn)320+y
Descriptor¶
ea=A+p*(Rn)360+y<operand>310<operand>ALTERNATIVE NOT USED300
Legend¶
()- Contents ofea- Effective addressop- Value of operand,op=(ea)A- Descriptor addressa- Absolute addressc- Constantd- Displacementx- 0,1,2,3,4,5,6,7y- 0,1,2,3 specifies the registers R1 to R4p- p= 1(B), 2(H), 4(W), 8 (double float) operations. Post index scaling factor.Rn- Used to reference a register, n=1,2,3,4B- Base registerR- Record register
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 80¶
I'm sorry, but I can't assist with that.
Page 81¶
Appendix G¶
Address Code Table¶
| :S | :B | :H | :W | :F | :D | Prefix | |
|---|---|---|---|---|---|---|---|
| LOCAL | 1dd | 301 | 302 | 303 | |||
| LOCAL P.I. | 324+ | 330+ | 334+ | ||||
| LOCAL INDIRECT | 305 | 306 | 307 | ||||
| LOCAL INDIRECT P.I. | 344+ | 350+ | 354+ | ||||
| RECORD | 2dd | 311 | 312 | 313 | |||
| PRE INDEXED | 364+ | 370+ | 374+ | ||||
| ABSOLUTE | 304 | ||||||
| ABSOLUTE P.I. | 340- | ||||||
| CONSTANT | 0cc | 315 | 316 | 317 | 317 | 314 | |
| REGISTER | 320+ |
Address Code Prefixes¶
DESCRIPTOR 360+
ALTERNATIVE 310
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 82¶
I'm sorry, I cannot perform OCR on this image.
Page 83¶
APPENDIX H¶
INSTRUCTION LIST¶
ARITHMETICAL, LOGICAL, and DATA TRANSFER INSTRUCTIONS¶
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 176004+(n-1) | BIn := | load bit |
| 004+(n-1) | BYn := | load byte |
| 010+(n-1) | Hn := | load halfword |
| 014+(n-1) | Wn := | load word |
| 020+(n-1) | Fn := | load float |
| 024+(n-1) | Dn := | load double float |
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 176010 | B:= | load local base |
| 030 | R:= | load record base |
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 176014+(n-1) | BIn =: | store bit |
| 034+(n-1) | BYn =: | store byte |
| 176020+(n-1) | Hn =: | store halfword |
| 044+(n-1) | Wn =: | store word |
| 048+(n-1) | Fn =: | store float |
| 050+(n-1) | Dn =: | store double float |
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 176012 | B=: | local base store |
| 176011 | R=: | record base store |
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 176013 | BI MOVE | move bit |
| 031 | BY MOVE | move byte |
| 176024 | H MOVE | move halfword |
| 032 | W MOVE | move word |
| 033 | F MOVE | move float |
| 054 | D MOVE | move double float |
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 176030+(n-1) | BIn COMP | register bit compare |
| 060+(n-1) | BYn COMP | register byte compare |
| 176034+(n-1) | Hn COMP | register halfword compare |
| 064+(n-1) | Wn COMP | register word compare |
| 070+(n-1) | Fn COMP | register float compare |
| 074+(n-1) | Dn COMP | register float compare |
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 176025 | BI COMP2 | bit compare |
| 055 | BY COMP2 | byte compare |
| 176026 | H COMP2 | halfword compare |
| 056 | W COMP2 | word compare |
| 057 | F COMP2 | float compare |
| 100 | D COMP2 | double float compare |
| Instruction Code | Assembly Notation | Name |
|---|---|---|
| 101 | BI TEST | bit test against zero |
| 102 | BY TEST | byte test against zero |
| 103 | H TEST | halfword test against zero |
| 104 | W TEST | word test against zero |
| 105 | F TEST | float test against zero |
| 106 | D TEST | double float test against zero |
Page 84¶
Operations Table¶
| Code | Type | Operation | Description |
|---|---|---|---|
| 177010+(n-1) | BYn | NEG | byte register negate |
| 177011+(n-1) | Hn | NEG | halfword register negate |
| 220+(n-1) | Wn | NEG | word register negate |
| 224+(n-1) | Fn | NEG | float register negate |
| 224+(n-1) | Dn | NEG | double float register negate |
| 177020+(n-1) | BIn | INV | bit invert register |
| 177024+(n-1) | BYn | INV | byte invert register |
| 177030+(n-1) | Hn | INV | halfword invert register |
| 230+(n-1) | Wn | INV | word invert register |
| 177420+(n-1) | Wn | INVC | word invert register with carry |
| 177400+(n-1) | BYn | ABS | byte absolute value |
| 177404+(n-1) | Hn | ABS | halfword absolute value |
| 177410+(n-1) | Wn | ABS | word absolute value |
| 177414+(n-1) | Fn | ABS | float absolute value |
| 177414+(n-1) | Dn | ABS | double float absolute value |
| 176604+(n-1) | BYn | + | byte add |
| 176070+(n-1) | Hn | + | halfword add |
| 124+(n-1) | Wn | + | word add |
| 130+(n-1) | Fn | + | floating add |
| 134+(n-1) | Dn | + | double float add |
| 176074+(n-1) | BYn | - | byte subtract |
| 176100+(n-1) | Hn | - | halfword subtract |
| 140+(n-1) | Wn | - | word subtract |
| 141+(n-1) | Fn | - | float subtract |
| 150+(n-1) | Dn | - | double float subtract |
| 176104+(n-1) | BYn | * | byte multiply |
| 176110+(n-1) | Hn | * | halfword multiply |
| 154+(n-1) | Wn | * | word multiply |
| 160+(n-1) | Fn | * | floating multiply |
| 164+(n-1) | Dn | * | double float multiply |
| 176114+(n-1) | BYn | / | byte divide |
| 176120+(n-1) | Hn | / | halfword divide |
| 170+(n-1) | Wn | / | word divide |
| 174+(n-1) | Fn | / | float divide |
| 350+(n-1) | Dn | / | double float divide |
| 176027 | BY | ADD2 | byte add two arguments |
| 176124 | H | ADD2 | halfword add two arguments |
| 123 | W | ADD2 | word add two arguments |
| 176126 | F | ADD2 | float add two arguments |
| 176127 | D | ADD2 | double float add two arguments |
| 176130 | BY | SUB2 | byte subtract two arguments |
| 176131 | H | SUB2 | halfword subtract two arguments |
| 340 | W | SUB2 | word subtract two arguments |
| 176133 | F | SUB2 | float subtract two arguments |
| 176134 | D | SUB2 | double float subtract two arguments |
| 176135 | BY | MUL2 | byte multiply two operands |
| 176136 | H | MUL2 | halfword multiply two operands |
| 176137 | W | MUL2 | word multiply two operands |
| 176140 | F | MUL2 | float multiply two operands |
- Scanned by Jonny Oddene for Sintran Data © 2011
- ND-60.113.02
Page 85¶
H-3¶
| Code | Op | Description |
|---|---|---|
| 176141 | D MUL2 | double float multiply two operands |
| 176142 | BY DIV2 | byte divide two arguments |
| 176143 | H DIV2 | halfword divide two arguments |
| 176144 | W DIV2 | word divide two arguments |
| 176145 | F DIV2 | float divide two arguments |
| 176146 | D DIV2 | double float divide two arguments |
| Code | Op | Description |
|---|---|---|
| 176147 | BY ADD3 | byte add three arguments |
| 176150 | H ADD3 | halfword add three arguments |
| 176151 | W ADD3 | word add three arguments |
| 176152 | F ADD3 | float add three arguments |
| 176153 | D ADD3 | double float add three arguments |
| Code | Op | Description |
|---|---|---|
| 176154 | BY SUB3 | byte subtract three operands |
| 176155 | H SUB3 | halfword subtract three operands |
| 176156 | W SUB3 | word subtract three operands |
| 176157 | F SUB3 | float subtract three operands |
| 176160 | D SUB3 | double float subtract three operands |
| Code | Op | Description |
|---|---|---|
| 176161 | BY MUL3 | byte multiply three arguments |
| 176162 | H MUL3 | halfword multiply three arguments |
| 176163 | W MUL3 | word multiply three arguments |
| 176164 | F MUL3 | float multiply three arguments |
| 176165 | D MUL3 | double float multiply three arguments |
| Code | Op | Description |
|---|---|---|
| 176166 | BY DIV3 | byte divide three arguments |
| 176167 | H DIV3 | halfword divide three arguments |
| 176170 | W DIV3 | word divide three arguments |
| 176171 | F DIV3 | float divide three arguments |
| 176172 | D DIV3 | double float divide three arguments |
| Code | Op | Description |
|---|---|---|
| 176040+(n-1) | SYn MUL4 | byte multiply with overflow |
| 176044+(n-1) | Hn MUL4 | halfword multiply with overflow |
| 176050+(n-1) | Wn MUL4 | word multiply with overflow |
| Code | Op | Description |
|---|---|---|
| 176054+(n-1) | SYn DIV4 | byte divide with remainder |
| 176060+(n-1) | Hn DIV4 | halfword divide with remainder |
| 176174+(n-1) | Wn DIV4 | word divide with remainder |
| Code | Op | Description |
|---|---|---|
| 176200+(n-1) | Wn UMUL | word unsigned multiplication |
| 177110+(n-1) | Wn UDIV | word unsigned divide |
| Code | Op | Description |
|---|---|---|
| 177100+(n-1) | Wn ADDC | word add with carry |
| 177104+(n-1) | Wn SUBC | word subtract with carry |
| Code | Op | Description |
|---|---|---|
| 204+(n-1) | BIn CLR | bit register clear |
| 204+(n-1) | BYn CLR | byte register clear |
| 204+(n-1) | Hn CLR | halfword register clear |
| 204+(n-1) | Wn CLR | word register clear |
| 210+(n-1) | Fn CLR | float register clear |
| 214+(n-1) | Dn CLR | double float register clear |
| Code | Op | Description |
|---|---|---|
| 176205 | BI STZ | bit store zero |
| 110 | BY STZ | byte store zero |
| 111 | H STZ | halfword store zero |
| 112 | W STZ | word store zero |
| 113 | F STZ | float store zero |
| 114 | D STZ | double float store zero |
Scanned by Jonny Oddene for Sintran Data © 2011
Page 86¶
Instructions¶
| Code | Operation | Description |
|---|---|---|
| 176206 | BI SET1 | bit set to one |
| 176207 | BY SET1 | byte set to one |
| 176210 | H SET1 | halfword set to one |
| 115 | W SET1 | word set to one |
| 107 | F SET1 | float set to one |
| 176211 | D SET1 | double float set to one |
| Code | Operation | Description |
|---|---|---|
| 176212 | BY INCR | byte increment |
| 116 | H INCR | halfword increment |
| 117 | W INCR | word increment |
| 120 | F INCR | float increment |
| 176213 | D INCR | double float increment |
| Code | Operation | Description |
|---|---|---|
| 176214 | BY DECR | byte decrement |
| 176215 | H DECR | halfword decrement |
| 121 | W DECR | word decrement |
| 176216 | F DECR | float decrement |
| 176217 | D DECR | double float decrement |
Logical Operations¶
AND¶
| Code | Operation | Description |
|---|---|---|
| 176711+(n-1) | BIn AND | bit and register |
| 176220+(n-1) | BYn AND | byte and register |
| 176224+(n-1) | Hn AND | halfword and register |
| 344+(n-1) | Wn AND | word and register |
OR¶
| Code | Operation | Description |
|---|---|---|
| 176707+(n-1) | BIn OR | bit or register |
| 176230+(n-1) | BYn OR | byte or register |
| 176234+(n-1) | Hn OR | halfword or register |
| 240+(n-1) | Wn OR | word or register |
XOR¶
| Code | Operation | Description |
|---|---|---|
| 176714+(n-1) | BIn XOR | bit exclusive or register |
| 176240+(n-1) | BYn XOR | byte exclusive or register |
| 176244+(n-1) | Hn XOR | halfword exclusive or register |
| 244+(n-1) | Wn XOR | word exclusive or register |
Shift Operations¶
| Code | Operation | Description |
|---|---|---|
| 176250 | BY SHL | byte shift logical |
| 176251 | H SHL | halfword shift logical |
| 176252 | W SHL | word shift logical |
| 176253 | BY SHA | byte shift arithmetical |
| 176254 | H SHA | halfword shift arithmetical |
| 176255 | W SHA | word shift arithmetical |
| 176256 | BY SHR | byte shift rotational |
| 176257 | H SHR | halfword shift rotational |
| 176260 | W SHR | word shift rotational |
Bit Operations¶
GETBI¶
| Code | Operation | Description |
|---|---|---|
| 176264+(n-1) | BYn GETBI | byte get bit |
| 176270+(n-1) | Hn GETBI | halfword get bit |
| 176720+(n-1) | Wn GETBI | word get bit |
PUTBI¶
| Code | Operation | Description |
|---|---|---|
| 176724+(n-1) | BYn PUTBI | byte put bit |
| 176730+(n-1) | Hn PUTBI | halfword put bit |
| 176734+(n-1) | Wn PUTBI | word put bit |
CLEBI¶
| Code | Operation | Description |
|---|---|---|
| 177175 | BY CLEBI | byte clear bit |
| 177176 | H CLEBI | halfword clear bit |
| 177177 | W CLEBI | word clear bit |
SETBI¶
| Code | Operation | Description |
|---|---|---|
| 177200 | BY SETBI | byte set bit |
| 177201 | H SETBI | halfword set bit |
Page 87¶
H-5¶
| Code | Op | Description |
|---|---|---|
| 177202 | W | SETBI word set bit |
| 176740+(n-1) | BYn | GETBF byte get bit field |
| 176744+(n-1) | Hn | GETBF halfword get bit field |
| 176750+(n-1) | Wn | GETBF word get bit field |
| 176754+(n-1) | BYn | PUTBF byte put bit field |
| 176760+(n-1) | Hn | PUTBF halfword put bit field |
| 176764+(n-1) | Wn | PUTBF word put bit field |
| 176300+(n-1) | Fn | AXI register float argument to the ⟨I⟩'th power |
| 176304+(n-1) | Dn | AXI register double float argument to the ⟨I⟩'th power |
| 176310+(n-1) | BYn | IXI register byte I to the ⟨J⟩'th power |
| 176314+(n-1) | Hn | IXI register halfword I to the ⟨J⟩'th power |
| 176320+(n-1) | Wn | IXI register word I to the ⟨J⟩'th power |
| 176324+(n-1) | Fn | SQRT register float square root |
| 176330+(n-1) | Dn | SQRT register double float square root |
| 176275 | BI | SWAP bit swap |
| 176276 | BY | SWAP byte swap |
| 176277 | H | SWAP halfword swap |
| 122 | W | SWAP word swap |
| 176334 | F | SWAP float swap |
| 176335 | D | SWAP double float swap |
| 176340+(n-1) | Fn | POLY floating polynomial |
| 176344+(n-1) | Dn | POLY double float polynomial |
| 177130+(n-1) | Fn | REM float divide with remainder |
| 177134+(n-1) | Dn | REM double float divide with remainder |
| 177140+(n-1) | Fn | INT float integer part |
| 177144+(n-1) | Dn | INT double float integer part |
| 177150+(n-1) | Fn | INTR float integer part with rounding |
| 177154+(n-1) | Dn | INTR double float integer part with rounding |
| 176350+(n-1) | BYn | MULAD byte multiply and add |
| 176354+(n-1) | Hn | MULAD halfword multiply and add |
| 250+(n-1) | Wn | MULAD word multiply and add |
| 176360+(n-1) | Fn | MULAD float multiply and add |
| 176364+(n-1) | Dn | MULAD double float multiply and add |
| 176370+(n-1) | BYn | PSUM byte add and multiply |
| 176374+(n-1) | Hn | PSUM halfword add and multiply |
| 176400+(n-1) | Wn | PSUM word add and multiply |
| 176404+(n-1) | Fn | PSUM float add and multiply |
| 176410+(n-1) | Dn | PSUM double float add and multiply |
| 176414+(n-1) | BYn | LIND byte load index |
| 176420+(n-1) | Hn | LIND halfword load index |
| 254+(n-1) | Wn | LIND word load index |
| 176424+(n-1) | BYn | CIND byte calculate index |
| 176430+(n-1) | Hn | CIND halfword calculate index |
ND-60.113.02
Scanned by Jonny Odden for Sintran Data © 2011
Page 88¶
H-6¶
260+(n-1) Wn CIND word calculate index
CONTROL INSTRUCTIONS¶
Instruction Codes¶
| Octal Value | Assembly Notation | Description |
|---|---|---|
| 300 | GO:B | jump byte |
| 301 | GO:H | jump halfword |
| 302 | GO:W | jump word |
| 264 | JUMPG | jump general |
Instruction Codes¶
| Octal Value | Assembly Notation | Condition | Name |
|---|---|---|---|
| IF=GO | Z=1 | equal | |
| IF Z GO | (alt. assembly notation) | ||
| 304 | IF<GO:B | byte displacement | |
| 305 | IF<GO:H | halfword displacement | |
| IF<>GO | Z=0 | unequal | |
| IF -Z GO | (alt. assembly notation) | ||
| 306 | IF<>GO:B | byte displacement | |
| 307 | IF<>GO:H | halfword displacement | |
| IF>GO | S=0 and Z=0 | greater signed | |
| 310 | IF>GO:B | ||
| 311 | IF>GO:H | ||
| IF<GO | S=1 | less signed | |
| IF S GO | (alt. assembly notation) | ||
| 312 | IF<GO:B | ||
| 313 | IF<GO:H | ||
| IF>=GO | S=0 | greater or equal signed | |
| IF -S GO | (alt. assembly notation) | ||
| 314 | IF>=GO:B | ||
| 315 | IF>=GO:H | ||
| IF<=GO | S=1 or Z=1 | less or equal signed | |
| 316 | IF<=GO:B | ||
| 317 | IF<=GO:H | ||
| IF K GO | K=1 | flag | |
| 320 | IF K GO:B | ||
| 321 | IF K GO:H | ||
| IF -K GO | K=0 | not flag | |
| 322 | IF -K GO:B | ||
| 323 | IF -K GO:H | ||
| IF>>GO | C=1 and Z=0 | greater magnitude | |
| 324 | IF>>GO:B | ||
| 325 | IF>>GO:H | ||
| IF)>=GO | C=1 | greater or equal magnitude |
ND-60.113.02
Page 89¶
H-7¶
Assembly Notation¶
| Code | Description |
|---|---|
| IF C GO | (alt. assembly notation) |
| 326 IF>>=GO:B | |
| 327 IF>>=GO:H | |
| IF<<GO | C=0 less magnitude |
| IF -C GO | (alt. assembly notation) |
| 330 IF<<GO:B | |
| 331 IF<<GO:H | |
| IF<<=GO | C:0 or Z:1 less or equal magnitude |
| 332 IF<<=GO:B | |
| 333 IF<<=GO:H | |
| IF ST GO | specified bit in status register set |
| 176173 IF ST GO:B | |
| 175544 IF ST GO:H | |
| IF -ST GO | specified bit in status register not set |
| 176545 IF -ST GO:B | |
| 176204 IF -ST GO:H |
Instruction Codes¶
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 176336 | BY LOOPI:B | byte loop increment |
| 176346 | BY LOOPI:H | byte loop increment |
| 176337 | H LOOPI:B | halfword loop increment |
| 176347 | H LOOPI:H | halfword loop increment |
| 277 | W LOOPI:B | word loop increment |
| 341 | W LOOPI:H | word loop increment |
| 176434 | F LOOPI:B | float loop increment |
| 176441 | F LOOPI:H | float loop increment |
| 176435 | D LOOPI:B | double float loop increment |
| 176442 | D LOOPI:H | double float loop increment |
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 176443 | BY LOOPD:B | byte loop decrement |
| 176450 | BY LOOPD:H | byte loop decrement |
| 176444 | H LOOPD:B | halfword loop decrement |
| 176451 | H LOOPD:H | halfword loop decrement |
| 176445 | W LOOPD:B | word loop decrement |
| 176452 | W LOOPD:H | word loop decrement |
| 176446 | F LOOPD:B | float loop decrement |
| 176453 | F LOOPD:H | float loop decrement |
| 176447 | D LOOPD:B | double float decrement |
| 176454 | D LOOPD:H | double float decrement |
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 176455 | BY LOOP:B | byte loop general step |
| 176462 | BY LOOP:H | byte loop general step |
| 176456 | H LOOP:B | halfword loop general step |
| 176463 | H LOOP:H | halfword loop general step |
| 176457 | W LOOP:B | word loop general step |
| 176464 | W LOOP:H | word loop general step |
| 176460 | F LOOP:B | float loop general step |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 90¶
H-8¶
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 176465 | F LOOP:I | float loop general step |
| 176461 | D LOOP:B | double float loop general step |
| 176466 | D LOOP:H | double float loop general step |
| Dec Value | Assembly Notation | Description |
|---|---|---|
| 303 | CALL | call subroutine absolute |
| 265 | CALLG | call subroutine general |
| 334 | INIT | initialize stack |
| 337 | ENTM | enter module |
| 234 | ENTD | enter subroutine directly |
| 270 | ENTS | enter stack subroutine |
| 335 | ENTF | enter subroutine |
| 272 | ENTSN | enter max argument stack subroutine |
| 336 | ENTFN | enter max argument subroutine |
| 274 | ENTT | enter trap handler |
| 275 | ENTB | enter buddy subroutine |
| Dec Value | Assembly Notation | Description |
|---|---|---|
| 200 | RET | clear flag return from subroutine |
| 201 | RETK | set flag return from subroutine |
| 202 | RETD | return from direct subroutine |
| 203 | RETT | trap handler return |
| 235 | IF K RET | if flag set subroutine return |
| 177034 | RETB | buddy subroutine return |
| 177035 | RETBK | set flag buddy subroutine return |
Special Instructions¶
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 177000 | SOLO | disable process switch |
| 177001 | TUTTI | enable process switch |
| 176471 | SETE | set bit in local trap enable register |
| 176472 | CLTE | clear bit in local trap enable register |
| 176500 | Wn STIFZ | compare and store if zero |
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 176504 | BI BYCONV | bit to byte convert |
| 176505 | BI HCONV | bit to halfword convert |
| 176506 | BI WCONV | bit to word convert |
| 176507 | BI FCONV | bit to float convert |
| 176510 | BI DCONV | bit to double float convert |
| 176511 | BY BICONV | byte to bit convert |
| 176512 | BY HCONV | byte to halfword convert |
| 176513 | BY WCONV | byte to word convert |
| 176514 | BY FCONV | byte to float convert |
| 176515 | BY DCONV | byte to double float convert |
| 176516 | H BICONV | halfword to bit convert |
| 176517 | H BYCONV | halfword to byte convert |
| 176520 | H WCONV | halfword to word convert |
| 176521 | H FCONV | halfword to float convert |
| 176522 | H DCONV | halfword to double float convert |
Page 91¶
H-9¶
| Code | Type | Operation |
|---|---|---|
| 176523 | W | BICONV word to bit convert |
| 176524 | W | BYCONV word to byte convert |
| 176525 | W | HCONV word to halfword convert |
| 176526 | W | FCONV word to float convert |
| 176527 | W | DCONV word to double float convert |
| 176530 | F | BICONV float to bit convert |
| 176531 | F | BYCONV float to byte convert |
| 176532 | F | HCONV float to halfword convert |
| 176533 | F | WCONV float to word convert |
| 176534 | F | DCONV float to double float convert |
| 176535 | D | BICONV double float to bit convert |
| 176536 | D | BYCONV double float to byte convert |
| 176537 | D | HCONV double float to halfword convert |
| 176540 | D | WCONV double float to word convert |
| 176541 | D | FCONV double float to float convert |
| Code | Type | Operation |
|---|---|---|
| 177160 | F | BYCONR float to byte convert with rounding |
| 177161 | D | BYCONR double float to byte convert with rounding |
| 177162 | F | HCONR float to halfword convert with rounding |
| 177163 | D | HCONR double float to halfword convert with rounding |
| 177164 | F | WCONR float to word convert with rounding |
| 177165 | D | WCONR double float to word convert with rounding |
| Code | Type | Operation |
|---|---|---|
| 177203 | W | FCONR word to float convert with rounding |
| 177204 | D | FCONR double float to float convert with rounding |
| Code | Type | LADDR Type | Description |
|---|---|---|---|
| 177004+(n-1) | BIn | LADDR | bit load address |
| 177014+(n-1) | BYn | LADDR | byte load address |
| 177050+(n-1) | Hn | LADDR | halfword load address |
| 176474+(n-1) | Wn | LADDR | word load address |
| 176474+(n-1) | Fn | LADDR | float load address |
| 177054+(n-1) | Dn | LADDR | double float load address |
| Code | Type | RLADDR Type | Description |
|---|---|---|---|
| 176125 | BI RLADDR | bit load address record | |
| 176132 | BY RLADDR | byte load address record | |
| 176261 | H RLADDR | halfword load address record | |
| 276 | W RLADDR | word load address record | |
| 276 | F RLADDR | float load address record | |
| 176262 | D RLADDR | double float load address record |
| Code | Type | BLADDR Type | Description |
|---|---|---|---|
| 176263 | BI BLADDR | bit load address local | |
| 176267 | BY BLADDR | byte load address local | |
| 176247 | H BLADDR | halfword load address local | |
| 176543 | W BLADDR | word load address local | |
| 176543 | F BLADDR | float load address local | |
| 176470 | D BLADDR | double float load address local |
| Code | Operation |
|---|---|
| 002 | BP break point instruction |
| 003 | NOOP no operation |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 92¶
H-10¶
177002 SETK set flag
177003 CLRK clear flag
177114+(n-1) Wn GETB get buddy
176666 FREEB free buddy
275 ENTB enter buddy subroutine
177034 RETB buddy subroutine return
177035 RETBK buddy subroutine error return
REGISTER COMMUNICATION INSTRUCTIONS¶
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 176473 | L:: | load link register |
| 176667 | HL:: | load upper limit register |
| 176670 | LL:: | load lower limit register |
| 176671 | ST1:: | load first status register |
| 176673 | TE1:: | load first local trap enable register |
| 176674 | TE2:: | load second local trap enable register |
| 176675 | TOS:: | load top of stack register |
| 176712 | THA:: | load trap handler register |
| 176700 | L=: | store link register |
| 176701 | HL=: | store upper limit register |
| 176702 | LL=: | store lower limit register |
| 176703 | ST1=: | store first status register |
| 176705 | TE1=: | store first local trap enable register |
| 176706 | TE2=: | store second local trap enable register |
| 176707 | SE1=: | store first system trap enable register |
| 176710 | SE2=: | store second system trap enable register |
| 176711 | TOS=: | store top of stack register |
| 176713 | THA=: | store trap handler register |
| 176542 | P=: | store program counter |
| 177060+(n-1) | An:: | load most significant part of double float register |
| 177064+(n-1) | En:: | load least significant part of double float register |
| 177070+(n-1) | An=: | store most significant part of double float register |
| 177074+(n-1) | En=: | store least significant part of double float register |
176440 BY BMOVE byte block move
177170 H BMOVE halfword block move
177171 W BMOVE word block move
177172 F BMOVE float block move
177173 D BMOVE double float block move
ND-60.113.02
Page 93¶
STRING INSTRUCTIONS¶
Instruction Codes¶
| Octal Value | Assembly Notation | Name |
|---|---|---|
| 176546 | BI SMOVE | bit string move |
| 176547 | BY SMOVE | byte string move |
| 176550 | H SMOVE | halfword string move |
| 176551 | W SMOVE | word string move |
| 176552 | F SMOVE | float string move |
| 176553 | D SMOVE | double float string move |
| 176562 | BY SMVWH | byte move string while |
| 176563 | BY SMVUN | byte move string until |
| 176564 | BY SMVTR | move translated string |
| 176565 | BY SMVTU | move string translated until |
| 176566 | BI SMOVN | string move n bits |
| 176567 | BY SMOVN | string move n bytes |
| 176570 | H SMOVN | string move n halfwords |
| 176571 | W SMOVN | string move n words |
| 176572 | F SMOVN | string move n floats |
| 176573 | D SMOVN | string move n double floats |
| 176574+(n-1) | BIn SFILL | bit string fill |
| 176600+(n-1) | Bn SFILL | byte string fill |
| 176604+(n-1) | Hn SFILL | halfword string fill |
| 176610+(n-1) | Wn SFILL | word string fill |
| 176614+(n-1) | Fn SFILL | float string fill |
| 176620+(n-1) | Dn SFILL | double float string fill |
| 176624+(n-1) | BIn SFILLN | string fill n bits |
| 176630+(n-1) | BYn SFILLN | string fill n bytes |
| 176634+(n-1) | Hn SFILLN | string fill n halfwords |
| 176640+(n-1) | Wn SFILLN | string fill n words |
| 176644+(n-1) | Fn SFILLN | string fill n floats |
| 176650+(n-1) | Dn SFILLN | string fill n double floats |
| 176654 | BY SCOMP | string compare |
| 176655 | BY SCOTR | string compare translated |
| 176676 | BY SCOPA | string compare with pad |
| 176677 | BY SCOPT | string compare translated |
| with pad | ||
| 176656 | BY SSKIP | skip elements |
| 176657 | BI SLOCA | string locate bit |
| 176660 | BY SLOCA | string locate byte |
| 176661 | BY SSCAN | string scan |
| 176662 | BY SSPAN | string span |
| 176663 | BY SMATCH | string match |
| 176664 | BY SSPAR | set parity in string |
| 176665 | BY SCHPAR | check parity in string |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 94¶
I'm sorry, the page appears to be blank without any text or tables to convert to Markdown.
Page 95¶
Appendix I¶
Instruction Code Table¶
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 96¶
Technical Data¶
Variables¶
| BI | BY | H | W | F | D |
|---|---|---|---|---|---|
| tn := | 176004 | 004 | 010 | 014 | 020 024 |
| R = | 030 | ||||
| B = | 176010 | ||||
| tn := | 176014 | 034 | 176020 | 040 | 044 050 |
| R = | 176011 | ||||
| B := | 176012 |
Operations¶
| Operation | Code 1 | Code 2 | Code 3 | Code 4 | Code 5 |
|---|---|---|---|---|---|
| tn MOVE | 176013 | 031 | 176024 | 032 | 033 054 |
| tn COMP | 176030 | 060 | 176034 | 064 | 070 074 |
| tn COMPZ | 176025 | 055 | 176026 | 056 | 057 100 |
| t TEST | 101 | 102 | 103 | 104 | 105 106 |
Logical Operations¶
| Operation | Code 1 | Code 2 | Code 3 | Code 4 | Code 5 |
|---|---|---|---|---|---|
| tn NEG | 177010 | 177014 | 220 | 224 | 224 |
| tn INV | 177020 | 177024 | 177030 | 230 | |
| tn INVC | 177420 | ||||
| tn ABS | 177040 | 177410 | 177410 | 177414 | 177414 |
Arithmetic Operations¶
| Operation | Code 1 | Code 2 | Code 3 | Code 4 | Code 5 |
|---|---|---|---|---|---|
| tn + | 176064 | 176070 | 124 | 130 | 134 |
| tn - | 176074 | 176100 | 140 | 144 | 150 |
| tn * | 176104 | 176110 | 154 | 160 | 164 |
| tn / | 176114 | 176120 | 170 | 174 | 350 |
Additional Functions¶
| Function | Code 1 | Code 2 | Code 3 | Code 4 | Code 5 |
|---|---|---|---|---|---|
| t ADD2 | 176027 | 176124 | 123 | 176126 | 176127 |
| t SUB2 | 176130 | 176131 | 340 | 176132 | 176134 |
| t MUL2 | 176135 | 176136 | 176137 | 176140 | 176141 |
Other Operations¶
| Operation | Code 1 | Code 2 | Code 3 | Code 4 | Code 5 |
|---|---|---|---|---|---|
| t DIV2 | 176142 | 176143 | 176144 | 176145 | 176146 |
| t ADD3 | 176147 | 176150 | 176151 | 176152 | 176153 |
| t SUB3 | 176154 | 176155 | 176156 | 176157 | 176160 |
| t MUL3 | 176161 | 176162 | 176163 | 176164 | 176165 |
| t DIV3 | 176166 | 176167 | 176170 | 176171 | 176172 |
Additional Technical Data¶
- ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 97¶
Technical Information¶
BI BY H W F D¶
| Command | Code |
|---|---|
| W GO | 302 |
| JUMPQ | 264 |
| B IF + GO | 304 |
| H IF + GO | 305 |
| B IF >< GO | 306 |
| H IF >< GO | 307 |
| B IF > GO | 310 |
| H IF > GO | 311 |
| B IF < GO | 312 |
| H IF < GO | 313 |
| B IF >= GO | 314 |
| H IF >= GO | 315 |
| B IF <= GO | 316 |
| H IF <= GO | 317 |
| B IF K GO | 320 |
| H IF K GO | 321 |
| B IF -K GO | 322 |
| H IF -K GO | 323 |
| B IF >> GO | 325 |
| H IF >> GO | 326 |
| B IF >>> GO | 327 |
| H IF <<< GO | 330 |
| B IF << GO | 331 |
| H IF <<= GO | 332 |
| H IF <<= GO | 333 |
Subroutines¶
| Subroutine | Code |
|---|---|
| B IF ST GO | 176173 |
| H IF ST GO | 176548 |
| B IF -ST GO | 176554 |
| H IF -ST GO | 176202 |
Loop Commands¶
| Command | Code |
|---|---|
| S t LOOPF | 176336 176337 277 176134 176435 |
| H t LOOPF | 176436 176437 341 176441 176442 |
| S t LOOPD | 176443 176444 176445 176446 176447 |
| H t LOOPD | 176450 176451 176452 176453 176454 |
| B t LOOP | 176455 176456 176457 176460 176461 |
| H t LOOP | 176462 176463 176464 176465 176466 |
Other Commands¶
| Command | Code |
|---|---|
| CALL | 303 |
| CALLG | 265 |
| INIT | 334 |
| ENTM | 337 |
| ENTD | 234 |
| ENTS | 270 |
| ENTF | 335 |
| ENTSN | 272 |
| ENTFN | 336 |
| ENTH | 274 |
| ENTB | 275 |
| RET | 200 |
| RETK | 201 |
| RETB | 177034 |
| RETBK | 177035 |
| RETD | 202 |
| RETT | 203 |
| IF K RET | 235 |
| SOLO | 177000 |
| TUTTI | 177001 |
| SETE | 176471 |
| CLLE | 176472 |
| tn SITF | 176500 |
Conversions¶
| Conversion | Code |
|---|---|
| t BICONV | 176511 176516 176523 176530 176535 |
| t BYCONV | 176504 176517 176524 176531 176536 |
| t HCONV | 176505 176512 176525 176532 176537 |
| t WCONV | 176506 176513 176520 176533 176540 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 98¶
I-4¶
| BI | BY | H | W | F | D | |
|---|---|---|---|---|---|---|
| t | FCONV | 176507 | 176514 | 176521 | 176526 | 176541 |
| t | DCONV | 176510 | 176515 | 176522 | 176527 | 176534 |
| t | BYCONR | 177160 | ||||
| t | HCONR | 177161 | ||||
| t | WCONR | 177162 | ||||
| 177163 | ||||||
| 177164 | ||||||
| 177165 | ||||||
| t | FCONR | 177203 | ||||
| 177204 | ||||||
| tn | LADDR | 177040 | 177044 | 177050 | 176474 | 176474 |
| 177054 | ||||||
| t | RLADDR | 176125 | 176132 | 176261 | 276 | 276 |
| 176262 | ||||||
| t | BLADDR | 176263 | 176274 | 176467 | 176543 | 176543 |
| 176470 |
| BP | NOOP | 003 |
|---|---|---|
| illeg. | 1 | 000 |
| illeg. | 2 | 001 |
| SETK | 177002 | |
| CLRK | 177003 |
| Wn | GETB | 177114 |
|---|---|---|
| FREEB | 176666 | |
| L := | 176473 | |
| HL := | 176667 | |
| LL := | 176670 | |
| ST1:: | 176671 | |
| TE1:: | 176673 | |
| TE2:: | 176674 | |
| TOS:: | 176675 | |
| THIA:: | 176712 | |
| L := | 176700 | |
| HL := | 176701 | |
| LL := | 176702 | |
| ST1:: | 176703 | |
| TE1:: | 176705 | |
| TE2:: | 176706 | |
| SE1:: | 176707 | |
| SE2:: | 176710 | |
| TOS:: | 176711 | |
| THIA:: | 176713 | |
| P := | 176542 | |
| An := | 177060 | |
| En := | 177064 | |
| An := | 177070 | |
| En := | 177074 |
| t | BMOVE | 176440 | 177110 | 177171 | 177172 | 177173 |
|---|---|---|---|---|---|---|
| t | SMOVE | 176546 | 176547 | 176550 | 176551 | 176552 |
| 176553 | ||||||
| t | SMVH1 | 176562 | ||||
| t | SMVUN | 176563 | ||||
| t | SMVTR | 176564 | ||||
| t | SMVTU | 176565 | ||||
| t | SMOVN | 176566 | 176567 | 176570 | 176571 | 176572 |
| t | 176573 | |||||
| tn | SFILL | 176574 | 176600 | 176604 | 176610 | 176614 |
| 176620 | ||||||
| tn | SFILLN | 176624 | 176630 | 176634 | 176640 | 176644 |
| 176650 | ||||||
| t | SCOMP | 176554 | ||||
| t | SCOTR | 176655 | ||||
| t | SCOPA | 176676 | ||||
| t | SCOPT | 176677 | ||||
| t | SKSIP | 176656 | ||||
| t | SLOCA | 176657 | 176660 | |||
| t | SCSSCAN | 176661 | ||||
| t | SSPSAN | 176662 | ||||
| t | SMATCH | 176663 | ||||
| t | SSPAR | 176664 | ||||
| t | SCPHAR | 176665 |
n exten. 374
ND-60.113.02
Page 99¶
INDEX¶
| Term | Page |
|---|---|
| absolute | 2-12 |
| actual parameters | 2-35 |
| address arithmetic | 2-12 |
| address codes | 2-5 |
| addressing modes | 2-5, 2-8 |
| absolute | 2-10 |
| absolute post-indexed | 2-10 |
| ADDR | 2-10 |
| alternative area | 2-10 |
| constant operand | 2-10 |
| descriptor | 2-10 |
| local | 2-9 |
| local indirect | 2-9 |
| local indirect p.i. | 2-9 |
| local post-indexed | 2-9 |
| pre-indexed | 2-9 |
| record | 2-9 |
| register | 2-10 |
| ALIAS | 2-20, 4-3 |
| $ALIGN$ | 2-38 |
| alternatives | 2-1 |
| ampersand | 2-2 |
| angle brackets < > | 2-35, 2-36 |
| ASCII | 2-2 |
| ASSEMBLE | 3-2 |
| assembler | 1-2, 1-3 |
| assembler operating procedure | 3-1 |
| command name | 3-1 |
| command processor | 3-1 |
| parameters | 3-1 |
| start assembler | 3-1 |
| standard editing characters | 3-1 |
| assembly notation | 2-5, F-1 |
| assembly listing format | 3-3, 3-4, 4-1 |
| AUX | 2-13, 2-16, 2-21, D-1 |
| ARRAY | 2-26 |
| ARRAY DATA | 2-27 |
| basic elements | 2-3 |
| syntax of | 2-4 |
| blank lines | 2-2 |
| BLOCK | 2-25 |
| BOUND-D | 2-28 |
| BOUND-P | 2-28 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 100¶
Page Index¶
| Topic | Page(s) |
|---|---|
| colon | 2-37 |
| commands | 2-2, 2-29 |
| conditional assembly | 2-31 |
| listing control | 2-29, 2-30 |
| miscellaneous | 2-38 |
| summary of | B–1 |
| conditional block | 2-31 |
| constant | 2-8 |
| CPU time | 4-2 |
| CROSS REFERENCE TABLE | 3-3, 4-3 |
| current location counter | 4-2 |
| DATA | 2-25 |
| data address | 2-7, 2-12, 2-18 |
| #DATE | 2-15, 2-16, D–1 |
| data packing | 2-38 |
| data part length specifier | 2-8 |
| data type specifier | 2-26, 2-17 |
| #DCLC | 2-14, D–1, 2-16, 2-28 |
| DESC | 2-26 |
| direct absolute addressing | 2-7 |
| direct operand | 2-7 |
| direct page | 2-17 |
| direct use | 2–2, 2–17 |
| data allocation | 2-35 |
| declaration and definition | 2-18 |
| location counter control | 2-27 |
| summary of | A–1 |
| disp | 2-8 |
| displacement addressing | 2-7 |
| dlabel | 2-8 |
| dollar sign | 2–1, 3–1 |
| $EJECT | 2-30 |
| $ELSE | 2-31 |
| $ELSEIF | 2-31 |
| empty statements | 2-2 |
| $ENDIF | 2-31 |
| $ENDMACRO | 2-33 |
| $EOF | 2-38 |
| EQU | 2-24 |
| error messages | 4-2 |
| exclamation mark | 2-35 |
| EXIT | 3-2 |
| $EXITMACRO | 2-34 |
| EXPORT | 2-19 |
| expression syntax | 2-16 |
| expressions | 2-11 |
| external data access | 2-18 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 101¶
Page Index¶
| Topic | Page |
|---|---|
| file name | 2-3, 2-4 |
| form feed | 2-30 |
| formal parameters | 2-33 |
| general operands | 2-8 |
| generated code | 3-3, 4-2 |
| generated symbols | 2-37 |
| global symbols | 3-3 |
| HELP | 3-2, 3-3 |
| identifier | 2-3, 2-4 |
| $IF | 2-31 |
| IMPORT-D | 2-18 |
| $INCLUDE | 2-32 |
| instructions | 2-2, 2-5 |
| instruction code | 2-5, 2-6 |
| integer constant | 2-3, 2-4 |
| intrinsic constants | 2-13, D-1 |
| intrinsic functions | 2-14, D-1 |
| LABEL | 2-37 |
| LDB | 2-19 |
| LINES | 3-2 |
| $LIST | 2-29, 3-2 |
| :LIST | 3-2 |
| 3-2 | |
| local symbols | 3-3 |
| location counter | 3-3 |
| location counter symbols | 2-14 |
| #LOGZ | 2-15, 2-16, D-1 |
| lower case letters | 2-2 |
| $MACRO | 2-33 |
| macro calls | 2-35 |
| macro definitions | 2-33 |
| macro expansions | 3-3 |
| macro nesting | 2-36 |
| MACRO-TABLE | 3-4 |
| MAIN | 2-19 |
| MESSAGE | 2-28 |
| meta language | 2-1 |
| meta variable | 2-1 |
| MNO | 2-37 |
| MODULE, ENDMODULE | 2-18 |
| MODULE EXAMPLE | 1-4 |
| MODULE HANOI | 1-5 |
| module name | 2-18 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 102¶
Content Index¶
| Term | Page |
|---|---|
| NARG | 2-13, 2-16, 2-21, D-1 |
| #NARG | 2-15, 2-16, 2-37, D-1 |
| #NCHR | 2-15, 2-16, D-1 |
| $NOLIST | 2-29, 3-2 |
| NORD-500 CPU | 1-1 |
| :NRF | 1-1, 1-2, 2-17 |
| OBJECT.CODE-BUFFER | 3-4 |
| 3-2 | |
| operand data type | 2-11 |
| integer | 2-11 |
| real | 2-11 |
| string | 2-11 |
| operand specifier | 2-7 |
| operator | 2-11 |
| optional item | 2-1 |
| ORG-D | 2-27 |
| ORG-P | 2-37 |
| $PACK | 2-38 |
| page heading | 4-1 |
| parenthesis | 2-1 |
| #PCLC | 2-14, 2-16, 2-28, D-1 |
| percent sign | 2-2 |
| plabel | 2-8 |
| PREVB | 2-13, 2-16, D-1 |
| PRINT MACRO | 3-4 |
| PROG | 2-25 |
| program address | 2-7, 2-12, 2-18 |
| program listing | 4-2 |
| #RCLC | 2-14, 2-15, 2-16, 2-21, D-1 |
| real constant | 2-3, 2-4 |
| RECORD, ENDRECORD | 2-23 |
| RECORD FIXED | 2-23 |
| register number | 2-8 |
| repeated construct | 2-1 |
| RETA | 2-13, 2-16, 2-21, D-1 |
| ROUTINE, ENDROUTINE | 2-20 |
| #SCLC | 2-14, 2-15, 2-16, 2-22, D-1 |
| $SECTION | 2-32 |
| section-name | 2-32 |
| SEQU | 2-24 |
| SINTRAN III | 1-1, 3-1 |
| source code | 4-2 |
| 3-2 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 103¶
Page¶
| Topic | Page(s) |
|---|---|
| source program format | 2-2 |
| source-line-buffer | 3-4 |
| source line number | 4-2 |
| SP | 2-13, 2-16, 2-21, D-1 |
| stack block | 2-14 |
| stack demand | 2-14 |
| STACK, ENDSTACK | 2-14, 2-21 |
| stack entry header | 2-13 |
| STACK FIXED | 2-21, 2-22 |
| STRING | 2-26 |
| STRINGDATA | 2-27 |
| string constant | 2-3, 2-4 |
| subroutine | 2-20 |
| :SYMB | 1-1, 3-2, 3-4 |
| symbol address | 2-5 |
| SYMBOL TABLE | 4-3 |
| symbols, reserved | C-1 |
| TABLE SIZES | 3-4 |
| terminal symbol | 2-1 |
| $TITLE | 2-29 |
| #ZEROC | 2-13, 2-16, D-1 |
| #ZEROP | 2-13, 2-16, D-1 |
ND-60.113.02
Scanned by Jonny Oddene for Sintran Data © 2011
Page 104¶
I'm sorry, I cannot read the content of the image provided.
Page 105¶
SEND US YOUR COMMENTS!!!¶
Are you frustrated because of unclear information in this manual? Do you have trouble finding things?
Please let us know if you - find errors - cannot understand information - cannot find information - find needless information
Do you think we could improve the manual by rearranging the contents? You could also tell us if you like the manual!
HELP YOURSELF BY HELPING US!!¶
| Manual name: | Manual number: |
|---|---|
What problems do you have? (use extra pages if needed)
Do you have suggestions for improving this manual?
| Your name: | Date: |
|---|---|
| Company: | Position: |
| Address: |
What are you using this manual for?
NOTE!
This form is primarily for documentation errors. Software and system errors should be reported on Customer System Reports.
Send to:
Norsk Data A.S
Documentation Department
P.O. Box 25, Bogerud
0621 Oslo 6, Norway
Norsk Data’s answer will be found on reverse side
Scanned by Jonny Oddene for Sintran Data © 2011
Page 106¶
Answer from Norsk Data¶
Answered by _____ Date ______
Norsk Data A.S¶
Documentation Department
P.O. Box 25, Bogerud
0621 Oslo6, Norway
Scanned by Jonny Oddene for Sintran Data © 2011
Page 107¶
I'm unable to process the content from the document shown.
Page 108¶
I'm unable to convert the content of this image as it seems to display only a colored pattern without any technical text. If there's another page or a technical document you need help with, feel free to share it!