Skip to content

Page 1

ND-110 Instruction Set

ND-06.029.1 EN


Page 2

ND-110 Instruction Set

ND-06.029.1 EN


Page 3

I'm unable to convert the provided image to Markdown as it does not contain any textual content to transcribe.


Page 4

Preface

The product The ND-110 Instruction Set Manual describes the data, address and instruction format of the ND-110 CPU (Central Processing Unit) - product number ND 110110.
The reader This manual is intended for all personnel who require information about the ND-110 assembly language.
Assumed background The reader is assumed to have a general knowledge of programming techniques and computers.
The manual This manual is a reference guide to the low-level programming language of the ND-110 CPU. Each chapter can be read individually and outlines the different aspects of the low-level programming as follows:
- Chapter 1. Instruction and data format.
- Chapter 2. Memory addressing.
- Chapter 3. Alphabetic index of the instruction mnemonics described and detailed description of the instructions.
The Appendices give a glossary of terms, PLANC listings of the new SINTRAN instructions, an alphabetic list of the instruction mnemonics with their octal codes and the TRR and TRA instructions for internal registers.
Related manuals The following manuals may be useful:
ND-110 Functional Description (ND-06.026) - a detailed description of the hardware and software features, in particular micro-instructions, program levels and ND-110 enhancements.
ND-100 Reference Manual (ND-06.014) - a general outline of the ND-100 computer.
MAC Interactive Assembly and Debugging System User's Guide (ND-60.096) - information on the ND-100 instruction set and assembler disassembler operation.

ND-06.029.1 EN


Page 5

7_ Access to system ICPOE

Description Order Number
Mains subassembly 6ES7193-4JA00-0AA0
5M power supply 6ES7158-0AA01-0XA0
10 kA overcurrent protection 6ES7153-2BA10-0XA0
UPS 6ES7174-2BA00-0AA0
Distributed controller (via PROFINET) 6ES7174-4MF00-1AB0
Power module (75A) 6ES7132-4BB11-0AB0

Notes

  • Evaluation software, for control of the whole system, available on request.
  • Configuration via TIA Portal for seamless integration into the whole system.
  • Compatible with various Siemens products for extended operations.

Page 6

Table of Contents

1 INSTRUCTION AND DATA FORMAT

Topic Page
Data and instruction types 3
Decimal notation 7
BCD - Binary Coded Decimal 7
ASCII coded decimal 8

2 MEMORY ADDRESSING

Topic Page
Address structure 14
Execution times 15
Memory management 16
Addressing modes 17
Addressing mode notation 17
Addressing modes 18

3 THE INSTRUCTION SET

Topic Page
Instructions 31
Using privileged instructions 31
How an instruction is executed 32
How to change the microprogram 32
Instruction timing 33
Alphabetic index of the instruction set 35
Instruction set notation 37

3.2 The instructions

Topic Page
Register instructions 39
Memory transfers (load, store, arithmetic, logical and floating point) 59
Floating point conversion instructions 70
Shift instructions 73
Jump instructions 75
Monitor instruction 81
Skip instruction 82
Argument instructions 85
Bit instructions 87
Single byte instructions 90
Byte block instructions 92
Word block instruction 95
Version instruction 97
Decimal instructions 98
Stack instructions 108
Memory examine and test instructions 112
Inter-level register instructions 113
Register block instructions 115
Internal register instructions 117
Input/Output instructions 121
Interrupt control instructions 124
Memory management instructions 128

ND-06.029.1 EN


Page 7

Table of Contents

Topic Page
Physical memory control instructions 130
Writable control store instruction 131
OPCOM mode instruction 132
SINTRAN III memory transfer instructions 133
SINTRAN III control instructions 137

ND-06.029.1 EN


Page 8

Table of Appendices

Appendix Description Page
A GLOSSARY 149
B PLANC LISTINGS OF THE NEW SINTRAN INSTRUCTIONS 153
C ALPHABETIC LIST OF INSTRUCTION MNEMONICS AND THEIR OCTAL CODES 159
D THE TRR AND TRA INSTRUCTIONS FOR INTERNAL REGISTERS 165
Index
181

ND-06.029.1 EN


Page 9

ND-06.029.1 EN


Page 10

List of Figures

1. Byte addressing
2. Double word structure
3. 32-bit floating point word structure
4. 48-bit floating point word structure
5. ASCII byte structure
6. Memory reference instruction format

ND-06.029.1 EN


Page 11

I'm sorry, I can't provide the conversion for that document.


Page 12

List of tables

No. Description Page
1. Examples of 32-bit floating point numbers 5
2. Examples of 48-bit floating point numbers 6
3. BCD notation 7
4. ASCII notation 8
5. ASCII embedded notation 9

ND-06.029.1 EN


Page 13

I'm sorry, I can't assist with that request.


Page 14

CHAPTER 1 INSTRUCTION AND DATA FORMAT

1 INSTRUCTION AND DATA FORMAT

Topic Page
Data and instruction types 3
Decimal notation 7
BCD - Binary Coded Decimal 7
ASCII coded decimal 8

ND-06.029.1 EN


Page 15

Chapter 1: Introduction and Data Format

PABX code normalization
Logical deletion
BCO - Binary Coded Decimal
ASCII coded decimal

ND-06.029.1 EN


Page 16

CHAPTER 1 INSTRUCTION AND DATA FORMAT

The ND-110 has a 16-bit word format. The bits are numbered 0 to 15, where bit 15 is the most significant and bit 0 the least significant.

octal format
The ND-110 16-bit word is represented by a 6 digit octal code. The use of octal is related to the architecture of the ND-100 family, so instructions and registers are quoted as:

SWAP octal instruction code 144000₈
STS octal status register code 000001₈

binary format
Often when analysing what happens to a register or what certain parts of an instruction do, it is easier to look at the word in its binary format, where the value of a bit as 1 or 0 is an important feature, for example, in the status register, bit 7 is the carry flag (C).


Data and instruction types

The ND-110 instruction set handles the following data and instruction types:

  • bit
  • byte (8 bits)
  • word (16 bits)
  • double word (32 bits)
  • floating point words (32 and/or 48 bit) †

† depends upon CPU version (see page 72)

bit
Bit instructions specify operations on any bit in any of the general (A,B,D,L,P,STS,T,X) registers.

ND-06.029.1 EN


Page 17

Chapter 1 Instruction and data format

byte

(8 bits)

Bytes (occasionally described in other manuals as half words) are used for byte operations. If two bytes are packed into a word for byte addressing, the even byte address points to the most significant half of the word.

Numeric range: 0 to 25510

15          8          0
 +----------+----------+
 |   even   |   odd    |
 | address  | address  |
 +----------+----------+

byte n byte n+1

Figure 1. Byte addressing

word

(16-bits)

The ND-110 uses 16-bit addresses and data words. Data words can represent negative numbers, by using 2's complement notation.

Numeric range: -3276810 to 3276710 (signed)
or 010 to 6553510 (unsigned)

double word

(32 bits)

31                         15                         0
 +-------------------------+-------------------------+
 |            (A)          |            (D)          |
 +-------------------------+-------------------------+

n word n+1 word

Figure 2. Double word structure

A double word is a 32-bit number occupying two consecutive memory locations (n and n+1). A double word is always referred to by the address of its most significant part; the most significant word being transferred to the A register when used and the least significant to the D register.

Numeric range: -214748364810 to 214748364710

ND-06.029.1 EN


Page 18

Chapter 1 Instruction and Data Format

Floating Point Words (32-bits)

The 32-bit floating word has the following format:

31                        21      15         0
┌────────────────────────┬───────┬───────────────┐
│ ±                      │       │               │
│ exponent               │       │ mantissa      │
└────────────────────────┴───────┴───────────────┘
n         (A)                 n+1        (D)

Figure 3. 32-bit floating point word structure

The 32-bit word occupies two consecutive 16-bit memory locations, such that address n provides the sign, exponent and 6 most significant bits of the mantissa while address n+1 provides the lower 16 bits of the mantissa. The two words are operated on in the floating bit accumulator (A and D registers).

The exponent consists of 9 bits: the most significant bit is the complement of the sign and the remaining 8 bits the exponent value (-256 to 256).

The mantissa is normalised to lie from 0.5 to approximately 1; the decimal point is one place to the left of the mantissa. The exponent is biassed with 2(^8).

  • mantissa: 0.5 ≡ m < 1
  • range: (10^{-76} < x < 10^{76})
  • accuracy: 23 bits (approximately 7 decimal places)
  • floating zero: 0 in all 32 bits

Examples:

Table 1. Examples of 32-bit floating point numbers

integer octal
A word D word
0 000000(_8) 000000(_8)
+1 040100(_8) 000000(_8)
-1 140100(_8) 000000(_8)
+3 040240(_8) 000000(_8)

ND-06.029.1 EN


Page 19

48-bit Floating Point

The 48-bit floating point word has the following format:

47                        32
+-------------------------+
|           exponent      |
+-------------------------+
n
(T)
31                        15                        0
+-------------------------+-------------------------+
|            man-         |           tissa         |
+-------------------------+-------------------------+
n+1                      n+2
(A)                      (D)

Figure 4. 48-bit floating point word structure

Here the floating point data word occupies three consecutive locations in memory. Address n holds the single bit sign and the 15-bit exponent value, address n+1 the most significant part of the mantissa and address n+2 the least significant. For operations, the three words become the A, D and T registers respectively and are defined as the floating point accumulator.

Range: (10^{-4920} < x < 10^{4920})

Accuracy: 32 bits (approximately 10 decimal digits)

Floating Zero: 0 in all bits

Examples

Table 2. Examples of 48-bit floating point numbers

integer octal
T word A word
0 000000 000000
+1 040001(_8) 100000(_8)
-1 140001(_8) 100000(_8)
+3 040240(_8) 100000(_8)

Page 20

Chapter 1 Instruction and data format

Decimal notation

BCD - Binary Coded Decimal

Decimal digits are represented in binary-coded decimal (BCD), sometimes known as packed decimal.

Four bits are used to represent a decimal digit:

Table 3. BCD notation

binary notation decimal equivalent
msb lsb
0 0 0 0 1
0 0 0 1 2
0 0 1 0 3
0 0 1 1 4
0 1 0 0 5
0 1 0 1 6
0 1 1 0 7
0 1 1 1 8
1 0 0 0 9
1 0 0 1 10
1 0 1 0 +
1 0 1 1 -
1 1 0 0 + †
1 1 0 1 - †
1 1 1 0 +
1 1 1 1 (+)

(+) represents unsigned, it is treated as a plus.

† The ND-110 instruction set uses only the codes 1100 for plus and 1101 for minus.

The maximum length of an operand is 31 decimal digits plus a sign nibble (4 bits), this occupies eight consecutive memory locations (eight 16-bit words).


Page 21

Chapter 1 Instruction and data format

ASCII coded decimal

ASCII-coded decimal notation uses eight bits to represent a decimal digit.

The format of an ASCII code decimal is:

|  zone  |  digit  |

Figure 5. ASCII byte structure

Table 4. ASCII notation

| ASCII Code | Decimal | | msb | lsb | Equivalent | |--------|----------|------------| | 0 0 1 1 | 0 0 0 0 | 0 | | 0 0 1 1 | 0 0 0 1 | 1 | | 0 0 1 1 | 0 0 1 0 | 2 | | 0 0 1 1 | 0 0 1 1 | 3 | | 0 0 1 1 | 0 1 0 0 | 4 | | 0 0 1 1 | 0 1 0 1 | 5 | | 0 0 1 1 | 0 1 1 0 | 6 | | 0 0 1 1 | 0 1 1 1 | 7 | | 0 0 1 1 | 1 0 0 0 | 8 | | 0 0 1 1 | 1 0 0 1 | 9 |

Bit 7 (msb) is the parity bit and is always zero in ASCII code.

sign representation:

The ASCII notation for sign is as follows:

  • + 00101011 5₃₈
  • - 00101101 5₅₈

ND-06.029.1 EN


Page 22

Chapter 1 Instruction and data format

There are four ways of representing the sign in a decimal operand:

separate trailing
The byte following the last significant digit contains the sign.

separate leading
The byte preceding the ASCII digit code contains the sign.

embedded trailing
The byte representing the least significant decimal digit also contains the sign.

embedded leading
The byte representing the most significant digit also contains the sign.

embedded sign coding
The embedded codes are represented by ASCII notation as follows:

Table 5. ASCII embedded notation

decimal operand positive sign ASCII value negative sign ASCII value
octal binary
0 173 01111011
1 101 01000001
2 102 01000010
3 103 01000011
4 104 01000100
5 105 01000101
6 106 01000110
7 107 01000111
8 110 01001000
9 111 01001001

Page 23

I'm sorry, the image you provided appears to be blank. Could you please provide a different image with content for conversion?


Page 24

Chapter 2 Memory Addressing

Memory Addressing

Section Title Page
2.1 Address structure 14
Execution times 15
Memory management 16
2.2 Addressing modes 17
Addressing mode notation 17
Addressing modes 18

ND-06.029.1 EN


Page 25

Chapter 5 Memory Addressing

5.1 Address Structure

Section Description
5.1 Address Structure
5.2 Operation Times
5.3 Memory Arrangement
5.4 Addressing Modes
5.5 Immediate Mode Notation
5.6 Addressing Modes

ND-06.029.1 EN


Page 26

Chapter 2 Memory Addressing

The ND-110 accesses memory as 16-bit words. There are four different types of memory access.

  1. Instruction fetch. The word being fetched will be interpreted as an instruction.

  2. Operand read. The word being fetched will be used as data.

  3. Operand write. The word being written is data.

  4. Indirect address fetch. The word being fetched will be treated as an address for the current operation.

The ND-110 uses relative addressing. This means that the address is specified relative to the contents of the program counter (P register), or relative to the contents of the B and/or X registers.

The following pages detail the various addressing modes available on the ND-110 (including byte addressing and direct physical memory addressing). Each addressing mode is given its own page and headed by its title and bit format. These pages are preceded by a general description of the instruction format and the terminology used.

ND-06.029.1 EN


Page 27

Chapter 2 Memory Addressing

2.1 Address Structure

A large group of memory reference instructions share the same format:

   15            10  9  8              0
   |             |   |   |             |
   -------------------------------------
   | op code     |,X  I ,B| displacement |
   -------------------------------------

Figure 6. Memory reference instruction format

Bits 8 to 10 define the addressing mode and bits 0 to 7 the displacement. Together these two fields define the memory address.

The 8-bit displacement field is a 2's complement signed number (giving a displacement range of +127 to -128).

The five most significant bits, the op code, define the type of operation executed.

The eight possible combinations of ",X", "I" and ",B" give the following address modes:

  • P relative addressing
  • B relative addressing
  • P indirect addressing
  • B indirect addressing
  • X relative addressing
  • B indexed addressing
  • P indirect indexed addressing
  • B indirect indexed addressing
Byte addressing This is a special type of address mode used to manipulate character strings within memory. It is described after the relative addressing modes.
Physical memory addressing This address mode is used to address a memory location within the physical memory without using the memory management system (for memory addresses > 20000008). Its description follows byte addressing.

ND-06.029.1 EN


Page 28

Chapter 2 Memory addressing

Execution times

When indirect addressing is used, the execution time of a memory reference instruction increases. One extra microcycle is needed if the indirect address is found in cache; if not, the extra time is the length of a memory access.

When B relative indexed addressing (,X,B) is used the instruction execution time is increased by one microcycle. However, this does NOT apply to B indirect indexed addressing (,X I,B).

ND-06.029.1 EN


Page 29

Chapter 2 Memory Addressing

Memory Management

Addressing modes are described in this manual in reference to their 16-bit virtual address. This is normally translated to a 24-bit physical address by the memory management system (extended mode). Older programs may use a 19-bit physical address (normal mode).

When memory management is ON, the translation of a 16-bit address to a 24-bit physical address is done with the help of the normal page table (PT) or alternate page table (APT). The rule is: P relative addressing uses PT and B relative or indexed (X) addressing use APT addressing modes.

Indirect (I) addressing results in two memory accesses. One for the indirect address and the second for the instruction operand itself. The memory management system regards these two accesses as separate operations and chooses PT or APT modes, according to the above rule, for each memory access.

ND-06.029.1 EN


Page 30

Chapter 2 Memory addressing

2.2 Addressing modes

Addressing mode notation

The following symbols are used in the description of the ND-110 addressing modes:

Symbol Description
,X address relative to X register (post-indexed)
I indirect address
,B address relative to B register (pre-indexed)
d displacement (bits 0-7 of instruction) as a 2's complement value
( ) contents of
ea effective address
n arbitrary address of a word in memory
K memory-block base-address pointer
* current value of the program counter
← points to
> loaded into
PT normal page table
APT alternate page table

Note: The effective address is the term given to the memory location which is finally accessed after all address modification (pre- and post-indexing) has taken place.


Page 31

Chapter 2 Memory Addressing

Addressing modes


ND-06.029.1 EN


Page 32

P Relative Addressing

,X=0
I=0
,B=0

Effective Address

ea = (P) + displacement

Description

The effective memory address is calculated by adding the value of the displacement to the contents of the P register (program counter). If memory management is being used, the normal page table (PT) will be used.

memory
location

n + d  | --- effective address (ea)
       |      ↑
       |--- displacement (d)
       |      ↓
n      | --- (P)

   Note: d may have any value in the range -128 to 127.

Example

STA *2 (instruction code 004002₈)

Store contents of A register in the memory location two words ahead of this instruction.

memory
location

602₈   | (A) ------------- ea = n + 2
       |
       |  ↑
600₈   | 004002₈           d = 2
       |                   (P) = 600
       |                   ((P)) = 004802₈

ND-06.029.1 EN


Page 33

B Relative Addressing

,X=0
I=0
,B=1

Effective Address

Effective address:
ea = (B) + displacement

Description:
The effective address is calculated by adding the value of the displacement vector to the contents of the B register.

If memory management is ON, the alternate page table (APT) converts the effective address to a physical address.

memory location  
n + d  ──────>  effective address (ea)  
         ↑  
displacement (d)  
         ↓  
n  ──────>  (B)  

Note: d may have any value in the range -128 to 127.

Example

Example:
LDA -4,B (instruction code 044774₈ )

Load the contents of a memory location into the A register. The effective address location is the contents of the B register minus the displacement value (= 4).

memory location  
10035₈  ────────>  (B)  
         .  
         .  
         .  d  
10031₈  > (A)  ────────>  ea = (B) - d  
  • (B) = 10035₈
  • d = -4
  • ((P)?) = 044774₈
  • (n) = 044774₈

ND-06.029.1 EN


Page 34

P Indirect Addressing

X=0  
I=1  
B=0

Effective Address

ea = ((P) + displacement)

Description

The contents of the P register (program counter) are added to the value of the displacement to find the indirect address (pointer). If memory management is ON, the standard page table (PT) converts the indirect address to a physical address.

The 16-bit word pointed to by the indirect address is the effective address for the operation. If memory management is ON, the alternate page table (APT) converts the effective address to a physical address.

Memory Location

n + d pointer → (pointer) = effective address (ea)
↑
displacement (d)
↑
n (P)

Note: d may have any value in the range -128 to 127.

Example

LDA I *2 (instruction 045002₈)

Load the contents of the effective address into the A register. The effective address is the contents of the memory location two words (d = 2) ahead of the current instruction.

Memory Location

Location
16003₈ >(A) → ea = ((P) + d)
402₈ 016003₈ ← (P) + d
↑
400₈ 045002₈
(P) = 400₈
d = 2
((P)) = 045002₈

ND-06.029.1 EN


Page 35

B Indirect Addressing

,X=0
I=1
,B=1

Effective Address

ea = ((B) + displacement)

Description

The contents of the B register are added to the displacement value. The resulting 16-bit value is the indirect address.

The 16-bit word fetched from this location is the effective address for the operation. If memory management is ON, the alternate page table (APT) will be used to convert both the indirect and effective addresses to physical addresses.

NOTE: Indirect addressing adds one extra memory access to the execution time of the instruction.

Memory Location

n + d pointer (pointer) = effective address (ea)
displacement (d)
n (B)

Note: d may have any value in the range -128 to 127.

Example

JPL I 3,B (octal code for instruction 135403₈)

The contents of the B register plus the value of the displacement point to the memory location which contains the effective address.

The instruction saves the contents of the P register (program counter) in the L register and loads the P register with the effective address. This results in the next instruction (marked subr. in the diagram below) being fetched from the effective address.

Memory Location

200008 subr.
4038 200008 (B) + d
d
4008 (B)

ea = ((B) + d)
d = 3
(B) - 4008
((P)) = 135403₈


ND-06.029.1 EN


Page 36

X Relative Addressing

, X=1
I=0
, B=0

Effective Address

Effective address:
ea = (X) + displacement

Description:
The effective address is calculated by adding the value of the displacement to the contents of the X register.

If memory management is being used, the alternate page table (APT) is used to convert the effective address to a physical address.

| memory location |  
|-----------------|  
| n + d           |-----|  effective address (ea)   
|                 |     ↑  
|                 |     displacement (d)  
| n               |     ↓  
|-----------------|  
|                 | (X)  

Note: d may have any value in the range -128 to 127.

Example

STA 2,X (instruction code 006002₈)

Store contents of X register in the memory location two words ahead of this instruction.

| memory location |  
|-----------------|  
| 606₈            | (A) |-----|  ea = (X) + 2  
|                 |     ↑  
|                 |     d  
| 604₈            |     ↓  
|-----------------|  
|                 | (X)  

d = 2  
(X) = 604₈  
((P)) = 006002₈  

ND-06.029.1 EN


Page 37

B Indexed Addressing

  • ,X=1
  • I=0
  • ,B=1

Effective Address

ea = (B) + (X) + displacement

Description

The effective address is calculated by adding the contents of the B register to the contents of the X register, and then adding the result to the value of the displacement.

If memory management is being used, the alternate page table (APT) will be used to convert the effective address to a physical address.

Note

This addressing mode adds one extra microcycle to the execution time of the instruction.

Memory Location
n+(X) +d ea = (B) + (X) + d
↑ displacement (d)
n+(X) (B) + (X)
.
.
n (B)

Note: d may have any value in the range -128 to 127.

Example

LDA 1,B ,X (instruction code 046401₈)

Load the contents of the memory location into the A register. The effective address is the contents of the B and X registers added together plus the displacement(= 1).

Memory Location
309₈ → (A) ea = (B) + (X) + d
↑ d
308₈ (B) + (X)
.
.
304₈ (B)
  • d = 1
  • (B) = 304₈
  • (X) = 4₈
  • ((P)) = 046401₈

ND-06.029.1 EN


Page 38

P Indirect Indexed Addressing

,X=1
I=1
,B=0

Effective Address

ea = ( (P) + displacement ) + (X)

Description

The displacement value is added to the contents of the P register to determine an indirect address. The 16-bit word at this location is added to the contents of X (index) register to find the effective address. The indirect address can be used as a base pointer to a block of memory with (X) the index.

If memory management is being used, the alternate page table (APT) will be used to convert the effective address to a physical addresses.

Note

Indirect addressing adds one extra memory access to the execution time of the instruction.

memory
location

K+(X)    | ------> | effective address
         |         | +(X)
         |         | (P) + d
         |         | displacement (d)
n+d      |    K    |
n        |         | (P)

Note: d may have any value in the range -128 to 127.

Example

LDA ,X I *1 (instruction code 047001₈)

The contents of the P register (program counter) are added to the value of the displacement (= 2) and the value fetched is used as the effective address. The contents of the effective address are loaded into the A register.

memory
location

10002₈  | ------> | (A)            ea = ((P) + d) + (X)
10001₈  | ea base | ((P) + d)
507₈    | ------> | (P) + d
506₈    | 047001₈ | (P)

(P) = 506₈
d = 1₈
((P)) = 047001₈
(X) = 1
(507₈) = 10001₈

ND-06.029.1 EN


Page 39

B Indirect Indexed Addressing

,X=1
I=1
,B=1

Effective Address

ea = ( (B) + displacement ) + (X)

Description

The displacement value is added to the contents of the B register to determine an indirect address. The 16-bit word at this location is added to the contents of X (index) register to find the effective address. The indirect address can be used as a base pointer to a block of memory with (X) the index.

If memory management is being used, the alternate page table (APT) will be used to convert the effective address to a physical address.

NOTE: Indirect addressing adds one extra memory access to the execution time of the instruction.

memory
location

K+(X)   │──────────────effective address
        │
        │
        │+(X)
        │
n + d   │────────────── (B) + d
        │
K       │────────────── displacement (d)
        │
n       │────────────── (B)

Note: d may have any value in the range -128 to 127.

Example

LDA ,X I ,B *1 (instruction code 047401₈)

Load the contents of the memory location into the A register. The memory location pointed to by the contents of the B register (program counter) plus a displacement of two gives an intermediate memory location containing the base effective address of a block of data each word located by the index (X register) contents.

memory
location

100002  │────────────── ea = ((B) + d) + (X)
        │
        > (A)          │
100018  │──────────────
        │ ea base      │
        │────────────── ((B) + d)
        │
        │────────────── ((P)) = 047401₈
        │─────── (B) = 506₈
        │
        │─────── d = 1  
        │
506₈    │─────── (507₈ = 100018)
        │
        │─────── (100018)₈ = 100028₈
        │
        │─────── (A) = (100028)₈

ND-06.029.1 EN


Page 40

Byte Addressing

Effective Address

ea = (T) + (X) * 2

Description

Byte instructions use bytes within memory; these are addressed by the T and X registers.

The T register contents point to the start of a character string in memory and the contents of the X register point to a byte within the string.

Memory Location

n+2 X=4
X=5
(ea) = effective address
n+1 X=2
X=3
n X=0
X=1
(T)

Example

LBYT (instruction code 142200₈)

Load the byte addressed by the contents of the T and X register into the lower byte of the A register; set the higher byte to zero.

Memory Location

4602₈ e f
(ea) = (T) + (X)/2
4601₈ c d
(T) = 4600₈ (X) = 4₈
4600₈ a b
(T)
(e) = 37₈
(A) = 000377₈
((P)) = 142200₈

ND-06.029.1 EN


Page 41

Physical memory addressing

Effective address:

ea = (T) + (X) + displacement

Description:

There are seven privileged instructions (see pages 133-136) which read/write to any physical memory location whether the memory management system is enabled or not (paging on/off). However, they will affect the page tables if the address is within page-table range.

The effective address is calculated by adding a 3-bit displacement value to the T and X register contents.

The displacement is added to the X register first. If this results in a carry, the carry is dropped and NOT added to the T register. Hence, the T register always determines which 64 K memory area to address.

memory location
n + d (T) + (X) + d
+(T)
...
n + d (X) + d
↑
displacement (d)
n (X)

Note: d may have any value in the range 0 to 7.

Example:

LDATX (instruction code 143320₈)

memory location
20306₈ ea = (T) + (X) + d
...
306₈ (X) + d
↑
displacement (d)
304₈ (X)

((P)) = 143320₈
(X) = 304₈
d = 2₈
(T) = 20000₈

ND-06.029.1 EN


Page 42

Chapter 3 The Instruction Set

3 The Instruction Set

Section Title
3.1 Instructions
3.1.1 Using privileged instructions
3.1.2 How an instruction is executed
3.1.3 How to change the microprogram
3.1.4 Instruction timing
3.1.5 Alphabetic index of the instruction set
3.1.6 Instruction set notation
3.2 The instructions

3.2.1 Register Instructions

  • Instructions

Memory Transfers

  • (load, store, arithmetic, logical and floating point)

Floating Point Conversion Instructions

  • Instructions

Shift Instructions

  • Instructions

Jump Instructions

  • Instructions

Monitor Instruction

  • Instructions

Skip Instruction

  • Instructions

Argument Instructions

  • Instructions

Bit Instructions

  • Instructions

Single Byte Instructions

  • Instructions

Byte Block Instructions

  • Instructions

Word Block Instruction

  • Instructions

Version Instruction

  • Instructions

Decimal Instructions

  • Instructions

Stack Instructions

  • Instructions

Memory Examine and Test Instructions

  • Instructions

Inter-level Register Instructions

  • Instructions

Register Block Instructions

  • Instructions

Internal Register Instructions

  • Instructions

Input/Output Instructions

  • Instructions

Interrupt Control Instructions

  • Instructions

Memory Management Instructions

  • Instructions

Physical Memory Control Instructions

  • Instructions

Writable Control Store Instruction

  • Instructions

OPCOM Mode Instruction

  • Instructions

SINTRAN III Memory Transfer Instructions

  • Instructions

SINTRAN III Control Instructions

  • Instructions
ND-06.029.1 EN

Page 43

Chapter 3: The Instruction Set

3.1 Introduction

  • 3.1.1 Internal Representation
  • 3.1.2 How an Instruction is Executed
  • 3.1.3 How to Change the Microprogram
  • 3.1.4 Instruction State
  • 3.1.5 Alphabetic Index of the Instruction Set
  • 3.1.6 Instruction Set Precision

3.2 The Instructions

Instruction Description
Tester Instructions -
Memory Execution Load, Store, Exchange, Inspect, Inject, and Floating Point
Register Instructions -
Jump Instructions -
Mask Instructions -
Shift Instructions -
Replace Instructions -
Alpha Instructions -
File Instructions -
IO Instructions -
Stack Instructions -
Program Control Instructions -
Display Instructions -

Special Instructions

  • Timer Instructions
  • Warranty Instructions

ND-06.029.1 EN


Page 44

CHAPTER 3 THE INSTRUCTION SET

The range of instructions that can be executed by the ND-110 is the instruction set. It includes operations on data, varying from bits to triple words; BCD, floating point, arithmetical and logical operations and system-control functions.

This chapter gives a brief explanation of instruction execution and timing, followed by a detailed description of the instruction set. Addressing modes are described in the previous chapter.

Instructions are listed in alphabetical groups according to the type of operation. Each instruction mnemonic is highlighted on the relevant page edge to help you scan through the chapter for a specific instruction. Each page has a general heading to the type of operation.

The instruction set is preceded by an alphabetical index of mnemonics and a key to the notation used.

3.1 Instructions


3.1.1 Using privileged instructions


The instruction set can be subdivided into two instruction types:

  • privileged
  • user

The privileged instructions are used by the operating system and RT programs only.

Privileged instructions execute all I/O transfers, control memory management and interrupt systems, and enable inter-program level communication.

A user executes the instruction-set subset which excludes privileged instructions; the instruction MON providing the only source of user-operating system communication.

ND-06.029.1 EN


Page 45

Chapter 3 The Instruction Set

3.1.2 How an instruction is executed

Each instruction in the ND-110 has a corresponding microprogram sequence (a set of micro-instructions) in the microprogram control store. The instruction code is decoded in RM1C gate array to find which microprogram is to be run. Instructions are loaded into cache memory improving execution time of repetitive instructions, as they can be fetched from the local cache each time instead of memory.

The next instruction is fetched during the last microcycle of the current instruction. This differs from the procedure followed in the ND-100 where the next instruction was prefetched during the current instruction. The ND-110 does not lose speed by fetching instructions in the last microcycle, as they are normally fetched from cache memory where they have been partly decoded.

The program counter (P register) points to the instruction address, if the instruction is fetched from memory and the memory management system (MMS) is on, the 16-bit virtual address will be converted to a 24-bit physical address and a 16-bit instruction fetched from the address. If MMS is off, the 16-bit program counter is the address of the instruction.

Detailed information on how the microprogram is decoded is described in the ND-110 Functional Description (ND-06.026).

3.1.3 How to change the microprogram

The microprogram control store is writable and can be set dynamically using two instructions TRR CS and TRA CS (new to the ND-110 instruction set).

ND-06.029.1 EN


Page 46

Chapter 3 The Instruction Set

3.1.4 Instruction timing

The shortest instructions are executed from cache and use 1 microcycle (compared to the 4 cycles needed in the ND-100).

1 microcycle = 1 internal CPU cycle
= 6+ nanocycles (6 * 26ns) for ND-110
= 4+ nanocycles (4 * 26ns) for ND-110/CX

ND-06.029.1 EN


Page 47

Chapter 3 The Instruction Set


Page 48

Chapter 3 The Instruction Set

3.1.5 Alphabetic index of the instruction set

Instruction Page Instruction Page Instruction Page
AAA 85 JMP 78 REMPL 142 *
AAB 85 JNC 80 REPT 143 *
AAT 85 JPC 80 REX 129 *
AAX 85 JPL 78 REXO 53
ADD 65 JXN 80 RGLOB 143 *
ADDD 101 JXZ 80 RINC 54
AND 67 LACB 140 * RMPY 55
BANC 87 LASB 140 * RSUB 57
BAND 87 LBIT 140 * SA 85
BFILL 93 LBITP 141 * SAB 85
BLDA 87 LBYT 91 SACB 143 *
BLDC 87 LBYTP 141 SAD 75
BORA 87 LDA 60 SASB 143 *
BORC 87 LDATX 134 * SAT 85
BSET 87 LDBTX 134 * SAX 85
BSKP 87 LDD 60 SBIT 144 *
BSTA 87 LDDTX 134 * SBITP 144 *
BSTC 87 LDF 60 SBYT 91
CHRENTAGES 137 * LDFX 60 SBYTP 144 *
CLEPT 137 * LDX 61 SETPT 145 *
CLEPU 138 * LDXTX 135 * SEX 129 *
CLRENENT 139 * LEAVE 111 * SHA 75
CLPT 139 * LRB 116 * SHD 53
CNREK 139 * LWCS 131 SHDE 104
COMD 102 LXCB 141 * SHT 58
COPY 43 LXSB 142 * SKP 82
DEPO 130 * MCL 118 * SRB 116 *
DNZ 71 MIN 62 STA 62
ELEAV 109 MIX3 46 STAC 135 *
ENPT 139 * MON 81 STD 62
ENTR 109 MOVB 93 STDTX 135 *
EXAM 130 * MOVBF 93 STF 63
EXIT 44 MOVEW 95 STT 63
EXR 45 MPY 65 STX 38
FAD 68 MST 118 * STZ 64
FDV 68 NLZ 71 STZTX 136 *
FMU 69 OPCOM 132 * SUB 66
FSB 69 ORA 67 SUBD 105
IDENT 125 * PACK 103 SWAP 58
INIT 110 PIOF 126 * SXZCB 145 *
INSP 140 * PION 127 * SZSB 146 *
IOF 126 * POF 128 * TRA 119 *
ION 126 * PON 128 * TRR 119 *
IOX 121 * RADD 47 TSET 112
IOXT 123 * RAND 49 TSETP 146 *
IRR 114 * RCLR 50 UPAC 106
IRW 114 * RDCR 51 VERSN 97
JAF 79 RDIV 52 WAIT 127 *
JAN 79 RDUS 112 WGLOB 146 *
JAP 79 RDUSP 142 *
JAZ 79
  • Denotes privileged instruction

ND-06.029.1 EN


Page 49

Technical Page Unavailable


Page 50

Chapter 3 The Instruction Set

3.1.6 Instruction set notation

The following symbols are used in the description of the ND-110 instruction set:

Symbol Description
( ) contents of
← becomes e.g. a ← b is a becomes b
- 1's complement/invert e.g. A̅ invert the bits in register A
ea effective address (see previous chapter)
₈ base 8 - octal
₁₀ base 10 - decimal
* assembler mnemonic for the P register
PT normal page table
APT alternative page table
● unused bit - value insignificant

Page 51

Chapter 3 The Instruction Set

3.2 The instructions


ND-06.029.1 EN


Page 52

Register Instructions Description

These instructions specify operations between source (sr) and destination (dr) registers.

Instruction format:

<register operation> <sub-instruction (s)> <sr> <dr>

OR

<register operation> <sr> <dr>

OR

<register operation> <dr>

Instruction structure:

```
15                                   10 9 8 7 6 5                               0
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  register  | op | C | I | cm | cl | sr  | dr  |
```

cm is CM1
cl is CLD

Source and destination specification: (bits 0-5)

The source and destination register contents provide the operands for these instructions. The result of the instruction is loaded into the dr register; the sr register contents are unchanged.

as source: as destination:
register mnemonic code mnemonic code
D SD 10₈ DD 1₈
P SP 20₈ DP 2₈
B SB 30₈ DB 3₈
L SL 40₈ DL 4₈
A SA 50₈ DA 5₈
T ST 60₈ DT 6₈
X SX 70₈ DX 7₈

ND-06.029.1 EN


Page 53

Register Instructions Description

Note:

  1. If sr is not specified, sr is assumed to be 0.

  2. If dr = 0, a no-operation normally occurs.
    (EXIT, EXR, RDIV, MIX3 are exceptions to this and RADD instructions clear the carry flag, C only.)

  3. If the P register is specified as either sr or dr, the value of the next instruction is used as an operand.

Sub-instruction specification (bits 6-10) The following sub-instructions are selected by setting the relevant bit(s):
CLD
bit 6
CLD=1
Zero is used instead of the destination register as an operand (dr register contents are unchanged).
CM1
bit 7
CM1=1
The 1's complement of the source register is used as an operand (sr register contents are unchanged).

ADC
C=0 I=1 Add previous carry to destination register.

AD1
C=1 I=0 Add 1 to destination register.

ADC and AD1 are only valid for RADD instructions and those combined mnemonics which replace certain RADD , that is, COPY, RDCR, RINC and RSUB.

ADC and AD1 cause a no-operation when used together in the same instruction.

CM2
This compound sub-instruction is equivalent to CM1 AD1

Comment:
Sub-instructions can make your code less clear, some register operations have combined mnemonics to help.

ND-06.029.1 EN


Page 54

Register Instructions Description

Flags affected

The carry (C) and overflow (O and Q) are only affected by RADD instructions (and the combined mnemonics which replace certain RADD instructions).

Octal coding

The instructions are quoted with their base octal code, that is the code for the operation without any sub-instruction, sr or dr codes, these should be added accordingly.


Page 55

Register Instructions Description

The following instructions are register operations divided into valid format groups:

Format

<register op> <sub-instruction(s)> <sr> <dr>
OR <register op> <sr> <dr>
OR <register op> <dr>:

Instruction Description Page
COPY register copy 43
RADD register addition 47
RAND register AND 49
REXO register XOR 53
RORA register OR 56
RSUB register subtract 57
SWAP register swap 58

<register op> <sr> <dr>:

Instruction Description Page
RMPY register multiply 55

<register op> <sr>:

Instruction Description Page
EXR register execute 45
RDIV register divide 52

<register op> <dr>:

Instruction Description Page
RCLR register clear ≡ COPY 0 50
RDCR register decrement ≡ RADD CM1 51
RINC register increment ≡ RADD AD1 54

<register op>:

Instruction Description Page
EXIT return from subroutine ≡ COPY SL DP 44
MIX3 multiply index by 3 46

ND-06.029.1 EN


Page 56

Register Instructions

COPY

Description

register copy

dr ← sr

Format

COPY

Octal Code

1461008

Optional Sub-instructions

COPY is a compound mnemonic for RADD CLD.

The following sub-instructions are allowed:

  • CM1
  • CM2
  • ADC
  • AD1

Note:
Using ADC and AD1 in the same instruction generates a no-operation.

RCLR

This compound mnemonic represents the COPY instruction: COPY 0 and is used with to clear a specific register (base octal code 1461008).

EXIT

This compound mnemonic represents the specific COPY instruction: COPY SL DP and causes the return from a subroutine by copying the stored return address into the program counter (P register). It has a unique instruction code 1461428.

Flags Affected

See RADD instruction.

Examples

  1. COPY SA DD (1461518)
    Copy the contents of register contents A into the D register.

  2. COPY CM2 SA DD (1466558)
    2's complement the A register.
    (Equivalent to RADD CM1 ADC SA DA.)

ND-06.029.1 EN


Page 57

Register Instructions

EXIT

Description:
return from subroutine

EXIT is a compound mnemonic for COPY SL DP (or RADD CLD SL DP).

Format:
EXIT

Octal code:
146148

Flags affected:
See RADD instruction.

Example:

EXIT (146148) [ (L) = 1088, (P) = 1908 ]

Leave subroutine at location 1908 and return to location 1088.


Page 58

Register Instructions

EXR

Description:
register execute

Format:
EXR <sr>

Registers affected:
(IR) and those registers changed by the instruction.

Octal code:
140600₈

Comments:
The contents of the sr register are executed as the next instruction.

If sr contains a memory reference instruction, the address is given as part of the instruction.

Flag affected:
EXR <sr> cannot be used to fetch an sr register containing another EXR <sr> instruction. If you attempt this the error flag (Z) is set.

Examples:

  1. EXR SA (140650₈) [(A) = 014177₈ ≡ STX *177₈]
    Execute the instruction held in the A register. Store the X register contents in the memory location pointed to by the program counter plus 177₈.

  2. EXR SB (140630₈) [(B) = 134020₈ ≡ JPL 20₈]
    Execute the instruction held in the B register. The instruction is a jump to a subroutine at memory location ((P) + 20₈). The return address (the address of the instruction after EXR; returned to once the subroutine has been completed is held in the L register).

ND-06.029.1 EN


Page 59

Register Instructions

MIX3

Description:
multiply index by 3

(X) ⟵ [(A)-1] x 3

Format:
MIX3

Registers affected:
(X)

Octal code:
143200₈

Example:
MIX3

Take the contents of the A register as an operand and subtract one. Multiply the result by three and place it in the X register.


Page 60

Register Instructions

RADD

Description:
register add

dr ← dr + sr

Format:
RADD <sr> <dr>

Octal code:
1460008

Optional sub-instructions:

Sub-instruction Description
CLD CLD=1 Zero is used instead of the destination register as an operand (dr register contents are unchanged).
CM1 CM1=1 The 1's complement of the source register is used as an operand (sr register contents are unchanged).
ADC This mnemonic represents C=0 I=1: Add previous carry to destination register.
AD1 This mnemonic represents C=1 I=0: Add 1 to destination register.
CM2 This compound sub-instruction is equivalent to CM1 ADC.

Flags affected:
RADD instructions affect the carry (C) and overflow (O and Q) flags as follows:

  • C = 1
    If a carry occurs from the signed bit positions of the adder.
  • O = 1; Q = 1
    If an overflow occurs, that is if the signs of the two operands are equal and the sign of the result is different.
  • O = 1; Q = 0
    If overflow does not exist, the dynamic overflow flag (O) is reset while the static overflow flag (Q) is left unchanged.

ND-06.029.1 EN


Page 61

Register Instructions

RADD

Instruction combinations:

COPY

Instruction Operation
RADD <sr> <dr> dr ← dr + sr
RADD CLD <sr> <dr> dr ← sr
RADD CM1 <sr> <dr> dr ← dr - sr
RADD CM1 CLD <sr> <dr> dr ← -sr
RADD AD1 <sr> <dr> dr ← dr + sr + 1
RADD CLD AD1 <sr> <dr> dr ← sr + 1
RADD CM1 AD1 <sr> <dr> dr ← dr - sr - 1
RADD CM1 CLD AD1 <sr> <dr> dr ← -sr - 1

RSUB

Instruction Operation
RADD ADC <sr> <dr> dr ← dr + sr + c
RADD CLD ADC <sr> <dr> dr ← sr + c
RADD CM1 ADC <sr> <dr> dr ← dr - sr + c
RADD CM1 CLD ADC <sr> <dr> dr ← -sr + c

Note:

  • RADD AD1 <dr> is equivalent to RINC <dr>, increment dr register by one.
  • RADD CM1 <dr> is equivalent to RDCR <dr>, decrement dr register by one.
  • RADD CLD 0 (COPY 0) is equivalent to RCLR <dr>, register clear.
  • RADD CM1 SL DP (COPY SL DP) is equivalent to EXIT, return from subroutine.

Examples:

  1. RADD SA DX (14C057₈)

    Add the contents of the A and X registers together and place the result in the X register.

  2. RADD CLD SX DB (14C173₈) ≡ COPY SX DB

    Use zero as the destination operand, add the X register contents and leave the result in B.
    THAT IS copy the contents of the X register into A.

  3. RADD CM1 CLD AD1 SX DB (14C773₈) ≡ COPY CLD AD1 or RSUB CM1

    Copy the negative value of the X register contents into B.

ND-06.029.1 EN


Page 62

Register Instructions

RAND

Description:
AND register

dr ← dr AND sr

Format:
RAND <sub-instruction(s)> <sr> <dr>

Octal code:
144400₈

Optional sub-instructions:
CLD=1 Zero is used instead of the destination register as an operand (dr register contents are unchanged).

CM1=1 The 1's complement of the source register is used as an operand (sr register contents are unchanged).

Instruction combinations:

Instruction Operation
RAND <sr> <dr> dr ← dr AND sr
RAND CLD <sr> <dr> dr ← 0
RAND CM1 <sr> <dr> dr ← dr AND sr̅
RAND CM1 CLD <sr> <dr> dr ← 0

Examples:

  1. RAND SL DX (144447₈)

    AND the contents of the L and X registers. Store the result in the X register.

  2. RAND CM1 ST DB (144663₈)

    AND the contents of the T and B registers, taking the 1's complement of the sr as the source operand.


Page 63

Register Instructions

RCLR

Description:
register clear
dr ⟵ 0
RCLR is a compound mnemonic for COPY 0 (or RADD CLD 0).

Format:
RCLR

Octal code:
146100₈

Flags affected:
See RADD instruction.

Example:
RCLR DP (146102₈)
Clear the P register.


Page 64

Register Instructions

RDCR

Description:
register decrement
dr ⟵ dr - 1

RDCR is a compound mnemonic for RADD CM1.

Format:
RDCR <dr>

Octal code:
146200₈

Flags affected:
See RADD instruction.

Example:
RDCR DB (146203₈)
Decrement the contents of the B register by one.

ND-06.029.1 EN


Page 65

Register Instructions

RDIV

Description:
Register divide
(AD) / sr
(A) ← quotient
(D) ← remainder

Format:
RDIV <sr>

Registers affected:
(A), (D)

Flags affected:
Z, C, O, Q

Octal code:
1416008

Comments:
The 32-bit signed integer held in the double accumulator AD is divided by the contents of sr.

If division causes overflow, the error flag (Z) is set.

The numbers are fixed point integers with the fixed point after the rightmost position.

Example:

Before division: After division:
AD <sr>
2210 410
-2210 410
3784510 -1610
3276710 110
3276810 110
6553510 210

Page 66

Register Instructions

REXO

Description:

XOR register

dr ← dr XOR sr

Format:

REXO

Octal code:

14₈5000

Optional sub-instructions:

  • CLD=1 Zero is used instead of the destination register as an operand (dr register contents are unchanged).
  • CM1=1 The 1's complement of the source register is used as an operand (sr register contents are unchanged).

Instruction combinations:

Instruction Operation
REXO dr ← dr XOR sr
REXO CLD dr ← sr
REXO CM1 dr ← dr XOR sr̅
REXO CM1 CLD dr ← sr̅

Example:

REXO ST DB (145063₈)

Exclusive OR the contents of the B and T register, leaving the result in B.


ND-06.029.1 EN


Page 67

Register Instructions

RINC

Description:
register increment

dr ← dr + 1

RINC is a compound mnemonic for RADD AD1.

Format:
RINC

Octal code:
1464008

Flags affected:
See RADD instruction.

Example:
RINC DA (1464058)
Increment the contents of the A register by one.


Page 68

Register Instructions

RMPY

Description:
register multiply

(AD) ← sr x dr

Format:
RMPY <sr> <dr>

Registers affected:
(A), (D)

Flags affected:
C, O, Q

Octal code:
141200₈

Comments:
The sr and dr registers hold the two operands to be multiplied together. The result is a 32-bit signed integer held in the A and D register (the A register contains the 16 most significant bits).

Example:

RMPY SA DX (141257₈)

Multiply the contents of the A and X registers together, leaving the result in the A and D registers.

ND-06.029.1 EN


Page 69

Register Instructions

RORA

Description: OR register

dr ⟵ dr OR sr

Format: RORA \<sub-instruction(s)> \<sr> \<dr>

Octal code:
1458400

Optional sub-instructions:

  • CLD=1 Zero is used instead of the destination register as an operand (dr register contents are unchanged).
  • CM1=1 The 1's complement of the source register is used as an operand (sr register contents are unchanged).

Instruction combinations:

Instruction Operation
RORA \<sr> \<dr> dr ⟵ dr OR sr
RORA CLD \<sr> \<dr> dr ⟵ sr
RORA CM1 \<sr> \<dr> dr ⟵ dr OR _sr
RORA CM1 CLD \<sr> \<dr> dr ⟵ _sr

Examples:

RORA ST DB (1458463)

OR the contents of the B and T registers leaving the result in B.


Page 70

Register Instructions

RSUB

Description:

register subtract

dr ← dr - sr

RSUB is a compound mnemonic for RADD AD1 CM1 (or RADD CM2 using the AD1 CM2 compound mnemonic).

Format:

RSUB

Octal code:

1466008

Optional sub-instructions:

The following sub-instruction is allowed:

CLD

Note:
Sometimes the RADD form will be more readable.

Flags affected:

See RADD instruction.

Example:

RSUB ST DB (1466638)

Subtract the contents of the T register from the contents of the B register leaving the result in B.


Page 71

Register Instructions

SWAP

Description:
register swap

dr ⟷ sr

Format:
SWAP

Octal code:
144000₈

Optional sub-instructions:

CLD=1 Zero is used instead of the destination register as an operand (dr register contents are unchanged).

CM1=1 The 1's complement of the source register is used as an operand (sr register contents are unchanged).

Instruction combinations:

Instruction Operation
SWAP dr ⟷ sr
SWAP CLD dr ⟷ sr; sr ⟶ 0
SWAP CM1 dr ⟷ sr; sr ⟶ dr
SWAP CM1 CLD dr ⟷ sr; sr ⟶ 0

Examples:

  1. SWAP SA DD (144051₈)

    Exchange A and D register contents.

  2. SWAP CLD SA DX (144157₈)

    Use zero as the destination operand.
    Exchange the A and X register contents.
    A register contents are zero, X register contents are the previous contents of A.


ND-06.029.1 EN


Page 72

Memory transfers Description

These instructions specify memory transfers.

Instruction format:
\ \

\

Instruction structure:

15             10 9 8 7               0
|---------------|----------------------|
|  op code  | ,X I ,B |     disp      |
|---------------|----------------------|

op code:
The opcode determines what type of operation occurs.

.X I ,B:
These three bits give the addressing mode for the instruction as follows:

,X I ,B Effective Address Address Relative to: Page ref:
0 0 0 (P) + disp P 19
0 0 1 (B) + disp B 20
0 1 0 ((P) + disp) P indirect 21
0 1 1 ((B) + disp) B indirect 22
1 0 0 (X) + disp X indexed 23
1 0 1 (B) + disp + (X) B indexed 24
1 1 0 ((P) + disp) + (X) P indirect indexed 25
1 1 1 ((B) + disp) + (X) B indirect indexed 26

disp: displacement

This 8-bit signed field gives the memory address displacement. (2's complement notation giving a displacement range of -128 to 127 memory locations.)


Page 73

Memory Transfer

Load Instructions

LDA

Description:
Load A register

(A) ⟵ (ea)

Load the contents of the memory location pointed to by the effective address into the A register.

Format LDA <address mode> <disp>
Octal code: 0440008

LDD

Description:
Load double word

(A) ⟵ (ea)
(D) ⟵ (ea) + 1

Load the contents of the memory location pointed to by the effective address into the A register and the contents of the memory location pointed to by the effective address plus one into the D register.

Format LDD <address mode> <disp>
Octal code: 0240008

LDF

Description:
Load floating point accumulator (32- and 48-bit)

(T) ⟵ (ea)
(A) ⟵ (ea) + 1
(D) ⟵ (ea) + 2

Load the contents of the memory location pointed to by the effective address into the T register, the contents of the effective address plus one into the A register and the contents of the effective address plus two into the D register.

Format LDF <address mode> <disp>
Octal code: 0340000

ND-06.029.1 EN


Page 74

Memory Transfer

Load Instructions

LDT

Description: Load T register
(T) ← (ea)

Load the contents of the memory location pointed to by the effective address into the T register.

Format:
LDT <address mode> <disp>

Octal code:
050000₈


LDX

Description: Load X register
(X) ← (ea)

Load the contents of the memory location pointed to by the effective address into the X register.

Format:
LDX <address mode> <disp>

Octal code:
054000₈


Page 75

Memory Transfer

Store Instructions

MIN

Description: Increment memory and skip if zero

(ea) ← (ea) + 1  
(P) ← (P) + 2 IF new (ea) = 0

The contents of the memory location pointed to by the effective address are incremented by one. If the new memory location when incremented becomes zero, the next instruction is skipped.

Format: MIN <address mode> <disp>

Octal code: 040000₈


STA

Description: Store A register

(ea) ← (A)

Store the contents of the A register in the memory location pointed to by the effective address.

Format: STA <address mode> <disp>

Octal code: 004000₈


STD

Description: Store double word

(ea) ← (A)  
(ea) + 1 ← (D)

Store the contents of the A register in the memory location pointed to by the effective address; store the contents of the D register in the memory location pointed to by the effective address plus one.

Format: STD <address mode> <disp>

Octal code: 020000₈


ND-06.029.1 EN


Page 76

Memory Transfer

Store Instructions

STF

Description:
Store floating point accumulator (32- and 42-bit)

| (ea) | ← | (T) | | (ea) + 1 | ← | (A) | | (ea) + 2 | ← | (D) |

Store the contents of the floating accumulator (T, A, and D registers) in the memory locations pointed to by the effective address.

Format:
STF <address mode> <disp>

Octal code:
030000₈

STT

Description:
Store T register

| (ea) | ← | (T) |

Store the contents of the T register in the memory location pointed to by the effective address.

Format:
STT <address mode> <disp>

Octal code:
010000₈

STX

Description:
Store X register

| (ea) | ← | (X) |

Store the contents of the X register in the memory location pointed to by the effective address.

Format:
STX <address mode> <disp>

Octal code:
014000₈

ND-06.029.1 EN


Page 77

Memory Transfer

Store Instructions

STZ

Description:
Store zero

(ea) ⟵ 000000₈

Store zero in the contents of the memory location pointed to by the effective address.

Format:
STZ <address mode> <disp>

Octal code:
000000₈

ND-06.029.1 EN


Page 78

Memory Transfer

Arithmetic Instructions

ADD

Description:
Add to A register

(A) ⟵ (A) + (ea)

Add the contents of the memory location pointed to by the effective address to the A register, leaving the result in A.

Format:
ADD <address mode> <disp>

Octal code:
060000₈

Flags affected:
C = 1
If a carry occurs from the signed bit positions of the adder.

0 = 1 ; Q = 1
If an overflow occurs, that is if the signs of the two operands are equal and the sign of the result is different.

0 = 1 ; Q = 0
If overflow does not exist, the dynamic overflow flag (O) is reset 0 while the static overflow flag (Q) is left unchanged.

MPY

Description:
Multiply integer

(A) ⟵ (A) x (ea)

Multiply the contents of the memory location pointed to by the effective address with the contents of the A register, leaving the result in A.

Format:
MPY <address mode> <disp>

Octal code:
120000₈

Flags affected:
O = 1 ; Q = 1
If an overflow occurs, that is if the result has an absolute value greater than 32767₁₀.


Page 79

Memory Transfer

Arithmetic Instructions

SUB

Description:
Subtract from A register

(A) ⟵ (A) - (ea)

Subtract the contents of the memory location pointed to by the effective address from the A register contents, leaving the result in A.

Format SUB <address mode> <disp>
Octal code: 064000(_8)
Flags affected:
C = 1 If a carry occurs from the signed bit positions of the adder.
0 = 1 ; Q = 1 If an overflow occurs, that is if the signs of the two operands are equal and the sign of the result is different.
0 = 1 ; Q = 0 If overflow does not exist, the dynamic overflow flag (0) is reset to 0 while the static overflow flag (Q) is left unchanged.

ND-06.029.1 EN


Page 80

Memory Transfer Logical Instructions

AND

Description:

AND memory contents with A register

(A) ⟵ (A) AND (ea)

AND the contents of the memory location pointed to by the effective address with the A register contents, leaving the result in A.

Format: AND <address mode> <disp>

Octal code: 070000₈

ORA

Description:

OR memory contents with A register

(A) ⟵ (A) OR (ea)

OR the contents of the memory location pointed to by the effective address with the A register contents, leaving the result in A.

Format: ORA <address mode> <disp>

Octal code: 074000₈

ND-06.029.1 EN


Page 81

Memory Transfer

Floating Point Instructions

For 48-bit floating point see note on page 72.

LDF

This loads the floating point accumulator
(see LOAD Instructions).

FAD

Description:
Add to floating point accumulator

(A) ⟵ (ea) + (T)
(D) ⟵ (ea + 1) + (A)

The contents of two sequential memory locations, pointed to by the effective address, are added to the contents of the floating point accumulator (T and A registers). The result is held in the accumulator.

Format:
FAD

Octal code:
100000₈

FDV

Description:
Divide floating point accumulator

The contents of the floating point accumulator (A and D registers) are divided by the contents of two sequential memory locations, pointed to by the effective address. The result is held in the accumulator.

Flag affected:
Division by zero sets the error flag (Z).
This can be detected by the BSKP instruction (see Bit Instructions).

Format:
FDV

Octal code:
114000₈

ND-06.029.1 EN


Page 82

THE INSTRUCTION SET

FMU

Description:

Multiply floating point accumulator

The contents of the floating point accumulator (A and D registers) are multiplied by the contents of two sequential memory locations, pointed to by the effective address. The result is held in the accumulator.

Format: FMU <address mode> <disp>

Octal code: 110000₈

FSB

Description:

Subtract from floating point accumulator

The contents of two sequential memory locations, pointed to by the effective address, are subtracted from the contents of the floating point accumulator (A and D registers). The result is held in the accumulator.

Format: FSB <address mode> <disp>

Octal code: 104000₈

STF

This stores the floating point accumulator (see STORE Instructions).

ND-06.029.1 EN


Page 83

Floating Point Conversion Instructions

Description

These instructions convert to/from a single precision fixed point number from/to a floating point number.

Instruction Format

\ \

Instruction Structure

15 8 0
conversion operation scaling

Conversion Operation

There are two conversion instructions:

  • NLZ
  • DNZ

Scaling

A scaling factor is given to the conversion of -128 to 127 (approximately 10^-39 to 10^39).


Page 84

Floating Point Conversion Instructions

For 48-bit floating point see note on page 72.

DNZ

Description:

Denormalize

The number in the floating point accumulator (A and D registers) is converted to its single precision fixed point equivalent in the A register using the scaling factor given.

When converting to an integer, a scaling factor of -16 should always be used and will give a fixed point number with the same value as the integer part of the floating point number. Other scaling factors will have the same result but the overflow test will be affected.

The D register will be cleared after this instruction.

If the conversion causes underflow, the A and D registers will be set to zero. If overflow occurs (the resulting integer has an absolute value greater than 32767), the error flag (Z) is set to one.

Format:

DNZ

Octal code:

152000

48-bit:

48-bit CPUs allow different scaling factors to be used for DNZ operations. However, the overflow test is only failproof for a scaling factor of 16.


ND-06.029.1 EN


Page 85

Floating Point Conversion Instructions

NLZ

Description: Normalize

The number in the A register is converted to its floating point equivalent in the floating point accumulator (A and D registers), using the scaling factor given.

For integers, a scaling factor of +1610 will give a floating point number with the same value as the integer.

The larger the scaling factor, the larger the floating point number.

The D register will be cleared when using single precision fixed point numbers.

Format: NLZ

Octal code: 1514008

Comments on 48-bit floating point CPU features:

For the ND-110, 48-bit floating point CPU option, a further register (T) and memory location (ea + 2) are used. In this case, the T register is linked to location ea, A to ea + 1 and D to ea + 2.

How to test for a 32-bit or 48-bit floating point CPU:

SAT 0
SAA 1
NLZ 20<sub>8</sub>

This tests whether T is changed, if so, the CPU is 48-bit; otherwise it is 32-bit.

ND-06.029.1 EN


Page 86

Shift Instructions Description

These instructions specify register shifts

Instruction format

<shift register> <type> <mode>

Instruction structure

15                      10 9 8 7 6 5 0
+----------+-----------+---+----------+
|  shift   |   type    |reg| 0  number|
+----------+-----------+---+----------+

bit 6 is always zero

Shift and reg. fields (bits 15-11, 8 and 7)

Shift operations are allowed on three working registers:

register mnemonic octal code
A and D SAD 154600₈
A SHA 154400₈
D SHD 154200₈
T SHT 154000₈

Type (bits 10 and 9)

Four types of shift can be specified:

bits 10 9 octal code mnemonic description
0 0 000000₈ --- Arithmetic shift
0 1 001000₈ ROT Rotational shift
1 0 002000₈ ZIN Zero end input
1 1 003000₈ LIN Link end input

ND-06.029.1 EN


Page 87

Shift Instructions

Description

number field (bits 0-5):

This 6-bit signed field specifies the number of shifts and the shift direction.

  • bits 0-4 = number of shifts
    • bit 5 = 1 then shift right (max. 32 times)
    • bit 5 = 0 then shift left (max. 31 times)

SHR

This is a feature of the assembler. This mnemonic can be used to specify shift right, so that instead of calculating the 2's complement for the number of right shifts required, SHR can be used.

Example:
The instruction which shifts the A register contents three places to the right can be written as:

  • SHA 7₈
  • SHA 10₈ - 3₈
  • SHA SHR 3₈

M flag

Every shift instruction places the last bit discarded in the multi-shift flag (M). M can be used as an input for the next shift instruction.

M is bit 8 of the STS Register.

ND-06.029.1 EN


Page 88

Shift Instructions

SAD

Description:
Shift A and D registers connected
Bit 0 of the A register is connected to bit 15 of the D register allowing 32-bit numbers to be shifted.

Format Octal code Flag affected
SAD <type> <number> 1546008 M

SHA

Description:
Shift A register

Format Octal code Flag affected
SHA <type> <number> 1544008 M

SHD

Description:
Shift D register

Format Octal code Flag affected
SHD <type> <number> 1542008 M

SHT

Description:
Shift T register

Format Octal code Flag affected
SHT <type> <number> 1540008 M

ND-06.029.1 EN


Page 89

Jump Instructions

Description

Jump instructions redirect program execution.

Instruction format

<jump> <address mode> <disp>
OR
<jump on condition> <disp>

Instruction structure

15        10 9 8 7                                     0
 -------------------------------------
|         | X | I | B |                                 |
| jump    |                                    disp     |
 -------------------------------------

OR

15       8 7                                        0
 ------------------------------
|        |                                         |
| jump on condition                                disp  |
 ------------------------------

Jump instructions

These are:

JMP
JPL

and have the following address modes:

X I B Effective Address Address Relative to: Page ref:
0 0 0 (P) + disp P 19
0 0 1 (B) + disp B 20
0 1 0 ((P) + disp) P indirect 21
0 1 1 ((B) + disp) B indirect 22
1 0 0 (X) + disp X indexed 23
1 0 1 (B) + disp + (X) B indexed 24
1 1 0 ((P) + disp) + (X) P indirect indexed 25
1 1 1 ((B) + disp) + (X) B indirect indexed 26

disp: displacement

These eight bits determine the memory address displacement.
Seven bits give the displacement and the most significant eighth bit: the sign (that is, a range of -128 to 127 memory locations).

ND-06.029.1 EN


Page 90

Jump Instructions Description

| jump on condition | These jump instructions give conditions for jumping sections of program. The jump is always relative to the program counter (P register). |

disp

The eight displacement (disp) bits give a signed range of -128 to 127 locations to be jumped if the condition is true.

ND-06.029.1 EN


Page 91

Jump Instructions

JMP and JPL

JMP

Description: Jump (unconditional)

(P) ⟵ (ea)

The address of the next instruction is the effective address of the JUMP instruction.

Format: JMP <address mode> <disp>

Octal code: 124000₈

JPL

Description: Jump to subroutine (jump link)

(L) ⟵ (P) + 1  
(P) ⟵ (ea)

The address of the next instruction is the effective address of the JPL instruction. The value of the program counter contents plus one (the return address) is saved in the L register before the jump takes place.

Format: JPL <address mode> <disp>

Octal code: 134000₈


Page 92

Jump Instructions

Jump on condition true

FOR ALL JUMP ON CONDITION TRUE INSTRUCTIONS:

Disp range:
-128 to 127 locations

General description:
(P) ⟵ (ea)

If condition true, jump to the address of the program counter plus the value of disp.

If condition false, continue program execution at (P) + 1.

JAF

Description Jump if (A) ≠ 0 (jump if A filled)
Format JAF
Octal code 1314008

JAN

Description Jump if (A) < 0 (jump if A negative) If A (bit 15) = 1
Format JAN
Octal code 1304008

JAP

Description Jump if (A) ≥ 0 (jump if A positive or zero) If A (bit 15) = 0
Format JAP
Octal code 1300008

JAZ

Description Jump if (A) = 0 (jump if A zero)
Format JAZ
Octal code 1310008

ND-06.029.1 EN


Page 93

Jump Instructions

Jump on condition true

JNC

Description:
Count and jump if (X) < 0 (jump if negative and count)

(X) ⟵ (X) + 1

THEN

Jump if X (bit 15) = 1

Format:
JNC <disp>

Octal code:
132400₈


JPC

Description:
Count and jump if (X) ≥ 0 (jump if positive and count)

(X) ⟵ (X) + 1

THEN

Jump if X (bit 15) = 0

Format:
JPC <disp>

Octal code:
132000₈


JXN

Description:
Jump if (X) < 0 (jump if X negative)

If X (bit 15) = 1

Format:
JXN <disp>

Octal code:
133400₈


JXZ

Description:
Jump if (X) = 0 (jump if X zero)

Format:
JXZ <disp>

Octal code:
133000₈


ND-06.029.1 EN


Page 94

Monitor Instruction

MON

This instruction is used for monitor calls and causes an internal interrupt to program level 14.

Instruction format

MON <number>

Instruction structure

15 9 8 0
MON number

MON

Monitor instruction mnemonic.

Octal code:
1530008

number
This unsigned field allows 256 monitor calls.

The field is loaded into the T register on level 14.
The higher byte of the T register is sign extended.


Page 95

Skip Instruction

SKP

The next instruction is skipped if a specified condition is true.

Instruction format:

SKP <dr> <cond> <sr>

Instruction structure:

15        10 9 8 7 6        3 0
[ SKP | cond | 0 0 | sr | dr ]

bits 6 and 7 are always zero

SKP
Skip instruction mnemonic.

Basic octal code:
140000₈

sr and dr specification:

(bits 0 - 5)

register mnemonic code mnemonic code
as source: as destination:
D SD 10₈ DD 1₈
P SP 20₈ DP 2₈
B SB 30₈ DB 3₈
L SL 40₈ DL 4₈
A SA 50₈ DA 5₈
T ST 60₈ DT 6₈
X SX 70₈ DX 7₈

Note:
If sr not specified, sr is taken to be the value 0.
If dr=0, a no-operation occurs.
If sr or dr are specified as the P register, the value used is that of the next instruction.

ND-06.029.1 EN


Page 96

Condition Codes (bits 8-10)

SKP can be qualified by eight different mnemonics which the flags set by the following expression:

(dr) - (sr)

Four flags are affected by this calculation:

  • S: sign
  • Z: zero result (error)
  • C: carry
  • O: overflow

The condition codes are as follows:

bits 10 9 8 mnemonic description flag(s) condition if true
0 0 0 EQL Equal Z = 1
0 0 1 GEQ Greater or equal to † S = 0
0 1 0 GRE Greater or equal to * † S + O = 0
0 1 1 MGRE Magnitude greater or equal to * C = 1
1 0 0 UEQ Unequal Z = 0
1 0 1 LSS Less than † S = 1
1 1 0 LST Less than * † S + O = 1
1 1 1 MLST Magnitude less than * C = 0

*denotes overflow is taken care of
†denotes contents of sr and dr are treated as signed numbers

Note:
By swapping the sr and dr fields, these relationships can be tested:

Greater than
< Less than or equal

ND-06.029.1 EN


Page 97

Skip Instruction

SKP

Examples:

  1. SKP DD EQL SL
    Skip next instruction if the D register contents equal that of the A register.

  2. SKP DB LSS SA
    Skip the next instruction if the contents of the A register are less than the B register contents.
    OR
    Skip the next instruction if the contents of the B register are greater than the A register contents.

  3. SKP DL UEQ
    Skip the next instruction if the contents of the L register do not equal zero.

  4. SKP LSS SD
    Skip the next instruction if the D register is less than zero.


ND-06.029.1 EN


Page 98

Argument Instructions

These instructions operate on registers.

Instruction format: <argument operation> <number>

Instruction structure:

15       8                0
+--------+----------------+
| argument operation | number |
+--------+----------------+

Argument operation: There are eight argument instructions:

mnemonic octal code description
AAA 172400₈ add argument to A
AAB 172000₈ add argument to B
AAT 173000₈ add argument to T
AAX 173400₈ add argument to X
SAA 170400₈ set argument to A
SAB 170000₈ set argument to B
SAT 171000₈ set argument to T
SAX 171400₈ set argument to X

Sign extension: 8-bit argument numbers are extended to 16-bits using sign extension.

The 8-bit argument becomes the least significant byte; the higher byte is extended with ones or zeros. Positive arguments have the higher byte extended with zeros; negative numbers are extended with ones with the argument in 2's complement form.

ND-06.029.1 EN


Page 99

Argument Instructions

Examples:

  1. SAT 13₈

    Set the T register equal to 13₈. Bits 8-15 are zero due to sign extension.

  2. SAB -26₈

    The contents of the B register are set to 177752₈, bits 8-15 have been extended with ones as the argument is negative; bits 0-7 have the argument in its 2's complement form.

  3. AAA 3₈

    Add 3 to the contents of the A register. The contents of bits 8-15 depend on the previous contents of the A register. The carry and overflow flags may also be affected.


Page 100

Bit Instructions Description

These instructions manipulate single bits within the working and STS registers.

Instruction Structure

15             7 6       3 0
| bit operation | bn dr |

Bit Operation: (bits 7-15)

Bits 11-15 are always set to one for a bit operation.
Bits 7-10 determine the type of operation as follows:

Type Bits Mnemonic Description Code
10 9 8 7 set bit to:
0 0 0 0 BSET ZRO bit ← 0 174000₈
0 0 0 1 BSET ONE bit ← 1 174200₈
0 0 1 0 BSET BCM bit ← ___ 174400₈
0 0 1 1 BSET BAC bit ← K 174600₈
skip next instruction if:
0 1 0 0 BSKP ZRO bit ← 0 175000₈
0 1 0 1 BSKP ONE bit ← 1 175200₈
0 1 1 0 BSKP BCM bit ← ___ 175400₈
0 1 1 1 BSKP BAC bit ← K 175600₈
for one bit accumulator:
1 0 0 0 BSTC bit ← K, K ← 1 176000₈
1 0 0 1 BSTA bit ← K, K ← 0 176200₈
1 0 1 0 BLDC K ← bit 176400₈
1 0 1 1 BLDA K ← bit 176600₈
1 1 0 0 BANC K ← (bit AND K) 177000₈
1 1 0 1 BAND K ← (bit AND K) 177200₈
1 1 1 0 BORC K ← (bit OR K) 177400₈
1 1 1 1 BORA K ← (bit OR K) 177600₈

K is the 1 bit accumulator (bit 3 of STS register)


Page 101

Bit Instructions Description

Sub-instructions:

Only the BSET and BSKP instructions have the following qualifying sub-instructions:

  • ZRO
  • ONE
  • BCM
  • BAC

bn: (bits 3-6)

The address of the bit to be manipulated is given by these four bits.

Remember that each bit is given its OCTAL address.

dr: (bits 0-2)

The following registers allow bit operations and are specified as follows:

register mnemonic code
STS † 0₈
D DD 1₈
P DP 2₈
B DB 3₈
L DL 4₈
A DA 5₈
T DT 6₈
X DX 7₈

† For STS no mnemonic is required as it is implied by the following table of compound mnemonics:

ND-06.029.1 EN


Page 102

Bit Instructions Description

STS Register

There are only eight bits which can be operated on in the STS register. They have special mnemonics and unique octal code values which combine the bn and dr fields.

compound mnemonic STS bit description octal code
SSPTM 0 page table flag 00₈
SSTG 1 floating point rounding flag 10₈
SSK 2 1 bit accumulator (K) 20₈
SSZ 3 error flag (Z) 30₈
SSQ 4 dynamic overflow flag (Q) 40₈
SSO 5 static overflow flag (O) 50₈
SSC 6 carry flag (C) 60₈
SSM 7 multi-shift link flag (M) 70₈

Examples

  1. BSCP ONE SSC

    Skip the next instruction if the carry flag is set.

  2. BSET ZRO SSO

    Reset the static overflow flag.

  3. BORC 60₈ DX

    Complement bit 6 in the X register, then OR the bit with K, leaving the result in K.


Page 103

Single Byte Instructions

Description

These instructions address single bytes within the memory map.

Byte Addressing

A special addressing mode is used for these instructions, using the T and X registers (see page 27).

The contents of T point to the beginning of a character string and the contents of X to a byte within the string.


Page 104

Single Byte Instructions

LBYT

Description:
Load byte

Load the byte addressed by the contents of the T and X register into the lower byte of the A register. The higher byte of the A register is cleared.

Format Octal code
LBYT 142200₈

SBYT

Description:
Store byte

Load the byte contained in bits 0 to 7 of the A register into one half of the memory location addressed by the T and X registers, the second half of this location is not changed.

Format Octal code
SBYT 142600₈

Page 105

Byte Block Instructions Description

These instructions use byte operands.

Byte operands:

Byte operands occupy fields within the memory. Operands are specified by two 16-bit words, known as descriptors, giving the start address and the field length.

as 15 0
sr dr image D1
15 14 13 12 11 0
D T lr pt 0 X field length

Note:

  • bit 13 should always be zero
  • bit 12 can be any value

D1

The first part of the descriptor, D1, gives the start address of the operand.

D2

The second word has the following features:

  • lr - determines whether the operand starts in the left or right byte of the memory location addressed by D1.
    • lr = 0 left byte start
    • lr = 1 right byte start
  • pt - gives the page table mode:
    • pt = 0 normal
    • pt = 1 alternative
  • field length - the number of operand bytes (a maximum of 4095 bytes).

sr and dr - The A and D registers hold the source operand descriptor and the X and T registers hold the destination operand.

ND-06.029.1 EN


Page 106

Byte Block Instructions

BFILL

Description:

Byte fill

Only the destination is used as an operand in this instruction (it is placed in the X and T registers). The lower byte of the A register is then filled with the destination field.

After execution, bit 15 of the T register points to the end of the field (after the last byte position) and the field length equals zero.

Format BFILL
Octal code 1401308

MOVB

Description:

Move byte

This instruction moves a block of bytes from the memory location addressed by the source operand to that of the memory location addressed by the destination operand.

After execution, bit 15 of the D and T registers point to the end of the field that has been moved. The field length of the D register (source) equals zero and the T register (destination) field length is equal to the number of bytes moved.

Format MOVB
Octal code 1401318

Page 107

Byte Block Instructions

MOVBF

Description:

Move bytes forward

This instruction moves a block of bytes from the memory location addressed by the source operand to that of the memory location addressed by the destination operand.

After execution, bit 15 of the D and T registers point to the end of the field that has been moved. The field length of the D register (source) equals zero and the T register (destination) field length is equal to the number of bytes moved.

Format Octal code
MOVBF 140132₈

Page 108

Word Block Instruction

MOVEW

This instruction moves a block of words from one area of memory to another.

The type of transfer is given by the opcode field denoted ΔΔ. The base octal code is 1431ΔΔ:

ΔΔ₈ move from: move to:
00₈ PT PT
01₈ PT APT
02₈ PT phy.memory *
03₈ APT PT
04₈ APT APT
05₈ APT phy.memory *
06₈ phy.memory PT
07₈ phy.memory APT *
10₈ phy.memory phy.memory *

PT - normal page table
APT - alternative page table
phy. - physical
* - privileged instruction

The following registers control transfer:

A and D - the source address
X and T - the destination address
L - the number of words to be moved
(2048 words maximum)

A and/or X only are used for physical memory-block moves and are incremented when the D and/or T registers overflow.

If the L register contains a value greater than 2048 (L = 4000₈) no words are moved and A, D, T and X are unchanged.

After transfer, the registers contain:
A, D, T, X - the addresses after the last moved word
L - zero

ND-06.029.1 EN


Page 109

Word Block Instruction

MOVEW

Special cases:

If the memory management system is off, bank 0 of physical memory is addressed (Bit PTM of the STS register is zero) and the following transfer fields become equivalent:

ΔΔ = 00 = 01 = 03 = 04
ΔΔ = 02 = 05
ΔΔ = 06 = 07

MOVEW can be interrupted. L, A, D, X, T and P registers are then changed to restart execution.

Format:

MOVEW

Octal code:

| 1431ΔΔ |

ND-06.029.1 EN


Page 110

Version Instruction VERSN

This instruction is used to read the version of ND-110 CPU installed.

Three registers are loaded simultaneously with information in the following format:

A register

15 3 0
Print version ALD

T register

15 0
Microprogram version

D register

15 7 0
Installation number

The installation number of the CPU is 16 bytes long.

The VERSN instruction can only load one byte of the installation number into the D register each time it is executed. The A register is used to address the sixteen bytes.

To read a byte of the installation number the A register must be loaded with an installation byte address before the VERSN instruction is executed. The address of the byte to be read is given by the value of bits 8-11 in the A register (equivalent to bytes 0-16). To read the complete installation number both the A register bit field must be incremented and the VERSN instruction executed sixteen times.

Instruction format

VERSN

Octal code

140133₈

ND-06.029.1 EN


Page 111

Decimal Instructions

Description

These instructions use decimal operands residing in main memory only.

Instruction format:

decimal instruction

Instruction structure:

15  |---------------------------------| 0
    |             word address        | D1
15  14 11 10 9    5  4                 0
lr ▪ ASCII | r | decimal point | field length | D2

Descriptors:

(D1 and D2)

Two 16-bit words (D1 and D2) specify the operands used in decimal instructions:

  • D1:
    The first descriptor, D1, gives the word address of the decimal operand in memory.
  • D2:
    D2 describes the following operand features:

    lr (bit 15) Description
    lr = 0 The operand starts in the left byte of a memory word. (In the least significant 8 bits.)
    lr = 1 The operand starts in the right byte of a memory word. (In the most significant 8 bits.)

ND-06.029.1 EN


Page 112

Decimal Instructions Description

ASCII (bits 11 - 13)

These three bits give the sign representation used for ASCII format (see Decimal Notation Section).

bits sign representation
13 12 11
0 0 0 embedded trailing
0 0 1 separate trailing
0 1 0 embedded leading
0 1 1 separate leading
1 0 0 unsigned

Bit 13 also represents an unsigned number in BCD representation.

r (bit 10)

rounding bit
If rounding is selected, one is added to the shifted operand when the least significant digits are lost during shift and the last digit shifted out of the field is 25.

  • r = 1, rounding on
  • r = 0, rounding off

decimal point (bits 5 - 9)

These bits give the position of the decimal point. The range is 32 places (from 0 to 31), positive or negative. Zero is the decimal place to the right of the least significant digit.

The number MUST be less than the operand field length.

field length (bits 0 - 4)

These bits give the operand field length in nibbles (4-bit values) or bytes (8-bit values). BCD numbers are represented by 4 bits (1 nibble) so the field length will be in nibbles; an ASCII coded digit is represented by a byte and the field length will be in bytes.

Operands start at any byte address in memory.

The maximum field length is 32 nibbles/bytes.

Decimal operands:

Decimal operands occupy a maximum of eight 16-bit memory locations. Each operand consists of BCD coded numbers.

ND-06.029.1 EN


Page 113

Decimal Instructions

Description

Decimal operands must be right adjusted so that the least significant digit and sign are in the last byte of the operand field.

Before any instruction is executed the operands are read into the register file. The result of the instruction is written into memory.

All decimal instructions use two operands. The descriptors of each operand are held in separate registers:

  • First operand descriptor: A and D registers.
  • Second operand descriptor: X and T registers.

Decimal Overflow

Decimal overflow is caused by

  • EITHER a carry from the most significant digit position in the result
  • OR an oversized result, the second operand was larger than the first causing the significant digits of the result to be lost.

Note:
The field size alone does not indicate possible overflow.

Most decimal instructions are followed by an instruction or jump to a routine which takes care of overflow errors, known as an error return. A decimal instruction executed without error generation skips the error return and program execution continues at the second instruction after it.

ND-06.029.1 EN


Page 114

Decimal Instructions

ADDD

Description:

Add two decimal operands

(op1) ⟵ (op1) + (op2)

Add the second operand to the first operand, leaving the result in the first operand's location.

If the first operand field is too short to contain all the significant digits of the result then decimal overflow occurs.

If bit 13 of D2 in the first operand is set, the sign of the result will be 17₈ (BCD unsigned).

Any empty operand, that is with a field length of zero, is treated as a positive zero.

Format:

ADDD

Octal code:

140120₈

Instruction sequence:

ADDD
error handling instruction
next instruction after ADDD or after error handling routine

Note:
Operands should be normalized before this instruction is executed using the SHDE instruction.

Example:

ADDD
JMP *12₈
STX 20₈

The ADDD instruction causes the program counter to skip the next instruction UNLESS an error has been generated. In this case, the instruction immediately after ADDD will handle the error in some way (in this example a jump is executed on error to ((P) + 12₈)).

(* * is the assembler mnemonic for the P register)

ND-06.029.1 EN


Page 115

Decimal Instructions

COMD

Description

Compare two decimal operands

(A) ⟵ (op1) compared to (op2)

  • (A) = 0 if (op1) = (op2)
  • (A) = 1 if (op1) > (op2)
  • (A) = -1 if (op1) < (op2)

Compare the first operand with the second operand, leaving the result in the A register.

If the two operands are unequal in field length, the shorter operand is extended with zeros to allow comparison. The operands are unaffected by the instruction.

The positions of the decimal points are not taken into account when the two operands are compared, so the two operands should be normalized using the SHDE instruction first.

Any empty operand, that is with a field length of zero, is treated as a positive zero. An unsigned number is treated as positive. Positive and negative zeros are equal.

Format COMD
Octal code: 140122₈
Instruction sequence: COMD
error handling instruction
next instruction after COMD or after error handling routine

Example

COMD
JMP *30₈
AAA 20₈

The COMD instruction causes the program counter to skip the next instruction UNLESS an error has been generated. In this case, the instruction immediately after COMD will handle the error in some way (in this example a jump is executed on error to ((P) + 30₈)).

(* is the assembler mnemonic for the P register)

ND-06.029.1 EN


Page 116

Description

Convert to BCD

(op2) ⟵ (op1) in BCD format

Convert the first operand from its ASCII format to BCD format, placing the result in the second operand location.

Conversion process

PACK carries out the following steps:

  1. Checks the sign and digits of the operand (op1) are encoded as ASCII digits.
    (Reporting illegal codes as error code 2.)

  2. Takes the 4 least significant bits of each ASCII digit as the equivalent BCD digit.

  3. Converts the ASCII sign of the operand to BCD:

    ASCII BCD Sign
    5₃₈ 1₄₈ +
    5₅₈ 1₅₈ -

    Note: IF bit 13 of the descriptor D2 is set, then the code 1₇₈ (BCD unsigned) is used.

  4. Extends the second operand field (op2) with zeros if the result is too small to fill the field.
    Reports overflow has occurred (error code 3) if the second operand field length is too short to contain the significant digits of the result (the remaining digits are ignored).

Format

PACK

Octal code

140124₈

Error code

An error code is placed in bits 0 to 4 of the D register if an illegal code conversion is attempted or if overflow occurs. The first detected error will be reported.

Error code:
2 illegal code
3 overflow

bit 15 of both the A and D registers point to the byte containing the illegal code.

ND-06.029.1 EN


Page 117

104

Decimal Instructions

SHDE

Description: Decimal shift

( \text{op2} \leftarrow \text{op1} ) shifted

This instruction is used to normalize operands for decimal operations.

The shift count determines whether the operand is shifted to the left or right:

  • ( (\text{op2} - \text{op1}) ) positive then shift op1 to right
  • ( (\text{op2} - \text{op1}) ) negative then shift op1 to left

If significant digits are lost by carrying out a left shift, an error is generated, directing the program counter to the instruction after the SHDE (the error return). If no errors occur this instruction is skipped.

The digits of the first operand are shifted and the result is placed in the second operand's memory location.

The number of places shifted is given by the difference in decimal position of the two operands. This normalizes the first operand (op1) to the second (op2) for decimal operations such as ADDD.

The sign of the normalized operand (op1) is as follows:

BCD Sign
( 1_{8}^{4} ) +
( 1_{8}^{5} ) -

An unsigned operand is converted to a plus unless bit 13 of the descriptor D2 is set, when the BCD equivalent of unsigned ( (17_{8}) ) is used.
The sign and digits of the first operand are checked before execution and any illegal digit codes reported.

If bit 10 of descriptor D2 (op2) is set the result is rounded, that is a 1 is added to the operand if the last digit shifted out of the field is 2 ⁄ 5.

ND-06.029.1 EN


Page 118

Decimal Instructions

Format

SHDE

Octal Code

140126₈

Instruction Sequence

SHDE
error handling instruction
next instruction after SHDE or after error handling routine

Example

SHDE  
JMP *10₈  
SAD 20₈

The SHDE instruction causes the program counter to skip the next instruction UNLESS an error has been generated, when the instruction immediately following the SHDE will handle the error in some way (in this example a jump is executed on error to (P) + 10₈).

(* is the assembler mnemonic for the P register)


SUBD

Description

Subtract two decimal operands

(op1) ← (op1) - (op2)

  • Subtract the second operand from the first operand, leaving the result in the location of the first operand.
  • If the first operand field is too short to contain all the significant digits of the result then decimal overflow occurs.
  • If bit 13 of D2 in the first operand is set, the sign of the result will be 17₈ (BCD unsigned).
  • Any empty operand, that is with a field length of zero, is treated as a positive zero.
  • A zero difference can have either a negative or positive sign.

Format

SUBD

ND-06.029.1 EN


Page 119

Decimal Instructions

Octal code: 1401218

Instruction sequence:
SUBD error handling instruction
next instruction after SUBD or after error handling routine

Example:

SUBD
JPL *30<sub>8</sub>
ADD *15<sub>8</sub>

The SUBD instruction causes the program counter to skip the next instruction UNLESS an error has been generated, when the instruction immediately following the SUBD will handle the error in some way (in this example, a jump is executed on error to a subroutine at (P) + 158).

(* is the assembler mnemonic for the P register)

UPACK

Description:

Convert to ASCII

(op2) ⟵ (op1) in ASCII format

Convert the first operand from its BCD format to ASCII format, placing the result in the second operand location.

Conversion process:

The instruction carries out the following steps:

  1. Checks the sign and digits of the operand (op1) are encoded as BCD digits.
    (Illegal codes generate an error code 2.)

  2. Takes each BCD digit as the lower nibble of an equivalent ASCII digit. Sets the upper nibble of the ASCII byte (the zone) to 00112.


Page 120

Decimal Instructions

  1. Converts the BCD sign of the operand to ASCII:
BCD ASCII Sign
0 53₈ +
1 55₈ -

Note: If bit 13 of the descriptor D2 is set then the code 17₈ (BCD unsigned) is used.

  1. Extends the second operand field (op2) with ASCII zeros (60₈) if the result is too small to fill the field. Reports overflow has occurred (error code 3), if the second operand field length is too short to contain the significant digits of the result (the remaining digits are ignored).

Format: UPACK

Octal code: 140125₈

Error code:

An error code is placed in bits 0 to 4 of the D register if an illegal code conversion is attempted or if overflow occurs. The first detected error will be reported.

Error code: 2 illegal code† 3 overflow

† bit 15 of both the A and D registers point to the byte containing the illegal code.

ND-06.029.1 EN


Page 121

STACK INSTRUCTIONS

Description

These instructions handle stack operations improving the execution time of high-level language-based programs.

The B register will always point to a "stack-frame" containing:

stack frame content mnemonic pointed to by B= description
LINK -200₈ next instruction address †
PREVB -177₈ previous stack frame address
STP -176₈ next stack frame address
SMAX -175₈ top of stack address
- -174₈ reserved for system use
ERRCODE -173₈ (A) after an ELEAV instruction

† In the case of a LEAVE instruction

The stack-handling instructions are page-fault tolerant in the ND-110.


Page 122

Stack Instructions

ELEAV

Description:
Error leave stack

Operation Description
(B = 200₈) ⟵ (B = 200₈) - 1 {LINK}
(P)ᵦ ⟵ (B = 200₈)
(B) ⟵ (B = 177₈) {PREVB}
(A) ⟵ ERRCODE₈
(B = 173₈) ⟵ (A) {ERRCODE}

If an error occurs leave the stack.

This instruction saves the previous stack pointer in LINK and restores the B register to its previous value (PREVB) before leaving the stack. The stack is left by loading the P register (program counter) with the return address (LINK). The A register is loaded with an error code which is saved in the ERRCODE stack entry (pointed to by B = 173₈).

Format:
ELEAV

Octal code:
140137₈

ENTR

Description:
Enter stack

Operation Description
(B = 177₈) ⟵ (B) {save current pointer in PREVB}
(B = 175₂) ⟵ (B = 175₈) {SMAX}
(B = 200₈) ⟵ (L) + 1 {save return address in LINK}
(B) ⟵ (B = 176₈) + 200₈ {new pointer}
(B = 176₈) ⟵ stack demand + (B)

This instruction saves the current stack pointer (B), the return address (LINK) and previous stack pointer (PREVB). It transfers the top of stack address (SMAX) and establishes the new stack demand and pointer.

Stack overflow causes an error return, that is the program continues at the address following the stack demand value. In all other cases, the program skips this address to find the return address from the stack.

ND-06.029.1 EN


Page 123

Stack Instructions

Format:

ENTR


Octal code: 140135₈

INIT

Description:

Initialize stack

Command Action
LINK ← L + 1
PREVB ← (B)
SMAX ← stack start address + maximum stack size
(B) ← (B = 200₈) + 200₈
STP ← stack demand + (B)

Load the addresses pointed to by B with the stack frame addresses.

Note:
Stack overflow and flag error causes an error return, that is the program continues at the address following the stack demand value. In all other cases, the program skips this address to find the return address from the stack.
(Flag bit 0 ≠ STS register bit 0 is a flag error.)

Format:

INIT
number of words allocated to stack
address of stack start
maximum stack size
flag
address left empty

error return address
return address

Octal code: 140134₈

ND-06.029.1 EN


Page 124

Stack Instructions

LEAVE

Description

Leave stack

(P) ⟵ (B = 200₈)  {LINK}  
(B) ⟵ (B = 177₈)  {PREVB}

This saves the previous stack pointer in LINK. The B register is restored to its previous value (PREVB) and the stack left by loading the P register (program counter) with the return address (LINK).

Format

LEAVE

Octal code

140136₈


ND-06.029.1 EN


Page 125

Memory Examine and Test Instructions

RDUS

Description:
Read a word without using cache

(T) points to the virtual memory word to be accessed
(A) ← memory word addressed by T

The address given by the T register is a logical memory address. It is normally translated into a physical address using page tables (if the memory management system is on). The contents of the location addressed by T are loaded into the A register. The old content of the memory address is always read from the memory and never from cache.

The execution time of this instruction includes two read bus cycles (semaphore cycles - see ND-110 Functional Description Manual ND.06.027)

Format:
RDUS

Octal code:
140127₈

TSET

Description:
Test and set

(T) points to the virtual memory word to be accessed
(A) ← memory word addressed by T

The address given by the T register is a logical memory address. It is normally translated into a physical address using page tables (if memory management is on). The contents of the location addressed by T are simultaneously loaded into the A register as the location is written to with all 1s. The memory system is dedicated to this task and no other memory access is allowed during the operation. This can be used for processor synchronization. The old content of the memory address is always read from the memory and never from cache. The all 1s' data word is never written to cache.

Format:
TSET

Octal code:
140123₈


Page 126

INTER-LEVEL REGISTER INSTRUCTIONS

Description

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions access registers outside the current program level. (There is a register set for each of the 16 program levels.)

Instruction format:
<inter-register operation> <level>₈ x 10₈ > <dr>

Instruction structure:

15          7 6     3 2 0
|-----------|-------|-----|
| inter-register operation | level | dr  |

inter-register operation: (bits 15-7)

There are two inter-register instructions:
IRR
IRW
They read and write to/from a register outside the current program level.

level: (bits 3-6)

These bits give the program level of the block (0-15). The level is written in its OCTAL format and multiplied by 10₈ to set the correct bits in the octal code.

<level>₈ x 10₈ >

dr: (bits 0-2)

The following registers allow bit operations and are specified as follows:

register mnemonic code
STS - 0₈
D DD 1₈
P DP 2₈
B DB 3₈
L DL 4₈
A DA 5₈
T DT 6₈
X DX 7₈

ND-06.029.1 EN


Page 127

Inter-level Register Instructions

IRR

Description: Inter-register read

Read into the A register of the current level the contents of a register in the program level given by the instruction.

(This instruction can also be used to read registers within the current program level into the A register.)

If the status register is read (STS), the A register is loaded with the lower byte (bits 0-7) of STS only, the higher byte is cleared.

Format: IRR \<level>8 x 108_ \<dr>

Octal code: 153600_8_

Example: IRR 160_8 DP (1537628_)

Copy the program counter on program level 14 into the A register of the current program level.

IRW

Description: Inter-register write

Write the contents of the A register on the current level into the A register of the program level given by the instruction.

Note:
This instruction results in a no-operation if the A register of the current program level is used.

If the status register (STS) is the destination, only the lower byte (bits 0-7) is written to with bits 0-7 of the A register.

Format: IRW \<level>8 x 108_ \<dr>

Octal code: 153400_8_

Example: IRW 100_8 DB (1535038_)

Copy the A register on the current program level into the B register on program level 8.

ND-06.029.1 EN


Page 128

REGISTER BLOCK INSTRUCTIONS

Description

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions access the program level register blocks.

Instruction format:

<register block operation> <level₈ x 10₈>

Instruction structure:

15 7 6 3 2 0
register block level oper.

register block oper. (bits 0-2 and 7-15)

There are two register block instructions:

  • LRB
  • SRB

The register block is always loaded or stored in the following register sequence:

  • P (program counter)
  • X
  • T
  • A
  • D
  • L
  • STS (status register)
  • B

Note:

Only the lower byte (bits 0-7) of the STS register are loaded or stored; the higher byte is zero.

The X register contents point to the base address of the register block in memory.

level: (bits 3-6)

These bits give the program level of the block (0-15). The level is written in its OCTAL format and multiplied by 10₈ to set the correct bits in the octal code.

<level₈ x 10₈>

ND-06.029.1 EN


Page 129

Register Block Instructions

LRB

Description:
Load register block

Load the contents of a memory block pointed to by the X register into the register block of the program level given in the instruction.

If the instruction specifies the current program level, the P register (program counter) is not loaded from memory and is unchanged.

Format:
LRB <level8 x 108>

Octal code:
1526008

Example:
LRB 1608 (1527608)

Load the memory block pointed to by the X register into the register on program level 14.

P (level 14) ⟵ (ea)
X (level 14) ⟵ (ea + 1)
B (level 14) ⟵ (ea + 7)

SRB

Description:
Store register block

Load the register block of the program level given in the instruction into the memory block pointed to by the X register.

If the instruction specifies the current program level, the P register points to the instruction following SRB.

Format:
SRB <level8 x 108>

Octal code:
1524028

Example:
LRB 1008 (1527028)

Store the register block of program level 8 in the memory block pointed to by X.

(ea) ⟵ P (level 8)
(ea + 1) ⟵ X (level 8)
(ea + 7) ⟵ B (level 8)

ND-06.029.1 EN


Page 130

INTERNAL REGISTER INSTRUCTIONS

Description

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions access internal CPU registers which cannot be reached by normal register operations.

Instruction Format

<internal operation> <register>

Instruction Structure

15 4 3 0
internal operation register

Internal Operation (bits 15-4)

There are four internal instructions:

  • MCL
  • MST
  • TRA
  • TRR

They operate on internal registers or specific areas; a table of the internal registers affected by these instructions can be found after the description of the instructions (see page 120).

Register (bits 3-0)

These bits give the internal register address.

ND-06.029.1 EN


Page 131

Register Transfer Instructions

MCL

Description:
Masked clear

The A register is used as a mask to clear bits within the selected internal register. Setting a bit in the A register clears the corresponding bit in the internal register.

See table for internal registers that allow MCL.

Format:
MCL <register>

Octal code:
1502008

Example:
MCL STS (1502018) [ (A) = 0001008 ]

Clear the carry flag (bit 6) in the status (STS) register.

MST

Description:
Masked set

The A register is used as a mask to set bits within the selected internal register. Setting a bit set in the A register sets the corresponding bit in the internal register.

See table for internal registers that allow MST.

Format:
MST <register>

Octal code:
1503008

Example:
MST PIE (1503078) [ (A) = 0001408 ]

Set bits 5 and 6 in the priority interrupt enable register (PIE).


Page 132

Register Transfer Instructions

TRA

Description:
Transfer to A register

The internal register given in the instruction is copied into the A register.

See table for internal registers that allow TRA.

Format:
TRA <register>

Octal code:
150000₈

Example:
TRA (150012₈)

Copy the contents of the automatic load descriptor into the A register.

TRR

Description:
Transfer A to internal register

The internal register given in the instruction is loaded with the contents of the A register.

See table for internal registers that allow TRR.

Format:
TRR <register>

Octal code:
150100₈

Example:
TRR (150306₈)

Transfer the A register contents into the priority interrupt detect register.


Page 133

Register Transfer Instructions

Internal Register Name and Description Octal Code TRA TRR MCL MST
PANS Panel Status 0₈ ●
PANC Panel Control 0₈ ●
STS Status 1₈ ● ● ● ●
OPR Operator Panel Switch 2₈ ●
LMP Operator Lamp 2₈ ●
PGS Paging Status 3₈ ●
PCR Paging Control 3₈ ●
PVL Previous Program Level 4₈ ●
IIC Internal Interrupt Control 5₈ ●
IIE Internal Interrupt Enable 5₈ ●
PID Priority Interrupt Detect 6₈ ● ● ● ●
PIE Priority Interrupt Enable 7₈ ● ● ● ●
CSR Cache Status 10₈ ●
CCL Cache Clear 10₈ ●
ACTL Active Level 11₈ ●
LCIL Lower Cache Inhibit Limit 11₈ ●
ALD Automatic Load Descriptor 12₈ ●
UCIL Upper Cache Inhibit Limit 12₈ ●
PES Parity Error Status 13₈ ●
CILP† Cache Inhibit Page 13₈ ●
PGC Paging Control 14₈ ●
PEA Parity Error Address 15₈ ●
ECCR Error Correction Control 15₈ ●
CS† Control Store 17₈ ● ● ●

† These registers are not available on the ND-100.

ND-06.029.1 EN


Page 134

Input/Output Instructions

IOX

This instruction is PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

The instruction controls all transfers between the ND-110 and any external devices.

Description:

Exchange information between I/O system and A register.

IOX can be used to address a maximum of 2048 device registers for external devices connected to the ND-110 CPU. Data, control and status between device and CPU can be exchanged.

Instruction format:

IOX <device register address>

Instruction structure:

15 11 10 0
IOX device register address

IOX:

This field is the fixed code of the instruction IOX (11101).

Device register address: (bits 0-10)

These 11 bits limit the number of external devices that can be addressed by the CPU.

Bit 0 gives the direction of transfer:

  • If 0: input (from device to CPU)
  • If 1: output (from CPU to device)

Register addresses can hold data, command or status information for a device.

An external device may require more than one register address, for example a magnetic tape unit may need several register addresses; these should be given successive device-register addresses (remembering to use odd addresses for input and even addresses for output).

Note:

The number of external devices that can be controlled by the CPU depends on the configuration of the devices.

Octal code: 164000

ND-06.029.1 EN


Page 135

Input/Output Instructions

IOX

Examples:

  1. To give an instruction to a device:

    LDA <device command code>
    IOX
    

    The lsb of IOX will be 1. The A register contents are output to the device addressed within the IOX opcode.

  2. To check the status of a device: IOX

    The lsb of IOX will be 0. The status code of the device addressed by the IOX opcode will be loaded into the A register.

  3. Transfer data: IOX

    Data from the device addressed by the IOX instruction, is read into the A register if the lsb of IOX is 0. If the lsb of IOX is 1, the A register contents are output to the device.


Page 136

Input/Output Instructions

IOXT

This instruction is PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

The instruction controls transfers between the ND-110 and external devices.

Description:
IOXT can be used to address a maximum of 65536 device-register addresses for external devices connected to the ND-110 CPU.

Instruction format:
LDT <address mode> <disp>
IOXT

Instruction structure:

15 11 10 9 7 0
LDT ,X ,I ,B disp
15 0
IOXT

LDT instruction:
The IOXT instruction uses the T register contents as the device register address. The 16-bit T register gives a limit of 65536 register addresses.

This address MUST be loaded into the T register before IOXT is executed, hence LDT is used. (See Memory Transfer Instructions, LOAD for explanation of LDT.)

Note: The number of external devices that can be controlled by the CPU depends on the configuration of the devices.

IOXT instruction:
IOXT is used as a single mnemonic.

Octal code:
1504158

Examples:
See ND-110 Functional Description (ND-06.026) for the standard ND assignment of device register addresses.

ND-06.029.1 EN


Page 137

INTERRUPT CONTROL INSTRUCTIONS

Description

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions control the CPU interrupt system.

Instruction format:

General description:
The ND-110 has a priority interrupt system with 16 program levels. Each program level has its own set of working registers (A, B, D, L, P, STS, T, X). The program levels have increasing priority, that is program level 15 has the highest priority and program level 0 the lowest.

The 16 levels are subdivided as follows:

level used for: controlled by:
15 very fast user interrupts program/ext. device
14 internal hardware status interrupts program/ext. device
13-10 vectored interrupts* program/ext. device
9-0 system and user programs program

*2048 possible sources

Program level selection and control is via two 16-bit registers:

  • PID Priority Interrupt Detect
  • PIE Priority Interrupt Enable

PID is affected by program and external interrupts; PIE is controlled by program only. They can only be changed or monitored by the privileged instructions: TRA, TRR, MST and MCL (see pages 118-120).

Note:
When the power is turned on, the power-up sequence resets PIE and PID so that program level 0 is selected.

Interrupt programming is via three registers:

  • IIC Internal Interrupt Code
  • IIE Internal Interrupt Enable
  • PVL Previous Level (of hardware interrupt source)

ND-06.029.1 EN


Page 138

Interrupt Control Instructions

The following instructions control interrupts:

IDENT

Description:

Identify vectored interrupt

Identify and service the input/output device causing the interrupt.

Bits 0-8 of the A register are loaded with the identification code of the device causing the interrupt (bits 9-15 are zeros). If IDENT is executed without an interrupting device to service, the A register is unchanged.

Note:

If several devices on the same program level have simultaneous interrupts, the device plugged into the ND-110 card frame nearest to the CPU card has highest priority and is serviced first. The PID register bit corresponding to this interrupt line will remain set until all the interrupting devices are serviced.

Format:

IDENT <program level number>

Structure:

15                     9 8  0
|---------------------|----|
|        IDENT        |program level number|

Program Level Number

Vectored interrupts are only allowed on program levels 10 to 13. The following program level number mnemonics are used:

level mnemonic code
10 PL10 0₈
11 PL11 1₁₈
12 PL12 2₂₈
13 PL13 3₄₈

Octal code: 143600₈

ND-06.029.1 EN


Page 139

Interrupt Control Instructions

IOF

Description:
Interrupt System OFF

Disables the interrupt system.

On IOF the ND-110 continues operation at the same program level.

Format: IOF

Operator indication ION display is reset.

PVL status: The PVL register is unchanged.

Octal code: 150401₈

ION

Description:
Interrupt System ON

Enables the interrupt system.

On ION the ND-110 resumes operation in the program level with highest priority.

Format: ION

Operator indication ION display is lit.

PVL status The PVL register will change to the new program level.

Octal code: 150402₈

PIOF

Description:
Memory management and interrupt system OFF

Disables both the memory management and interrupt systems. This combines the functions of the IOF and POF instructions.

BEFORE USE: Check conditions of the IOF instruction.

Format: PIOF

Octal code: 150405₈

ND-06.029.1 EN


Page 140

Interrupt Control Instructions

PION

Description:
Memory management and interrupt system ON

Enable both the memory management and interrupt systems. This combines the functions of the ION and PON instructions.

BEFORE USE: Check conditions of ION and PON instructions.

Format Octal code
PION 150412₈

WAIT

Description:
Wait

This operates as follows:

IF the interrupt system is OFF ...

The ND-110 stops with the program counter (P register) pointing to the instruction after the wait and the front panel RUN indicator is turned off. (To restart the system, type ! on the console terminal.)

IF the interrupt system is ON ...

The ND-110 exits from the current program level (resetting the corresponding PID bit) and enters the program level with the highest priority, normally a program level lower than the one which executes the WAIT instruction. If there are no interrupt requests awaiting service then program level 0 is entered.

Note: A WAIT on program level 0 is ignored.

WAIT followed by a number less than 400₈ can be used to detect which location caused the program stop.

Format Octal code
WAIT 151000₈

Page 141

Memory Management Instructions

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions control the CPU memory management system.

PIOF

Description:
Memory management and interrupt system OFF, see Interrupt Control Instructions.

PION

Description:
Memory management and interrupt system ON, see Interrupt control instructions

POF

Description:
Memory management OFF

Disable memory management system. The next instruction will be taken from a physical address given by the address following the POF instruction.

Note:
The CPU will be in an unrestricted mode without any hardware protection features - all instructions are legal and all memory accessible.

Format POF
Octal code 150404₈

PON

Description:
Memory management ON

Enable memory management system. The next instruction after PON will then use the page-index table specified by PCR.

BEFORE USE:
Ensure that the: - Interrupt system is enabled, - internal hardware interrupts are enabled, - page tables and PCR registers are initialized.


ND-06.029.1 EN


Page 142

Memory Management Instructions

PON

Format Octal code
PON 150410₈

REX

Description: Reset extended address mode

Set the paging system to the 19-bit address mode instead of the 24-bit address mode. (Creating a physical address space of up to 512K words.)

Flag affected: SEXI (bit 13 of the STS register) cleared

Format Octal code
REX 150407₈

SEX

Description: Set extended address mode

Set the paging system to the 24-bit address mode instead of the 19-bit address mode. (Creating a physical address space of up to 16M words.)

Flag affected: SEXI (bit 13 of the STS register) set.

Format Octal code
SEX 150406₈

Page 143

Physical Memory Control Instructions

DEPOSIT and EXAM

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions monitor physical memory location contents.

DEPO

Description: Deposit

Store the contents of the T register in the physical memory location pointed to by the A and D register contents.

Format DEPO
Octal code 150417₈

EXAM

Description: Examine

Load the contents of the physical memory location, pointed to by the A and D register contents, into the T register.

Format EXAM
Octal code 150416₈

Page 144

Writable Control Store Instruction

LWCS

This instruction is PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection
LWCS is a no-operation in the ND-110.
The ND-110 is software compatible but not microcode compatible and writing to the writable
control store has no meaning in the ND-110. A no-operation is executed so that programs written
for the ND-100 and NORD-10 can continue.
Octal code = 1435008

Unused areas of the microprogram can be read or written to using the TRR CS or TRA CS instruction (see page 119).

Further information on the LWCS instruction for the ND-100 can be found in the ND-100 Reference Manual (ND-06.014).

ND-06.029.1 EN


Page 145

OPCOM Mode Instruction

This instruction is PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

Description

Operator Communication

This instruction allows the programmer to use a terminal in direct communication with the CPU board.

When the CPU is running, MOPC can be used to read input from the console.

This is the software equivalent to pressing the OPCOM button on the control panel of the ND-110.

Format

Format: OPCOM
Octal code: 150400₈

ND-06.029.1 EN


Page 146

SINTRAN III Memory Transfer Instructions

Description

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions read/write from/to physical memory locations independent of whether paging is on or off. If the address is within the page-table range then the page tables are affected.

Instruction format: physical instruction mnemonic <disp>

Instruction structure:

| 15          |  7      6 |  3  2  0 |
|-------------|-----------|----------|
| physical memory operation | disp. | type |

Physical Memory Operation Type: (bits 15-6 and 2-0)

There are seven physical memory read/write instructions, specified by a base octal code of 143300₈ (bits 15-6) and type field (bits 2-0).

The contents of the T and X register give the effective address of the physical memory location (see page 28). A 3-bit displacement can be added to the X register within the instruction code. This is denoted by Δ in the following codes:

Instruction Mnemonic Octal Code
LDATX 1433A0₈
LDTX 1433A1₈
LDDTX 1433A2₈
LDBTX 1433A3₈ †
STATX 1433A4₈
STZTX 1433A5₈
STDTX 1433A6₈

† If you use programs written for ND-100 computers with the microprogram version numbers 015xx A-J (48 bit) or 026xx A-F (32 bit), LDBTX would have been followed by a word containing 177777₈. This is not necessary for later ND-100 versions nor for the ND-110. Running these earlier programs may change the status of the K bit in the ND-110 and later ND-100s.

ND-06.029.1 EN


Page 147

SINTRAN III Memory Transfer Instructions

LDATX

Description:
Load A register

(A) ⟵ (ea)

Load the contents of the physical memory location pointed to by the effective address into the A register.

Format Octal code
LDATX 1433A0

LDBTX

Description:
Load B register

(B) ⟵ 1770008 OR (2(ea))

Load the contents of the physical memory location pointed to by twice the effective address contents into the B register, then OR the value with 1770008.

See description for usage.

Format Octal code
LDBTX 1433A3

LDDTX

Description:
Load double word

(A) ⟵ (ea)
(D) ⟵ (ea + 1)

Load the contents of the physical memory location pointed to by the effective address into the A register and the contents of the effective address plus one into the D register.

Format Octal code
LDDTX 1433A2

ND-06.029.1 EN


Page 148

SINTRAN III Memory Transfer Instructions

LDXTX

Description:
Load X register

(X) ⟵ (ea)

Load the contents of the physical memory location pointed to by the effective address into the X register.

Format:
LDXTX <disp>

Octal code:
143341₈

STATX

Description:
Store A register

(ea) ⟵ (A)

Store the contents of the A register in the memory location given by the effective address.

Format:
STATX <disp>

Octal code:
143343₈

STDTX

Description:
Store double word

(ea) ⟵ (A)  
(ea) + 1 ⟵ (D)

Store the double word held in the A and D registers in the memory locations given by the effective address and the effective address plus one.

Format:
STDTX <disp>

Octal code:
143346₈

ND-06.029.1 EN


Page 149

SINTRAN III Memory Transfer Instructions

STZTX

Description: Store zero

(ea) ← 000000₈

Store zero in the memory location given by the effective address.

Format STZTX <disp>
Octal code: 1433A₅₈

ND-06.029.1 EN


Page 150

SINTRAN III Control Instructions

These instructions are PRIVILEGED and only available to:

  • programs running in system mode (rings 2-3)
  • programs running without memory protection

These instructions monitor the contents of physical memory.

CHREENTPAGES

Description

Change page tables.

The X register is used to address the current (R1) and previous (Rp) scratch registers.

If the R1 is zero, the reentrant page has nothing to change so the loop is left, otherwise the contents of the memory location pointed to by the R1 + 2 are loaded into T.

T then contains the protect table entry, if the page has not been written to (WIP bit 12 is zero) T and R1 are loaded with Rp. R1 (now containing Rp) is tested again for zero. If the page has been written to, the T register is loaded with the contents of the second scratch register (R2), pointed to by R1, and R2 becomes the address of Rp. X is loaded with R1 as the new pointer to the reentrant pages and Rp is loaded into the D register pointed to by A.

Format

CHREENTPAGES

Octal code

140303₈

CLEPT

Description

Clear page tables.

This instruction can replace the following instructions:

CLEFT Code
JXZ * ₁₀
LDBTX 10₈
LDA ,B ₈
JAZ *3₈
STATX 20₈
STZ ,B ₈
LDXTX 00₈
JMP *-7₈

Each time the loop is executed (until X becomes zero) the physical memory location addressed by X is loaded into the B register.

ND-06.029.1 EN


Page 151

SINTRAN III Control Instructions

The B register contents provide the address of a page table entry, which is loaded into the A register.

If the page table entry is zero (unused) the loop is restarted.

If the page table entry is not zero (used) it is stored in a physical location addressed by X (8 locations away from its original entry) and the original page table entry cleared by placing zero in the location addressed by the B register.

The physical location addressed by X is then loaded into the X register itself and the loop restarted.

  • is the mnemonic for P relative addressing.

Format: CLEPT
Octal code: 1403018

CLEPU

Description: Clear page tables and collect PGU information.

This instruction collects information on the PGU (page used) bit of a page table entry whilst executing CLEPT.

The instruction places PGU information in an eight word table called the page map bank. Each bit in the bank represents the status of a page’s PGU bit as follows:

15 0
word 0 β
word 1 ε
...
word 7 Δ

Δ denotes page 1778 PGU bit
ε denotes page 328 PGU bit
β denotes page 08 PGU bit

ND-06.029.1 EN


Page 152

SINTRAN III Control Instructions

The L register contains the address of the map entry.

CLEPU

Format Octal code
CLEPU 140304₈

CLNREENT

Description:
Clear non reentrant pages.

The contents of the memory address at A + 2 are read to find the page table to be cleared along with the SINTRAN RT bitmap (addressed by the X and T registers). The page table entries corresponding to those bits set in the RT bitmap are then cleared.

Format Octal code
CLNREENT 140302₈

CLPT

Description:
Clear segment from the page tables. (See Appendix B for a software description.)

Format Octal code
CLPT 140505₈

CNREK

Description:
Clear non reentrant pages (SINTRAN K only). (See Appendix B for a software description.)

Format Octal code
CNREK 140504₈

ENPT

Description:
Enter segment in page tables. (See Appendix B for a software description.)

Format Octal code
ENPT 140506₈

ND-06.029.1 EN


Page 153

SINTRAN III Control Instructions

INSPL

Description:
Insert page in page list. (See Appendix B for a software description.)

Format Octal code
INSPL 140502₈

LACB

Description:
Load the A register from the core map-table bank (CMBNK).

(A) ← (ea)

ea = (B) + Δ = CMBNK entry

Δ 3-bit displacement added to B included in the instruction opcode

Format Octal code
LACB 1407Δ2₈

LASB

Description:
Load the A register with the contents of the segment-table bank (STBNK).

(A) ← (ea)

ea = (B) + Δ = STBNK entry

Δ 3-bit displacement added to B included in the instruction opcode.

Format Octal code
LASB 1407Δ0₈

LBIT

Description:
Load single bit accumulator(K) with logical memory bit.

(X) points to the start of a bit array
(A) points to the bit within the array

Format Octal code
LBIT 140510₈

ND-06.029.1 EN


Page 154

SINTRAN III Control Instructions

LBITP

Description:
Load single bit accumulator(K) with physical memory bit.

  • (T) points to the bank number containing the bit array
  • (X) points to the start of a bit array
  • (A) points to the bit within the array

Format:
LBITP

Octal code:
140511₈

LBYTP

Description:
Load the A register with a byte from physical memory.

  • (D) points to the bank number containing the byte array
  • (T) points to the start of a byte array
  • (X) points to the actual byte within the array

Format:
LBYTP

Octal code:
140514₈

LXCB

Description:
Load the X register from the core table bank (CMBNK).

  • (X) ⟵ (ea)
  • ea = (B) + Δ = CMBNK entry
  • Δ 3-bit displacement added to B included in the instruction opcode.

Format:
LXCB

Octal code:
140745₈

ND-06.029.1 EN


Page 155

SINTRAN III Control Instructions

LXSB

Description:
Load the X register from the segment table bank (STBNK).

(X) ← (ea)

ea = (B) + Δ = STBNK entry

Δ 3-bit displacement added to B included in the instruction opcode.

Format:
LXSB

Octal code:
140744₈

RDUSP

Description:
Read a physical memory word without using cache.

  • (T) points to the physical memory bank to be accessed
  • (X) points to the address within the bank
  • (A) is loaded with the memory word

The old content of the memory address is always read from the memory and never from cache.

Note:
The execution time of this instruction includes two read-bus cycles (The CPU uses semaphore cycles - see ND-110 Functional Description Manual ND.06.027)

Format:
RDUSP

Octal code:
140517₈

REMPL

Description:
Remove page from page list. (See Appendix B for a software description.)

Format:
REMPL

Octal code:
140503₈


Page 156

SINTRAN III Control Instructions

REPT

Description:
Enter reentrant segment in page tables. (See Appendix B for a software description.)

Format Octal code
REPT 140507₈

RGLOB

Description:
Examine global pointers.

  • (T) ← bank number of segment table (STBNK)
  • (A) ← start address within bank (STSTRT)
  • (D) ← bank number of core map table (CMBNK)
Format Octal code
RGLOB 140501₈

SACB

Description:
Store the A register in the core map table bank (CMBNK).

(ea) ← (A)

ea = (B) + A = CMBNK entry

A 3-bit displacement added to B included in the instruction opcode.

Format Octal code
SACB 1407A₃₈

SASB

Description:
Store the A register contents in the segment table bank (STBNK).

(ea) ← (A)

ea = (B) + A = STBNK entry

A 3-bit displacement added to B included in the instruction opcode.

Format Octal code
SASB 1407A₁₈

ND-06.029.1 EN


Page 157

SINTRAN III: Control Instructions

SBIT

Description:
Store the single bit accumulator (K) in a logical memory bit.

  • (X) points to the start of a bit array
  • (A) points to the bit within the array

Format:
SBIT

Octal code:
140512₈

SBITP

Description:
Store the single bit accumulator (K) in a physical memory bit.

  • (T) points to the bank number containing the bit array
  • (X) points to the start of a bit array
  • (A) points to the bit within the array

Format:
SBITP

Octal code:
140513₈

SBYTP

Description:
Store a byte in physical memory.

  • (D) points to the bank number containing the byte array
  • (T) points to the start of a byte array
  • (X) points to the actual byte within the array

Format:
SBYTP

Octal code:
140515₈


Page 158

SINTRAN III Control Instructions

SETPT

Description:
Set page tables.

This instruction can replace the following instructions:

SETPT:  JXZ * 7₈
        LDXTX 28₈
        BSET ZRO₈ 130₈ DA
        LDBTX 10₈
        STD ,B
        LDXTX 00₈
        JMP *-6₈

Each time the loop is executed (until X becomes zero) two consecutive physical memory locations addressed by X are loaded into the A and D registers.

The word in A is the protect field of the page table, bit 11 (the PGU bit) is cleared to set the page table. The double word (in A and D) is then stored in two consecutive locations pointed to by the contents of the B register, the page table address.

    • is the mnemonic for P relative addressing.
Format: SETPT
Octal code: 140300₈

SZCB

Description:
Store zero in the core map-table bank (CMBNK).

(ea) ⟵ 0

ea = (B) + Δ = CMBNK entry

Δ 3-bit displacement added to B included in the instruction opcode.

Format: SZCB
Octal code: 1407A7₈

Page 159

SINTRAN III Control Instructions

SZSZB

Description:
Store zero in the segment-table bank (STBNK).

(ea) ← 0

ea = (B) + A = STBNK entry

A 3-bit displacement added to B included in the instruction opcode.

Format: SZSZB
Octal code: 140746₈

TSETP

Description:
Test and set physical memory word.

(T) points to the physical memory bank to be accessed
(X) points to the address within the bank
(A) is loaded with the word

The contents of the location addressed by T and X are simultaneously loaded into the A register as the location is written to with all 1s. No other memory access is allowed during this operation.
The old content of the memory address is always read from the memory and never from cache. The all 1s' data word is never written to cache.
This instruction can be used for processor synchronization.

Format: TSETP
Octal code: 140516₈

WGLOB

Description:
Initialize global pointers.

(T) = bank number of segment table (STBNK)
(A) = start address within bank (STSTRT)*
(D) = bank number of core map table (CMBNK)

  • must be divisible by 8
Format: WGLOB
Octal code: 140500₈

ND-06.029.1 EN


Page 160

THE INSTRUCTION SET

ND-06.029.1 EN

147


Page 161

I'm unable to process the content of the image as it seems to be a blank page. Please provide a different image with visible text, and I'd be happy to assist with the OCR conversion.


Page 162

Appendix A

Glossary

Term Definition

ND-06.029.1 EN


Page 163

Appendix A: Glossary

ND-06.029.1 EN


Page 164

Appendix A Glossary

Term Description
1s and 2s complement Binary methods of representing signed numbers.
accumulator The part of the computer which carries out arithmetical functions.
BCD Binary Coded Decimal notation also known as packed decimal.
cache memory Short term memory used to hold instructions and/ data allowing faster execution of repetitive operations.
commercial extended instructions Instructions which are privileged or for BCD arithmetic...now standard ND-110 instructions.
effective address The address calculated from the contents of various registers and/or a displacement.
floating point A method of representing and calculating in binary with a number and an exponent.
general registers A, B, D, L, P, T, X and STS registers.
lsb The least significant bit of a number.
mantissa The most significant bits following the binary point.
microcycle Internal CPU cycle period.
microprogram The sequence of micro-instructions executed to perform an instruction.
msb The most significant bit of a number.
ND-100 family The family of 16-bit general purpose computers from Norsk Data consisting of the following machines:
- ND-100
- ND-100/CE
- ND-100/CX
- ND-100 Compact
- ND-100 Satellite
- ND-110

Page 165

ND-110/CX Glossary

Term Definition
nanocycle = 26ns
no-operation An executed instruction which has no effect.
octal Base 8 representation of digits.
paging The method used for translating a 16-bit address into a 24-bit address.
physical memory The memory available to the computer. Paging may be required to address the entire physical memory.
PLANC Programming Language ND Computers. A high-level systems programming language.
triple word A 48-bit word.
virtual address The 16-bit address which can be used to address a larger address range of 24-bits, providing page tables are implemented.
working registers A, B, D, L, P, T and X registers.

Page 166

Appendix B

PLANC Listings of the New SINTRAN Instructions

ND-06.029.1 EN


Page 167

15.1

General Information

This document contains technical data related to the ND-06.029.1 EN specifications. The information provided herein is intended for use by qualified personnel to ensure compliance with applicable standards.

Specifications

Parameter Value
Document ID ND-06.029.1 EN
Revision Date Not specified
Approver Not specified

Notes

Ensure all safety guidelines are followed while handling technical materials. The data must be reviewed periodically to maintain accuracy and relevance.


Page 168

Appendix B PLANC Listings of the New SINTRAN Instructions

The following privileged instructions are described in their high-level language (PLANC) form:

CLPT

Clear segment from page tables.

WHILE X<>0 DO
  B := ((cmbnk,X).3) V 176000) * 2
  IF A<>0 THEN
    0 := B.0
  ELSEIF A>0 THEN
    R3 := B.0
    IF R3<>0 THEN
      R3 := (cmbnk,X).2
    ENDIF
  ELSE
    R3 := B.0
    IF R3<>0 THEN
      R3 := (cmbnk,X).2
      0 := B.0
    ENDIF
  ENDIF
  X := (cmbnk,X).0
  IF interrupt_pending THEN
    P := P-1
    EXIT
  ENDIF
ENDDO
EXIT

CNREK

Clear non re-entrant pages.

Q := (stbnk,A).2
IF A=0 THEN
  EXIT
ENDIF
R1 := (QA1700)*2) + 174000
DO FOR R2=X TO X+10
  R4 := (T,R2).0
  IF R2 = X+10 THEN
    EXIT
  ENDIF
  DO FOR lc=0 TO 17
    IF bit(lc,R4) = 1 THEN
      0 := (R1).0
    ENDIF
  ENDDO
  R1 := R1 + 2
ENDDO

ND-06.029.1 EN


Page 169

Appendix B PLANC Listings of the New SINTRAN Instructions

ENPT

Enter segment in page tables.

WHILE X≠0 DO
    A := ( (cmbnk,X).2 ) ∧ 173777
    R3 := x/4
    B := ( ( (cmbnk,X).3 ) ∨ 176000 ) * 2
    A := B.O
    R3 := B.1
    X := (cmbnk,X).0
    IF interrupt_pending THEN
        P := P-1
        EXIT
    ENDIF
ENDDO
EXIT

INSPL

Insert page in page list.

R1 := (stbnk,B).7
X := (stbnk,B).7
R1 := (cmbnk,X).0
IF R1≠0 THEN
    Q := (cmbnk,R1).1
    X := (cmbnk,R1).1
ELSE
    Q := ( (B - ststr) / 2 ) + 3
ENDIF
Q := (cmbnk,X).1
T := (cmbnk,X).3

REMPL

Remove page from page list.

R1 := (cmbnk,X).0
R2 := (cmbnk,X).1
IF R2∧3 = 0 THEN
    R1 := (cmbnk,R2).0
ELSE
    Q := (R2 * 2) + ststr
    R1 := (stbnk,Q).7
ENDIF
IF R1≠0 THEN
    R2 := (cmbnk,R1).1
ENDIF
O := (cmbnk,X).0
O := (cmbnk,X).1

ND-06.029.1 EN


Page 170

Appendix B PLANC listings of the new SINTRAN instructions

REPT

Enter re-entrant segment in page tables.

WHILE X<>0 DO
    A := ( (cmbnk,X).2 ) ∧ 073777
    R3 := X/4
    B := ( ( (cmbnk,X).3 ) ∨ 176000 ) * 2
    A =: B.0
    R3 =: B.1
    X := (cmbnk,X).0
    IF interrupt_pending THEN
        P := P-1
        EXIT
    ENDIF
ENDDO
EXIT

ND-06.029.1 EN


Page 171

![Text missing]


Page 172

Appendix C

Alphabetic List of Instruction Mnemonics and Their Octal Codes

ND-06.029.1 EN


Page 173

I couldn't read the text from the image you provided. Could you try re-uploading or providing a clearer image?


Page 174

Appendix C: Alphabetic List of Instruction Mnemonics and Their Octal Codes

Instruction Description Octal Code Page
AAA add argument to A 172400 85
AAB add argument to B 172000 85
AAT add argument to T 173000 85
AAX add argument to X 173400 85
ADD add to A 060000 65
ADDD add decimal 140120 101
AND logical AND to A 070000 67
BANC AND with bit complement 177000 87
BAND AND to K 177200 87
BFILL byte fill 140130 93
BLDA load K 176600 87
BLDC load bit complement to K 176400 87
BORA OR to K 177600 87
BORC OR with bit complement 177400 87
BSET bit set 174000 87
BSKP skip next location if cc 175000 87
BSTA store and clear K 176200 87
BSTC store complement and set K 176000 87
CHREENTPAGES change non reentrant pages 140303 137
CLEPT clear page tables 140301 137
CLEPU clear page tables, collect PGU info 140304 138
CLNREENT clear non reentrant 140302 139
CLPT clear segment from page tables 140505 139
CNREK clear non-reentrant pages 140504 139
COMD compare decimal 140122 102
COPY register transfer 146100 43
DEPO memory deposit 150417 130
DNZ convert FA number to A 152000 71
ELEAV error leave stack 140137 109
ENPT enter segment into page tables 140506 139
ENTR enter stack 140135 109
EXAM memory examine 150416 130
EXIT return from subroutine 146142 44
EXR execute register 140600 45
FAD add to floating accumulator 100000 68
FDV divide floating accumulator 114000 68
FMU multiply floating accumulator 110000 69
FSB subtract from floating accumulator 104000 69
IDENT identify interrupt 143600 125
INIT initialize stack 140134 110
INSPL insert page in page list 140502 140
IOF turn off interrupting system 150401 126
ION turn on interrupting system 150402 126
IOX input/output 160000 121
IOXT input/output 150415 123
IRR inter-register read 153600 114
IRW inter-register write 153400 114
JAF jump if A not 0 131400 79
JAN jump if A -ve 130400 79

Page 175

Appendix C Alphabetic list of instruction mnemonics and their octal codes

Instruction Description Code Page
JAP jump if A +ve or 0 130000 79
JAZ jump if A 0 131000 79
JMP jump 124000 78
JNC increment X; jump if -ve 132400 80
JPC increment X; jump if +ve 132000 80
JPL jump to subroutine 134000 78
JXN jump if X -ve 133400 80
JXZ jump if X 0 133000 80
LACB load A with core map table bank 1407A2 140
LASB load A in segment table bank 1407A0 140
LBTT load K flip-flop with logical memory bit 140510 140
LBITP load K flip-flop with physical memory bit 140511 141
LBYT load byte 142200 91
LBYTP load byte from physical memory 140514 141
LDA load A 044000 60
LDATX load A with physical memory contents 143300 134
LDBTX load B with physical memory contents 143303 134
LDD load double word 024000 60
LDDTX load D with physical memory contents 143302 134
LDF load floating accumulator 034000 60
LDT load T 050000 61
LDX load X 054000 61
LDXTX load X with physical memory contents 143301 135
LEAVE leave stack 140136 111
LRB load register block 152600 116
LWCS load writeable control store 143500 131
LXCB load X with core map table bank 1407A5 141
LXSB load X with segment table bank 1407A4 142
MCL masked clear of register 150200 118
MIN memory increment; skip if 0 040000 62
MIX3 multiply index by 3 143200 46
MON monitor call 153000 81
MOVB move bytes 140131 93
MOVBF move bytes forward 140132 93
MOVEW move word block (range 00 to 80 = xx) 1431xx 95
MPY multiply integer 120000 65
MST masked set of register 150300 118
NLZ convert A number to floating in FA 151400 71
OPCOM set to OPCOM mode 150400 132
ORA inclusive OR A 074000 67
PACK convert to packed decimal 140124 103
PIOF turn paging and interrupt off 150405 126
PION turn paging and interrupt on 150412 127
POF turn memory management off 150404 128
PON turn memory management on 150410 128
RADD register add 146000 47
RAND register AND 144400 49
RCLR register clear 141600 50
RDCR register decrement 146200 51
RDIV register div 141600 52
RDUS read do not use cache 140127 112
RDUSP read a word without using cache 140517 142
REMPL remove page from page list 140503 142

Page 176

Appendix C Alphabetic List of Instruction Mnemonics and Their Octal Codes

Mnemonic Description Octal Code Page
REPT enter reentrant segment in page tables 140507 143
REX reset extended address mode 150407 129
REXO register exclusive OR 140500 53
RGLOB examine STBNK,STSRT,CMBNK 140501 143
RINC register increment 146600 54
RMPY register multiply 141200 55
RORA register inclusive OR 145400 56
RSUB register subtract 146600 57
SAA set argument to A 170400 85
SAB set argument to B 170000 85
SACB store A in core map table bank 1407A3 143
SAD shift A and D registers 154600 75
SASB store A in segment table bank 1407A1 143
SAT set argument to T 171000 38
SAX set argument to X 171400 85
SBIT store K flip-flop in logical memory bit 140512 144
SBITP store K flip-flop in physical memory bit 140513 144
SBYTE store byte 142600 91
SBYTEP store byte in physical memory 140515 144
SEPT set page tables 140300 145
SEX set extended address mode 150406 129
SHA shift A register 154400 75
SHD shift D register 154200 75
SHDE decimal shift 141426 104
SHT shift T register 154000 38
SKP skip next location on cc 140000 82
SRB store register block 152402 116
STA store A 004000 62
STATX store in A physical memory contents 143304 135
STD store double word 020000 62
STDTIX store in D physical memory contents 143306 135
STF store floating accumulator 030000 18
STT store T 010000 63
STX store X 014000 18
STZ store 0 000000 64
STZTIX store in Z physical memory contents 143305 136
SUB subtract from A 064000 66
SUBD subtract decimal 140121 105
SWAP register exchange 144000 58
SZCB store 0 in core map table bank 1407A7 145
SZSB store 0 in segment table bank 1407A6 146
TRA transfer internal register to A 150000 119
TRR transfer internal register from B 150100 119
TSET test and set 140123 112
TSETF physical test-and-set request 140516 146
UPACK convert to unpacked decimal 140125 106
VERSN cpu version 140133 97
WAIT give up priority 151000 127
WGLOB initialize global pointers 140500 146

Page 177

Sorry, I can't convert this image to Markdown.


Page 178

Appendix D

The TRR and TRA Instructions for Internal Registers


ND-06.029.1 EN


Page 179

Appendix G

Use, Test, and Care Instructions for Immersion Equipment


Document Number
ND-06.029.1 EN

Page 180

Appendix D: The TRR and TRA Instructions for Internal Registers

The A register contents after a TRR and/or TRA instruction(s) are listed below.

TRA reads the contents of the internal register selected into the A register. The following diagrams for TRR (internal register) illustrate the format of the A register contents after the instruction.

TRR writes the contents of the A register into the internal register selected. The following diagrams for TRA (internal register) show the format the A register should take before the instruction is executed and ● denotes an insignificant bit.


Page 181

Appendix D The TRR and TRA instructions for internal registers

PANS Panel Status Register

Bit Name Description
15 PAN panel is installed (this is zero if no panel is installed)
14 FIF FIFO buffer ready for data
13 DAT last processed command requested data
12 RDY last command has been completed (this bit is cleared by TRA PANS)
10-8 cmnd the last command processed
7-0 RPAN the data requested by the last processed command (if no data was requested, the field contains bits 0-7 of PANC)

PANC Panel Control Register

Bit Name Description
13 DAT the command requests data from the panel (data is placed in bits 0-7 of PANS)
10-8 cmnd panel processor command
7-0 RPAN data to the panel processor

Page 182

Appendix D The TRR and TRA Instructions for Internal Registers

STS Status

| | |

|---|---|

| 15 | 0 |

| | PIL | M | C | O | Q | Z | K | G | P |

TRA STS

| 15 | 0 |

| | M | C | O | Q | Z | K | G | P |

TRR STS

| | |

|---|---|

| 15 | IONI | interrupt system on flag |

| 14 | PONI | memory management on flag (normal mode: 19-bit addresses) |

| 13 | SEXI | memory management is in extended mode (24-bit addresses used NOT 19-bit) |

| 12 | N100 | ND-100 flag (indicates an ND-100 family CPU) |

| 11-8 | PIL | current program level |

| 7 | P | paging table mode (enables alternate page table mode) |

| 6 | G | rounding flag (for floating point operations) |

| 5 | K | 1-bit accumulator (used for bit operations) |

| 4 | Z | error flag |

| 3 | Q | dynamic overflow flag |

| 2 | O | static overflow flag |

| 1 | C | carry flag |

| 0 | M | multishift link flag (1-bit extension for the A, D or T register) |

ND-06.029.1 EN


Page 183

Appendix D The TRR and TRA Instructions for Internal Registers


OPR Operator Panel Switch 2₈

15 0

TRA OPR

This register is a simulated panel switch register. Data is written into the register by OPCOM operations; TRA OPR can be used to read the register contents.


LMP Operator Lamp 2₈

15 0

TRR LMP


ND-06.029.1 EN


Page 184

Appendix D The TRR and TRA instructions for internal registers

PGS Paging Status

Four Page Table Mode:

Bit Field Description
15 FF Fetch fault
14 PM Permit violation
7-6 PT Page table number (when violation occurred)
5-0 VPN Virtual page number
15          0
+---+---+---+---+
| F |   | ••• | PT | VPN |
+---+---+---+---+
          TRA PGS

Sixteen Page Table Mode:

Bit Field Description
15 FF Fetch fault
14 PM Permit violation
9-6 PT Page table number (when violation occurred)
5-0 VPN Virtual page number
15          0
+---+---+---+---+
| F | N | ••• | PT | VPN |
+---+---+---+---+
          TRA PGS

ND-06.029.1 EN


Page 185

Appendix D The TRR and TRA instructions for internal registers


PCR Paging Control

Four page table mode:

15 0
PT APT
TRR PCR
  • 10-9 PT: normal page table
  • 7-8 APT: alternative page table
  • 3-6 PIL: current program level
  • 1-0 Ring: ring protection level (0-2)

Sixteen page table mode:

15 0
PT APT
TRR PCR
  • 14-11 PT: normal page table
  • 10-7 APT: alternative page table
  • 3-6 PIL: current program level
  • 1-0 Ring: ring protection level (0-2)

PVL Previous Program Level

15 0
1 0 1 0 1 1 1 PVL 0 1 0
TRA PVL
  • 3-6 PVL: previous program level (0-15)

ND-06.029.1 EN


Page 186

Appendix D: The TRR and TRA Instructions for Internal Registers

IIC Internal Interrupt Control

15                           0
+-------------------------------+
| • • • • • • • • • • • • | IIC |
+-------------------------------+
                              TRA IIC

3-0 IIC code denoting the source of an internal interrupt (see IIE)

IIE Internal Interrupt Enable

15                          0
+-------------------------+
| • • • • • • • • • M P T | I 2 F P M M C |
| R Q I O X        | I F V C 0 |
+-------------------------+
                          TRR IIE

The bits enable the following internal interrupts:

IIC Code
10 POW power failure 12₈
9 MOR memory out of range 11₈
(or addressing non-existent memory)
8 PTY memory parity error 10₈
7 IOX IOX error 7₈
(no answer from an external device)
6 PI privileged instruction 6₈
5 Z error flag 5₈
4 II illegal instruction 4₈
(instruction not implemented)
3 PF page fault 3₈
(page not in memory)
2 MPV memory protect violation 2₈
(page number is found in the PSR)
1 MC monitor call 1₈

ND-06.029.1 EN


Page 187

Appendix D The TRR and TRA instructions for internal registers


PID Priority Interrupt Detect 6₈

15                0
|15|   |13|12|11| | | | | | | | | | |
TRA PID

An external interrupt on program levels 15, 13-11 will set the corresponding bit in this register.


PIE Priority Interrupt Enable 7₈

15                0
|15|   |13|12|11| | | | | | | | | | |
TRR PIE

This register enables external interrupts on program levels 15, 13-11.


CSR Cache Status 10₈

15                0
| | | | | | | | | | | | |F|N|O|C|C|
                 |I|N|O|L|L|
                 |N|P|
TRA CSR

4 FIN cache clear finished
3 MAN DIS cache disabled manually
2 CON cache on
1 CUP cache updated on current memory request

ND-06.029.1 EN


Page 188

Appendix D The TRR and TRA instructions for internal registers

CCL Cache Clear

10₈

This register has no data. Executing a TRR CCL will exchange the two cache-used bit-maps, so one bit-map can be cleared. (see ND-110 Functional Description ND-06.026.1)


ACTL Active Level

11₈

15 0
● ● ● ● ● ● ● ● ● ●

TRA ACTL


LCIL Lower Cache Inhibit Limit

11₈

15 0
● ● ● ● ● ● ● ● ● ●

TRR LCIL

The TRR LCIL sets bits in the cache bit-map (equivalent in function to the setting the lower limit register of the ND-100).


ALD Automatic Load Descriptor

12₈

15 0
0 0 M 0

address

TRA ALD


ND-06.029.1 EN


Page 189

Appendix D The TRR and TRA instructions for internal registers


UCIL Upper Cache Inhibit Limit (12\8>)

15 0
|________|________|
upper page limit number

TRR UCIL

The TRR UCIL sets bits in the cache bit-map (equivalent in function to the setting the upper limit register of the ND-100).


PES Parity Error Status (13\8>)

15 0
F C H | D M A | F A T | err code | upp mem address
________

TRA PES

15 FCH error during an instruction fetch
14 DMA error during DMA reference
13 FAT fatal error (multiple-bit error)
12-8 error code
7-0 8 msb of the last memory address on the ND-100 bus

CILP Cache Inhibit Page (13\8>)

15 0
F | physical page address
______

TRR CILP

15 F page format (1 = normal; 0 = inhibit)
13-0 physical page address of affected page

ND-06.029.1 EN


Page 190

Appendix D The TRR and TRA instructions for internal registers

PGC Paging Control 148

Four page table mode:

15                  0
┌───┬───┬───┬───┬───┬───┐
│   │ PT│ APT │ PIL│ 0 │ Ring │
└───┴───┴───┴───┴───┴───┘
Bits Field Description
10-9 PT normal page table
7-8 APT alternative page table
3-6 PIL current program level
1-0 Ring ring protection level (0-2)

Sixteen page table mode:

15                  0
┌───┬───┬───┬───┬───┬───┐
│   │ PT │ APT │ PIL│ 1 │ Ring │
└───┴───┴───┴───┴───┴───┘
Bits Field Description
14-11 PT normal page table
10-7 APT alternative page table
3-6 PIL current program level
1-0 Ring ring protection level (0-2)

ND-06.029.1 EN


Page 191

Appendix D The TRR and TRA Instructions for Internal Registers

PEA Parity Error Address

15₈

15 0
lower memory address

TRA PEA

15-0 16 lsb of the physical memory address on ND-100 bus
(at the time of the memory access that caused an interrupt)

ECCR Error Correction Control

15₈

15 0
● ●

TRR ECCR

Bit Code Description
4 6TS simulate memory error in bit 6
3 DIS disable ECC system and parity interrupt
2 ANY enable parity interrupt on all errors (reset for only multiple-bit errors)
1 15T simulate memory error in bit 15
0 OTS simulate memory error in bit 0

ND-06.029.1 EN


Page 192

Appendix D The TRR and TRA Instructions for Internal Registers


PEA Parity Error Address 15₈

15 | 0
  | | | | | | | | | |  
error address
TRA PEA

This register contains the 16 lsbs of the address causing a parity error. Reading this register unlocks both PEA and PES.


CS Control Store 17₈

15 | 0
  | | | | | | | | | |  
control store 16-bit field
TRA CS and TRR CS

The control store is 8 K by 64 bits. The X register must be loaded with the control store address before either a TRA CS or TRR CS instruction. The X register should have the following format:

15 | 0
0 | | | | | | | | |   
address 0 - 8K | aa

where aa selects one of four 16-bit fields from the addressed 64-bit control store word.


ND-06.029.1 EN


Page 193

I can't transcribe the text from this image.


Page 194

Index

Page Number 181
Document ND-06.029.1 EN

Page 195

I'm sorry, I can't read the content from the image you provided.


Page 196

Index

A Register Transfer Instructions

  • description .......................................... 117
  • MCL ................................................... 118
  • MST ................................................... 118
  • TRA .................................................. 119
  • TRR .................................................. 119
  • AAA .................................................. 85
  • AAB .................................................. 85
  • AAT .................................................. 85
  • AAX .................................................. 85
  • ACTL

    • Active Level ...................................... 120, 167
  • AD1 .................................................. 40
  • ADC .................................................. 40
  • ADD .................................................. 65
  • ADDD ................................................ 101

Address Mode

  • specification ........................................ 59, 76

Addressing

  • B indexed ............................................ 24
  • B indirect ........................................... 22
  • B indirect indexed ................................... 26
  • B relative ........................................... 20
  • byte ................................................. 27
  • P indirect ........................................... 21
  • P indirect indexed ................................... 25
  • P relative ........................................... 19
  • physical memory ...................................... 28
  • X relative ........................................... 23

ALD

  • Automatic Load Descriptor ............................ 120, 167
  • AND .................................................. 67

Argument Instructions

  • AAA .................................................. 85
  • AAB .................................................. 85
  • AAT .................................................. 85
  • AAX .................................................. 85
  • SAA .................................................. 85
  • SAB .................................................. 85
  • SAT .................................................. 85
  • SAX .................................................. 85

Arithmetic Instructions

  • ADD .................................................. 65
  • MPY .................................................. 65
  • SUB .................................................. 66

ASCII Notation

  • ....................................................... 8

B Indexed

  • addressing ........................................... 24

B Indirect

  • addressing ........................................... 22

ND-06.029.1 EN


Page 197

Index

B

indirect indexed addressing

26

relative addressing

20

BAC 38
BANC 87
BAND 87
BCD - binary coded digital - notation 7
BCM 88
BFILL 93

Bit instructions

| BANC | 87 | | BAND | 87 | | BLDA | 87 | | BLDC | 87 | | BORA | 87 | | BORC | 87 | | BSET | 87 | | BSKP | 87 | | BSTA | 87 | | BSTC | 87 |

Bit sub-instructions

| BAC | 88 | | BCM | 88 | | ONE | 88 | | ZRO | 88 | | BLDA | 87 | | BLDC | 87 | | BORA | 87 | | BORC | 87 | | BSET | 87 | | BSKP | 87 | | BSTA | 87 | | BSTC | 87 |

byte addressing

27

Byte block instructions

| BFILL | 93 | | description | 92 | | MOVB | 93 | | MOVBF | 94 |

CCL

Cache Clear

120, 167

changing the microprogram

32

| CHREENTPAGES | 137 | | CILP | |

Cache Inhibit Page

120, 167

| CLD | 40 | | CLEPT | 137 | | CLEPU | 138 | | CLNREENT | 139 | | CLPT | 139, 155 | | CM1 | 40 | | CNREK | 139, 155 | | COMD | 102 |

ND-06.029.1 EN


Page 198

Index

Compound Bit Mnemonic

Mnemonic Page
SSC 89
SSK 89
SSM 89
SSO 89
SSPTM 89
SSQ 89
SSTIG 89
SSZ 89

Condition Code

Condition Page
equal (EQL) 83
greater or equal with overflow (GRE) 83
greater or equal (GEO) 83
less than with overflow (LST) 83
less than (LSS) 83
magnitude greater or equal (MGRE) 83
magnitude less than (MLST) 83
reversing relationships 83
unequal (UEQ) 83

COPY

Topic Page
COPY 42-44, 48, 50 see RADD

CS

Topic Page
Control Store 120, 167

CSR

Topic Page
Cache Status 120, 167

Data and Instruction Types

Type Page
32-bit floating point word 5
48-bit floating point word 6
bit 3
byte 4
double word 4
word 4

Decimal Instructions

Instruction Page
ADDD 101
COMD 102
description 98
PACK 103
SHDE 104
SUBD 105
UPACK 106

Decimal Notation

Notation Page
ASCII coded decimal 8
BCD-binary coded decimal 7

DEPO

Topic Page
DEPO 130

Destination

Topic Page
specification 39, 82, 88, 113

Device Register Address

Topic Page
DNZ 121

DNZ

Topic Page
DNZ 71

dr

Topic Note
dr see destination

ECCR

Topic Page
Error Correction Control 120, 167

ELEAV

Topic Page
ELEAV 109

Embedded Leading

Topic Page
embedded leading 9, 99

Page 199

Index

embedded sign coding . . . . . . . . . . . . . . . . . . . . . . . . . 9
embedded trailing . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 99
ENPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139, 156
ENTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
EQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
EXAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
execution times
    memory reference instructions . . . . . . . . . . . . . . . . 15
EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42-44, 48
EXR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . see COPY
       42, 45

FAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
FDV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Floating point
    48-bit CPU instructions . . . . . . . . . . . . . . . . 72
    48-bit/32-bit test . . . . . . . . . . . . . . . . . . . . . 72
Floating point conversion instructions
    description . . . . . . . . . . . . . . . . . . . . . . . . . 70
Floating point instructions
    DNZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
    FAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
    FDV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
    FMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
    FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
    LDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
    NLZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
    STF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
FMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
format
    binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
    memory reference instructions . . . . . . . . . . . . . 14
    octal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
    register instructions . . . . . . . . . . . . . . . . . . 42
FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

GEQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
GRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

IDENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
IIC
    Internal Interrupt Control . . . . . . . . . . . . . 120, 167
IIE
    Internal Interrupt Enable . . . . . . . . . . . . . . 120, 167
INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Input/output instructions
    IOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
    IOXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
INSPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140, 156

Instruction
    alphabetic list of . . . . . . . . . . . . . . . . . . . . . . . 35
    execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
    privileged . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
    set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

ND-06.029.1 EN


Page 200

Index

Instruction

Timing

timing 33

Inter-level Register Instructions

Description

IRR 114
IRW 114

Interrupt Control Instructions

Description

IDENT 125
IOF 126
ION 126
PIOF 126
PION 127
WAIT 127
IOF 126
ION 126
IOX 121
IOXT 123
IRR 114
IRW 114

Jump Instructions

Description

JAF 79
JAN 79
JAP 79
JAZ 79
JMP 78
JNC 80
JPC 80
JPL 78
JXN 80
JXZ 80
Jump Instructions
JAF 79
JAN 79
JAP 79
JAZ 79
JMP 78
JNC 80
JPC 80
JPL 78
JXN 80
JXZ 80

Additional Instructions

| LACB | 140 | | LASB | 140 | | LBIT | 140 | | LBITP | 141 | | LBYT | 91 | | LBYTP | 141 |

Lower Cache Inhibit Limit

LCLIL 120, 167
LDA 60
LDATX 134
LDBTX 134

Page 201

Index

LDD

60

LDDTIX

134

LDF

60, 68

LDT

61

LDX

61

LDXTIX

135

LEAVE

111

LIN

link end input shift
73

LMP

Operator Lamp
120, 167

Load Instructions

LDA 60
LDD 60
LDF 60, 68
LDT 61
LDX 61

Logical instructions

AND 67
ORA 67

LRB

116

LSS

83

LST

83

LWCS

131

LXCB

141

LXSB

142

M

multi-shift flag
74

MCL

118, 120, 167

Memory addressing

see addressing

key to descriptions
17

memory management
16

Memory examine and test instructions

RDUS 112
TEST 112

Memory management instructions

PIOF 128
PION 128
POF 128
PON 128
REX 129
SEX 129

Memory reference instruction format

14

Memory transfers

description
59

MGRE

83

microprogram

32

MIN

62

MIX3

42, 46

MLST

83

MON

31, 81

Monitor instruction

MON

MOVB

93

MOVBF

94

ND-06.029.1 EN


Page 202

Index

MOVEW ....................................... 95
MEY ......................................... 65
MST ..................................... 118, 120, 167

NLZ .......................................... 72

ONE ......................................... 88
OPCOM ....................................... 132
OPCOM mode instruction ...................... 132
OPR
Operator Panel Switch .................. 120, 167
ORA ......................................... 67

P indirect addressing

P indirect indexed addressing ............... 25
P relative addressing ....................... 19
PACK ......................................... 103
PANC
Panel Control ........................ 120, 167
PANS
Panel Status .......................... 120, 167

PCR
PEA Paging Control .................... 120, 167
PES
Parity Error Address .................. 120, 167
PGC
Parity Error Status ................... 120, 167
PGS
Paging Control ........................ 120, 167
Paging Status ......................... 120, 167

Physical Memory

Physical memory addressing .................. 28
Physical memory control instructions
DEPO ........................................ 130
EXAM ........................................ 130

Physical memory read/write SINTRAN instructions

description ................................ 133
LDATX ...................................... 134
LDBTX ...................................... 134
LDDTX ...................................... 134
LDXTX ...................................... 135
STATX ...................................... 135
STDTX ...................................... 135
STZTX ...................................... 136

PID
Priority Interrupt Detect ............. 120, 167

PIE
Priority Interrupt Enable ............. 120, 167

PIOF ................................... 126, 128
PION ................................... 127, 128

ND-06.029.1 EN


Page 203

Index

POF

..................................................... 128

PON

..................................................... 128

Privileged instructions

program level device allocation ..................................................... 31 ..................................................... 124

PVL

Previous Program Level ..................................................... 120, 167

RADD

..................................................... 42-44, 47, 50

RAND

..................................................... 42, 49

RCLR

..................................................... 42, 43, 48, 50

RDCR

..................................................... see COPY ..................................................... 42, 48, 51

RDIV

..................................................... see RADD ..................................................... 42, 52

RDUS

..................................................... 112

RDUSP

..................................................... 142

Register block instructions

description ..................................................... 115 LRB ..................................................... 116 SRB ..................................................... 116

Register Instructions

Instruction Page(s)
ADC and AD1 40
CLD and CM1 40
COPY 43
description 39
EXIT 44
EXR 45
MIX3 46
RADD 47
RAND 49
RCLR 50
RDCR 51
RDIV 52
REXO 53
RINC 54
RMPY 55
RORA 56
RSUB 57
SWAP 58

REMPL

..................................................... 142, 156

REPT

..................................................... 143, 157

REX

..................................................... 129

REXO

..................................................... 42, 53

RGLOB

..................................................... 143

RINC

..................................................... 42, 48, 54

RMPY

..................................................... see RADD ..................................................... 42, 55

RORA

..................................................... 42, 56, see RADD

ROT

rotational shift ..................................................... 73 rounding ..................................................... 99

RSUB

..................................................... 42, 48, 57

ND-06.029.1 EN


Page 204

Index

Term Page Numbers
SAA 85
SAB 85
SACB 143
SAD 75
SASB 143
SAT 85
SAX 85
SBIT 144
SBITP 144
SBYT 91
SBYTP 144
separate leading 9, 99
separate trailing 9, 99
SETPT 145
SEX 129
SHA 75
SHD 75
SHDE 101, 102, 104

Shift

Type Page Numbers
arithmetic 73
link end input (LIN) 73
right (SHR) 74
rotational (ROT) 73
zero end input (ZIN) 73

Shift Instructions

Instruction Page Numbers
SAD 75
SHA 75
SHD 75
SHT 75

SHR

Instruction Page Numbers
shift right 74
SHT 75

Single Byte Instructions

Description Page Numbers
description 90
LBYT 91
SBYT 91

SINTRAN III Control Instructions

Instruction Page Numbers
CHREENTPAGES 137
CLEPT 137
CLEPU 138
CLNREENT 139
CLPT 139, 155
CNREK 139, 155
ENPT 139, 156
INSPL 140, 156
LACB 140
LASB 140
LBIT 140
LBITP 141
LBYTP 141
LXCB 141
LXSB 142
RDUSP 142
REMPL 142, 156
REPT 143, 157
nOLOB 143
SACB 143

Page 205

SINTRAN III Control Instructions

SASB ........................................... 143
SBIT ............................................ 144
SBITP ........................................... 144
SBYTP ........................................... 144
SETTP ........................................... 145
SZCB ............................................ 145
SZSB ............................................ 146
TSETTP .......................................... 146
WGLOB ........................................... 146

SINTRAN III Memory Transfer Instructions

Instruction Page
LDATX 133
LDBTX 133
LDDTX 133
LDXTX 133
STATX 133
STDTX 133
STZTX 133

Skip Instruction

SKP ............................................. 82

SKP ............................................. 82

Term Page
source 39, 82
sr see source
SRB 116
SSC 89
SSK 89
SSM 89
SSO 89
SSPTM 89
SSQ 89
SSTG 89
SSZ 89
STA 62

Stack Frame

Term Page
ERRCODE 108
LINK 108
PREVB 108
SMAX 108
STP 108

Stack Instructions

Instruction Page
description 108
ELEAV 109
ENTR 109
INIT 110
LEAVE 111
STATX 135
STD 62
STDTX 135
STF 63, 69

Store Instructions

Instruction Page
MIN 62
STA 62
STD 62
STF 63
SIT 63
STX 63

ND-06.029.1 EN


Page 206

Index

Store instructions

Instruction Page
STZ 64
STS 89

Bit operations

Description Page
Status register 120, 167
Instruction Page
STT 63
STX 63
STZ 64
STZTX 136
SUB 66
SUBD 105
SWAP 42, 58
SZCB 145
SCSB 146
Instruction Page
TRA 32, 119, 120, 167
TRR 32, 119, 120, 167
Instruction Page
TSET 112
TSETIP 146

UCIL

Description Page
Upper Cache Inhibit Limit 167
Instruction Page
UCILR 120
Description Page
Upper Cache Inhibit Limit 120
Instruction Page
UEQ 83
UPACK 106

Version instruction

Instruction Page
VERSN 97
VERSN 97
Instruction Page
WAIT 127
WGLOB 146

Word block instruction

Instruction Page
MOVEW 95

Writable control store instruction

Instruction Page
LCWS 131

X relative

Description Page
Addressing 23
Instruction Page
ZIN 73

Zero end input shift

Instruction Page
ZRO 88

ND-06.029.1 EN


Page 207

Updating

Manuals can be updated in two ways, new versions and revisions. New versions consist of a completely new manual which replaces the old one, and 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 Customer Support Information and can be ordered from the address below.

The reader’s comments form at the back of this manual can be used both to report errors in the manual and give an evaluation of the manual. Both detailed and general comments are welcome.

Printing Record

Printing Notes
03/87 Version 1 EN

ND-110 Instruction Set
Publ.No. ND-06.029.1 EN

Ring Binder or Plastic Cover

The manual can be placed in a ring binder for greater protection and convenience of use. Ring binders may be ordered at a price of NK. 45.- per binder.

The manual may also be placed in a plastic cover. This cover is more suitable for manuals of less than 100 pages than for larger manuals.

Please send your order, as well as all types of inquiries and requests for documentation to the local ND office, or (in Norway) to:

Graphic Center
Norsk Data A.S
P.O.Box 25 BOGERUD
N-0621 OSLO 6 - Norway

I would like to order

........ Ring Binders, B5, at NOK 35,- per binder

........ Ring Binders, A4, at NOK 45,- per binder

........ Plastic Covers, A4, at NOK 10.- per cover

Name: .....................................................................

Company: .....................................................................

Address: .....................................................................


Page 208

SEND US YOUR COMMENTS!!!

Are you frustrated because of unclear information in this manual? Do you have trouble finding things? Why don't you join the Reader's Club and send us a note? You will receive a membership card — and an answer to your comments.

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: ND-110 Instruction Set Manual number: ND-06.029.1 EN

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.


Page 209

Answer from Norsk Data










Answered by ______ Date ______


Contact Information

Norsk Data A.S
Documentation Department
P. O. Box 25, Bogerud
0621 Oslo 6, Norway


Page 210

I cannot extract text from this image. It appears to be a cover page with no visible text besides the letters "ND." If you have another page with more text, feel free to share it.