Page 1¶

ND-100 Reference Manual¶
ND-06.014.02
Norsk Data A.S¶
Page 2¶
ND-100¶
Reference Manual¶
ND-06.014.02
Page 3¶
NOTICE¶
The information in this document is subject to change without notice. Norsk Data A.S assumes no responsibility for any errors that may appear in this document. Norsk Data A.S assumes no responsibility for the use or reliability of its software on equipment that is not furnished or supported by Norsk Data A.S.
The information described in this document is protected by copyright. It may not be photocopied, reproduced or translated without the prior consent of Norsk Data A.S.
Copyright © 1983 by Norsk Data A.S
Page 4¶
Manual Information¶
This manual is in loose leaf form for ease of updating. Old pages may be removed and new pages easily inserted if the manual is revised.
The loose leaf form also allows you to place the manual in a ring binder (A) for greater protection and convenience of use. Ring binders with 4 rings corresponding to the holes in the manual may be ordered in two widths, 30 mm and 40 mm. Use the order form below.
The manual may also be placed in a plastic cover (B). This cover is more suitable for manuals of less than 100 pages than for large manuals. Plastic covers may also be ordered below.
Images¶
| A Ring Binder | B Plastic Cover |
|---|---|
Please send your order to the local ND office or (in Norway) to:
Documentation Department
Norsk Data A.S
P.O. Box 4, Lindeberg gård
Oslo 10
Order Form¶
I would like to order
- Ring Binders, 30 mm, at nkr 20,- per binder
- Ring Binders, 40 mm, at nkr 25,- per binder
- Plastic Covers at nkr 10,- per cover
Name ..............................................................................................................................................
Company ........................................................................................................................................
Address ..........................................................................................................................................
City ................................................................................................................................................
Page 5¶
PRINTING RECORD¶
| Printing | Notes |
|---|---|
| 03/79 | ORIGINAL PRINTING |
| 01/82 | SECOND PRINTING |
| 01/83 | Revision A |
| The following pages are revised or added: | |
| v-xiv, 1-16, 1-17, 2-18, 2-19, 2-27, 2-29, 2-41, 2-42 | |
| 3-1, 3-21, 3-27, 3-38, 3-41, 3-47, 3-48, 3-53, 3-55, 3-58, 3-62, 3-72 to 3-74, 3-76, 3-80, 3-83 to 3-94 | |
| 4-17, A-9 to A-13, D-1, D-2, E-1, E-2, F-1, F-2 |
ND—100 Reference Manual
ND–06.014.02 Rev. A
Febr. 1983
NORSK DATA A.S
P.O. Box 4, Lindebegn gård
Oslo 10, Norway
Page 6¶
Manual Updates¶
Manuals can be updated in two ways, new versions and revisions. New versions consist of a complete new manual which replaces the old manual. New versions incorporate all revisions since the previous version. Revisions consist of one or more single pages to be merged into the manual by the user, each revised page being listed on the new printing record sent out with the revision. The old printing record should be replaced by the new one.
New versions and revisions are announced in the ND Bulletin and can be ordered as described below.
The reader’s comments form at the back of this manual can be used both to report errors in the manual and to give an evaluation of the manual. Both detailed and general comments are welcome.
These forms, together with all types of inquiry and requests for documentation should be sent to the local ND office or (in Norway) to:
Documentation Department
Norsk Data A.S
P.O. Box 4, Lindeberg gård
Oslo 10
Page 7¶
PREFACE¶
THE PRODUCT¶
ND-100 is a general purpose computer which is used in many applications like:
- Commercial data processing
- Research
- Education
- Process control
THE READER¶
- Technical and maintenance personnel requiring detailed information about the ND-100 and its instruction repertoire.
- Programmers and operators needing detailed information about the ND-100 instruction repertoire.
PREREQUISITE KNOWLEDGE¶
General computer knowledge is recommended.
THE MANUAL¶
This manual contains two main parts:
- Sections 1 and 2 describe the main building blocks of the ND-100 and their functions.
- Section 3 describes the ND-100 instruction repertoire in detail. Section 4 describes the operator's interactions with the ND-100.
ND 06.014.02
Page 8¶
Related Manuals¶
The following manuals give more detailed information about the ND-100's building blocks.
- ND-100 Functional Description (ND—06.015).
- ND-100 Input/Output System (ND—06.016).
Page 9¶
TABLE OF CONTENTS¶
| Section | Page |
|---|---|
| 1 | INTRODUCTION TO ND-100 |
| 1.1 | General Characteristics |
| 1.2 | ND-100 Functional Modules |
| 1.2.1 | General |
| 1.2.2 | ND-100 Central Processing Unit (CPU) Module |
| 1.2.2.1 | CPU Characteristics |
| 1.2.3 | ND-100 Architecture |
| 1.2.3.1 | General |
| 1.2.3.2 | ND-100 Configuration Examples |
| 1.2.3.3 | Multiprocessor Systems |
| 1.2.3.4 | Remote Operation |
| 1.3 | The Interrupt System |
| 1.4 | The Memory Management System (MMS) |
| 1.5 | The Memory System |
| 1.5.1 | Main Memory |
| 1.5.2 | Cache Memory |
| 1.5.3 | Multiport Memory |
| 1.6 | The Input/Output System |
| 1.6.1 | Programmed Input/Output — PIO |
| 1.6.2 | Direct Memory Access — DMA |
| 1.7 | ND-100 Peripheral Equipment |
| 1.8 | ND-100 Software |
| 1.8.1 | The Operating System |
| 1.8.2 | Supporting Software |
| 1.8.3 | Distributed Data Processing |
| 2 | SYSTEM DESCRIPTION |
| 2.1 | Central Processor |
ND-06.014.02
Page 10¶
Section: Page:¶
2.1.1 General ..............................................................2–1¶
2.1.2 Internal Communication ........................................2–2¶
2.1.3 The Address Arithmetic..........................................2–3¶
2.1.4 Instruction Fetch ....................................................2–3¶
2.1.5 Prefetch ................................................................2–3¶
2.1.6 Instruction Execution ............................................2–4¶
2.1.7 Main Arithmetic ......................................................2–4¶
2.1.8 The Register File...................................................2–6¶
2.1.9 Status Indicators ...................................................2–8¶
2.2 The Interrupt System ...................................................2–10¶
2.2.1 General ..............................................................2–10¶
2.2.2 Functional Description ..........................................2–12¶
2.2.3 The External Interrupt System ..............................2–14¶
2.2.4 The Internal Interrupt System ...............................2–16¶
2.2.4.1 The IIC and IIE Registers ..................................2–17¶
2.2.4.2 Internal Hardware Status Interrupts ................2–18¶
2.2.4.3 Reset of the IIC Register ..................................2–21¶
2.2.5 Programming Control of the Interrupt System ...2–21¶
2.2.5.1 Programming the PID and PIE Registers ........2–21¶
2.2.5.2 The WAIT, ION and IOF Instruction ................2–22¶
2.2.5.3 The Previous Level Register, PVL ..................2–22¶
2.2.5.4 Vectored Interrupts and the IDENT Instructions .2–23¶
2.2.6 Initializing of the Interrupt System .........................2–24¶
2.3 The Memory Management System .............................2–25¶
2.3.1 General ..............................................................2–25¶
2.3.2 Memory Management Architecture ........................2–26¶
2.3.3 The Paging System................................................2–28¶
2.3.4 The Shadow Memory .............................................2–30¶
2.3.5 The Page Tables ...................................................2–32¶
2.3.5.1 Page Used and Written in Page .......................2–34¶
2.3.5.2 Page Table Selection .........................................2–34¶
2.3.6 Memory Protection System ......................................2–35¶
2.3.6.1 Page Protection System ....................................2–35¶
2.3.6.2 Ring Protection System .....................................2–37¶
2.3.7 Privileged Instructions ..........................................2–39¶
2.3.8 Memory Management Control and Status ..............2–40¶
ND-06.014.02
Page 11¶
Section¶
| Section | Page |
|---|---|
| 2.3.8.1 The PON and POF Instructions | 2–40 |
| 2.3.8.2 Paging Control Registers | 2–41 |
| 2.3.8.3 Paging Status Register | 2–42 |
| 2.3.9 The SEX and REX Instructions | 2–43 |
2.4 ND-100 Memory System¶
| Section | Page |
|---|---|
| 2.4.1 General | 2–44 |
| 2.4.2 ND-100 Memory Architecture | 2–46 |
2.4.2.1 Local (Main) Memory¶
| Section | Page |
|---|---|
| 2.4.2.2 Memory Module Placement in ND-100 Bus | 2–47 |
| 2.4.2.3 The Position Code | 2–47 |
| 2.4.2.4 The Thumbwheel Setting | 2–48 |
2.4.3 Memory Error Correction¶
| Section | Page |
|---|---|
| 2.4.4 Memory Control and Status | 2–52 |
2.4.4.1 Error Correction Control Register (ECCR)¶
| Section | Page |
|---|---|
| 2.4.4.2 Memory Status Registers (PEA and PES) | 2–53 |
2.4.5 Multiport Memory¶
| Section | Page |
|---|---|
| 2.4.5.1 Big Multiport Memory (BMPM) | 2–54 |
| 2.4.5.2 Multiport Memory 4 (MPM4) | 2–54 |
2.4.6 Cache Memory¶
| Section | Page |
|---|---|
| 2.4.6.1 Cache Memory Architecture | 2–55 |
| 2.4.6.2 Cache Memory Organization | 2–56 |
| 2.4.6.3 Cache Control and Status | 2–58 |
2.4.6.3.1 Cache Control¶
| Section | Page |
|---|---|
| 2.4.6.3.2 Cache Status Register | 2–59 |
2.5 ND-100 Input/Output System¶
| Section | Page |
|---|---|
| 2.5.1 General | 2–60 |
| 2.5.2 ND-100 I/O Architecture | 2–61 |
| 2.5.3 ND-100 Card Crate — Physical Layout | 2–62 |
| 2.5.4 The ND-100 Bus | 2–65 |
| 2.5.5 ND-100 I/O System Functional Description | 2–66 |
| 2.5.6 Programmed Input/Output — PIO | 2–67 |
2.5.6.1 The Input/Output Instruction — IOX¶
| Section | Page |
|---|---|
| 2.5.6.2 Interface Channels and Registers | 2–68 |
| 2.5.6.3 Control and Status Registers | 2–71 |
2.5.7 Direct Memory Access (DMA)¶
| Section | Page |
|---|---|
| 2–72 |
Page 12¶
Sections¶
| Section | Page |
|---|---|
| 2.5.7.1 | General ............................................................. 2-72 |
| 2.5.7.2 | DMA Controller Operation .......................... 2-72 |
| 2.5.7.2.1 | Initialization ..................................................... 2-73 |
| 2.5.7.2.2 | Transfer ............................................................ 2-73 |
| 2.5.7.2.3 | Termination and Status Check ........................ 2-73 |
| 2.5.7.2.4 | General Considerations ................................... 2-74 |
| 2.5.8 | The I/O System and the Interrupt System ...... 2-75 |
| 2.5.8.1 | General ............................................................. 2-75 |
| 2.5.8.2 | Interrupt Level Usage ...................................... 2-75 |
| 2.5.8.3 | Device Interrupt Identification ...................... 2-76 |
| 2.5.9 | Programming Specifications for I/O Devices on the CPU Board ......................................... 2-76 |
| 2.5.9.1 | The Real-time Clock ......................................... 2-77 |
| 2.5.9.2 | The Current Loop Interface ............................. 2-77 |
| 2.6 | ND-100 Bus Extender (BEX) ............................ 2-79 |
| 2.6.1 | General ............................................................. 2-79 |
| 2.6.2 | Bus Extender Architecture .............................. 2-79 |
ND-100 INSTRUCTIONS¶
| Section | Page |
|---|---|
| 3 | ND-100 INSTRUCTIONS .......................................... 3-1 |
| 3.1 | Introduction to the Instruction Repertoire ............ 3-1 |
| 3.1.1 | General ............................................................. 3-1 |
| 3.1.2 | Instruction and Data Formats ............................. 3-3 |
| 3.1.2.1 | Single Bit ......................................................... 3-3 |
| 3.1.2.2 | 8 Bit Byte ......................................................... 3-4 |
| 3.1.2.3 | 16 Bit Word ........................................................ 3-4 |
| 3.1.2.4 | 32 Bit Double Word ......................................... 3-5 |
| 3.1.2.5 | 48 Bit Floating Point Word .............................. 3-6 |
| 3.1.2.6 | 32 Bit Floating Point Word ............................... 3-7 |
| 3.2 | The Instruction Repertoire .................................. 3-9 |
| 3.2.1 | Memory Reference Instructions ........................... 3-9 |
| 3.2.1.1 | Addressing Structure ......................................... 3-9 |
| 3.2.1.2 | Store Instructions ............................................ 3-18 |
| 3.2.1.3 | Load Instructions .............................................. 3-20 |
ND-06.014.02
Page 13¶
Section¶
| 3.2.1.4 | Arithmetical and Logical Instructions ................................... 3—21 |
| 3.2.1.5 | Sequencing Instructions ................................................... 3—24 |
| 3.2.1.6 | Byte Instructions ............................................................... 3—26 |
| 3.2.1.7 | Extended BYTE-instructions .......................................... 3—27 |
3.2.2 Register Instructions ..................................... 3—30¶
3.2.2.1 Floating Point Conversion Instructions ................... 3—30¶
| 3.2.2.1.1 | Standard 48 Bit Floating Point Conversion ............. 3—30 |
| 3.2.2.1.2 | Optional 32 Bit Floating Point Conversion ........... 3—32 |
3.2.2.2 Shift Instructions .............................................. 3—33¶
3.2.2.3 Register Operations ........................................... 3—36¶
| 3.2.2.3.1 | ROP — Register Operation Instructions ................. 3—38 |
| 3.2.2.3.2 | Extended Register Operation Instructions ........... 3—45 |
3.2.2.4 Skip Instructions ..................................................... 3—47¶
3.2.2.5 Argument Instructions ............................................ 3—50¶
3.2.2.6 Bit Operation Instructions .................................... 3—53¶
| 3.2.2.6.1 | Bit Skip Instructions ................................................ 3—54 |
| 3.2.2.6.2 | Bit Set Instructions .................................................. 3—54 |
| 3.2.2.6.3 | One Bit Accumulator Instructions .................... 3—55 |
3.2.3 System Control Instruction ................................ 3—56¶
3.2.3.1 Monitor Call Instruction ........................................ 3—56¶
3.3 Privileged Instructions ..................................... 3—57¶
3.3.1 General ................................................................. 3—57¶
3.3.2 Register Block Instructions ................................... 3—57¶
3.3.3 Inter-level Register Instructions ................................ 3—59¶
3.3.4 Accumulator Transfer Instructions ........................ 3—60¶
3.3.5 Input/Output Control Instructions ......................... 3—63¶
3.3.5.1 Extension of the Device Register Address .......... 3—64¶
3.3.6 System Control Instructions ................................. 3—64¶
| 3.3.6.1 | Interrupt Control Instructions .................................... 3—65 |
| 3.3.6.2 | Memory Management Control Instructions ............ 3—68 |
| 3.3.6.3 | Wait or Give Up Priority ........................................... 3—70 |
3.3.7 Examine and Deposit ............................................ 3—71¶
3.3.8 Load Writeable Control Store ................................ 3—72¶
3.3.9 Customer Specified Instructions ............................. 3—73¶
3.3.10 Physical Memory Read/Write Instructions .......... 3—74¶
Page 14¶
Section¶
| Page: | |
|---|---|
| 3.3.10.1 | Format of Instructions |
| 3.3.10.2 | Addressing |
3.4 Instructions in the «Commercial Extended» (CE) Option¶
| 3.4.1 | Decimal Instructions |
| 3.4.1.1 | Data Formats for Decimal Instructions |
| 3.4.1.1.1 | Packed Decimal Number |
| 3.4.1.1.2 | ASCII Coded Decimal Number |
| 3.4.1.2 | The Decimal Instructions |
| 3.4.2 | Stack Handling Instructions |
| 3.4.2.1 | Data Structure Operated upon by the Instructions |
3.5 Instructions in the CX-Option¶
| 3.5.1 | Decimal Instructions |
| 3.5.2 | Stack Handling Instructions |
| 3.5.3 | Move Words |
| 3.5.4 | Test and Set |
| 3.5.5 | Read Don’t Use Cache |
| 3.5.6 | SINTRAN III Segment Change Instructions |
4 OPERATOR’S INTERACTION¶
| 4.1 | Control Panel Push Buttons |
| 4.1.1 | The Panel Lock Key |
| 4.1.2 | Status Indicators |
4.2 Microprogram for Operator’s Communication¶
| 4.2.1 | General Considerations |
| 4.2.2 | Control Functions |
| 4.2.2.1 | System Control |
| 4.2.2.1.1 | Master Clear |
| 4.2.2.1.2 | Stop |
| 4.2.2.1.3 | ALD Load |
| 4.2.2.1.4 | General Load |
| 4.2.2.1.5 | Leave MOPC |
Page 15¶
Table of Contents¶
| Section | Page |
|---|---|
| 4.2.2.2 | Program Execution |
| 4.2.2.2.1 | Start Program |
| 4.2.2.2.2 | Continue Program |
| 4.2.2.2.3 | Single Instruction |
| 4.2.2.2.4 | Instruction Breakpoint |
| 4.2.2.2.5 | Manual Instruction |
| 4.2.2.2.6 | Single I/O Instruction Function |
| 4.2.2.3 | Miscellaneous Functions |
| 4.2.2.3.1 | Internal Memory Test |
| 4.2.2.3.2 | Delete Entry |
| 4.2.2.3.3 | Current Location Counter |
| 4.2.3 | Monitor Functions |
| 4.2.3.1 | Memory Functions |
| 4.2.3.1.1 | Physical Examine Mode |
| 4.2.3.1.2 | Virtual Examine Mode |
| 4.2.3.1.3 | Memory Examine |
| 4.2.3.1.4 | Memory Deposit |
| 4.2.3.1.5 | Deposit Rules |
| 4.2.3.1.6 | Memory Dump |
| 4.2.3.2 | Register Functions |
| 4.2.3.2.1 | Register Examine |
| 4.2.3.2.2 | Register Deposit |
| 4.2.3.2.3 | Register Dump - RD |
| 4.2.3.2.4 | User Register - U |
| 4.2.3.2.5 | Operator Panel Switch Register - OPR |
| 4.2.3.3 | Internal Register Functions |
| 4.2.3.3.1 | Internal Register Examine |
| 4.2.3.3.2 | Internal Register Deposit |
| 4.2.3.3.3 | Internal Register Dump - IRD |
| 4.2.3.3.4 | A Scratch Register Dump - RDE |
| 4.2.4 | Display Functions |
| 4.2.4.1 | Displayed Format |
| 4.2.4.2 | Display Memory Bus |
| 4.2.4.3 | Display Activity |
Page 16¶
Table of Contents¶
| Section | Page |
|---|---|
| 4.2.5 | Bootstrap Loaders ..................................................4—22 |
| 4.2.5.1 | Binary Format Load .............................................4—22 |
| 4.2.5.2 | Mass Storage Load ............................................4—23 |
| 4.2.5.3 | Automatic Load Descriptor ..............................4—24 |
| 4.3 | The Display ..........................................................4—25 |
| 4.3.1 | General ................................................................4—25 |
| 4.3.2 | The Different Display Functions .........................4—25 |
Appendixes¶
| Appendix | Page |
|---|---|
| A | ND-100 INSTRUCTIONS ..........................................A—1 |
| A.1 | ND-100 Instruction Codes ..................................A—1 |
| A.2 | ND-100 Instruction Execution Times .....................A—12 |
| B | MODEL 33 ASR/KSR TELETYPE CODE (ASCII) IN BINARY FORM ..........B—1 |
| C | STANDARD ND-100 DEVICE REGISTER ADDRESSES AND IDENT CODES ...C—1 |
| D | INTERNAL REGISTERS ............................................D—1 |
| E | OPERATOR'S COMMUNICATION INSTRUCTION SURVEY ..................E—1 |
| E.1 | Control Functions (Does not affect DISPLAY) ................E—1 |
| E.2 | Display Functions (Affects only DISPLAY) ...................E—2 |
| E.3 | Monitor Functions (Also shown on DISPLAY) ...............E—3 |
| F | ND-100 TECHNICAL SPECIFICATIONS ...........................F—1 |
| F.1 | Specifications ....................................................F—1 |
| F.2 | Physical ..........................................................F—2 |
ND-06.014.02
Rev. A
Page 17¶
INTRODUCTION TO ND-100¶
GENERAL CHARACTERISTICS¶
ND-100 is a general purpose computer and it is used in many applications like:
- Commercial data processing.
- Research.
- Education.
- Process control.
ND-100 is completely software compatible with NORD 10/S and runs the same operating system, SINTRAN III /VS.
The ND-100 Central Processing Unit (CPU) is placed on a single module. The word length is 16 bits in parallel.
Figure 1.1: The Operating System SINTRAN III/VS allows the ND-100 to be used in many applications.
Page 18¶
I'm sorry, but the page provided is blank and does not contain any content to convert.
Page 19¶
ND-100 FUNCTIONAL MODULES¶
General¶
A standard ND-100 printed board module size is 366.8 mm x 280 mm.
The board size, together with the use of Large Scale Integrated (LSI) circuits, allows:
- Small physical dimensions.
- Closely related functions placed on the same module, thus reducing external wiring to a minimum.
Communication between ND-100 functional modules is done through an advanced high-speed bus, called ND-100 bus. The ND-100 bus is a printed back plane. The bus is available in two versions, one for connecting 12 modules and one for connecting 21 modules. The two versions are mounted in different card crates and different cabinets.

Page 20¶
ND-100 Bus¶
CPU Module¶
| Function |
|---|
| POWER FAIL DETECT |
| REAL TIME CLOCK |
| TELETYPE INTERFACE |
| AUTOMATIC RESTART |
Cache Memory¶
- Connection: B
Memory Management Module¶
| Connection |
|---|
| A |
| B |
| A |
Device Interface Module¶
| Connection |
|---|
| A |
| B |
| C |
Memory Module¶
- ERROR CHECK & CORRECT
External Devices¶
Optional Display¶
- PANEL
Figure 1-3: ND-100 Modules Connection (A, B, and C are Plugs on the Modules).
ND-06.014.02
Page 21¶
1.2.2 ND-100 Central Processing Unit (CPU) Module¶
The CPU module contains, in addition to the CPU itself:
- A real-time clock.
- A current loop terminal interface with switch selectable speeds, 110 - 9600 baud/bps (bits per second).
- Power fail and automatic restart.
Page 22¶
1.2.2.1 CPU Characteristics¶
The Processor¶
ND-100 CPU is a 16 bit parallel processor designed around the bit slice ALU (arithmetic logic unit) element.
The processor is controlled by a microprogram. The following is implemented in the microprogram:
- All instructions.
- Operator communication.
- Built-in test routines.
- Bootstrap loaders.
The microprogram is physically located in a 2k word by 64 bit Read Only Memory (ROM). One microinstruction is fetched and executed in the internal CPU cycle time. The cycle time is 150 ns for the fast CPU and 190 ns for the slow version.
Instruction Prefetch¶
A fast processor should not have to wait for instructions. In order to reduce instruction fetch waiting time, the ND-100 CPU will normally hold two instructions, the current executing instruction and the next one. This is accomplished by fetching the next instruction while executing the current instruction.
Special Feature¶
To allow dynamic microprogramming, a 256 word by 64 bit writeable control store is available as an option.
Instruction Set and Data Format¶
Although a standard ND-100 word is 16 bits, the computer has a comprehensive instruction set which includes operations on:
- Bits.
- Bytes.
- Single words.
- Double words.
- Triple words.
- Register file.
- Fixed or floating point arithmetic (32- or 48- bit word).
Page 23¶
1.2.3 ND-100 Architecture¶
1.2.3.1 General¶
Figure 1.4 shows the ND-100 bus structure. The main highway for data and addresses in the system is the ND-100 bus. Data and address flow are shown by the arrows.

MMS = Memory Management System
Figure 1.4: ND-100 Bus Structure
Physically, the bus is organized as a printed backplane containing 12 or 21 "plug in" positions for module connection.
All communication between ND-100 modules except CPU, MMS and CACHE communication, is provided by this bus. That is, the ND-100 bus connects the:
- CPU to the memory system (including MMS and CACHE).
- CPU to the input/output system.
- DMA controllers to the memory system (DMA = Direct Memory Access). DMA controller is a special device interface module.
A bus control/driver, which is an integrated part of the CPU, controls the activity on the bus. This common bus architecture has several advantages:
- Uniform connection for all modules makes the system flexible and easy to expand.
- No external wiring of busses gives a more reliable system.
- No overhead in connecting several busses between source and destination makes a faster system (one crate system only).
ND-06.014.02
Page 24¶
1.2.3.2 ND-100 Configuration Examples¶
Figure 1.5 shows a typical medium sized ND-100 single processor system.
| Components | Description |
|---|---|
| WCS | OPTION: WRITEABLE CONTROL STORE (WCS) |
| ND-100 BUS | |
| CPU MODULE | RTC |
| TTY | |
| CONSOLE TERMINAL | |
| OPERATOR PANEL | |
| MMS MODULE | |
| CACHE | |
| 10M byte DISK DMA CONTROLLER | |
| DEVICE INTERFACE MODULE | |
| 2 MEMORY MODULES | 128Kw |
| 1Mb | up to 4 10M byte disk units |
| VDU 1 - VDU 4 | 4 Visual Display Units (VDU) |
| Floppy Disk |
RTC = Real Time Clock
TTY = Teletype
Figure 1.5: ND-100 Configuration Example
ND-06.014.02
Page 25¶
1.2.3.3 Multiprocessor Systems¶
For in-house communication between two ND-100s, between a ND-100 and NORD-10/S, or between a ND-100 and a NORD-50, a shared memory system could be used.
The shared memory system is available through the Big Multiport Memory System (BMPM) which allows up to four sources to access the same physical storage.
Example:
ND-100 COMPUTER
| ND-100 BUS | |
|---|---|
| CPU NO. 1 | CPU NO. 2 |
| MMS CACHE | MMS CACHE |
| BMPM TRANS. | BMPM TRANS. |
| ANY RANGE OF | |
| PERIPHERALS | ANY RANGE OF PERIPHERALS |
| LOCAL MEMORY | LOCAL MEMORY |
| 64Kw | 64Kw |
SHARED MEMORY BANK 32Kw - 256Kw
MULTIPORT PORTS A B C D
FREE PORTS
Figure 1.6: Communication between two ND-100 Computers using the Multiprocessor System.
ND-06.014.02
Page 26¶
1.2.3.4 Remote Operation¶
Remote operation in this context means one ND-100 being controlled by another ND-100. The two machines may be in the same room or connected via telephone lines using low or high speed modems.
The HDLC module is designed for this kind of operation, including DMA controlled communication. Figure 1.7 shows an example.
| MASTER ND-100 COMPUTER | SLAVE ND-100 COMPUTER |
|---|---|
| ND-100 BUS | ND-100 BUS |
| CPU | CPU |
| MIMS CACHE | SPECIAL/GENERAL PURPOSE PERIPHERALS |
| HDLC | HDLC WITH AUTOMATIC LOAD |
| MODEM | LINE |
| ANY RANGE OF PERIPHERALS | |
| MEMORY 256Kw | MEMORY 64Kw |
HDLC = High Level Data Link Control
Figure 1.7: Connection between two ND-100 computers using a Telephone Line.
ND-06.014.02
Page 27¶
1.3 THE INTERRUPT SYSTEM¶
The ND-100 has a 16 level priority interrupt system, marked PL 0-15.
To each level is assigned a complete set of all central registers: STS, A, D, T, L, X, B and P.
These registers plus eight scratch registers are located in a high speed register file close to the the CPU arithmetic both located on the CPU module. With this architecture, switching between two program levels is reduced to selecting the working set of control registers. The time required for this operation is only 5 μs.
All program levels may be activated by software. In addition, each of the levels 10, 11, 12 and 13 may be activated by 512 vectored I/O interrupts. An IDENT instruction is used to identify the interrupting device.
Program level 14 is used by the Internal Interrupt System, which monitors error conditions or traps in the CPU. Program level 15 may only have one I/O interrupt source.
Program level 15 is not used by standard NORD equipment or software, but is available for users who need immediate access to the CPU.
The high speed register file is described in further detail later in this manual.
Page 28¶
1.4 THE MEMORY MANAGEMENT SYSTEM (MMS)¶
The hardware memory management module is necessary for running the SINTRAN III/VS (Virtual Storage) operating system. The SINTRAN III/VS operating system includes:
- 64 K words (128 K bytes) virtual address range for each user independent of physical memory capacity.
- Dynamic allocation/relocation of programs in memory.
- Memory protection.
The implementation of the memory management system is based on two major subsystems:
- The Paging System.
- The Memory Protection System.
The paging system maps a 16 bit virtual address (describing a user's 64 K word virtual storage) into a 19 bit physical address, thus extending the physical address space to 512 K words. The paging system also has an extended mode which handles physical memory space up to 16 M words (32 M bytes). This mode gives a 24 bit physical address.
The implementation of paging is based on dividing physical memory into 1 K word pages which, under operating system control, are assigned to active programs.
Four page tables of 64 words each hold the physical page numbers assigned to an active program. These tables are located in high speed registers, reducing paging overhead to practically zero.
The memory protection system may be divided into two subsystems:
- The Page Protect System.
- The Ring Protect System.
The page protect system allows a page to be protected from read, write or instruction fetch accesses or any combination of these.
The ring protect system places each page and each user on one of four priority rings.
A page on one specific ring may not be accessed by a program that is assigned a lower priority ring number. This system is used to protect system programs from user programs, the operating system from its subprograms and the system kernel from the rest of the operating system.
Page 29¶
1.5 THE MEMORY SYSTEM¶
The memory system has a flexible and hierarchical architecture. The memory system includes:
- 1K words (2K bytes) CACHE memory.
- Up to 16 M words main memory.
- Memory channel to the multiport memory system.
1.5.1 Main Memory¶
Main memory can have any size from:
32K words to 16 M words in steps of 32K words.
Each word in main memory is stored with a 6 bit error correction code which makes it possible to:
- Correct and log single bit errors.
- Detect and report all double errors and most multiple errors.
Seen from the program, memory access time depends on the effect of prefetch.
1.5.2 Cache Memory¶
Cache memory is optional and physically located on the memory management module.
The presence of cache memory will reduce average memory access time significantly. Cache is a high speed bipolar memory.
The purpose of cache memory is to hold the most recent data and instructions to be processed.
1.5.3 Multiport Memory¶
In order for the ND-100 to access the NORD-10/S Big multiport memory, a multiport memory transceiver is available.
ND-06.014.02
Page 30¶
1.6 THE INPUT/OUTPUT SYSTEM¶
The ND-100 input/output system is designed to be a flexible system providing communication between slow, character-oriented devices as well as high-speed, block-oriented devices.
Depending on the speed, a device could be connected to ND-100 with:
- CPU controlled, Programmed Input/Output (PIO).
- With Direct Memory Access (DMA).
PIO is used for slow devices and DMA for fast devices.
1.6.1 Programmed Input/Output — PIO¶
Program controlled input/output always operates via the A register, which implies that each word of input/output has to be programmed via this register.
1.6.2 Direct Memory Access — DMA¶
A Direct Memory Access (DMA) channel is used to obtain high transfer rates to and from main memory. CPU activity and DMA transfers may be performed simultaneously, i.e., the DMA transfer is not controlled by the CPU as a PIO transfer is.
More than one DMA device may be active at the same time, sharing the total bandwidth of the DMA channel. Total bandwidth is 1.8 M words per second.
Page 31¶
1.7 ND-100 Peripheral Equipment¶
Most computer peripherals can be connected to ND-100. The range of standard peripherals includes:
Sequential Devices
- Terminals.
- Card readers.
- Line printers/plotters.
Mass Storage Devices
- Magnetic tapes.
- Disks from 10M bytes to 288M bytes per disk. Up to 4 disks may be connected to each input/output card.
- Floppy disks.
Computer Networks
- Asynchronous modem controllers.
- Synchronous modem controllers including selectable frame format, HDLC or bisync.
In addition, ND-100 can be equipped with a NORD-10/S bus adapter which gives access to all NORD-10/S peripherals.
Page 32¶
1.8 ND-100 SOFTWARE¶
1.8.1 The Operating System¶
The standard operating system for ND-100 computers is SINTRAN III, which may be delivered in two versions:
-
SINTRAN III/VS (Virtual Storage) and VSE (Virtual Storage Extended)
SINTRAN III/VS and VSE are general purpose mass storage based operating systems offering facilities for
- Real-time.
- Timesharing.
- Batch processing.
-
SINTRAN III/RT for machines without mass storage devices intended for real-time applications in process control and data communication.
ND-06.014.02
Rev. A
Page 33¶
1.8.2 Supporting Software¶
A number of programming languages and software systems complement the capabilities of the ND-100 SINTRAN III/VS and VSE.
- ND standard FORTRAN following the ANSI-77 FORTRAN standards.
- ND COBOL system following the ANSI-74 COBOL standards.
- ND BASIC compiler, an extended version of the program generator for business oriented applications.
- PASCAL
- SIMULA
- PLANC, a high level system programming language.
- MAC assembler with macro expansions.
- PED and QED, interactive text editors.
- The NOTIS office automation system for text and document processing, information retrieval and report generation.
- The SIBAS data base management system, designed in accordance with the Codasyl data base recommendations.
- ND TPS (Transaction Processing System) offering the necessary operational system software for development of transaction processing programs.
- The FOCUS Screen Handling System, an interactive program to create, modify and use screen pictures.
- ND Data Entry System, a set of software modules designed to simplify terminal oriented data entry operations.
Other useful utility programs are ND SORT Package, Scientific Subroutine Library, Commercial Subroutine Library, ND PLOT Package.
For data communication with large scale computers, there are terminal emulator packages for: IBM 360/370, HB-6000, CDC CYBER, UNIVAC and others.
1.8.3 Distributed Data Processing¶
ND NET is a communication system for computer networks, enabling users to communicate with other computers in a network.
ND-06.014.02
Rev. A
Page 34¶
I'm sorry. The page appears to be blank with no visible text or technical content to convert into Markdown.
Page 35¶
2 SYSTEM DESCRIPTION¶
2.1 CENTRAL PROCESSOR¶
2.1.1 General¶
ND-100 is microprogrammed and all instruction execution is in firmware using a 2K x 64 bit, fast Read Only Memory (ROM). To allow dynamic microprogramming, a 256 word by 64 bit writeable control store is optional. This gives the possibility of extending the ND-100 instruction set for special applications. The address arithmetic is also implemented in microprogram. This means that the addressing structure of ND-100 can be changed by rewriting the microprogram.
Page 36¶
2.1.2 Internal Communication¶
The internal communication in the CPU is performed over the internal data bus (IDB). A bus is a highway for information, where only one word of information may travel at a time. The microprogram enables the information for the IDB from a certain source, and gives enable signals to the destination parts in the CPU where the information is needed.
Figure 2.1 shows how the IDB communicates with the central parts in the CPU. The memory management system and cache are connected directly to IDB and ND-100 bus for faster access. The bus control is implemented on the CPU module and controls the activity on the ND-100 bus.
Figure 2.1: ND-100 Bus Structure
ND-06.014.02
Page 37¶
2.1.3 The Address Arithmetic¶
The address arithmetic in the ALU (arithmetic logic unit) forms a 16 bit address. The control of the address arithmetic is implemented in a microprogram. The 16 bit address goes to the memory management system. If the memory management module is not present, the address goes directly to the memory system via the ND-100 bus.
2.1.4 Instruction Fetch¶
The machine instructions to be executed reside in memory. The program counter, PC, is enabled for the ND-100 and a request is sent to memory. The instruction from memory is loaded into the prefetch register.
2.1.5 Prefetch¶
ND-100 uses prefetch. That is, the next instruction is fetched simultaneously with the execution of the current one. Consequently, an instruction fetch consists of copying the prefetch register to the instruction register.
The use of prefetch requires a strictly sequential program. In case of branch instructions or program change (interrupt), the prefetched instruction is skipped and a new instruction found.
Prefetch will not generate page fault if the last instruction before a page limit is a branch instruction.
Prefetch does not give any limitations in programming. For example, STA * +1 is legal but adds 1 μ to the execution time compared to STA < disp#1 >.
ND-06.014.02
Page 38¶
2.1.6 Instruction Execution¶
The instruction to be executed will be loaded into the instruction register (IR) and the instruction map. Refer to Figure 2.2 The lower vector bits of the instruction are taken to IR and the upper operation code bits are taken care of by the map. This is a read only memory (ROM), where each different instruction gives a fixed program address to the microprogram sequencer. Since one machine instruction is executed by a number of instructions residing in microprogram control store, an instruction dependent address should be generated and this is the task of the microprogram sequencer.
This address is sent to the microprogram control store, which gives the logic control bits of the first microinstruction. These signals, together with the timing module, control the operation of the CPU. The operation specified by one microinstruction normally takes 150/190 ns (with cache/without cache). This time is referred to as a micro cycle. When a micro cycle is completed, the next microinstruction has already been read out from the microprogram control store.
2.1.7 Main Arithmetic¶
Refer also to Figure 2.2
From the A and B selector the arithmetic logic unit (ALU) receives the information about which A and B operand to select in the arithmetic operation. The ALU performs all the arithmetical and logical operations as specified in the instruction set. The bit slice, ALU, is completely controlled from the microprogram.
The ALU with its current registers has a two-way communication over IDB with the register file for loading and storing of the current register set.
Page 39¶
Figure 2.2: Instruction Execution¶
| Component | Description |
|---|---|
| ROM 2K x 12 BIT | MAP |
| MICROPROGRAM | SEQUENCER |
| LOGIC CONTROL | |
| BRANCH ADDRESS | |
| A & B SELECT | |
| PIPELINE | |
| OPERAND SELECT | |
| ALU & ADDRL ARITHMETIC | |
| REGISTER FILE | |
| IR | |
| GENERAL PURPOSE REGISTER | |
| LOCAL TIMING | TIMING CONTROL |
| ND-100 BUS | |
| COM |
ND-06.014.02
Page 40¶
2.1.8 The Register File¶
Refer to Figure 2.3
There are 16 register sets in the ND-100, one for each of the 16 program levels. Each of the register sets consists of 8 general programmable registers and 8 scratch registers for microprogram use only. There is a total of 256 registers; these are referred to as the register file.
The 8 general registers are:
Status register (STS)¶
This register holds the indicators described in the status indicators section.
A register¶
This is the main register for arithmetic and logical operations directly with operands in memory. This register is also used for input/output communication.
D register¶
This register is an extension of the A register in double precision or floating point operations. It may be connected to the A register during double length shifts.
T register¶
Temporary register. In floating point instructions it is used to hold the exponent part. It is also used with the IOXT instruction to hold the device address.
L register¶
Link register. The return address after a subroutine jump is contained in this register.
X register¶
Index register. In connection with indirect addressing it causes post indexing.
B register¶
Base register or second index register. In connection with indirect addressing, it causes preindexing.
P register¶
Program counter, address of current instruction. This register is controlled automatically in the normal sequencing or branching mode. But it is also fully program controlled and its contents may be transferred to or from other registers.
ND-06.014.02
Page 41¶
Register File¶
PL = Program Level
15 0
┌───────────────────────────────┐
│ PL15 │
│ PL14 │
│ PL13 │
│ PL12 │
│ PL11 │
│ PL10 │
│ PL9 │
│ PL8 │
│ PL7 │
│ PL6 │
│ PL5 │
│ PL4 │
│ PL3 │
│ PL2 │
┌───┐ │ PL1 │
│ │ ├───────────────────────────────┤
│ P │ │ PL0 │
│ R │ │ Scratch 8-15 │
└───┘ │ STS # 0 │
│ A # 5 │
│ D # 1 │
│ T # 6 │
│ L # 4 │
│ X # 7 │
│ B # 3 │
│ P # 2 │
└───────────────────────────────┘
Only access via microprogram
15 0
┌─────────────┐
│ CP │
└─────────────┘
Current P
Status¶
7 0
┌───────────────────────┐
│ PL15 │
│ PL14 │
│ PL13 │
│ PL12 │
│ PL11 │
│ PL10 │
│ PL9 │
│ PL8 │
│ PL7 │
│ PL6 │
│ PL5 │
│ PL4 │
│ PL3 │
│ PL2 │
│ PL1 │
│ PL0 │
├───────────────────────┤
│ STS 0-7 │
└───────────────────────┘
15 8
┌─────────────┐
│ STS 8-15 │
└─────────────┘
=
15 0
┌─────────────┐
│ STS │
└─────────────┘
Figure 2.3: Register File
The current register set is held in the ALU and under level change this register set is stored in the register file. The register set for the new level is loaded to the ALU. Any registers or levels can be read or written by specifying register and level information.
ND-06.014.02
Page 42¶
2.1.9 Status Indicators¶
Eight indicators are accessible by programs. These 8 indicators are:
| Indicator | Description |
|---|---|
| M | Multishift link indicator. This indicator is used as temporary storage for discarded bits in shift instructions in order to ease the shifting of multiple precision words. |
| C | Carry indicator. The carry indicator is dynamic. |
| O | Static overflow indicator. This indicator remains set after an overflow condition until it is reset by program. |
| Q | Dynamic overflow indicator. |
| Z | Error indicator. This indicator is static and remains set until it is reset by program. The Z indicator may be internally connected to an interrupt level such that an error message routine may be triggered. |
| K | One bit accumulator. This indicator is used by the BOP (bit operations), instructions operating on one bit data. |
| TG | Rounding indicator for floating point operations. |
| PTM | Page table modus. Enables use of the alternate page table. |
These 8 indicators are fully program controlled either by means of the BOP instruction or by the TRA or TRR instructions where all indicators may be transferred to and from the A register. Refer to Figure 2.4.
Page 43¶
Status Register Assignment¶

Figure 2.4: Status Register Assignment
The upper part (8 bits) is common for all program levels. This part gives us the following information:
| Code | Description |
|---|---|
| IONI | Interrupt system ON indicator. |
| PONI | Memory management ON indicator. |
| SEXI | Extended indicator to show that MMS is in 24 bits extended addressing mode instead of the usual 19 bits addressing mode. |
| N100 | N100 indicator to tell the operating system that this is a ND-100 machine. |
| PIL | Current program level indicator. |
ND-06.014.02
Page 44¶
2.2 THE INTERRUPT SYSTEM¶
2.2.1 General¶
The ND-100 interrupt system is designed to simplify programming and to allow high efficiency multiprogramming.
This is achieved by use of a complete set of registers and status indicators for each program level.
There are 16 program levels in ND-100 and therefore 16 sets of registers and status indicators. Each set consists of A, D, T, L, X and B registers, program counter and each of the status indicators O, Q, Z, C, M, K, PTM and TG. There are also 9 registers that are only accessible from microprogram.
The context switching from one program level to another is completely automatic and requires only 5.0 μs; including the saving and unsaving of all registers and indicators.
The arrangement of the 16 program levels is as follows.
| Level | Assignment |
|---|---|
| 15 | Extremely fast user interrupts |
| 14 | Internal interrupts |
| 13 | Real-time clock |
| 12 | Input devices |
| 11 | Mass storage devices |
| 10 | Output devices |
| 9 | |
| 8 | |
| 7 | Direct tasks |
| 6 | |
| 5 | |
| 4 | I/O Monitor calls |
| 3 | SINTRAN III Monitor |
| 2 | Direct Task |
| 1 | Real-time and Background |
| 0 | Idle Loop |
For program which do not require operating system help
Figure 2.5: Level Assignments
ND-06.014.02
Page 45¶
Interrupt Priority Levels¶
The priority increases, program level 15 having the highest priority, program level 0, the lowest.
All program levels may be activated by software. In addition, the levels 10, 11, 12 and 13 may be activated by 512 external I/O interrupts. An IDENT instruction is used to identify the interrupting device. Program level 14 is used by the internal interrupt system, which monitors error conditions or traps in the CPU. Program level 15 may only have one I/O interrupt source.
Program level 15 is not used by standard ND equipment or software, but is available for users who need an immediate access to the CPU.
A change from a lower to a higher program level is caused by an interrupt request. A change from a higher program level to a lower takes place when the program on the higher program level gives up its priority.
For both internal hardware status interrupts and external interrupts there is an automatic priority identification mechanism which provides fast interrupt source detection.
Page 46¶
2.2.2 Functional Description¶
Figure 2.6 shows the functional operation for the complete priority interrupt system.
There is one bit for each level in a detect register with 10 sources to cause a program level 14 interrupt, i.e., an internal interrupt. The detect register for program levels 0-9 are implemented in firmware which means that the microprogram takes care of the detection of interrupts on these levels.
The mask register is used to enable/disable the different program levels and conditions which may cause an internal interrupt. Program levels 0-9 are also taken care of by the microprogram.
When an interrupt comes, these two registers are ANDed together via an AND gate and the priority encoder gives a level value corresponding to the highest bit set in both the detect and mask registers.
This level indicator is compared with the current level to check if the new level is higher than the current one. If this is true, and the interrupt system is on, an interrupt will be generated.
The implementation of the ND-100 interrupt system is based on two registers: the detect register and the mask register. In both the detect and mask registers each interrupt level is assigned a bit position.
Page 47¶
Priority Interrupt System¶

Internal Interrupts¶
- PL15
- POW
- MON
- PTY
- IOX
- IX
- PF
- MPV
- MVC
- PL13
- PL12
- PL11
- PL10
- PL9
- PL8
- PL7
- PL6
- PL5
- PL4
- PL3
- PL2
- PL1
- PL0
Mask Register¶
| PL15 |
|---|
| PL14 |
| ------ |
| PL13 |
| ------ |
| PL12 |
| ------ |
| PL11 |
| ------ |
| PL10 |
| ------ |
| PL9 |
| ------ |
| PL8 |
| ------ |
| PL7 |
| ------ |
| PL6 |
| ------ |
| PL5 |
| ------ |
| PL4 |
| ------ |
| PL3 |
| ------ |
| PL2 |
| ------ |
| PL1 |
| ------ |
| PL0 |
PLO-9 Program levels are implemented in firmware
Figure 2.6: Priority Interrupt System
ND-06.014.02
Page 48¶
2.2.3 The External Interrupt System¶
Figure 2.7 gives a block diagram presentation of the external interrupt system.
The program level to run is controlled from the two 16 bit registers:
| PIE | Priority Interrupt Enable |
|---|---|
| PID | Priority Interrupt Detect |
Each bit in the two registers is associated with the corresponding program level. The PIE register is controlled by program only. The PID register is controlled both by program and hardware interrupts. At any time, the highest program level which has its corresponding bits set in both PIE and PID is running.
The actual mechanism for this is as follows.
The current program level is PIL (0 - 15). The 4 bit PIL register controls which register set (context block) to use.
The PIL number is constantly compared to a 4 bit code, PK. PK always contains the number of the highest program level which has its corresponding bits set in both PIE and PID. Whenever PK is unlike PIL, an automatic change of context block will take place through a short microprogram sequence.
The CPU will not ask for the next machine instruction but enter a microprogram that will change the program level to the PK. However, before the level change takes place, the program counter will be saved. The level change can be illustrated as follows:
-
The interrupt system is temporarily blocked to prevent false interrupts.
-
The program counter (CP) is copied to the saved program counter (P) on the current level.
-
The PIL (program level) register is copied into the PVL (previous program level) register.
-
The PK (new level priority code) register is copied into the PIL (program level) register. (The CPU has, at this moment, changed level.)
-
The P (saved program counter) on the new level is copied to the CP (current program counter).
-
A fetch is issued, i.e., the first machine instruction on the new level is asked for.
This complete sequence requires only 5.0 μs from the completion of the instruction currently working when the interrupt took place, until the first instruction is started on the new level with its new set of registers and status.
External interrupts may set PID bits 15, 13, 12, 11, 10, and internal hardware status may set PID bit 14, because all internal interrupts are connected to this level.
ND-06.014.02
Page 49¶
External Interrupt System¶
Table of Terms¶
| Abbreviation | Description |
|---|---|
| Fetch | Instruction Fetch |
| IDB | Internal Data Bus |
| ION | Interrupt System Active |
| PID | Priority Interrupt Detect |
| PIE | Priority Interrupt Enable |
| PK | Priority Code |
| PIL | Program Level |
| PVL | Previous Program Level |
Figure 2.7: External Interrupt System
ND-06.014.02
Page 50¶
2.2.4 The Internal Interrupt System¶
The functional operation of the internal interrupt system is basically the same as the external one. Refer to Figure 2.8.
IIE FORMAT¶
| 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|
| POW | MOR | PTY | IOX | PI | Z | II | PF | MPV | MC | NA |
*Interrupts any micro-instruction.
IIC: Internal Interrupt Code
IID: Internal Interrupt Detect
IIE: Internal Interrupt Enable
TRR IIE: Transfers the Content of the A-Register Into the IIE Register
TRA IIC: Transfers the Content of the IIC Register into the A-Register.
Figure 2.8: Internal Interrupt System, Block Diagram
ND-06.014.02
Page 51¶
2.2.4.1 The IIC and IIE Registers¶
As previously mentioned, the internal interrupt system is connected to level 14. Any internal interrupt condition will force the CPU to level 14. On this level the operating system will read the IIC — Internal Interrupt Code register. This register will hold a code between 0 - 12(_8) which will identify the internal source for the interrupt.
Internal hardware status interrupts are individually enabled by an 11 bit register called IIE, Internal Interrupt Enable. IIE is set by the TRR IIE instruction. See Figure 2.8.
The internal hardware status interrupts are assigned to the IIE register in the following way:
| 15 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| POW | MOR | PTY | IOX | PI | Z | II | PF | MPV | MC | NA |
The internal conditions which may cause internal interrupts and their associated vectors, the internal interrupt codes, are listed below:
| Bit No. | IIC Code | Cause |
|---|---|---|
| n/a | 0 | 0 |
| MC | 1 | 1 |
| PV | 2 | 2 |
| PF | 3 | 3 |
| II | 4 | 4 |
| Z | 5 | 5 |
| PI | 6 | 6 |
| IOX | 7 | 7 |
| PTY | 8 | 10 |
| MOR | 9 | 11 |
| POW | 10 | 12 |
| 11 - 15 | Not assigned |
ND-06.014.02
Page 52¶
2.2.4.2 Internal Hardware Status Interrupts¶
Monitor Call Interrupt¶
One of the internal interrupt sources is the monitor call instruction named MON. The monitor call instruction differs from the other internal interrupt sources in that the monitor call code or number is found in the T register on level 14.
The MON instruction may have up to 377₈ different codes (8 lower bits in the MON instruction) and the T₁₄ register will be equal to this code with sign extension (bit 7 is sign).
Information to operating systems designers regarding the ND-100 MON-instruction¶
If a MON-instruction is executed in the last word of a page and the prefetching of the first instruction in the next page gives a page-fault interrupt, then the page-fault interrupt will be reported when a TRA IIC-instruction is executed.
The handling of this page-fault interrupt will clear all traces of the executed MON-instruction. The T-register on level 14 will be loaded with the monitor-call number before the page-fault interrupt occurred, but an internal interrupt with IIC-code equal to 1 will never occur.
To avoid this behavior, make the interrupt handler on level 14 check if a monitor-call number has been written into the T-register on level 14 before level 14 was entered. If the T-register has been changed in this way, the monitor-call handler should be entered regardless of the contents of the IIC. The page fault will occur later, when execution of the instruction after the MON is attempted.
Programming example:¶
% Last part of a level 14 handler
LDA (1000 % Any number not possible
COPY SA DT % as monitor-call number
WAIT % Give up priority
% Reactivated by internal interrupt
SKP IF DA EQL ST
JMP MONCT % T is changed
TRA IIC
ND-06.014.02
Rev. A
Page 53¶
Check Other Internal Interrupts¶
MONCT, TRA IIC % Necessary to unlock IIC
TRA PGS % Necessary to unlock PGS
Ordinary Monitor-Call Handler¶
Protect Violation Interrupt¶
A protect violation has occurred. Two types of violations are possible:
-
Memory protect violation.
This means that an illegal reference (read, write, fetch or indirect) has been attempted.
-
Ring violation.
This means that a program attempted to access an area with higher ring status.
Details regarding this interrupt are found in the paging status register.
Page Fault Interrupt¶
The program attempted to reference a page that is presently not in memory. Information regarding page number, etc. is found in the Paging Status register.
Illegal Instruction Interrupt¶
Attempted execution of an instruction that is not implemented causes this interrupt.
Error Indicator Interrupt¶
The Z indicator in the STS register has been set. This may be caused by several instructions:
- FDV with 0.0 (FDV = divide floating accumulator).
- EXR of an EXR instruction (EXR = execute register).
- DNZ overflow (DNZ = denormalize).
- RDIV overflow (RDIV = integer inter-register divide).
- Programmed setting of Z (BSET = bit set, MST = masked set or TRR = transfer to register).
ND-06.014.02
Rev. A
Page 54¶
Interrupts and Instructions¶
The instructions are described in further detail in Section 3.
Note: Level 14 must always reset the Z indicator on the offending level, otherwise, a new interrupt will occur when the level is reentered.
Privileged Instruction Interrupt¶
Attempted execution of a privileged instruction causes this interrupt. The privileged instructions are listed below.
ION, IOF, PON, POF, PION, PIOF, WAIT, IOX, IOXT, IDENT, TRA, TRR, MCL, MST, LRB, SRB, IRR, IRW, SEX, REX, DEPO, EXAM, LWCS, OPCOM.
These instructions are described in further detail in Section 3.3.
IOX Error Interrupt¶
The addressed input/output device does not return a BDRY (Bus Data Ready) signal. This may be due to a malfunctioning or missing device or no device answering to an IDENT instruction.
Memory Parity Error Interrupt¶
A memory parity error has occurred. The least significant 16 bits of the failing address can be read from the PEA register using the TRA PEA instruction.
PEA = Parity Error Address.
Further information may be read from the PES register (Parity Error Status).
Memory Out of Range Interrupt¶
This interrupt occurs when the program addresses nonexisting memory. The least significant 16 bits of the referenced address can be read from the PEA register.
Further information may be read from the PES register.
Power Fail Interrupt¶
This interrupt is triggered by the power sense unit. It is possible for this interrupt to occur simultaneously with some other internal interrupt. In this case, the power fail interrupt has priority.
ND·06.014.02
Page 55¶
2.2.4.3 Reset of the IIC Register¶
In order to optimize the processing of internal hardware status interrupts, the instruction TRA IIC will return the contents of IIC to the A register, bits 0-3, with bits 4 - 15 zero.
The instruction TRA IIC will automatically reset IIC.
Note that if the interrupt is caused by the error indicator Z, the Z indicator on that program level must be cleared by program control from program level 14. (Otherwise, another interrupt will occur.)
2.2.5 Programming Control of the Interrupt System¶
2.2.5.1 Programming the PID and PIE Registers¶
PID = Priority Interrupt Detect.
PIE = Priority Interrupt Enable.
The programming control of the interrupt system is as follows:
PID and PIE may be read to the A register with the instructions
TRA PID and TRA PIE.
Three instructions are available for the setting of these registers.
-
TRR PID and TRR PIE
The TRR instruction will copy the A register into the specified register.
-
MST PID and MST PIE
The MST, masked set, instruction will set the bits in the specified register to one where the corresponding bits in the A register are ones. (The A register is used as a mask for selection of which bit to set.)
-
MCL PID and MCL PIE
The MCL, masked clear, instruction will reset to zero the bits in the specified register where the corresponding bits in the A register are ones.
All program levels may be activated by program, by setting the appropriate bits in PIE and PID.
In addition to TRA, TRR, MCL and MST, the PID register is also controlled in the following ways:
ND-06.014.02
Page 56¶
2.2.5.2 The WAIT, ION and IOF Instruction¶
The resetting of PID bits is also controlled by the WAIT instruction, which will reset PID on the current program level. (The WAIT instruction is also called "Give up Priority".)
For example, a program on program level 14, which issues a WAIT instruction, will cause PID bit 14 to be zeroed. This will cause a new program level to be entered and PK becomes different from PIL (PIL = 14, PK < 14).
The interrupt system is also controlled by the two instructions:
| Instruction | Description |
|---|---|
| ION | Turn on interrupt system |
| IOF | Turn off interrupt system |
When power is turned on, the power up sequence will reset IIE, PIE and PIL, and the register set on program level zero will be used.
The ION instruction will continue operation at the highest program level at the time ION is executed. If a condition for change of program levels exists, the ION instruction will be the last instruction executed at the old program level and the P register on the old program level will point to the instruction after ION.
The IOF instruction will turn off the mechanisms for changing of program level, and PIL will remain unchanged.
IOF and ION may also be used to disable the interrupt system for short periods, for example, in order to prevent software timing problems.
2.2.5.3 The Previous Level Register, PVL¶
In some cases after being forced to level 14₁₀ it may be useful to know which level was the last one.
This might be the case when a MPV (Memory Protect Violation) has occurred. In this case one wishes to find the value of the SP (Saved Program) counter on the offending level and/or the offending instruction.
The PVL register holds the previous level information, and this could be read by the TRA PVL instruction.
ND-06.014.02
Page 57¶
2.2.5.4 Vectored Interrupts and the IDENT Instructions¶
In ND-100 there may be up to 2048 vectored interrupts. Usually, each physical input/output unit will have its own unique interrupt response code and priority.
These vectored interrupts must be connected to the four program levels 13, 12, 11 and 10.
The standard way of using these levels is as follows:
- Level 13: Real-time clock
- Level 12: Input devices
- Level 11: Mass storage devices
- Level 10: Output devices
The vectored interrupts are connected to the corresponding bits in the PID register.
When a vectored interrupt occurs, an IDENT instruction is used to identify the interrupt, since several devices may have interrupts on the same level. The instruction has the following format:
IDENT <program level>
When an IDENT instruction is executed, a hardware search on the indicated level is performed. The first interrupting device found will respond with its identification code and reset its interrupt condition.
The CPU will use the identification code (vector) as a branch address to the driver for the interrupting device.
If more than one device on the same level generates interrupts, the device interface located closest to the CPU has highest priority. If there is more than one device connected to the module, an internal priority on the module will determine which is to be treated first.
Programming Example:
| Command | Description |
|---|---|
| LEV13, WAIT | % Give up priority |
| SAA 0 | % Set content of A-reg. to 0 |
| IDENT PL13 | % Identify device on level 13 |
| RADD SA DP | % Computed GO TO |
| JMP ERR13 | % Code 0, error |
| JMP DRIV1 | % Code 1 |
| JMP DRIV2 | % Code 2 |
| ... | ... |
| JMP DRIVN | % Code N |
Page 58¶
2.2.6 Initializing of the Interrupt System¶
Before use of the interrupt system it must be initialized. After switching power on, IIE, PIE and PIL will be zero. The registers on level zero will be in use. The interrupt initialization must include the following:
-
Enabling of the desired program levels by proper mask setting in PIE (Priority Interrupt Enable).
-
Enabling of the desired internal interrupt sources by proper mask setting in IIE — Internal Interrupt Enable register.
-
The P, saved program counters, on the levels to be used must be initialized, i.e., they must all point to the program to be executed on the different levels.
-
If the Z (error) indicator is enabled for interrupt (IIE bit number 5), care should be taken that this indicator is cleared in the status register (bit number 3) for all levels being initialized.
-
The IIC (Internal Interrupt Code) register, the PES (Parity Error Status) register and the PEA (Parity Error Address) register might be blocked after power up.
By performing a TRA instruction for IIC and PES, all three registers will be unblocked and ready for use.
-
The interrupt system is turned ON.
Example:¶
| Instruction | Value | Comment |
|---|---|---|
| LDA | 76032 | % Enable for interrupts on level |
| TRR | PIE | % 1, 3, 4, 10, 11, 12, 13, and 14 |
| LDA | 37336 | % Enable for all internal |
| TRR | IIE | % Interrupt sources except for the Z indicator |
| LDA | P1 | % The saved program counters |
| LRW | 10 DP | % on the enabled levels |
| LDA | P3 | % start value |
| LRW | 30 DP | % |
| TRA | IIC | % Unlock IIC |
| TRA | PEA | % Unlock PEA and PES |
| ION | % Turn on interrupt system | |
| JMP | START | % Go to main program |
ND-06.014.02
Page 59¶
2.3 THE MEMORY MANAGEMENT SYSTEM¶
2.3.1 General¶
The Memory Management System is designed to extend the ND-100 physical address space, and to provide a sophisticated memory and privileged instruction protection system. This system may be used for several purposes, such as:
- Dynamic memory allocation (paging).
- Program relocation.
- Expanding the maximum physical address space size to 16 M words.
- Memory protection of each individual page.
- Privileged instructions and ring structured program protection.
The Memory Management System includes two major subsystems:
- The paging system.
- The memory protection system.
The Paging System can work in two modes:
- Normal mode. A 16 bit virtual address is mapped into a 19 bit physical address. This extends the physical address space from 64 K to 512 K words. Four page tables of 64 entries each are used. This mode is compatible with the NORD-10/S.
- Extended mode. A 16 bit virtual address is mapped into a 24 bit physical address. This extends the physical address space from 64 K to 16 M words. Four page tables of 64 entries each are used.
For each mode the four page tables are located in high speed registers, directly connected to the internal data bus (IDB). This reduces paging overhead to practically zero. The page size is 1024 words.
The Memory Protection System may be divided into two subsystems:
- The page protection system.
- The ring protection system.
The page protection system protects each page from read, write or instruction fetch accesses or any combination of these.
The ring protection system places each page on one of four priority rings. A page of memory that is placed on one specific ring may not be accessed by a program that resides in a page on a ring of lower priority. This system is used to protect system programs from user programs, the operating system from its subsystems, and the system kernel from the operating system.
ND-06.014.02
Page 60¶
Memory Management Architecture¶
2.3.2 Memory Management Architecture¶
Memory Management consists of:
- 4 page tables.
- 16 paging control registers.
- A paging status register.
- A permit protection system.
- A ring protection system.
The page size is fixed to 1K words, thus each page table will map the full 64K virtual address space of the ND-100.
Page 61¶
Memory Management Building Blocks¶
Diagram¶
- 16 PCR's
- 4 PT's
- Protect
- Mapping
Permit Protection System
Ring Protection System - R1 - R0
Address Translation
PGS
IID - (Belongs to interrupt section)
Abbreviations¶
| Abbreviation | Description |
|---|---|
| IID | Internal Interrupt Detect |
| PCR | Paging Control Register |
| PGS | Paging Status Register |
| PT | Page Table |
Figure 2.9: Memory Management Building Blocks
ND-06.014.02
Rev. A
Page 62¶
2.3.3 The Paging System¶
Number in parenthesis is valid for extended mode.
The Paging System is an automatic address interpretation system which maps a 16 bit virtual address, as seen from the program, into a 19 (24) bit physical address. This implies that the maximum memory size may be extended from 64K words to 512K (16 M) words. The system also allows programs to be written for 64K virtual memory with only parts of the program residing in physical memory at a given time, the rest being kept on mass storage.
The Paging System divides the memory into memory blocks or pages of 1024 words or 1K words. The pointers to these pages are found in the page tables. In ND-100, there are four page tables, each consisting of 64 entries, and each covering a full 64K address space. The tables are kept in high speed registers with a 32 bit word length.
ND-100 uses 1K words per page. This implies that in order to map 64K words of virtual address space, 64 Page Table (PT) entries are required.
To address any location within a 1K address space, 10 address bits are required. These bits are the displacement within a page (DIP), and are transferred directly to the ND-100 bus. The most significant part of the virtual address (bits 10 - 15) are used as an address selecting one of 64 entries in PT. This address is referred to as Virtual Page Number (VPN).
The program level (PL) determines which paging control register (PCR) to use. The selected PCR determines which page index table to select, and VPN addresses an entry in the selected PT.
When a memory request is performed, the content of the 32 bits PT is looked up. 7 bits are used for protection, and are discussed later. 9 (14) bits are called Physical Page Number (PPN), and are transferred to the ND-100 bus. PPN can have values from 0 - 512 (16384). This makes it possible to access 512 (16384) pages. Since one page = 1024 words, it is possible to access 512 (16384) x 1024 = 512 K (16 M) words.
Prior to program start, the operating system will set the PPN to the proper value in the PT. The address translation is therefore under control of the operating system.
Page 63¶
Virtual to Physical Address Mapping¶
| Abbreviation | Description | Range |
|---|---|---|
| PCR | Paging Control Register | |
| DIP | Displacement within page | (0 \leq \text{DIP} \leq 1023) |
| VPN | Virtual page number | (0 \leq \text{VPN} \leq 63) |
| PT | Page table | (0 \leq \text{PT} \leq 3) |
| APT | Alternative page table | (0 \leq \text{APT} \leq 3) |
| PIL | Program level | (0 \leq \text{PIL} \leq 15) |
| PPN | Physical page number | (0 \leq \text{PPN} \leq 511 (16,383)) |
| R | Ring | |
| PM | Permit flags | Number in parenthesis is valid for extended mode. |
| PTM | Page table mode (status bit 0) | |
| PTS | Page table select flag | |
| ,X ,I ,B | Addressing mode bits from the Memory Reference Instruction |
Figure 2.10: Virtual to Physical Address Mapping
ND-06.014.02
Rev. A
Page 64¶
2.3.4 The Shadow Memory¶
The shadow memory is a number of reserved memory addresses. These memory addresses are used to access the page tables in the same way as the rest of the memory.
These reserved addresses are called shadow memory because it lies in the shadow of the main memory and is inaccessible for users on rings 0, 1, and 2. For ring 3 users or when paging is off, however, main memory lies in the shadow and is inaccessible. Figure 2.11 shows the shadow memory layout.
The topmost locations in the 64 K virtual address space are reserved for page table access. In normal mode 1 x 64 x 4 = 256 locations are needed and in extended mode 2 x 64 x 4 = 512 locations are needed. The following octal addresses are hence reserved:
| Normal Mode: | Extended Mode: | |
|---|---|---|
| Page table 0 | 177400 - 177477 | 177000 - 177177 |
| Page table 1 | 177500 - 177577 | 177200 - 177377 |
| Page table 2 | 177600 - 177677 | 177400 - 177577 |
| Page table 3 | 177000 - 177777 | 177600 - 177777 |
Figure 2.11: Shadow Memory Layout.
ND-06.014.02
Page 65¶
Shadow Memory Addressing¶
In normal mode only 16 of each page table entry's 32 bits are used. Therefore only one shadow memory word is read/written to fill one page table entry.
In extended mode 21 of the 32 page table entry's bits are used. This means that two shadow memory words are read/written to fill one page table entry.

Number in parentheses is valid for extended mode.
Figure 2.12: Shadow Memory Addressing.
ND-06.014.02
Page 66¶
2.3.5 The Page Tables¶
In normal mode the map part requires 9 bits and the protect part requires 7 bits. Together the map and protect parts require 16 bits, which is the PT's 16 bit word length. The 9 PPN bits (Physical Page Number) in the map entry shown in figure 2.13 are used to select one of 512 pages in the memory.
Page Table 3
| Shadow Memory | VIRTUAL PAGE NO. | PROTECT ENTRY | MAP ENTRY |
|---|---|---|---|
| 177700 | 0 | 15 | 9 8 0 |
| PROTECT | PPN | Protect | N.A. |
9 PPN bits used to select between 512 pages in the memory
PPN = Physical Page Number
Figure 2.13: Reading Page Table 3 Entries as seen from Program in Extended Mode
In extended mode the map part requires 14 bits and the protect part requires 7 bits. Together the map and protect parts make 21 bits, which extend the PT's word length. Therefore we have to use two shadow memory locations for housing the map and protect parts. The 14 PPN bits in the map entry shown in figure 2.14 are used to select one of 16,384 pages in the memory.
Page Table 3
| Shadow Memory | VIRTUAL PAGE NO. | PROTECT ENTRY | MAP ENTRY |
|---|---|---|---|
| 177600 | 0 | 15 | 9 8 0 |
| PROTECT | PPN | PROT. | N.A. |
14 PPN bits used to select between 16,384 pages in the memory
PPN = Physical Page Number
Figure 2.14: Reading Page Table 3 Entries as seen from Program in Extended Mode
ND-06.014.02
Page 67¶
Page Table Format¶
In normal mode each entry has the following format:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 0 |
|---|---|---|---|---|---|---|---|---|
| WPM | RPM | FPM | WIP | PGU | RING | RING | PHYSICAL PAGE NUMBER (PPN) |
Protect bits:
- Bits 13 - 15: Memory protection bits (WPM = Write Permitted, RPM = Read Permitted, FPM = Fetch Permitted).
- Bit 12: Written in page (WIP)
This bit is automatically set by hardware. - Bit 11: Page used (PGU)
This bit is automatically set by hardware. - Bits 9 - 10: Ring bits
These bits decide which ring this page belongs to. - Bits 0 - 8: Physical page number
Nine bits address a maximum of 512 physical pages in memory.
The protect bits and the protection system are described in Section 2.3.5.
In extended mode the protect bits and the PPN bits require two entries, which have the following formats:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 0 |
|---|---|---|---|---|---|---|---|---|
| WPM | RPM | FPM | WIP | PGU | RING | RING | NOT ASSIGNED |
Protect bits are identical in extended and normal mode.
| 15 | 14 | 13 | 0 |
|---|---|---|---|
| N.A. | PHYSICAL PAGE NUMBER (PPN) |
Bits 0 - 13: 14 bits address a maximum of 16,384 pages in memory.
Page 68¶
2.3.5.1 Page Used and Written in Page¶
All entries in a page table are under program control only, except for the two bits PGU and WIP, which are also controlled automatically by the Memory Management System.
Bit 12: WIP - Written in Page
If this bit is set, the page has been written in, and it should be written back to mass storage. If it is zero, the page has not been modified and need not be rewritten. This bit is automatically set to one the first time a write occurs and then remains set. It is cleared by program (whenever a new page is brought from mass storage).
Bit 11: PGU - Page Used
If PGU = 1, the page has been used. The bit is automatically set whenever the page is accessed and it remains set. The bit is cleared by program. This bit may be used in operating systems to determine which page should be swapped.
2.3.5.2 Page Table Selection¶
ND-100 has 4 page tables. Which one to be used is selected by the Paging Control Register on the current program level. In PCR the information is either taken from the PT field or the APT field. One is to be selected. The alternative page table is used if the memory reference is not P relative and status bit 0 (PTM) is 1. The table below will help explain.
| Addressing Mode | Address Mapping with PTM = 1 |
|---|---|
| ,X | ,B Mnemonic |
| 0 0 0 | (P) + disp. |
| 0 1 0 | I |
| 0 0 1 | ,B |
| 0 1 1 | ,B I |
| 1 0 0 | ,X |
| 1 0 1 | ,B,X |
| 1 1 0 | I,X |
| 1 1 1 | ,B I,X |
Note that indirect addressing involves 2 memory references where one or both go via the APT, as shown in the table.
Page Table Selection
The main principle is that all P relative memory references are mapped via PT and all other references are mapped via APT. This feature is used only by processes which require access to two segments with different virtual address spaces and gives one process access to 128K of virtual memory.
Page 69¶
2.3.6 Memory Protection System¶
The memory management system employs two memory protection systems: a permit protection system and a ring protection system. The two systems together constitute an extensive memory protection, i.e., complete protection of system from user and user from user.
The memory protection system works on 1K pages. If a memory access violates any of the protection systems, an interrupt to program level 14 will occur with the internal interrupt code equal to 2 = MPV (memory protect violations).
2.3.6.1 Page Protection System¶
The page protection system is a protection system for each individual page of memory. Each individual page may be protected against:
- Read access.
- Write access.
- Instruction fetch access.
and any combination of these. Thus, there are 8 modes of memory protection for each page.
The read, write and fetch protect system is implemented by defining in bits 13 - 15 of the PT how the page may be used. In hardware, this information is compared with the instruction being executed, i.e., if it is load (read), store (write), instruction fetch or indirect address.
The three bits from the PT have the following meanings.
| Bit | Meaning | Description |
|---|---|---|
| Bit 15 | WPM — Write Permitted | WPM = 0. It is impossible to write into locations in this page regardless of the ring bits. |
| WPM = 1. Locations in this page may be written into if the ring bits allow it. | ||
| If an attempt is made to write into a write protected page, an internal interrupt to program level 14 will occur, and no writing will take place. | ||
| Bit 14 | RPM — Read Permitted | RPM = 0. Locations in this page may not be read (they may be executed). |
| RPM = 1. Locations in this page may be read if the ring bits allow it. | ||
| If an attempt is made to read from a read protected page, an internal interrupt to program level 14 will occur. |
ND-06.014.02
Page 70¶
Bit 13: FPM — Fetch Permitted¶
FPM = 0. Locations in this page may not be executed as instructions.
FPM = 1. Locations in this page may be used as instructions.
If an attempt is made to execute in fetch protected memory, an internal interrupt to program level 14 will occur and the execution is not started.
Indirect addresses may be taken both from pages which have FPM = 1 and from page which have RPM = 1.
All combinations of WPM, RPM and FPM are permitted. However, the combination where WPM, RPM and FPM are all zero is interpreted as page not in memory and will generate an internal interrupt with internal interrupt code, IIC, equal to page fault.
Page 71¶
2.3.6.2 Ring Protection System¶
The ring protection system is a combined privileged instruction and memory protection system, where 64K virtual address space is divided into four different classes of programs or rings. Two bits (9 and 10) in each page table entry are used to specify which ring the page belongs to.
The ring bits have the following meaning:
| Bit | 10 | 9 |
|---|---|---|
| 0 | 0 | Ring 0: |
| Programs executing from this page may not execute privileged instructions. The program may only access locations in ring zero. Locations outside ring 0 are completely inaccessible. | ||
| 0 | 1 | Ring 1: |
| Programs executing from this page may not execute privileged instructions. The program may access locations in ring 1 and ring 0. | ||
| 1 | 0 | Ring 2: |
| All instructions are permitted when executed from this page. The program may access locations in rings 2, 1 and 0. | ||
| 1 | 1 | Ring 3: |
| All instructions are permitted and the whole address space is accessible if not protected by the RPM, WPM and FPM bits. The page tables may be accessed. |
An illegal ring access or illegal use of privileged instructions will cause an internal hardware status interrupt to program level 14 and the instruction which caused the interrupt will not be executed.
The recommended way of using the ring bits is as follows:
- Ring 0: User programs
- Ring 1: Compilers, assemblers, data base systems
- Ring 2: Operating system, File system, I/O system
- Ring 3: Kernel of operating system
ND-06.014.02
Page 72¶
Paging Control Register (PCR)¶
Associated with the ring bits in a PT entry are the two ring bits in the current program levels paging control register (PCR).
Before a program can start executing, the PCR on the relevant program level is loaded by the operating system with information about which PT, alternative PT and ring is to be used. The program's PT must also be loaded by the operating system prior to execution.
The ring bits of the appropriate PCR are compared with the ring bits of the appropriate page table entry. The PCR ring bits should always be greater than or equal to the PT ring bits. If not, an internal interrupt (MPV) will be generated.
The user's ring number is defined in the PCR-register, while the program's ring number is defined in the page tables.
Example¶
If a user on ring no. 3 starts executing a program on ring no. 1, he is allowed to do so. However, he is forced to user ring no. 1 after program execution. Note that this happens only when executing programs on lower rings than the user's ring number. This does not happen when reading or writing operands on a lower ring.
One should note that the two protection systems are independent of each other and that both the individual memory protection mode and the ring mode must be satisfied before an operation is performed.
Page 73¶
2.3.7 Privileged Instructions¶
In a multiuser multitask system, a user is not permitted to use all instructions in the instruction set. Some instructions may only be used by the operating system, and this category of instructions are called privileged instructions.
Privileged Instructions:
- Input/output instructions
- All instructions which control the memory management and interrupt system
- Interprogram level communication instructions
Refer to the instruction repertoire for further information.
The only instruction the user has available for user/system communication is the monitor call instruction — MON. The MON instruction may have up to 256 different parameters or calls. When the machine executes the MON instruction, it generates an internal interrupt.
The privileged instructions may only be executed on ring 2 and 3, i.e., only by the operating system. If programs on ring 0 and 1 try to execute any privileged instructions, a privileged instruction interrupt will be generated and the instruction will not be executed.
Page 74¶
2.3.8 Memory Management Control and Status¶
2.3.8.1 The PON and POF Instructions¶
The memory management system is controlled by the two privileged instructions PON and POF.
PON — Turn on memory management system (paging on)
The instruction that is executed after the PON instruction will go through the address mapping (paging) mechanism, and the memory protection system will be active.
POF — Turn off memory management system (paging off)
The instruction will turn off the memory management system and the next instruction will be taken from a physical address in the lower 64K, the address following the POF instruction.
The machine will then be in an unrestricted mode without any hardware protection feature, i.e., all instructions are legal and all memory "available".
Page 75¶
2.3.8.2 Paging Control Registers¶
There is one PCR (paging control register) for each level. The setting of the PCRs is done by the operating system prior to the program execution. Only one PCR may be written into at a time by the instruction TRR PCR.
This instruction uses the contents of the A register. The A register has the following format:
| 15 | 10 | 9 8 | 7 6 5 4 | 3 | 2 1 0 |
|---|---|---|---|---|---|
| N.A. | PT | APT | Level | 0 | RING |
- Bits 11 - 15: Not assigned
- Bits 9 - 10: Page table number (0-3)
- Bits 7 - 8: Alternative page table number (0-3)
- Bits 3 - 6: Program level (PCR number) (0-15)
- Bit 2: Equals zero
- Bits 0 - 1: Ring number (0-3)
Transferring the A-reg. to the PCR:¶
The instruction TRR PCR transfers the A-reg. to the PCR. After executing this instruction, PCR has the following format.
| 15 | 11 10 | 9 8 | 7 6 5 4 3 2 1 0 |
|---|---|---|---|
| N.A. | PT | APT | 0 0 0 0 0 RING |
Transferring the PCR to the A-reg:¶
For maintenance purposes it may be desirable to read back the contents of the 16 PCRs to the A-register. This is done by executing the TRA 14 instruction, i.e. read paging control register. Bits 3-6 of the A-register must contain information about which program level to read the PCR from. After executing this instruction, the A-register has the following format.
| 15 | 11 10 | 9 8 | 7 6 5 4 3 2 1 0 |
|---|---|---|---|
| 0 0 0 0 0 | PT | APT | 0 0 0 0 0 RING |
ND-06.014.02
Rev. A
Page 76¶
2.3.8.3 Paging Status Register¶
Whenever the memory management system reports any errors (page fault, memory protection violations), the operating system is alerted through an internal interrupt with the interrupt code equal to the error source. Next, the operating system will read the paging status register for further information. The paging status register is used for further specifications when a page fault or a memory protection violation occurs.
The instruction TRA PGS is used to read this register. Errors lock the PGS register, TRA PGS unlocks it again.
The bits in PGS have the following meaning:
| 15 | 14 | 13 | 8 | 7 | 6 | 5 | 0 |
|---|---|---|---|---|---|---|---|
| FF | PM | N.A. | PT | VPN |
PGS Format
- Bit 15: FF = Fetch Fault.
- Memory management interrupt occurred during an instruction fetch.
- Bit 14: PM = Permit violation.
- 1 = permit violation interrupt (read, write, fetch protect system).
- 0 = ring protection violation interrupt.
- Permit violation has priority if both conditions occur.
- Bits 6-7: PT = Page Table.
- Page table number.
- Bits 0-5: VPN = Virtual Page Number.
- Virtual page number.
Note that bits 0 - 7 are the 8 least significant bits of the physical page table entry in normal mode.
If bit 15 is a one, the page fault or protection violation occurred during the fetch of an instruction. In this case, the P register has not been incremented and the instruction causing the violation (and the restart point) is found from the P register on the program level which caused the interrupt.
If bit 15 is zero, the page fault or protection violation occurred during the data cycles of an instruction. In this case, the P register points to the instruction after the instruction causing the internal hardware status interrupt. When the cause of the internal hardware status interrupt has been removed, the restart point will be found by subtracting one from the P register.
ND-06.014.02
Rev. A
Page 77¶
2.3.9 The SEX and REX Instructions¶
The address mode for the page mapping system is controlled by the two privileged instructions SEX and REX.
SEX — Set extended address mode
The SEX instruction will set the paging system in a 24 bit address mode instead of a 19 bit address mode. A physical address space up to 16 M words will then be available.
Bit number 13 in the status register (STS) is set to one, indicating the extended address mode.
REX — Reset extended address mode
The REX instruction will reset the extended address mode (24 bits) to normal address mode (19 bits). This implies that 512 K words of physical address space is now available.
Bit number 13 in the status register is reset, indicating normal address mode.
Note that after change of mode, the page tables must be initialized.
Page 78¶
2.4 ND-100 MEMORY SYSTEM¶
2.4.1 General¶
Computer performance is, to a great extent, given by the efficiency of the memory system. General requirements are:
- Low access time.
- Low storage cost.
- Large capacity.
These requirements are usually conflicting.
In the ND-100 system, a compromise is achieved through the implementation of a multilevel hierarchical memory system. Figure 2.15 shows the major building blocks in this system.
Page 79¶
Multilevel Storage System¶
The concept is to hold the most frequently used information as near the CPU as possible. In other words, the average access time for instructions and data should be close to main memory access time. At the same time, most of the information resides on mass storage. That is, price per stored bit approaches the mass storage device cost.
The memory system includes (ordered by access time):
- 8 programmable registers associated to each program level.
- 1K words CACHE memory (optional)
- Up to 16M words local memory on each module.
- Up to 2M words multiport memory address space.
- Disk storage.
Here we will discuss local memory, multiport memory and cache.
Note! One ND-100 CPU can only access 512K words if used in normal address mode. That means the sum of local memory and multiport memory for one CPU cannot exceed 512K words.
If used in extended address mode ND-100 can access up to 16 words.
ND-06.014.02
Page 80¶
2.4.2 ND-100 Memory Architecture¶
Figure 2.16 shows the storage interconnection.
Figure 2.16: Storage Interconnection
CACHE memory is physically located on the memory management module and connected directly to the internal CPU data bus (IDB).
Local memory may consist of several modules plugged directly into the ND-100 bus.
Multiport memory is accessed through a Big Multiport Memory (BMPM) transceiver in the ND-100 bus connected to one port in a separate card crate.
| Component | Description |
|---|---|
| CPU Register Block | Connects to internal data bus |
| Bus Control | Manages connections |
| MMS and CACHE | Memory management and cache |
| Memory Modules | Local memory modules |
| BMPM Transceiver | Connects to multiport memory |
Note: IDB = Internal Data Bus
ND-06.014.02
Page 81¶
2.4.2.1 Local (Main) Memory¶
Local memory facts:
- Memory size from 32K words in steps of 32K words up to 512K words (normal address mode), 16M words (extended address mode).
- 32K, 64K or 256K words per memory module.
- Direct connection to ND-100 bus for low access time. Typical: 320 ns measured on CPU bus control.
- Error correction of single bit failures and reporting double bit failures.
2.4.2.2 Memory Module Placement in ND-100 Bus¶
Memory modules should be placed in the right-most position (position 12 or 21) in the ND-100 bus and expanded to the left.
Module address range may be defined in two different ways:
- Prewired position code in each bus slot.
- Thumbwheel setting of a module address area.
2.4.2.3 The Position Code¶
The position code defines a module placed in position 12 to have the address range 0 - 64K words, 64K words to 128K words in position 11 and so on. In other words, there is a resolution of 64K words per position, expanding to the left.
ND-06.014.02
Page 82¶
2.4.2.4 The Thumbwheel Setting¶
It is possible to mix module sizes of 16K words, 32K words and 64K words in the same memory system. In this case the position code can not be used.
The thumbwheel setting allows an address resolution of 16K words per position and should be used in cases where module sizes are mixed.
The thumbwheels are physically located at the top of the memory module and define lower address limit for each module.
The module itself knows its size, which is added to the lower limit and presented on a display giving lower limit to the next module.
Examples:
General
POSITION
| CPU | MMS |
|---|---|
| 1 | |
| 2 | |
| 3 | |
| 9 | |
| 10 | |
| 11 | |
| 12 |
ONE ND-100 CARD CRATE
Figure 2.17: Memory Module placement in the Card Crate
LL: Lower limit is set by two hexadecimal thumbwheels or given by module placement (the position code). Lower limit defines the lower address to access the module.
UL: Upper limit is displayed as two octal digits and defines the highest address to access the memory module. Upper limit is generated internally on the memory module as an addition of lower limit and the size of the memory module. The upper limit is displayed in steps of 16K.
As indicated in the above figure, upper limit on a memory module covering one part of the address range, should be equal to lower limit on the next memory module covering the following higher addresses.
ND-06.014.02
Page 83¶
CASE 1:¶
Lower limit defined by the position code.
Thumbwheel should be
Thumbwheel should be | 0 | 6
| POSITION | 1 | 2 | 3 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|
| CPU | 1 | 0 | 0 | 0 | |||
| MMS | 0 | 0 | 0 | 0 |
Position 12: Address range 0 - 64K words
Position 11: Address range 64 - 128K words
Position 10: Address range 128 - 192K words
and so on
Requirement: All memory modules must be 64K words.
CASE 2:¶
Lower limit defined by thumbwheel.
| POSITION | 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|
| CPU | 0 | 0 | 0 | 0 | ||||
| MMS |
Resolution on thumbwheel is 16K words per digit. Only digits below 8 are legal.
64K W module
32K w module
64K w module
ND-06.014.02
Page 84¶
2.4.3 Memory Error Correction¶
To each 16 bit word stored in memory, a 6 bit error correction code (ECC) is generated. That is, each word is stored as 22 bits.
When reading from memory, a new ECC is generated and compared with the stored one. This comparison allows the memory system to:
- Accept good data (no errors).
- Detect, correct and log single bit errors.
- Detect double bit errors and interrupt the CPU for uncorrectable memory failure.
- In most cases, interrupt the CPU for memory failures on multiple errors (certain unfortunate combinations of multiple errors could be bypassed).
Page 85¶
Error Codes (PES bits 8-13) Decoding Table¶
| Error Code | Syndrome Bits | No Error | Single Code Error | Single Data Error |
|---|---|---|---|---|
| Fatal S4 S3 S2 S1 S0 | ||||
| 0 | 0 0 0 0 0 0 | Good | EC0 | |
| 1 | 0 0 0 0 0 1 | EC1 | ||
| 2 | 0 0 0 0 1 0 | E0 | ||
| 3 | 0 0 0 0 1 1 | |||
| 4 | 0 0 0 1 0 0 | EC2 | ||
| 5 | 0 0 0 1 0 1 | E1 | ||
| 6 | 0 0 0 1 1 0 | E2 | ||
| 7 | 0 0 0 1 1 1 | EC3 | ||
| 10 | 0 0 1 0 0 0 | |||
| 11 | 0 0 1 0 0 1 | E3 | ||
| 12 | 0 0 1 0 1 0 | |||
| 13 | 0 0 1 0 1 1 | E4 | ||
| 14 | 0 0 1 1 0 0 | E5 | ||
| 15 | 0 0 1 1 0 1 | E6 | ||
| 16 | 0 0 1 1 1 0 | E7 | ||
| 17 | 0 0 1 1 1 1 | EC4 | ||
| 20 | 0 1 0 0 0 0 | E8 | ||
| 21 | 0 1 0 0 0 1 | E9 | ||
| 22 | 0 1 0 0 1 0 | E10 | ||
| 23 | 0 1 0 0 1 1 | E11 | ||
| 24 | 0 1 0 1 0 0 | |||
| 25 | 0 1 0 1 0 1 | E12 | ||
| 26 | 0 1 0 1 1 0 | |||
| 27 | 0 1 0 1 1 1 | E13 | ||
| 30 | 0 1 1 0 0 0 | E14 | ||
| 31 | 0 1 1 0 0 1 | E15 | ||
| 32 | 0 1 1 0 1 0 | |||
| 33 | 0 1 1 0 1 1 | |||
| 34 | 0 1 1 1 0 0 | |||
| 35 | 0 1 1 1 0 1 | |||
| 36 | 0 1 1 1 1 0 | |||
| 37 | 0 1 1 1 1 1 | EC5 | ||
| ------------ | ------------------ | ---------- | ------------------ | ------------------ |
| 40 | 1 0 0 0 0 0 | All 22 bits are zero | Special cases | |
| 52 | 1 0 1 0 1 0 | All 22 bits are one | ||
| 65 | 1 1 0 1 0 1 | |||
| ------------ | ------------------ | ---------- | ------------------ | ------------------ |
| 74 | 1 1 1 0 0 0 | Lower byte parity error | For 2 bit parity check memory | |
| 75 | 1 1 1 0 1 0 | Upper byte parity error | ||
| 76 | 1 1 1 1 0 0 | Upper + lower byte par. error | ||
| 77 | 1 1 1 1 1 1 |
Figure 2.18: Error Codes (EC) as Reported in the PES Register
ND-06.014.02
Page 86¶
2.4.4 Memory Control and Status¶
2.4.4.1 Error Correction Control Register (ECCR)¶
This register controls the error correction network.
The error correction control register is loaded by executing the instruction:
TRR ECCR
The format is as follows:
| 15 | 5 | 4 | 3 | 2 | 1 | 0 | ||
|---|---|---|---|---|---|---|---|---|
| N/A | 6 | DIS | ANY | 15 | 0 | |||
| TST | TST | TST |
Description:
- Bit 0: Set to "1" simulates memory error in bit 0. TST = Test
- Bit 1: Set to "1" simulates memory error in bit 15. TST = Test
-
Bit 2: Interrupt condition control bit.
- "0" = Only multiple errors will generate parity error interrupt.
- "1" = All errors will generate parity errors.
This bit is turned on and off by an RT program logging single bit errors.
-
Bit 3: Disable. (DIS)
When this bit is set, error correction and parity error interrupt are disabled.
- Bit 4: Set to "1" simulates memory error in bit 6. TST = Test
ND-06.014.02
Page 87¶
2.4.4.2 Memory Status Registers (PEA and PES)¶
Feedback information from the memory system is given in two status registers:
- PEA (Parity Error Address).
- PES (Parity Error Status).
Both registers are read to the A register by the TRA instruction.
Format of PEA: (A register after TRA PEA)
| 15 | 0 | |
|---|---|---|
| Lower 16 bits of Physical Address |
A PEA register holds the 16 least significant address bits of the last memory reference.
Format of PES: (A register after TRA PES)
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DMA | FAT | S4 | S3 | S2 | S1 | S0 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | |
| ERROR CODE | UPPER 8 BITS OF PHYSICAL ADDR. |
Bits 0-7: Most significant address bits of the last memory reference.
Bits 8-12: Error code (0-4) which points out the failing and corrected bit if a single bit error has occurred (see bit 13). Refer to the table below for decoding of the error code.
Bit 13: Fatal
- If fatal is set 1, a multiple error has occurred and the error code does not contain relevant information. Fatal not set ("0") means single bit error (bit number found in error code) or good data (error code = 0).
Bit 14: DMA; error occurred during DMA reference.
Bit 15: Fetch — error occurred during instruction fetch or during an examine (EXAM) or a deposit (DEPO) instruction.
When the error condition occurs, the content of PES and PEA is locked and not released until TRA PEA is executed. These registers do not contain correct information unless an internal interrupt with code 10 or 11 (parity error and memory out of range) is detected.
ND-06.014.02
Page 88¶
2.4.5 Multiport Memory¶
Two multiport memory systems are available. These two systems are called:
- Big Multiport Memory (BMPM).
- Multiport Memory 4 (MPM4).
2.4.5.1 Big Multiport Memory (BMPM)¶
ND-100 can be equipped with a multiport memory transceiver to access the big multiport memory system.
The BMPM system allows up to four sources to access the same physical memory area.
One source is connected to one of four BMPM ports through a multiport channel. All devices meeting the multiport channel specification are allowed access to this memory system.
Typical applications of the BMPM system are:
- Multiprocessor communication through a shared memory system.
- Shared memory between CPU and high speed DMA devices.
The BMPM system is physically located in a separate card crate.
One card crate can hold 384K words, and 8 crates can be connected.
2.4.5.2 Multiport Memory 4 (MPM4)¶
The MPM4 combines the features from the big multiport memory (BMPM) and the bus extender (BEX). The MPM4 extends the ND-100 bus to new card racks. In these racks you can install memory modules, DMA modules and ordinary I/O modules. The memory modules may be shared with other ND-100s, ND-500s and DMA devices. By using the MPM4 system you are able to build a big and flexible computer system.
Page 89¶
2.4.6 Cache Memory¶
Cache is an optional high speed memory buffer.
The presence of cache will reduce average memory access time significantly.
2.4.6.1 Cache Memory Architecture¶
Location
Cache memory is physically located on the memory management module and has direct (through special wiring) connection to the internal CPU data bus (IDB).
Placement/Replacement Algorithm
The cache memory should hold the most recent data and instructions to be processed. The algorithm used for this purpose is called "Write Through" (WT).
This algorithm ensures that all information in cache is also held as backup in main memory. That is, cache memory does not need standby power during a power break.
The algorithm concept is as follows:
- A write operation goes to cache memory as well as main memory.
- During a read operation data is taken from cache memory if found there. Otherwise, it is taken from main memory and written into CPU and also into the cache memory (for probable later use).
ND-06.014.02
Page 90¶
2.4.6.2 Cache Memory Organization¶
The cache memory is organized as a 1K word, by 31 bit look up table. Each word in cache is a copy of a word on one of the physical pages in main memory and there is a one to one connection between displacement in cache and displacement in the page.
In order to associate each cache word with one physical page, a directory is used. The directory is 15 bits to each word telling which page this word belongs to. During write the directory is updated to the Physical Page Number (PPN) written into.
During read, the directory is compared with the accessed PPN. If they are equal, it was a cache hit, if not, the displacement was equal, but the cache word belongs to another page than the one accessed. Refer to Figure 2.19 for illustration.
| Physical Address (10-23) | ||
|---|---|---|
| Virtual Address (0-9) | DIP | PPN BD0-15 |
| 10 | 14 | |
| Used | ||
| 14 bits directory | 1K x 16 bits of Data | |
| CPN | ||
| Data Word | ||
| Physical Address (10-23) | PPN | 14 |
| Compare | ||
| AND | ||
| If True | Data AVAILABLE | Data to processor |
DIP = Displacement In Page
PPN = Physical Page Number
BD = Bus Data
CPN = Cache Page Number
U = Used
Figure 2.19: Cache Operation Principles
ND-06.014.02
Page 91¶
2-57¶
| 31 | 17 | 16 | 15 | 0 |
|---|---|---|---|---|
| CPN | U | DATA WORD |
Figure 2.20: Format of One Cache Word
CPN: Cache Page Number defines what PPN (Physical Page Number) the CPU word belongs to.
U: - "1" — this cache location contains valid information. - "0" — this cache location does not contain valid information.
The U bit is only used by hardware and will be "0" after a cache clear.
DATA WORD: This is a copy of a word in main memory.
ND-06.014.02
Page 92¶
2.4.6.3 Cache Control and Status¶
Cache memory contains:
- 3 registers for control
- 1 status register for feedback information
2.4.6.3.1 CACHE CONTROL¶
Clearing Cache¶
ND-100 cache concept requires that all changes in main memory should be updated in cache. This is done automatically when the CPU writes to memory. A DMA transfer will not be mapped through cache, however, so that a DMA transfer would result in different data in cache and memory. To avoid this, the operating system will execute the instruction
TRR CCLR % Clear cache
when a DMA transfer is initiated.
Setting of Cache Inhibit Limits¶
Assume that all external sources to memory (DMA, etc.) could use a predefined address area.
Note that data is not removed from cache when the cache inhibit area is expanded. Therefore, expansion of the cache inhibit area must always be accompanied by clear cache. Note that the whole address range is inhibited after master clear.
lower limit ≤ PPN ≤ upper limit
The limit setting is included to define a CPU private area, thus avoiding the clear cache operation for each DMA transfer.
The limit registers are set by the instructions:
LDA <lower limit> % lower limit page numberTRR LCIL % set lower limit
and
LDA <upper limit> % upper limit page numberTRR UCIL % set upper limit
ND-06.014.02
Page 93¶
2.4.6.3.2 CACHE STATUS REGISTER¶
The cache status register is used by diagnostic programs and loaded to the A register by
TRA CSR % Cache status ➞ A register
The format of CSR:
| 15 | 2 | 1 | 0 |
|---|---|---|---|
| N/A | MAN DIS | Cache ON | CUP |
Bit 0: CUP¶
Cache updated — CUP is "1" if the next memory reference (i.e., the instruction readout for the following TRA CSR) causes writing in cache.
(Before TRA CSR is executed the next instruction is prefetched!)
Bit 1: CACHE ON¶
Cache on is "1" if cache is present, except during a 60 μs period, following cache clear and master clear. If bit 2, MAN DIS is "1"; cache on will be "0".
Bit 2: MAN DIS¶
Manual Disable of cache.
"1" if disabled
"0" if not disabled
This bit is controlled by a switch on the memory management system module.
The cache status register is 1XX if the cache option is not installed.
ND-06.014.02
Page 94¶
2.5 ND-100 INPUT/OUTPUT SYSTEM¶
2.5.1 General¶
The Input/Output system (abbreviated to I/O system) provides a two-way communication between the CPU and its peripherals. General requirements for an I/O system are:
- Reliability.
- Flexibility. The I/O system should be able to handle slow devices as well as high speed devices.
- Modularity. The I/O system should be easy to expand as the customer requires. I/O configuration should be easy to change.
The requirements mentioned above depend, of course, on the system’s architecture.
Page 95¶
2.5.2 ND-100 I/O Architecture¶
The ND-100 bus provides the communication between functional blocks in ND-100.
All ND-100 modules are made to a common standard to allow identical connection to this bus. This convention also includes I/O device controllers.
The ND-100 bus is controlled completely by the bus control/driver which is an integrated part of the CPU. This arrangement includes the following features:
- The I/O device controller is directly connected to the same printed back-plane as the CPU.
- no external wiring
- increased reliability
- There is no connection of external buses.
- a faster system
- easy to maintain
- I/O modules can be plugged into the bus.
- easy to expand
- easy to reconfigure
It is also possible to extend the ND-100 bus by using Bus Extenders (BEX). The BEX system extends the ND-100 bus to a maximum of 8 card crates (both 12 and 21 position crates). However, this system slows down the execution time.
Page 96¶
2.5.3 ND-100 Card Crate — Physical Layout¶
The ND-100 card crate is available in two versions. One version takes a maximum of 12 modules and the other a maximum of 21 modules. Each module has one 96 pins contactor for direct contact to the ND-100 bus when plugged into the crate. Refer to Figure 2.21. Figure 2.22 and 2.23 show the layout of the two card crates.
| Device |
| Controller |
| A |
| B |
| -------------- |
| Standard |
| ND-100 bus |
| Drivers/ |
| Receivers |
| C |
Two 64 pins contactors for device connection.
96 pins contactor for direct contact to the ND-100 bus.
Figure 2.21: ND-100 Module and Connectors
| |
| |
| 420mm |
| POWER |
| SUPPLY |
******************************
| |
| |
| |
| |
| |
| |
| |
| |
| |
+++++++++++++++++++++++++++++++
SLIDES FOR CONNECTION OF MODULE DEPENDENT CABLES
ND-100 BUS BACKPLANE
Figure 2.22: 12 Position ND-100 Crate Layout (Top View).
In the 12 position version, the required power is supplied by a power supply located within the card crate. This approach leads to a very compact system.
ND-06.014.02
Page 97¶
2-63¶
Figure 2.23: 21 Position ND-100 Crate Layout (Front View)¶
In the 21 position version, the power supply is removed from the card crate and located in the upper part of the cabinet. Thus, the cabinet is bigger than the cabinet for a 12 position crate.
| Measurement | Description |
|---|---|
| 420mm | Height of the module |
| 510mm | Width of the cabinet |
Components¶
- SLIDES FOR CONNECTION OF MODULE DEPENDENT CABLES
- ND-100 BUS BACKPLANE
ND-06.014.02
Page 98¶
Recommended Placement of Modules in a Card Crate¶
Figure 2.24 shows the recommended placement of modules in a card crate. The placement rules are equal for both the 12 and 21 position crate.
If the memory management and cache module is present, the first I/O module should be placed in position 3, the next in position 4 and so on, expanding to the right.
If the MMS and cache module is not present, move all I/O modules one position left.
RULE: There should never be empty positions between the CPU and the last I/O module. Expansion is from left to right.
If the 12 or 21 position crates are not enough, new card crates can be added, thus expanding the ND-100 to a maximum of 8 crates. This is done by using Bus Extenders as described later in this manual.
Page 99¶
2.5.4 The ND-100 Bus¶
The ND-100 bus has been frequently mentioned due to its importance as a system highway.
Although the bus is physically one printed backplane, it may be divided up into two logical parts:
- Multiplexed address/data bus.
- Control lines.
ND-100 bus facts:
- The multiplexed address/data bus is 24 bits wide, supporting a physical address space of 16M words.
- No loss in memory access time due to multiplexed bus.
- Precise balance and termination give typically 20 ns address/data setup time.
All modules connected to the system are presented the same information simultaneously and are continuously "listening" to the bus activity.
The control lines are used to define the valid information on the bus (addresses or data) and to connect one source to one destination.
Page 100¶
2.5.5 ND-100 I/O System Functional Description¶
External devices may be classified as:
- Slow character/word oriented input/output devices (example: terminals.)
- High speed block oriented mass storage devices (example: disk, magnetic tape).
ND-100 handles these device classes in different ways.
The first class is completely controlled by the CPU. This is called Programmed Input/Output (PIO).
The mass storage device controller operates directly on memory. This is called Direct Memory Access (DMA).
The program that controls a peripheral device is called a device driver. These drivers are subroutines delivered by Norsk Data together with the complete hardware/software configuration.
Page 101¶
2.5.6 Programmed Input/Output — PIO¶
A PIO interface is always designed to handle slow byte/word oriented devices and is completely controlled by the CPU.
All exchange of data, control and status between the CPU and a device is programmed via the A register.
2.5.6.1 The Input/Output Instruction — IOX¶
The IOX instruction is a privileged machine instruction used in information exchange between the I/O system and the A register.
The I/O system usually contains several device controllers, each of them associated with a device register address. The lower 11 bits of the IOX instruction contains the address to the device that is to be accessed.
IOX instruction format:
IOX
| 15 | 11 | 10 | 0 |
|---|---|---|---|
| IOX | device register address |
IOX Instruction Format
ND-06.014.02
Page 102¶
2.5.6.2 Interface Channels and Registers¶
An I/O interface is said to have two channels if it can handle both input and output transfers. This means one input channel and one output channel.
Examples:
- A terminal interface has two channels, one for input from the terminal's keyboard, one for output to the terminal's screen.
- A paper tape punch has only one channel, the output channel.
At least three registers are assigned to each channel for each device. Norsk Data's standard assignment of registers for a two channel device is:
Input Channel
- Input control register.
- Input status register.
- Input data register.
Output Channel
- Output control register.
- Output status register.
- Output data register.
Each of the above mentioned registers has a number in the device. In the IOX instruction the three least significant bits are used to select one register in the selected device.
| Selected register within | |||
|---|---|---|---|
| 15 | 11 | 10 | 9 |
| IOX | 3 2 1 0 selected device |
- Device selection
- 0: Standard ND interface
- 1: Customer designed interface
Figure 2.25: IOX Instruction Decoding Details
The IOX instruction is used for both input and output.
IOX Output
- Odd device register address (bit 0 = "1").
- Content of A register is written into register specified in "device register address".
ND-06.014.02
Page 103¶
IOX Input¶
- Even device register address (bit 0 = "0").
- Content of register specified in "device register address" is loaded into A register.
Device Register Address Range¶
Standard interfaces delivered by Norsk Data use addresses from 0 - 1777₈ (bit 10 is always zero).
Customer designed interfaces can use the address range from 2000₈ - 3777₈ (bit 10 is one).
Diagram¶
| Device Register Address | ADDRESS |
|---|---|
| ADDRESSES DEFINED BY NORSK DATA DESIGNATED INTERFACES | |
| 0 | |
| IOX | |
| C = "0" | |
| 1777₈ | |
| ADDRESSES LEFT OPEN FOR CUSTOMER DESIGNED INTERFACES | |
| 2000₈ | |
| 3777₈ |
C = Customer
Figure 2.26: IOX Address Range
Page 104¶
Special Feature¶
For future extension, of device addresses the T register can hold the device register address. The IOX instruction then has the format:
IOXT % T = <device register address>
Device Register Address in T Register¶
| Bits | Description |
|---|---|
| 15 | |
| 14 | |
| 13 | |
| 12 | |
| 11 | C = Customer |
| 10 | |
| 9 | x |
| 8 | x |
| 7-0 | .............x |
Address Ranges¶
| Binary | Address Area | Addresses |
|---|---|---|
| 0000 000x | NORSK DATA INTERFACES | 0 |
| 17778 | ||
| CUSTOMER INTERFACES | 20008 | |
| 0000 01x | 37778 | |
| 40008 | ||
| 0111 111x | ILLEGAL | 77778 |
| 1000 0000 | SYSTEM CONTROL REGISTERS | 100008 |
| 007778 | ||
| RESERVED | 1010008 | |
| 1101 0000 | 107778 | |
| 1000 1000 | 1100008 | |
| 1111 1111 | NORSK DATA INTERFACES | 1177778 |
Figure 2.27: IOXT Address Range
ND-06.014.02
Page 105¶
2.5.6.3 Control and Status Registers¶
Commands to a device are given through the control register.
| Command | Description |
|---|---|
LDA <command> |
% Initiate A register with command |
IOX <dev. addr. + CR> |
% Write control register from A register |
| % (CR = control register) |
Device feedback goes through the status register:
| Command | Description |
|---|---|
IOX <dev. addr. + SR> |
% Read status register to A register |
| % (SR = status register) |
The formats of these registers are device dependent and found in the hardware programming specifications for each device type.
Page 106¶
2.5.7 Direct Memory Access (DMA)¶
2.5.7.1 General¶
Direct Memory Access is used to obtain high transfer rates to and from memory.
Instead of using IOX for each word via the A register, a DMA controller is connected directly to the main memory via the ND-100 bus. This connection is called a DMA channel.
More than one DMA device may be active on the DMA channel at the same time, sharing the channel's total bandwidth (1.8 M words/sec.).
Typical DMA devices are:
- Disks.
- Magnetic tapes.
- High speed serial/parallel intercomputer links.
After activation, a DMA transfer runs completely independently of the CPU. That means that CPU and DMA activity may be performed in parallel. CPU and DMA controllers operate simultaneously and independently of each other.
Conflicts are avoided by the bus control/driver in the CPU. If the CPU requests the bus (instruction fetch, I/O, access, etc.) simultaneously with a DMA controller, the bus is given to the DMA transfer. This effect is called cycle steal.
A HAWK disk, for example, will steal one cycle of 550 ns per each 6.4 µs transfer time which occupies less than 10% of the bus bandwidth. The effect of cycle steal in this example is close to zero due to prefetch of instructions and the average distribution of bus requests within the instructions.
2.5.7.2 DMA Controller Operation¶
A DMA transfer may be divided into three steps:
- Initialization.
- Transfer.
- Termination and status check.
The bus is also fast enough to handle both DMA activity and CPU activity at the same time without slowing down the CPU. A CPU memory reference will hold the bus for typically 320 ns, a DMA transfer typically 550 ns.
A disk transfer, consequently, will use 550 ns of bus time for each 6.4µs of transfer time. That is less than 10% of the bus bandwidth. This does not mean that there is 10% less CPU activity. The use of instruction prefetch and normal distribution of memory references reduces DMA activity to practically zero overhead.
ND-06.014.02
Page 107¶
2.5.7.2.1 INITIALIZATION¶
A DMA controller has to be initialized before a transfer can be started. The initialization is done by a device driver activated by the operating system when a DMA transfer is needed.
The driver program accesses the DMA controller by means of IOX instructions. Through different transfer parameters, the driver tells the DMA interface what to do.
Typical parameters are:
- Memory Address Register (MAR) holds the first memory address to read from (DMA output) or write into (DMA input).
- Block Address Register (BAR) holds the first address to read or write from on the physical device.
- Word Count Register holds the number of words to be transferred.
- Control Register gives device function (read, write, etc.) and start.
The formats of the registers are given in the hardware programming specifications for each device.
2.5.7.2.2 TRANSFER¶
After initialization and start is given, the data transfer takes place. Data is exchanged between the DMA controller and memory at the speed determined by the device.
In order to reduce the possibility for overrun on input and underrun on output, each device controller contains a buffer for at least 16 words between device and memory.
2.5.7.2.3 TERMINATION AND STATUS CHECK¶
The DMA transfer is completed when the word counter is zero. A DMA controller tells this to the CPU through an interrupt on level 11. The device driver is again activated to read the device status which gives information on the status of the transfer.
ND-06.014.02
Page 108¶
2.5.7.2.4 GENERAL CONSIDERATIONS¶
In ND-100 all DMA controllers have a buffer for at least 16 words between device and memory. That is, if the DMA channel for some reason is occupied, the buffer will prevent underrun on output and overrun on input.
If there is a high load on the DMA channel, i.e., several DMA controllers that can be active at the same time, some general considerations should be taken.
- The DMA controller with the smallest buffer should be placed closest to the CPU.
- If several DMA controllers have the same buffer space, the fastest should be placed closest to the CPU.
These rules are related to hardware priority associated to placement relative to the CPU.
ND-06.014.02
Page 109¶
2.5.8 The I/O System and the Interrupt System¶
2.5.8.1 General¶
Under a running system (SINTRAN III), all I/O devices connected to the ND-100 will be prepared for operation and then allowed to operate asynchronously with respect to the CPU. That means that the I/O controllers activate themselves through an interrupt to the CPU if a status change occurs.
Possible status changes in the I/O system are:
-
End of operation interrupt.
If output this means data is transmitted, can accept next
If input this means data is available, please read it (before overrun)
- Error interrupt.
2.5.8.2 Interrupt Level Usage¶
Interrupt levels 10, 11, 12, 13, and 15 are available to the I/O system as physical lines in the ND-100 bus. These lines go directly to the interrupt detect controller in the CPU.
The Level Assignment¶
- All output interrupts use level 10.
- All DMA controllers use level 11.
- All input interrupts use level 12.
- Real-time clocks and special devices such as HDLC input use level 13.
- Level 15 is not used by Norsk Data equipment but is available for special purposes.
Page 110¶
2.5.8.3 Device Interrupt Identification¶
As indicated above, more than one device may use the same interrupt line. In order to find the interrupting device an IDENT instruction is executed.
The IDENT
The ident code is unique for each device and is used to find that device driver. The driver will read the status register to find the reason for the interrupt and take proper action.
The IDENT
Example:
The instruction IDENT PL12 will only search for interrupt in the input channel. A possible existing interrupt on level 10 or level 11 is ignored and handled later by IDENT PL10 and IDENT PL11 respectively.
2.5.9 Programming Specifications for I/O Devices on the CPU Board¶
The real-time clock (device register address range10-13) is always located on the CPU board. The terminal with device register address range 300-307 is located on the CPU board unless a strap on the CPU board is removed.
Since these devices are included in every CPU, their programming specifications are given here. Programming specifications for other devices are given in separate manuals.
Page 111¶
2.5.9.1 The Real-time Clock¶
The real-time clock on the CPU board has device register address range 10-13.
| IOX | Description |
|---|---|
| 10 | Returns 0 in the A register and has no other effect. |
| 11 | Clear real-time clock counter. This instruction will cause the next clock pulse to occur exactly 20 ms later. If this instruction is executed repeatedly, the counter will never be incremented, and no clock pulses will occur. This may affect the execution of operator’s communication on console terminal. |
| 12 | Read real-time clock status. Bit 0 - 1: The clock will give interrupt when next clock pulse arrives. Bit 3 = 1: The clock is ready for transfer, i.e., a clock pulse has occurred. Bits 1-2 and 4-15 are always zero. |
| 13 | Set real-time clock status. Bit 0 = 1: Enable interrupt if ready for transfer occurs. Bit 13 = 1: Clear ready for transfer. |
2.5.9.2 The Current Loop Interface¶
The current loop interface located on the CPU board has device register address range 300 - 307.
| IOX | Description |
|---|---|
| 300 | Read input data (according to input control word setting). The last inputted character is transferred to the A register. The data available signal is reset if the micro programmed operator communication (MOPC) is not active. |
| 301 | No operation. |
| 302 | Read input status. Bit 0 = 1: Data available will give interrupt when it occurs. Bit 3 = 1: Data is available (ready for transfer). Is never given if MOPC is active. |
ND-06.014.02
Page 112¶
Technical Specifications¶
Bit Descriptions¶
- Bit 4 = 1: Inclusive or of error bits 5-7.
- Bit 5 = 1: Framing error.
- Bit 6 = 1: Parity error.
- Bit 7 = 1: Overrun.
- Bits 1-2 and 8-15 are always zero.
IOX 303: Set Input Control¶
- Bit 0 = 1: Enable interrupt if data available (ready for transfer) occurs.
Bit 11 and Bit 12:
| Bit 11 | Bit 12 | Signifies |
|---|---|---|
| 1 | 1 | 5 bits code |
| 0 | 1 | 6 bits code |
| 1 | 0 | 7 bits code |
| 0 | 0 | 8 bits code |
- Bit 13 = 1: 1 stop bit.
- Bit 13 = 0: 2 (1.5 for 5 bits) stop bits.
- Bit 14 = 1: A parity bit is added to the number of bits mentioned above.
- Bit 14 = 0: No extra bit is added to the bits mentioned above.
IOX 304¶
Returns 0 in the A register and has no other effect.
IOX 305¶
Write data (according to input control word setting).
IOX 306: Read Output Status¶
- Bit 0 = 1: Ready for transfer will give an interrupt when it occurs.
- Bit 3 = 1: Ready for transfer.
- Bits 1-2 and 4-5 are always zero.
IOX 307¶
Set output control.
- Bit 0 = 1: Enable interrupt if ready for transfer occurs.
ND-06.014.02
Page 113¶
2.6 ND-100 BUS EXTENDER (BEX)¶
2.6.1 General¶
Although 21, or often less than 12, modules are sufficient for most systems, some configurations require more space than even the 21 position card crate can offer.
This space problem is solved by using the ND-100 Bus Extender (BEX) system. The BEX system makes it possible to extend the ND-100 bus by linking together card crates. The maximum number of card crates is 8. Using 21 position card crates this gives 168 positions for card connection. Note that only one CPU module and one Memory Management System (MMS) module may be connected to the system. The rest of the positions is free for Input/Output modules and Memory modules.
2.6.2 Bus Extender Architecture¶
The BEX system consists of Bus Extender (BEX) modules and crate interconnection cables. One BEX module is located in each crate. Two crates are physically connected via two interconnection cables between the BEX modules. Refer to Figure 2.28.
[ \begin{array}{|c|c|c|} \hline \text{BEX no. 0 (MASTER BEX)} & \text{BEX NO. 1} & \text{BEX NO. 7} \ \hline \text{CPU} & & \ \text{MMS} & & \ \hline \text{PIO, DMA} & \text{PIO, DMA} & \text{PIO, DMA} \ \text{MEMORY} & \text{MEMORY} & \text{MEMORY} \ \hline \text{A CRATE} & \text{B CRATE} & \text{H CRATE} \ \hline \end{array} ]
Figure 2.28: ND-100 Bus Extender System
The crate where the CPU is located is called the A crate. The BEX module located in the A crate is named BEX no. 0 (also MASTER BEX).
It is possible to mix Programmed Input/Output (PIO) modules, Direct memory Access (DMA) modules and memory modules in all the crates.
ND-06.014.02
Page 114¶
Summary¶
In the table below, average AC values are listed based on different initial conditions described in each case.
Table 2-10 Analog Controller Average AC¶
| Case | Initial Condition | Average AC |
|---|---|---|
| 1 | Error Accumulation | 16.6% |
| 2 | Reset Action | 21.0% |
| 3 | Steady State Error | 18.0% |
The above values reflect the typical averages expected in the process when operated under standard calibration settings. In cases of discrepancy, refer to section 4.2 for detailed guidelines on recalibration methods.
Important Notes¶
- The average AC change needs constant monitoring.
- Refer any anomalies to the technical team immediately for action.
ND-06.014.02
Page 115¶
ND-100 INSTRUCTIONS¶
INTRODUCTION TO THE INSTRUCTION REPERTOIRE¶
General¶
In the ND-100 all instructions occupy a single word, 16 bits, yielding an efficient use of memory and high speed code. Floating point arithmetic operations and floating/integer conversions are included in the standard instruction set.
The instruction set of ND-100 is divided into the following 5 classes:
- Memory reference instructions.
- Register instructions.
- Input/Output control instructions.
- System control instructions.
- Customer specified instructions
Each instruction is given a short description. This includes its mnemonic as used in the assembly language, the octal code, a diagram showing its format and special comments. For each instruction, the systems and indicators that can be affected by the instruction are listed. ND-100 instruction execution times are given in Appendix A.2.
When a register is mentioned in this chapter, it refers to the register set on the current program level. For example, "the A register" means the A register on the current program level.
The definitions used in the descriptions are as follows:
General Registers:
| Register | Description |
|---|---|
| A | A register |
| D | D register |
| T | T register |
| L | L register |
| X | X register |
| B | B register |
| P | Program counter |
| STS | Status register containing PTM, TG, K, Z, Q, O, C, M |
Page 116¶
Status Word¶
| Bit | Description |
|---|---|
| 0 | PTM Page table mode |
| 1 | TG Rounding indicator for floating point operations |
| 2 | K One bit accumulator |
| 3 | Z Error indicator |
| 4 | Q Dynamic overflow indicator |
| 5 | O Static overflow indicator |
| 6 | C Carry indicator |
| 7 | M Multi-shift link indicator |
| 8-11 | PL Program level indicator |
| 12 | N-100 ND-100 Indicator |
| 13 | SEXI Extended address mode |
| 14 | PONI Memory Management On Indicator |
| 15 | IONI Interrupt System On Indicator |
Abbreviations¶
- EL Effective Location
- EW Effective Word
- AD Double Accumulator
- FA Floating Accumulator
- DW Double Word
- FW Floating Word
- sr source register
- dr destination register
- Logical AND
- ∨ Logical inclusive OR
- Logical exclusive OR
- () The contents of
- μs Microsecond
- ns Nanosecond
ND-06.014.02
Page 117¶
3.1.2 Instruction and Data Formats¶
The ND-100 has a 16 bit word format. The bits are conventionally numbered 0 to 15 with the most significant bit numbered 15 and the least significant bit numbered 0.
15 [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] 0
Figure 3.1: ND-100 Bit Numbering Convention
The content of an ND-100 word is conventionally represented by a 6 digit octal number. Thus, the content of a word with all 16 bits set to zero is represented as 000000, while the contents of a word with all bits set to one is represented as 177777.
The standard ND-100 instruction set provides instructions for the following 6 different data formats:
- Single bit
- 8 bit byte
- 16 bit word
- 32 bit double word
- 48 bit floating point word
- 32 bit floating point word (optional, instead of 48 bit floating point)
3.1.2.1 Single Bit¶
A single bit data word is typically used for a logical variable; the bit instructions are used for manipulation of single bit variables. The bit instructions specify operations on any bit in any of the general registers, as well as the accumulator indicator K.
Page 118¶
3.1.2.2 8 Bit Byte¶
Two instructions are available in the standard ND-100 instruction set for byte manipulation, i.e., load byte and store byte.
A byte consists of 8 bits, giving a range of 0 ≤ X ≤ 255.
The byte addressing is such that when two bytes are packed into a word, the even byte address points to the left half of the word.
| 15 | 8 7 | 0 |
|---|---|---|
| Even address | Odd address | |
| n | n + 1 |
Byte Format
3.1.2.3 16 Bit Word¶
The most common data word format is the 16 bit word contained in one memory location or one register.
Representation of negative numbers is in 2's complement. The skip instruction also contains instructions to treat numbers as unsigned (absolute magnitude) numbers.
Range
-32768 ≤ X ≤ 32767
or
0 ≤ X ≤ 65535
ND-06.014.02
Page 119¶
3.1.2.4 32 Bit Double Word¶
Two instructions are available to handle double word formats, load double and store double.
A double word is a 32 bit number which occupies two consecutive locations (n, n + 1) in memory, and where negative numbers are in 2's complement.
| 31 | A | 16 15 | D | 0 |
|---|---|---|---|---|
| Most significant | Least significant | |||
| n | n + 1 |
Double Word Format
A double word is always referred to by the address of its most significant part. Normally, a double word is transferred to the registers so that the most significant part is contained in the A register and the least significant in the D register. Range as integers:
— 2 147 483 648 ≤ X < 2 147 483 647
ND-06.014.02
Page 120¶
3.1.2.5 48 Bit Floating Point Word¶
The standard ND-100 instruction set provides full floating point hardware arithmetic instructions, load floating, store floating, add, subtract, multiply and divide floating, convert floating to integer and convert integer to floating.
The data format of floating point words uses 32 bits for the mantissa, one bit for sign and 15 bits for biased exponent.
The mantissa is always normalized, 0.5 < mantissa < 1. The exponent base is 2, the exponent is biased with 2^14. A standardized floating zero contains zero in all 48 bits.
In main memory, one floating point data word occupies three 16 bit core locations, which are addressed by the address of the exponent part.
| n | exponent and sign |
| n + 1 | most significant part of mantissa |
| n + 2 | least significant part of mantissa |
In CPU registers, bits 0-15 of the mantissa are in the D register, bits 16-31 in the A register and bits 32-47, exponent and sign, in the T register. These three registers together are defined as the floating accumulator.
| 47 | T | 32 | 31 | A | 16 | 15 | D | 0 |
|---|---|---|---|---|---|---|---|---|
| ± | Exponent | Man- | tissa |
| n | n + 1 | n + 2 | |
|---|---|---|---|
Floating Word Format
The accuracy is 32 bits or approximately 10 decimal digits; any integer up to 2^32 has an exact floating point representation.
The range is
2^-16384 ⋅ 0.5 ≤ X < 2^16383 ⋅ 1 or X = 0
or
10^-4920 < X < 10^4920
Examples (octal format):
| T | A | D | |
|---|---|---|---|
| 0: | 0 | 0 | 0 |
| + 1: | 040001 | 100000 | 0 |
| – 1: | 140001 | 100000 | 0 |
ND-06.014.02
Page 121¶
3.1.2.6 32 Bit Floating Point Word¶
As an option, the ND-100 may be equipped with microprogram for 32 bit floating point format instead of the standard 48 bit format described in the previous section. The instructions affected are:
| Instruction | Description |
|---|---|
| FAD | Floating Point Add |
| FSB | Floating Point Subtract |
| FMU | Floating Point Multiply |
| FDV | Floating Point Divide |
| NLZ | Convert Integer to Floating Point |
| DNZ | Convert Floating Point to Integer |
The data format of 32 bit floating words uses 23 bits for the mantissa, one bit for sign and 9 bits for a biased exponent. These 32 bits are packed in two 16 bit words by omitting the most significant bit of the mantissa, which is always a one in non-zero numbers.
The mantissa is always normalized, 0.5 ≤ mantissa ≤ 1. The exponent base is 2, the exponent is biased with 2⁸.
A standardized floating zero contains zero in all 32 bits.
In main memory, one 32 bit floating point data word occupies two 16 bit memory locations, which are addressed by the address of the exponent part.
| Location | Description |
|---|---|
| n | exponent, sign and mantissa bits 16-21 |
| n + 1 | mantissa bits 0-15 |
In CPU registers, bits 0 - 15 of the mantissa are in the D register, bits 16 - 21 and exponent and sign are in the A register. These two registers together are defined as the 32 bit floating accumulator. The T register is not affected by 32 bit Floating Point operators.
| 31 | 30 | A | 22 | 21 | 16 | 15 | D | 0 |
|---|---|---|---|---|---|---|---|---|
| + | Exponent | Man- | tissa |
n
n + 1
32 Bit Floating Point Word Format¶
The accuracy is 23 bits or approximately 7 decimal digits. Any integer up to 2²³ has an exact floating point representation.
The range is
(2^{-256} \cdot 0.5 \le X < 2^{255} \cdot 1) or (X = 0)
or
(10^{-76} < X < 10^{76})
ND-06.014.02
Page 122¶
3–8¶
Examples (octal format):
| A | D | |
|---|---|---|
| 0: | 0 | 0 |
| + 1.0: | 040100 | 0 |
| - 1.0: | 140100 | 0 |
| + 3.0: | 040240 | 0 |
NOTE: The instruction times are given in Appendix A.2.
ND-06.014.02
Page 123¶
3.2 THE INSTRUCTION REPERTOIRE¶
3.2.1 Memory Reference Instructions¶
Memory reference instructions specify operations on words in memory. For all the memory reference instructions in ND-100, the addressing mode is the same with the exception of the conditional jump, the byte and the register block instructions. The addressing structure for these memory reference instructions is given under the specific instruction specification.
The ND-100 has the following groups of memory reference instructions:
- Store instructions.
- Load instructions.
- Arithmetic and logical instructions.
- Sequencing instructions.
- Byte instructions.
- Register block instructions.
3.2.1.1 Addressing Structure¶
In memory reference instruction words, 11 bits are used to specify the address of the desired word(s) in memory, 3 address mode bits and an 8 bit signed displacement using 2's complement for negative numbers and sign extension. (Note that excluded from this is the conditional jump, the byte and the register block instructions.)
| 15 | 11 | 10 | 9 | 8 | 7 | 0 | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| op. code | .X | I | ,B | displacement |
ND-100 uses a relative addressing scheme, which means that the address is specified relative to the contents of the program counter or relative to the contents of the B and/or X registers.
The three addressing mode bits called ".X", "I" and ",B" provide eight different addressing modes.
ND-06.014.02
Page 124¶
Addressing Mode Bits¶
The addressing mode bits have the following meaning:
- The I bit specifies indirect addressing.
- The ,B bit specifies address relative to the contents of the B register, pre-indexing. The indexing by ,B takes place before a possible indirect addressing.
- The ,X bit specifies address relative to the contents of the X register, post-indexing. The indexing by ,X takes place after a possible indirect addressing.
If all the ,X, I and ,B bits are zero, the normal relative addressing mode is specified. The effective address is equal to the contents of the program counter plus the displacement, (P) + disp.
The displacement may consist of a number ranging from -128 to +127. Therefore, this addressing mode gives a range for directly addressing 128 locations backwards and 127 locations forward.
Generally, a memory reference instruction will have the form:
<operation code> <addressing mode> <displacement>
Note that there is no addition in execution time for relative addressing, pre-indexing, post-indexing or both. Indirect addressing, however, adds one extra memory cycle to the listed execution time.
The address computation is summarized in the table below. The symbols used are defined as follows:
| Symbol | Definition |
|---|---|
| ,X | Bit 10 of the instruction |
| I | Bit 9 of the instruction |
| ,B | Bit 8 of the instruction |
| disp. | Contents of bits 0-7 of the instruction (displacement) |
| (X) | Contents of the X register |
| (B) | Contents of the B register |
| (P) | Contents of the P register |
| ( ) | Contents of a register or word |
Page 125¶
The Effective Address¶
The effective address is the address of that memory location which is finally accessed after all address modifications (pre- and post-indexing) have taken place in the memory address computation.
| ,X | I | ,B | Mnemonic | Effective Address |
|---|---|---|---|---|
| 0 | 0 | 0 | , | (P) + disp. |
| 0 | 1 | 0 | I | ((P) + disp.) |
| 0 | 0 | 1 | ,B | (B) + disp. |
| 0 | 1 | 1 | ,B I | ((B) + disp.) |
| 1 | 0 | 0 | ,X | (X) + disp. |
| 1 | 0 | 1 | ,B X | (B) + disp. + (X) |
| 1 | 1 | 0 | I,X | ((P) + disp.) + (X) |
| 1 | 1 | 1 | ,B I,X | ((B) + disp.) + (X) |
Addressing Mode Table
P-relative Addressing (,X = 0 I = 0 ,B = 0)¶
The P-relative addressing mode is specified by setting the ,X, I and ,B bits all to zero. In this mode, the displacement bits (bits 0-7) specify a positive or negative 7 bit address relative to the current value of the program counter (P register).
Example¶
Suppose memory location 403 contains the instruction 004002, which here we shall represent by STA * 2, and this instruction is executed. The ,X, I and ,B bits are all set to zero indicating P relative addressing and a positive displacement of 2 is given; the contents of the A register will therefore be stored in memory location 405. If, instead, location 403 contains the instruction JMP * -2 and it is executed, the next instruction to be executed will be taken from location 401. While there is an obvious limitation to this mode of addressing (locations more than 128₁₀ words away from the instruction being executed cannot be accessed), this mode of addressing is still quite useful for doing local jumps and accessing nearby constants and variables.
ND-06.014.02
Page 126¶
Indirect P relative Addressing ( ,X = 0 \quad , I = 1 \quad ,B = 0 )¶
Since one must be able to access memory locations more than 128(_8) words away from the instruction being executed, the simplest method of doing this is to use the indirect P relative addressing mode, specified by setting the I bit to one and the ,X bit and ,B bit to zero in memory address instructions. In this mode, an address relative to the program counter is computed, exactly as for P relative addressing, by adding the displacement to the value of the program counter, but rather than the addressed location actually being accessed, the contents of the addressed location are used as a 16 bit address of another memory location which is accessed instead.
Example:
Suppose location 405 contains the instruction LDA I * 2 (045002(_8)) and that this instruction is executed. Let us also suppose memory location 16003 contains the value 17 and that memory location 407 contains 016003. The net result of executing the instruction in location 405 is to load the value 17 into the A register. First, the displacement 2 of the LDA instruction is added to the value of the location counter 405, giving the result 407; then the contents of location 407, 16003 is used as an address and the contents of this address (17) is finally loaded into the A register.
Figure 3.3: Schematic Illustration of Indirect P relative Addressing
B relative Addressing ( ,X = 0 \quad , I = 0 \quad ,B = 1 )¶
The above two addressing modes are theoretically quite sufficient. However, if the ND-100 provided only the two addressing modes already described, it would not be particularly convenient for program efficiency. For instance, suppose that two subprograms, each a couple of hundred words long, need to communicate. Within each subprogram memory accesses are commonly made using P relative addressing or occasionally, indirect P relative addressing. But between the subprograms indirect P relative addressing would have to be used almost exclusively since, in general, locations in one subprogram, which instructions in the other subprogram must access, will not be less than 128 words apart. But this is very inefficient since both subprograms must contain indirect pointers to data and instructions local to the other subprogram.
ND-06.014.02
Page 127¶
B Relative Addressing¶
To overcome this difficulty another addressing mode is available, B relative addressing, which permits both subprograms to directly address a common data area. B register relative addressing is specified by setting the X and I bits to zero and the B bit to one in memory address instructions. This addressing mode is quite closely related to P relative addressing, but instead the displacement is added to the current value of the B register and the resulting sum is used to specify the memory location accessed.

Example:
Let location 405 contain the instruction LDA -4,B (044774₈) and the B register contain the value 10035. Execute the instruction in location 405. This causes the contents of location 10031 to be loaded into the A register. The minus 4 in the displacement field of the LDA instruction in location 405 is added to the contents of the B register, 10035, giving the sum of 10031, and the contents of the location 10031 are loaded into the A register.
Page 128¶
Indirect B relative Addressing (X = 0 | I = 1, B = 1)¶
Naturally, there is also an indirect B relative addressing mode which is specified by setting the B and I bits to one and the X bit to zero in memory reference instructions. This mode has the same relationship to B relative addressing that indirect P relative addressing has to P relative addressing. This permits a subprogram to access data or locations in other subprograms indirectly via pointers in an area common to several subprograms. This address mode is used extensively for calling library routines.
Example:
Let location 10031 contain the instruction JPL 1 3,B (135403₈) and the B register contain 400, a pointer to an area common to several subprograms. Furthermore, let location 403 contain the value 2000. If the instruction in location 10031 is executed, the subroutine beginning at location 2000 will be called. The displacement, 3, in the JPL instruction is added to the contents of the B register, 400, giving a result of 403. The contents of location 403, 2000, is then used as a pointer to the subroutine.
Memory
. . .
|
| B register
|
---
| Displacement
|
---
| Pointer to any location
| within 64K
---
| Effective address
|
. . .
Figure 3.5: Schematic Illustration of Indirect B relative Addressing
X relative (or indexed) Addressing (X = 1 | I = 0, B = 0)¶
The other four addressing modes all involve use of the X register. The simplest of these is X relative addressing which works like P and B relative addressing, but the displacement is added to the X register’s contents during the address calculation instead of to the contents of the P or B register. This addressing mode is often used for accessing the elements of a block of data.
Page 129¶
Example¶
Let a recursive subroutine, when being called, save the contents of the L, A, and B registers in a three-word block on a push down stack, and the X register point to the first free register in the stack. The following code might then be found at the beginning of the recursive subroutine:
SUB, STA 1, X
COPY SL DA
STA 2, X
COPY SB DA
STA 0, X
AAX 3
...
...
...

Figure 3.6: Illustration of the Effect of the Stack Code
For another example reread B relative addressing, substituting "X register" for "B register".

Figure 3.7: Schematic Illustration of X relative Addressing
ND-06.014.02
Page 130¶
B Relative Indexed Addressing¶
B relative Indexed Addressing ( , , )
When the X and B bits are set to one and the I bit to zero in memory reference instructions, the mode is called B relative indexed addressing. In this mode, the contents of the X and B registers and the displacement are all added together to form the effective address.
B relative indexed addressing is often very useful, for instance, when accessing row by row elements of a two dimensional array stored column by column.

| Memory |
|---|
| B register |
| Displacement |
| Content of X register |
| Effective address |
Figure 3.8: Schematic illustration of B relative Indexed Addressing
ND-06.014.02
Page 131¶
Indirect P relative Indexed Addressing (X = 1 I = 1 , B = 0)¶
The last two addressing modes are difficult to describe, but very useful. Indirect P relative indexed addressing is selected by setting the X and I bits to one and the B bit to zero in the memory address instruction. This mode allows successive elements of an array arbitrarily placed in memory to be accessed in a convenient manner.
The address calculation in the mode takes place as follows. The contents of the P register, say 4002, are added to the displacement, say -1, and produce a sum, 4001. The contents of the location 4001, say 10100 are added to the contents of the X register, say -100, to produce a new sum, 10000, the effective address. By incrementing the X register, successive locations may be accessed. For instance, using the above example, locations 10000 through 10100 can be successively accessed by stepping the contents of the X register from -100 to zero.
Readers are advised to go over this example carefully. Stepping through an array in this fashion is done very often.
Figure 3.9: Schematic Illustration of Indirect P relative Indexed Addressing
ND-06.014.02
Page 132¶
Indirect B Relative Indexed Addressing (I, X = 1 / I = 1, B = 1)¶
The final addressing mode, indirect B relative indexed addressing, is identical to indirect P relative indexed addressing except that the contents of the B register are used instead of the contents of the P register in the effective address computation. This mode can therefore be used to step through arrays pointed to from a data area common to several subprograms.
Figure 3.10: Schematic Illustration of Indirect B Relative Indexed Addressing
3.2.1.2 Store Instructions¶
STZ Store zero | | | |------------------|-----------------------| | Format: | STZ
STA Store A register | | | |------------------|-----------------------| | Format: | STA
ND-06.014.02
Page 133¶
Technical Instructions¶
STT - Store T Register¶
Code: 010 000
Format: STT <address mode> <disp.>
The contents of the T register are stored in the effective location.
Affected: (EL)
STX - Store X Register¶
Code: 014 000
Format: STX <address mode> <disp.>
The contents of the X register are stored in the effective location. The address of this instruction may be modified by the contents of the X register.
Affected: (EL)
STD - Store Double Word¶
Code: 020 000
Format: STD <address mode> <disp.>
The contents of the A register are stored in the effected location, and the contents of the D register are stored in the effective location plus one.
Affected: (EL), (EL + 1)
STF - Store Floating Accumulator¶
Code: 030 000
Format: STF <address mode> <disp>
The contents of the floating accumulator is stored in three memory locations, starting with exponent part in effective location.
Affected: (EL), (EL + 1), (EL + 2)
MIN - Increment Memory and Skip if Zero¶
Code: 040 000
Format: MIN <address mode> <disp.>
Effective word is read and incremented by one and then stored in the effective location. If the result becomes zero, the next instruction is skipped.
Affected: (EL), (P)
Page 134¶
3.2.1.3 Load Instructions¶
LDA Load A register
Code: 044 000
Format: LDA <address mode> <disp.>
The effective word is loaded into the A register.
Affected: (A)
LDT Load T register
Code: 050 000
Format: LDT <address mode> <disp.>
The effective word is loaded into the T register.
Affected: (T)
LDX Load X register
Code: 054 000
Format: LDX <address mode> <disp.>
The effective word is loaded into the T register.
Affected: (X)
LDD Load double word
Code: 024 000
Format: LDD <address mode> <disp.>
The contents of the effective location are loaded into the A register, and the contents of the effective location plus one are loaded into the D register.
Affected: (A), (D)
LDF Load floating accumulator
Code: 034 000
Format: LDF <address mode> <disp.>
The contents of the effective location and the two following locations are loaded into the floating accumulator, i.e., T, A and D registers.
Affected: (T), (A), (D)
ND-06.014.02
Page 135¶
3.2.1.4 Arithmetical and Logical Instructions¶
ADD¶
Add to A register
Code: 060 000
Format: ADD
The effective word is added to the A register with the result in the A register. The carry indicator is set to 1 if a carry occurs from the sign bit positions of the adder, otherwise the carry indicator is reset to 0. If the signs of the two operands are equal, but the sign of the result is different, overflow has occurred, and both the dynamic and static overflow indicators are set to one. If the condition for overflow does not exist, the dynamic overflow indicator is reset to 0, while the static overflow indicator is left unchanged.
Affected: (A), C, O, Q
SUB¶
Subtract from A register
Code: 064 000
Format: SUB
The 2's complement of the effective word is formed and added to the contents of the A register with the result in the A register. The same rules as for ADD apply for the setting of the overflow and carry indicators.
Affected: (A), C, O, Q
AND¶
Logical AND
Code: 070 000
Format: AND
The logical product of the effective word and the contents of the A register are formed, with the result in the A register. The logical product contains a one in each bit position for which there is a corresponding one in both the A register and the effective word, otherwise the bit position contains a zero.
Affected: (A)
Page 136¶
ORA¶
Logical inclusive OR
Code: 074 000
Format: OR <address mode> <disp.>
Logical inclusive OR is formed between the effective word and the contents of the A register, with the result in the A register. Logical inclusive OR contains a zero in each bit position for which there is a corresponding zero in both the A register and the effective word, otherwise the bit position contains a one.
Affected: (A)
MPY¶
Multiply integer
Code: 120 000
Format: MPY <address mode> <disp.>
The effective word and the A register are multiplied and the result is placed in the A register. Both numbers are regarded as signed integers and the result as a 16 bit signed integer. If the result in absolute value is greater than 32767, overflow has occurred and the static and dynamic overflow indicators are set to one.
Affected: (A), O, Q
FAD¶
Add to floating accumulator
Code: 100 000
Format: FAD <address mode> <disp.>
The contents of the effective location and the two following locations are added to the floating accumulator with the result in the floating accumulator.
Affected: (T), (A), (D), TG
FSB¶
Subtract from floating accumulator
Code: 104 000
Format: FSB <address mode> <disp>
The contents of the effective location and the two following locations are subtracted from the floating accumulator with the result in the floating accumulator.
Affected: (T), (A), (D), TG
ND-06.014.02
Page 137¶
Operations¶
FMU Multiply floating accumulator¶
| Code: | 110 000 |
Format: FMU <address mode> <disp.>
The contents of the floating accumulator are multiplied with the number in the effective floating word locations with the result in the floating accumulator.
Affected: (T), (A), (D), TG
FDV Divide floating accumulator¶
| Code: | 114 000 |
Format: FDV <address mode> <disp.>
The contents of the floating accumulator are divided by the number in the effective floating word locations. Result in floating accumulator. If division by zero is attempted, the error indicator Z is set to one. The error indicator Z may be sensed by a BSKP instruction (see BOP).
Affected: (T), (A), (D), Z, TG
ND-06.014.02
Page 138¶
3.2.1.5 Sequencing Instructions¶
| JMP | Jump | Code: 124 000 |
|---|---|---|
Format: JMP <address mode> <disp.>
The next instruction is taken from the effective address of the JMP instruction (the effective address is loaded into the program counter).
Affected: (P)
| JPL | Transfer P to L and jump | Code: 134 000 |
|---|---|---|
Format: JPL <address mode> <disp.>
The contents of the program counter are transferred to the L register and the next instruction is taken from the effective address of the JPL instruction. Note that the L register points to the instruction after the jump (the program counter incremented before transfer to the L register).
Affected: (P), (L)
| CJP | Conditional jump |
|---|---|
Instruction bits 8–10 are used to specify one of 8 jump conditions. If the specified condition becomes true, the displacement is added to the program counter and a jump relative to current location takes place. The range is 128 locations backwards and 127 locations forwards. If the specified condition is false, no jump takes place. Execution time depends on conditions, but is the same for all instructions.
A conditional jump instruction must be specified by means of the 8 mnemonics listed below. It is illegal to specify CJP or any combinations of ,B, I and ,X.
Page 139¶
The 8 jump conditions are as follows:¶
| Code | Condition | Description |
|---|---|---|
| JAP | Jump if A register is positive or zero, A bit 15 = 0. | Format: JAP <disp.>Code: 130 000 |
| JAN | Jump if A register is negative, A bit 15 = 1. | Format: JAN <disp>Code: 130 400 |
| JAZ | Jump if A register is zero. | Format: JAZ <disp>Code: 131 000 |
| JAF | Jump if A register is filled (not zero). | Format: JAF <disp.>Code: 131 400 |
| JXN | Jump if X register is negative. X bit 15 = 1. | Format: JXN <disp.>Code: 133 400 |
| JXZ | Jump if X register is zero. | Format: JXZ <disp.>Code: 133 000 |
| JPC | Count and jump if X register is positive or zero. | Format: JPC <disp.>Code: 132 000 X is incremented by one, and if the X bit 15 equals zero after the incrementation, the jump takes place. |
| JNC | Count and jump if X register is negative. | Format: JNC <disp.>Code: 132 400 X is incremented by one; if then the X bit 15 equals one, the jump takes place. Affected: (P) and (X) for JPC and JNC. |
ND-06.014.02
Page 140¶
3.2.1.6 Byte Instructions¶
To facilitate the handling of character strings, the ND-100 provides two instructions for byte handling, load byte, LBYT and store byte, SBYT.
Because of the requirements of full 64K addressing, the LBYT and SBYT use an addressing scheme different from the normal ND-100 addressing.
For byte addressing, two of the ND-100 registers, the T and X registers are used for addressing the byte.
The contents of the T register point to the beginning of the character string, and the contents of the X register point to a byte within this string. Thus, the address of the word which contains the byte equals
((T) + \frac{1}{2} (X)).
If the X register is even ((X_0 = 0)), the byte is in the left part of the word; if (X_0 = 1), the byte is in the right part of the word.
A byte consists of 8 bits.
| T register | X register |
|---|---|
| 0 | 1 |
| 2 | 3 |
| 2 | |
| n | n + 1 |
| n + 2 | n + 3 |
The specifications for the two byte instructions are then as follows:
| Instruction | Description | Code |
|---|---|---|
| LBYT | Load byte | Code: 142 200 |
Format: LBYT
The 8 bit byte specified by the contents of the T and X registers is loaded into the A register bits 0-7, with the A register bits 8-15 cleared.
Affected: (A)
ND-06.014.02
Page 141¶
SBYT Store byte Code: 142 600¶
Format: SBYT
The byte contained in the A register bits 0-7 is stored in one half of the effective location pointed by the T and X registers, the second half of this effective location being unchanged. The contents of the A register are unchanged.
Affected: (EL)
3.2.1.7 Extended BYTE-instructions¶
Byte operands occupy fields in the memory that may start and end at any byte address. A byte operand is specified by a two word descriptor, giving start address and field length:
The descriptor's words have the following format:
| Descriptor | Description |
|---|---|
| D1: Bit 0-15 | Give the byte operand's word address in the memory. |
| D2: Bit 15 | This bit specifies whether the operand starts in the left byte or the right byte. Bit 15 = 0, left byte Bit 15 = 1, right byte |
| Bit 14 | Page table mode (bit 14 = 1 selects the alternative page table). |
| Bit 13 | This bit should be 0 when the instruction is started. |
| Bit (0-11) | Field length (number of bytes). |
The descriptor of the source operand is contained in the A, and D registers; The descriptor of the destination operand is in the X, and T registers (for D1, D2 respectively).
Field length may be of any size up to and including 4K-1 bytes. Sufficient interruptability is taken care of during execution.
ND-06.014.02
Rev. A
Page 142¶
BFILL¶
Byte Fill
Code: 140 130
Format: BFILL
This instruction has only one operand. The destination operand is specified in the X, and T registers. The right-most byte in the A-reg. (bits 0-7) is filled into the destination field.
After execution, the X-register and T-register bit 15 point to the end of the field (after the last byte). The T-register bits (0-11) equal zero.
The instruction will always have a skip return (no error condition).
MOVB¶
Move bytes
Code: 140 131
Format: MOVB
This instruction moves a block of bytes from the location specified for the source operand to the location specified for the destination operand.
The move operation takes care of source- and destination-field overlap.
The number of bytes moved is determined by the shortest field length of the operands.
After execution, the A,D and X,T registers (bit 15 in D and T) point to the end of the field that is moved (after the last byte). D-reg. bits 0-11 equal zero and T-reg. bits 0-11 contain the number of bytes moved.
The T-reg. bits 12-13 and the D-reg. bit 12 are used during the execution, and are left cleared. Bit 13 must be zero before execution (used as an interrupt mark).
The instruction will always have a skip return (no error condition).
Page 143¶
MOVBF¶
Move bytes forward | Code 140 132
Format: MOVBF¶
This instruction moves a block of bytes from the location specified as the source operand to the location specified as the destination operand.
The move operation always starts with the first byte (lower address). The number of bytes moved is determined by the shortest field length of the operands. Forbidden overlap exists when the source data to be moved, will be destroyed. That happens when a byte is stored in a word before that word is read from memory. This is reported by an error return (no skip).
After successful execution, the A,D and X,T registers (bit 15 in D and T) point to the end of the fields that are moved (after the last byte). The numbers initially contained in the D- and T-registers, bits 0-11, are decremented by the number of bytes moved.
The T-reg. bits 12-13 and the D-reg. bit 12 are used during the execution and are left cleared. Bit 13 must be zero before execution (used as an interrupt mark).
The instruction will have a skip-return when no illegal overlap exists.
Page 144¶
3.2.2 Register Instructions¶
3.2.2.1 Floating Point Conversion Instructions¶
| 15 | 8 7 | 0 |
|---|---|---|
| NLZ | ||
| DNZ | scaling |
Two instructions are available. A single precision fixed point number may be converted to a floating point number. A floating point number may be converted to a fixed point single precision number. For both instructions, the scaling factor is specified in the displacement part of the instruction. The range of the scaling factor is from —128 to +127, which gives a conversion range from approximately 10⁻³⁹ to 10³⁹. The execution time depends on the scaling factor and the argument to convert.
The two subinstructions are described in Section 3.2.2.1.1 for the standard 48 bit floating point format, and in Section 3.2.2.1.2 for the alternative optional 32 bit floating point format.
3.2.2.1.1 STANDARD 48 BIT FLOATING POINT CONVERSION¶
NLZ Normalize
Code: 151 400
Format: NLZ
Converts the number in the A register to a standard form floating number in the floating accumulator, using the scaling of the NLZ instruction as a scaling factor. For integers, a scaling factor of +16₁₀ will give a floating point number with the same value as the integer. A larger scaling factor will result in a higher floating point number. Because of the single precision fixed point number, the D register will be cleared.
Affected: {T}, {A}, {D}
Page 145¶
DNZ Denormalize¶
Code: 152 000
Format: DNZ <scaling>
Converts the floating number in the floating accumulator to a single precision fixed point number in the A register, using the scaling of the DNZ instruction as a scaling factor. * When converting to integers, a scaling factor of –16i₀ will give a fixed point number with the same value as the integer part of the floating point number. A greater scaling factor will cause the fixed point number to be greater. After this instruction the contents of the T and D registers will all be zeros.
If the conversion causes underflow, the T, A and D registers will all be set to zero.
If the conversion causes overflow**, the error indicator Z is set to one. Overflow occurs if the resulting integer in absolute value is greater than 32767.
The conversion will truncate and negative numbers are converted to positive numbers before conversion. The result will again be converted to a negative number.
Some Examples:
| T-A-D before conversion (in decimal) | A after conversion |
|---|---|
| 0.9 DNZ –20₈ | 0 |
| 3.141592 DNZ –20₈ | 3 |
| 3.141592 DNZ –17₈ | 6 |
| 3.141592 DNZ –16₈ | 12 |
| 3.7 DNZ –20₈ | 3 |
| 3.7 DNZ –17₈ | 7 |
| 3.7 DNZ –21₈ | 1 |
| –3.141592 DNZ –20₈ | –3 |
| –3.7 DNZ –20₈ | –3 |
| 32768.0 DNZ –20₈ | Overflow |
| –32768.0 DNZ –20₈ | Overflow |
Affected: (A), (T), (D), Z
* When converting an exact floating point zero, scaling factors more negative than –16 will give erroneous results.
** The overflow test is fail-proof for a scaling constant of –20₈ only.
ND-06.014.02
Page 146¶
3.2.2.1.2 OPTIONAL 32 BIT FLOATING POINT CONVERSION¶
The normalize and denormalize operations for 32 bit floating point use the same instruction codes as for 48 bit floating point operations, but do not affect the T register. For the 32 bit DNZ operations, the scaling factor should always be -16. Other scaling factors will not cause a different result but will affect the test for overflow.
Page 147¶
3.2.2.2 Shift Instructions¶
| 15 | 11 | 10 | 9 | 8 | 7 | 5 | 0 |
|---|---|---|---|---|---|---|---|
| shift | type | register | number |
Shift instructions operate on registers. A shift instruction consists of three parts:
- The register to be shifted (specified by the shift register fields).
- Type of shift to be performed (specified by the type field).
- The number of shifts to be performed (specified by the number field).
A shift instruction will have the form:
<shift register> <type> <number>
Every shift instruction causes the last bit which is discarded to be contained in the M; the multi-shift indicator. This may be used as an input for the next shift instruction.
Note that bit 6 in the instruction is ignored.
The following four specifications of the <shift register> are available:
SHT¶
Shift the T register (register field 00)
Code: 154 000
Format: SHT <type> <number>
The T register is shifted as specified by the <type> and <number>.
Affected: (T), M
SHD¶
Shift the D register (register field 01)
Code: 154 200
Format: SHD <type> <number>
The D register is shifted as specified by the <type> and <number>.
Affected: (D), M
SHA¶
Shift the A register (register field 10)
Code: 154 400
Format: SHA <type> <number>
The A register is shifted as specified by the <type> and <number>.
Affected: (A), M
ND-06.014.02
Page 148¶
SAD¶
Shift the A and D registers connected (register field 11)
Code: 154 600
Format: SAD
Bit 0 of the A register is connected to bit 15 of the D register.
Affected: (A), (D), M
Type Field¶
For each shift instruction, one of the following four types of shift can be specified:
| Mnemonic | Type | Type field | Code |
|---|---|---|---|
| nil | Arithmetic shift. During right shifts, the sign bit (bit 15) is extended during the shifting, in left shifts zeros are fed into vacated bit positions. | 0 0 | 000 000 |
| ROT | Rotational shift. In single register shifts bit 0 is connected to bit 15, in double shifts bit 0 of the D register is connected to bit 15 of the A register. | 0 1 | 001 000 |
| ZIN | Zero end input | 1 0 | 002 000 |
| LIN | Link end input. The contents of the M indicator will be shifted into the vacated bit(s). | 1 1 | 003 000 |
Number Field¶
The <number> in the number field of the instruction is a signed number, 5 bits plus sign, which specifies the shift direction (positive or negative shift) and the number of shifts.
- N > 0, i.e., if bit 5 = 0 then shift left
- N < 0, i.e., if bit 5 = 1 then shift right
The maximum number of shifts is 31 left shifts and 32 right shifts.
Only the A, T and D registers may be shifted. If any other register is to be shifted, its contents must first be placed in the A, T or D register.
If no shift direction is specified, left shift is assumed.
The number of shifts is interpreted by the assembler as an octal number.
ND-06.014.02
Page 149¶
Right Shift Specification¶
A right shift may be specified either by the correct 6 bit negative shift count or by writing the mnemonic code SHR followed by the positive number of right shifts. A shift instruction to shift the accumulator 3 positions to the right may be specified by one of the following identical instructions:
- SHA 7₈
- SHA 100 - 3₈
- SHA SHR 3₈
Note that SHA -3 cannot be used.
In a right shift, nothing should be written between the SHR mnemonic and the number of shifts (this is peculiar for the assembler). A space to distinguish between SHR and the number is necessary. SHR must be the last mnemonic used in the instruction.
Examples of Correctly Specified Shift Instructions¶
Example 1¶
Shift the A and D registers connected 8 positions (octal 10) left.
SAD 10₈
Example 2¶
Rotate the T register 6 places to the left.
SHT ROT 6
Example 3¶
Shift the connected A and D registers 16 positions to the left. Rotate shift is specified which, in this case, will cause the contents of the A and D registers to be exchanged. The same effect may be obtained by means of a SWAP SA DD instruction (the SWAP is faster).
SAD ROT 20
Example 4¶
Shift the D register two places to the right. Feed zeros into the left end during the shifting. Bits 15 and 14 in the D register will become zero.
SHD ZIN SHR 2
Page 150¶
3.2.2.3 Register Operations¶
The register operation instructions specify operations between any two general registers; a source register (sr) and a destination register (dr). Instructions may consist of the parts:
<register operation><sub-instruction><sr><dr>
There are eleven basic register operations belonging to the two groups:
- ROP register operations (see Section 3.2.2.3.1)
- EXtended register operation instructions (see Section 3.2.2.3.2)
In addition, there are two instructions for accessing single registers outside current program level (see Section 3.3.3) and two instructions for accessing a whole register block outside current program level (see Section 3.3.2).
Only the ROP instructions have sub-instructions.
The ROP register instructions are:
| Instruction | Description | Code |
|---|---|---|
| RADD | Register addition, dr ← + sr | 146 000 |
| RSUB | Register subtraction, dr ← dr − sr | 146 600 |
| RAND | Register logical AND, dr ← dr sr | 144 400 |
| RORA | Register logical OR, dr ← dr V sr | 145 500 |
| REXO | Register logical exclusive OR, dr ← dr V sr [V REXO] | 145 000 |
| SWAP | Register exchange, sr ← dr and dr ← sr | 144 000 |
| COPY | Register transfer, dr ← sr | 146 100 |
The EXTended register instructions are:
| Instruction | Description | Code |
|---|---|---|
| RMPY | Integer inter-register multiply, AD ← dr * sr | 141 200 |
| RDIV | Integer inter-register divide AD/ |
141 600 |
| EXR | Execute register, Instruction register ← sr | 140 600 |
| MIX3 | Multiply index by 3, X ← (I(A) − 1) * 3 | 143 200 |
ND-06.014.02
Page 151¶
Source Registers¶
The source registers <sr> are specified as follows:
| Code | Register | Description |
|---|---|---|
| SD | D register | as source |
| SP | Program counter | as source |
| SB | B register | as source |
| SL | L register | as source |
| SA | A register | as source |
| ST | T register | as source |
| SX | X register | as source |
If no source register is specified, zero will be taken as the source register.
Destination Registers¶
The destination registers <dr> are specified as follows:
| Code | Register | Description |
|---|---|---|
| DD | D register | as destination |
| DP | Program counter | as destination |
| DB | B register | as destination |
| DL | L register | as destination |
| DA | A register | as destination |
| DT | T register | as destination |
| DX | X register | as destination |
Page 152¶
3.2.2.3.1 ROP — Register Operation Instructions¶
| 15 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 3 | 2 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|
| ROP | RAD | C | I | CM1 | CLD | sr | dr |
The instruction decodes bits 0-10 as:
Source and Destination Register (bits 0-5):¶
Bits 0-2 specify one out of seven registers to be the destination register. The destination register will be loaded with the result of the ROP instruction.
- dr = 0: Normally, a no operation instruction, except that the carry indicator will be reset if RAD = 1.
Bits 3-5 specify one out of seven registers containing the value to be used as the source register operand.
- sr = 0: Produces a source value equal to zero.
If the P register is specified as source or destination, the value used is that of the following instruction.
Subinstructions (bits 6-10):¶
- CLD = 1: Clear destination register before operation. If the source and the destination register are the same, the register as source is not cleared.
- CM1 = 1: Use complement (one’s complement) of source register as operand. The source register remains unchanged.
Bits 8 and 9 are decoded in two different ways, depending on whether the RAD bit is zero or one.
- RAD = 1: Add source to destination.
When RAD = 1, bits C and I are decoded as follows:
- C = 1, I = 0: Also add old carry to destination, ADC.
- C = 0, I = 1: Also add 1 to destination, AD1.
It is not possible to both add previous carry and to add 1 in the same ROP instruction. (If this is attempted, the instruction will be a NOOP-instruction.)
- RAD = 0: Binary register operations.
ND-06.014.02
Rev. A
Page 153¶
C and I Bit Decoding¶
The C and I bits are decoded as follows:
| C, I | Description |
|---|---|
| 0, 0 | Register swap, destination and source exchanged, SWAP |
| 0, 1 | Logical and, RAND |
| 1, 0 | Logical exclusive or, REXO |
| 1, 1 | Logical inclusive or, RORA |
If RAD = 1, the overflow and carry indicators are set according to the same rules as apply for ADD: if RAD = 0, the overflow and carry indicators remain unchanged.
Exclusive ROP Mnemonics¶
The following groups of ROP mnemonics are mutually exclusive, i.e., only one may be used in a ROP instruction.
-
(SD, SP, SB, SL, SA, ST, SX)
Only one source register must be specified.
-
(DD, DP, DB, DL, DA, DT, DX)
Only one destination register must be specified.
-
(ADC, AD1)
Both 1 and old carry cannot be added in the same instruction.
-
(RADD, RSUB, SWAP, RAND, REXO, RORA, COPY)
Add 1 or add carry may not be used together with the binary register operations.
-
(RSUB, CM1, ADC, AD1)
RSUB uses CM1 and AD1.
Specifying ROP Instructions¶
The recommended way to specify ROP instructions is to use the following mnemonics which will be correctly translated by the assembly language.
| Mnemonic | Description |
|---|---|
| RADD, dr ← dr + sr | Register addition |
| RSUB, dr ← dr − sr | Register subtraction |
| RAND, dr ← dr & sr | Register logical AND |
| RORA, dr ← dr V sr | Register logical OR |
| REXO, dr ← dr V sr | Register logical exclusive OR |
| SWAP, dr ←→ sr | Register logical exclusive OR |
| COPY, dr ← sr | Register transfer |
Note that all of the ROP instruction is included in all of the above mentioned mnemonics.
ND-06.014.02
Page 154¶
The Assembly Language Mnemonics¶
The assembly language will also permit use of the following combined mnemonics:
| Mnemonic | Combination | Description |
|---|---|---|
| CM2 | CM1 AD1 | Two’s complement |
| EXIT | COPY SL DP | Return from subroutine |
| RCLR | COPY 0 | Register clear |
| RINC | RADD AD1 | Register increment |
| RDCR | RADD CM1 | Register decrement |
The mnemonics RCLR, RINC and RDCR should be followed only by the destination register specifications.
Page 155¶
Decoding of ROP Instructions¶
| R | A | U | C | M1 | CLD | Instructions | Result of Instructions |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | SWAP <sr><dr> |
sr ↔ dr |
| 0 | 0 | 0 | 0 | 0 | 1 | SWAP CLD <sr><dr> |
dr ← sr, sr ← 0 |
| 0 | 0 | 1 | 0 | SWAP CM1 <sr><dr> |
dr ← sr, sr ← dr | ||
| 0 | 0 | 1 | 1 | SWAP CM1 CLD <sr><dr> |
dr ← sr, sr ← 0 | ||
| 0 | 1 | 0 | 0 | RAND <sr><dr> |
dr ← dr ∧ sr | ||
| 0 | 1 | 0 | 1 | RAND CLD <sr><dr> |
dr ← 0 | ||
| 0 | 1 | 1 | 0 | RAND CM1 <sr><dr> |
dr ← dr ∧ ∼ sr | ||
| 0 | 1 | 1 | 1 | RAND CM1 CLD <sr><dr> |
dr ← 0 | ||
| 0 | 1 | 0 | 0 | 0 | REXO <sr><dr> |
dr ← dr ⊕ sr | |
| 0 | 1 | 0 | 1 | 1 | REXO CLD <sr><dr> |
dr ← sr | |
| 0 | 1 | 1 | 0 | REXO CM1 <sr><dr> |
dr ← dr ∨ ∼ sr | ||
| 0 | 1 | 1 | 1 | REXO CM1 CLD <sr><dr> |
dr ← sr | ||
| 0 | 1 | 1 | 0 | RORA <sr><dr> |
dr ← dr ∨ sr | ||
| 0 | 1 | 1 | 1 | RORA CLD <sr><dr> |
dr ← sr | ||
| 0 | 1 | 1 | 0 | RORA CM1 <sr><dr> |
dr ← dr ∨ ∼ sr | ||
| 0 | 1 | 1 | 1 | RORA CM1 CLD <sr><dr> |
dr ← sr | ||
| 1 | 0 | 0 | 0 | RADD <sr><dr> |
dr ← dr + sr | ||
| 1 | 0 | 0 | 1 | RADD CLD <sr><dr> |
dr ← sr | ||
| 1 | 0 | 0 | 1 | RADD CM1 <sr><dr> |
dr ← dr + sr | ||
| 1 | 0 | 0 | 0 | 1 | RADD CM1 CLD <sr><dr> |
dr ← sr | |
| 1 | 0 | 0 | 1 | RADD AD1 <sr><dr> |
dr ← dr + sr + 1 | ||
| 1 | 0 | 1 | 0 | RADD AD1 CLD <sr><dr> |
dr ← sr + 1 | ||
| 1 | 0 | 1 | 1 | RADD2 AD1 CM1 <sr><dr> |
dr ← sr | ||
| 1 | 0 | 1 | 1 | RADD1-2 AD1 CM1 CLD <sr><dr> |
dr ← − sr | ||
| 1 | 0 | 0 | 0 | RADD ADC <sr><dr> |
dr ← dr + sr + c | ||
| 1 | 0 | 0 | 1 | RADD1 ADC CLD <sr><dr> |
dr ← sr + c | ||
| 1 | 0 | 1 | 0 | RADD ADC CM1 <sr><dr> |
dr ← dr + sr + c | ||
| 1 | 0 | 1 | 1 | RADD1 ADC CM1 CLD <sr><dr> |
dr ← sr + c | ||
| 1 | 1 | 0 | 0 | ||||
| 1 | 1 | 0 | 1 | NOOP, do nothing | |||
| 1 | 1 | 1 | 0 | ||||
| 1 | 1 | 1 | 1 |
The ROP Instruction Table
This table shows all possible combinations of the ROP instructions and their results.
- dr: destination register
- sr: source register
- ∼ sr: one's complement of sr
- c: old carry
1 RADD CLD is equal to COPY
2 RADD AD1 CM1 is equal to RSUB
ND-06.014.02
Rev. A
Page 156¶
Examples of ROP Instruction Use¶
Some examples of use of the ROP instruction.
Example 1¶
Add the contents of the A and X registers with the result in the X register:
RADD SA DX
Example 2¶
Complement (two’s complement) the A register:
COPY CM2 SA DA
Example 3¶
Subtract the contents of the T register from the contents of the B register, with the result in the B register:
RSUB ST DB
Example 4¶
Increment the X register by one:
RINC DX
Example 5¶
Decrement the L register by one. (One’s complement of zero equals -1 in two’s complement.):
RDCR DL
Example 6¶
Clear the T register:
RCLR DT
Example 7¶
Set the X register equal to one:
RCLR AD1 DX
Example 8¶
Set the B register equal to minus one:
RCLR CM1 DB
ND-06.014.02
Page 157¶
Example 9¶
Copy the contents of the X register into the T register:
COPY SX DT
Example 10¶
Exchange the contents of the A and D registers:
SWAP DA DD
Example 11¶
Form logical AND between the contents of the L and X registers with the result in the X register:
RAND SL DX
Example 12¶
Copy the contents of the A register into the X register and clear the A register (the CLD code causes a destination register of zero to be swapped):
SWAP CLD SA DX
Example 13¶
Form the two’s complement of the 32 bit double word in A and D:
COPY CM2 SD DD
COPY CM1 ADC SA DA
Example 14¶
Add together the two double word length numbers N1 and N2 with the result in the A and D registers:
LDD N1
SWAP SA DD
ADD N2 + 1
SWAP SA DD
RADD ADC DA
ADD N2
ND-06.014.02
Page 158¶
Example 15¶
Subroutine jump and return from subroutine to main program:
| ERR, | ||
| NORM, | ||
| JPL | SUBR | |
| WAIT | % Error stop | |
| SUBR, | LDA | OLA |
| SUB | PER | |
| SKP | IF DA EQL 0 | |
| EXIT | ||
| % Error Exit | ||
| EXIT | AD1 |
The JPL instruction will place the address of the WAIT instruction into the L register. (When JPL is executed, the program counter points to the address after this instruction.)
The subroutine SUBR has two exits, one to the location immediately following the jump (EXIT), which in this case is an error exit, and one to the location two addresses after the jump.
Note: If the P register is used as source (SP), the P register has already been incremented and points to the next instruction.
ND-06.014.02
Page 159¶
3.2.2.3.2 EXTENDED REGISTER OPERATION INSTRUCTIONS¶
RMPY¶
Integer inter-register multiply
Code: 141 200
Format: RMPY
The <sr> and <dr> fields are used to specify the two operands to be multiplied (represented as two’s complement integers), the codes are the same as for ROP.
The result is a 32 bit signed integer which will be placed in the A and D registers with the 16 most significant bits in the A register and the 16 least significant bits in the D register.
Affected: (A), (D), C, O, Q
RDIV¶
Integer inter-register divide
Code: 141 600
Format: RDIV
The 32 bit signed integer contained in the double accumulator AD is divided by the contents of the register in the <sr> field, with the quotient in the A register and the remainder in the D register, i.e., AD/sr → A ← (quotient) and D ← (remainder).
The sign of the remainder is always equal to the sign of the dividend (AD). The destination field of the instruction is not used. If the division causes overflow, the error indicator Z is set to one.
The numbers are considered as fixed point integers with the fixed point after the rightmost position.
| A | D |
| sr |
Affected: (A), (D), Z, C, O, Q
ND-06.014.02
Page 160¶
Example¶
Before Division:
After Division:
| Double Accumulator | Divisor | A | D | Z |
|---|---|---|---|---|
| 22 | 4 | 5 | 2 | 0 |
| −22 | 4 | −5 | −2 | 0 |
| 378452 | −16 | −23653 | 4 | 0 |
| 32767 | 1 | 32767 | 0 | 0 |
| 32768 | 1 | 1 | 1 | |
| 65535 | 2 | 32762 | 1 | 0 |
EXR Execute Register¶
Code: 140 600
Format: EXR <sr>
The contents of the register specified in the <sr> field of the instruction are transferred to the instruction register, and the contents are then executed as an instruction.
Note: If the instruction specified by the contents of <sr> is a memory reference instruction with relative addressing, the address will be relative to the EXR <sr> instruction. If the instruction specified by the contents of <sr> is a JPL instruction, the L register will point to the instruction after the EXR <sr>. Note also that it is illegal to have an EXR <sr> where the contents of <sr> is a new EXR <sr>. If this is attempted, the error indicator Z is set to one.
Affected: (IR), registers changed by the specified instruction.
MIX 3 Multiply Index by 3¶
Code: 143 200
Format: MIX3
The X register is set equal to the contents of the A register minus one multiplied by three, i.e.,
(X) ← [(A) − 1] * 3
Affected: (X)
Page 161¶
3.2.2.4 Skip Instructions¶
| 15 | 11 10 | 8 7 | 6 5 | 3 2 | 0 |
|---|---|---|---|---|---|
| SKP | cond. | 00 | sr | dr |
SKP
Skip next instruction if specified condition is true.
Format: SKP <dr> <cond.> <sr>
Code: 140 000
The cond. field specifies one of eight conditions between the registers <dr> and <sr>. If the specified condition is true, the next instruction is skipped. If not, the next instruction is not skipped. The registers <dr> (destination register) and <sr> (source register) are specified as for register operation registers.
If the P register is specified as source or destination, the value used is that of the following instruction.
Note that bits 6 and 7 are both zero. Otherwise, the instruction would belong to the EXtended instructions. See Section 3.2.2.3.2.
The SKP conditions test the result of the arithmetic expression (dr) – (sr) which sets the four indicators:
s — sign
z — result zero
c — carry
o — overflow
The eight SKP conditions are as follows: (next page)
Page 162¶
Condition Mnemonics¶
| Mnemonic | Condition Field | Condition True if | Description |
|---|---|---|---|
| EQL | 0 0 0 | z = 1 | Equal. The condition tests for equality between the source and destination registers. (dr) - (sr) = 0. |
| GEQ | 0 0 1 | s = 0 | Greater or equal to. (dr) - (sr) ≥ 0. The contents of the source and destination registers are treated as signed numbers. Overflow is not taken care of. |
| GRE | 0 1 0 | S ⊕ o = 0 | Greater or equal to. (dr) - (sr) ≥ 0. The contents of the source and destination registers are treated as signed numbers. Overflow is taken care of. |
| MGRE | 0 1 1 | c = 1 | Magnitude greater or equal to. (dr) - (sr) ≥ 0. The contents of the source and destination registers are treated as unsigned magnitudes, where 000 000 is the lowest and 177 777 the highest number. Overflow is taken care of. |
| UEQ | 1 0 0 | z = 0 | Unequal to. The condition tests for equality between the source and destination registers. (dr) - (sr) ≠ 0. |
| LSS | 1 0 1 | s = 1 | Less than. (dr) - (sr) < 0. The contents of the source and destination registers are treated as signed numbers. Overflow is not taken care of. |
| LST | 1 1 0 | s ⊕ o = 1 | Less than. (dr) - (sr) < 0. The contents of the destination and source registers are treated as signed numbers. Overflow is taken care of. |
| MLST | 1 1 1 | c = 0 | Magnitude less than. (dr) - (sr) < 0. The contents of the source and destination registers are treated as unsigned magnitudes, where 000 000 is the lowest number and 177 777 is the highest number. Overflow is taken care of. |
ND-06.014.02
Rev. A
Page 163¶
Comparing Registers¶
By swapping the register code in the <sr> and <dr> fields and inverting the relationship code, it is also possible to test these relationships.
Greater than
≲ Less than or equal
The programmer is advised to use the formats in the following examples when specifying a skip instruction. (The mnemonic IF and the number 0, which both have the value zero, are used for easy readability. They are not required.)
Comparing a Register with Zero¶
| Instruction | Skip Condition |
|---|---|
| SKP IF DL UEQ 0 | Skip if L register ≠ 0 |
| SKP IF DX GRE 0 | Skip if X register ⩾ 0 |
| SKP IF DB LSS 0 | Skip if B register < 0 |
| SKP IF 0 LSS ST | Skip if T register > 0 |
| SKP IF 0 GRE SD | Skip if D register < 0 |
Comparing the Arithmetic Value of the Contents of Two Registers¶
| Instruction | Skip Condition |
|---|---|
| SKP IF DD EQL SL | Skip if D register = L register |
| SKP IF DT UEQ SX | Skip if T register ≠ X register |
| SKP IF DB LSS SA | Skip if B register < A register or Skip if A register > B register |
| SKP IF DX GRE SB | Skip if X register ⩾ B register or Skip if B register ≲ X register |
Comparing Two Magnitude Numbers¶
| Instruction | Skip Condition |
|---|---|
| SKP IF DL MGRE ST | Skip if L register ⩾ T register or Skip if T register ≲ L register |
| SKP IF DB MLST SX | Skip if B register < X register or Skip if X register > B register |
The magnitude tests are especially useful when comparing the relationship between memory addresses which are represented as magnitude numbers in a computer with more than 32K memory.
Page 164¶
3.2.2.5 Argument Instructions¶
| 15 | 11 | 10 | 9 | 8 | 7 | 0 |
|---|---|---|---|---|---|---|
| ARG | function | number |
Argument instructions operate on registers. The function field is used to specify one out of eight argument instructions. The number field is used to specify the argument, a signed number ranging from -128 to 127.
Negative numbers are represented in 2's complement. The 8 argument number bits are extended to 16 bits using sign extension. The 8 argument number bits remain the 8 least significant bits of the 16 bits. The 8 most significant bits are extended with ones or zeros. When the number is positive, we extend with zeros. When the number is negative, we extend with ones.
When we have a set argument instruction all of the 16 bits are copied into the specified register.
When we have an add argument instruction all of the 16 bits are added to the 16 bits already in the specified register. See Figure 3.11.
| 15 | 11 | 10 | 9 | 8 | 7 | 0 |
|---|---|---|---|---|---|---|
| ARG | function | number |
these bits are extended with ones or zeros. - Ones if the number is negative - Zeros if the number is positive.
The extended argument number is set or added into one of the register B, A, T or X.
| B, A, T or X register |
Figure 3.11: Sign Extension of the Argument Instruction.
ND-06.014.02
Page 165¶
Argument Instructions¶
Bits 8 and 9 in the function field specify one out of four registers, B, A, T, or X, and bit 10 one of the operations: set argument to or add argument to.
The eight argument instructions are:
| Instruction | Description | Code |
|---|---|---|
| SAA | Set argument to A register | 170 400 |
| AAA | Add argument to A register | 172 400 |
| SAX | Set argument to X register | 171 400 |
| AAX | Add argument to X register | 173 400 |
| SAT | Set argument to T register | 171 000 |
| AAT | Add argument to T register | 173 000 |
| SAB | Set argument to B register | 170 000 |
| AAB | Add argument to B register | 172 000 |
An argument instruction should be specified by means of one of the eight mnemonics listed above.
Page 166¶
Examples of Argument Instructions¶
Example 1¶
Set the contents of the T register equal to 13₈. Bits 8-15 becomes zero because of the sign extension:
SAT 13₈
Example 2¶
The contents of the B register becomes 177752₈ after execution of this instruction. Bits 8-15 becomes one because of the sign extension:
SAB −26₈
Example 3¶
Add 3 to the contents of the X register. The contents of bits 8-15 depend on the previous content of the X-register:
AAX 3
Example 4¶
Subtract 6 from the contents of the A register. The contents of bits 8-15 depend on the previous content of the X-register.
AAA −6
Example 5¶
The contents of the A register will be 177 640₈ after the execution of this instruction. Bits 8-15 becomes one because of the sign extension:
SAA −140₈
In an add argument instruction the carry and overflow indicators are set according to the same rules as apply for the ADD instruction.
Page 167¶
3.2.2.6 Bit Operation Instructions¶
| 15 | 11 10 | 7 6 | 3 2 | 0 |
|---|---|---|---|---|
| BOP | sub-instruction | bn | dr |
BOP Bit Operation
The BOP instruction specifies operation on single bits in one of the seven general registers, or the status register.
The specified bit to be manipulated is specified by the <dr> and <bn> fields in the instruction. The <dr> field specifies the particular register and the <bn> field the particular bit in that register.
The register <dr> is specified by means of the same mnemonics as used for destination registers in the ROP and SKP instructions, except if dr = 0 the status register is specified.
The BOP instruction may use a one bit accumulator register, K, to hold temporary results.
Sixteen different sub-instructions are available in the BOP instruction.
In the following description "bit" means the bit specified by destination register <dr> and bit number <bn>. Note that <bn> is specified by octal numbers and the "bits" are number 0, 10, 20, 30, ..., 170 because <bn> is contained in bits 3-6 of the BOP instruction.
The eight control indicators of the status register which may be operated upon by means of the BOP instruction should be specified with the following mnemonics:
| Mnemonic | Description |
|---|---|
| SSPTM | Page table mode (after defining SSPTM = 0) |
| SSTG | Rounding indicator for floating point operations |
| SSK | One bit accumulator indicator |
| SSZ | Error indicator |
| SSQ | Dynamic overflow indicator |
| SSO | Static overflow indicator |
| SSC | Carry indicator |
| SSM | Multi-shift link indicator |
ND-06.014.02
Rev. A
Page 168¶
3.2.2.6.1 BIT SKIP INSTRUCTIONS¶
Four sub-instructions are available to test the setting of the specified bit.
| Instruction | Description |
|---|---|
| BSKP ZRO |
Skip next instruction if bit = 0. |
| BSKP ONE |
Skip next instruction if bit = 1 |
| BSKP BCM |
Skip next instruction if bit₀ = K |
| BSKP BAC |
Skip next instruction if bit = K |
3.2.2.6.2 BIT SET INSTRUCTIONS¶
Four sub-instructions are available to set the specified bit.
| Instruction | Description |
|---|---|
| BSET ZRO |
bit ← 0 |
| BSET ONE |
bit ← 1 |
| BSET BCM |
bit ← bit₀, complement bit |
| BSET BAC |
bit ← K |
Page 169¶
3.2.2.6.3 ONE BIT ACCUMULATOR INSTRUCTIONS¶
Eight sub-instructions are available to specify operations between the specified bit and the one bit accumulator, K.
| Instruction | Operation | Description |
|---|---|---|
| BSTA |
bit ← K, K ← 0 | Store and clear |
| BSTC |
bit ← K₀, K ← 1 | Store complement and set |
| BLDA |
K ← bit | Load |
| BLDC |
K ← bit₀ | Load complement |
| BANC |
K ← bit₀, K | Logical AND complement |
| BORC |
K ← bit₀, V K | Logical OR complement |
| BAND |
K ← bit K | Logical AND |
| BORA |
K ← bit V K | Logical OR |
Some examples of correctly specified bit operation instructions.
Example 1:
Skip next instruction if the carry indicator is set.
BSKP ONE SSC
Example 2:
Reset the static overflow indicator.
BSET ZRO SSO
Example 3:
Complement the sign bit in the T register (complement a floating point number).
BSET BCM 170₈, DT
Example 4:
Set bit 6 in the X register to one.
BSET ONE 60₈, DX
Example 5:
Copy A register bit 14 into X register bit 13.
BLDA 160₈, DA % K ← A bit 14
BSET BAC 150₈, DX % X bit 13 ← K
ND-06.014.02
Rev. A
Page 170¶
3.2.3 System Control Instruction¶
3.2.3.1 Monitor Call Instruction¶
| MON | Monitor Call |
|---|---|
| Code: | 153 000 |
Format: MON <number>
The instruction is used for monitor calls, and causes an internal interrupt to program level 14. The parameter <number> following MON must be specified between ( -200_8 ) and ( 177_8 ). This provides for 256 different monitor calls. This parameter, sign extended, is also loaded into the T register on program level 14.
Page 171¶
3.3 PRIVILEGED INSTRUCTIONS¶
3.3.1 General¶
The instructions termed privileged instructions are available only to:
- programs running in system mode (rings 2 and 3)
- programs running in stop mode
3.3.2 Register Block Instructions¶
To facilitate the programming of registers on different program levels, two instructions, SRB and LRB, are available for storing and loading of a complete register block to and from memory.
A register block always consists of the following registers in this sequence:
P
Program counter
X
X register
T
T register
A
A register
D
D register
L
L register
STS
Status register, bits 0-7. Bits 8-15 are zero
B
B register
The addressing for these two instructions is as follows:
The contents of the X register specify the effective memory address from where the register block is read from or written into.
The specification for the two instructions are as follows:
| 15 | 7 | 6 | 3 | 2 | |
| LRB | level | 000 | |||
| SRB | level | 010 |
SRB
Store Register Block
Code: 152 402
Format: SRB
The instruction SRB
ND-06.014.02
Page 172¶
Load Register Block¶
Code: 152 600
Format¶
LRB <levelₐ • 10₈>
Description¶
The instruction <LRB levelₐ • 10₈> loads the contents of the register block on program level specified in the level field of the instruction. The specified register block is loaded by the contents of succeeding memory locations starting at the location specified by the contents of the X register. If the current program level is specified, the P register is not affected. The LRB instruction is privileged.
Affected: All the registers on specified program level are affected. Note: if the current level is specified, the P register is not affected.
Example¶
Let the contents of the X register be 042562, then the instruction
SRB 140₈
stores the contents of the register block on program level 12 into the memory addresses 042562, 042563, ..., 042571.
| Affected: | (EL), + 1 + 2 + 3 + 4 + 5 + 6 + 7 |
|---|---|
| Commands | P • X T A D L STS B |
ND-06.014.02
Rev. A
Page 173¶
3.3.3 Inter-level Register Instructions¶
In the ND-100 there are 16 complete sets of registers and status indicators, one set for each level.
The access to and from registers outside the current program level is by two instructions:
IRR — Inter Register Read
IRW — Inter Register Write
The format of this instruction is as follows:
| 15 | 6 | 3 2 0 |
|---|---|---|
| IRR | level | dr |
| IRW |
Bits 0-2 specify the register to be read, using the same codes and mnemonics as are used for specifying destination registers for the register operations.
Bits 3-6 specify the program level number. It is possible to read the current program level as well as all other program levels.
IRR
Inter Register Read
Code: 153 600
Format: IRR
This instruction is used to read into the A register on current program level one of the general registers inside/outside the current program level. If bits 0-2 are zero, the status registers on the specified program level will be read into the A register bits 0-7, with bits 8-15 cleared. The IRR instruction is privileged.
Example:
The instruction IRR 160 DP will copy the contents of the program counter on program level 14 into the A register on the current program level.
Page 174¶
IRW¶
Inter Register Write
Code: 153 400
Format: IRW
This instruction is used to write the A register on the current program level into one of the general registers on any level, including the current level. If the current level P register is specified, the IRW instruction will be a dummy instruction. If bits 0-2 are zero, the A register bits 0-7 are written into the status register on the specified level. The IRW instruction is privileged.
Example:
The instruction IRW 110 will copy the bits 0-7 of the A register on the current program level into the status register on program level 9.
3.3.4 Accumulator Transfer Instructions¶
The internal registers in ND-100 which cannot be reached by the register instructions are controlled by the following four privileged instructions:
| Code | Instruction |
|---|---|
| TRA | transfer to A register |
| TRR | Transfer from A register |
| MCL | Masked clear |
| MST | Masked set |
The internal registers controlled by these instructions are described in Appendix D.
Transfer to A register:
TRA
Transfer to A register
Code: 150 000
Format: TRA
The registers which may be transferred to the A register with the TRA instruction are shown in the following table. The contents of the register specified by the
Page 175¶
Transfer from A register¶
The transfer from the A register may be either an ordinary transfer of all 16 bits or a selective setting of zeros and ones.
The three subinstructions are:
TRR - Transfer to register¶
Code: 150 100
Format: TRR <register name>
The contents of the A register are copied in the register specified by <register name>. The registers which TRR may operate on are shown in the following table. The TRR instruction is privileged.
MCL - Masked clear¶
Code: 150 200
Format: MCL <register name>
For each bit which is a one in the A register the corresponding bit specified by <register name> will be set to zero. The registers which MCL may operate on are shown in the following table. The MCL instruction is privileged.
MST - Masked set¶
Code: 150 300
Format: MST <register name>
For each bit which is a one in the A register the corresponding bit in the register specified by <register name> will be set to one. The registers which MST may operate on are shown in the following table. The MST instruction is privileged.
Page 176¶
Register Table¶
| Register Name | Code | TRA | TRR | MCL | MST |
|---|---|---|---|---|---|
| PANS | 0 | X | |||
| PANC | 0 | X | |||
| STS | 1 | X | X | X | X |
| OPR | 2 | X | |||
| LMP | 2 | X | |||
| PGS | 3 | X | |||
| PCR | 3 | X | |||
| PVL | 4 | X | |||
| IIC | 5 | X | |||
| IIE | 5 | X | |||
| PID | 6 | X | X | X | X |
| PIE | 7 | X | X | X | X |
| CSR | 10 | X | |||
| CCL | 10 | X | |||
| LCIL | 11 | X | |||
| ACTL | 11 | X | |||
| ALD | 12 | X | |||
| UCLIR | 12 | X | |||
| PES | 13 | X | |||
| PGC | 14 | X | |||
| PEA | 15 | X |
Definitions¶
- PANS = Panel Status
- PANC = Panel Control
- STS = Status
- OPR = Operator's Panel Switch Register
- LMP = Operator's Lamp Register
- PGS = Paging Status Register
- PCR = Paging Control Register
- PVL = Previous Program Level
- IIC = Internal Interrupt Code
- IIE = Internal Interrupt Enable
- PID = Priority Interrupt Detect
- PIE = Priority Interrupt Enable
- CSR = Cache Status Register
- CCL = Cache Clear
- LCIL = Lower Cache Inhibit Limit Register
- ACTL = Active Level
- ALD = Automatic Load Descriptor
- UCLIR = Upper Cache Inhibit Limit Register
- PES = Memory Error Status
- PGC = Paging Control Register (when reading)
- PEA = Memory Error Address
ND-06.014.02
Rev. A
Page 177¶
3.3.5 Input/Output Control Instructions¶
IOX
Input/Output Execute
Code: 164 000
Format: IOX
| 15 | 11 10 | 0 |
|---|---|---|
| IOX | device register address |
All transfers between the ND-100 and external devices are controlled by using the IOX instruction. The IOX instruction is loaded into the instruction register, IR, of the CPU. The CPU in its turn generates the Input/Output timing and enables the selection of the appropriate device, which is specified by its device register address,
Simple devices will usually require at least three different instructions (device register addresses), write control register, read status register, and read or write data buffer register. More complex devices like magnetic tape units may need up to eight instructions. Instructions for the same device are assigned successive device register addresses.
The IOX instruction is privileged.
Programming specifications and device register addresses for the different devices are found in separate manuals.
Page 178¶
3.3.5.1 Extension of the Device Register Address¶
Since the number of peripheral devices delivered by Norsk Data is increasing, there is need for an extension of the device register address. That is done by the instruction:
Format: IOXT
Code: 150 415
where the T register contains the 16 bits <device register address>. These 16 bits define an upper limit of 65536 device register addresses to the number of registers that may be addressed.
The device register address must be loaded into the T register before executing this instruction.
IOXT is privileged.
| 15 | 0 |
|---|---|
| LDT | |
| device register address |
| 15 | 0 |
|---|---|
| IOXT | |
| operation code for microprogram |
3.3.6 System Control Instructions¶
The following 11 instructions are denoted as the system control instructions:
| Instruction | Description |
|---|---|
| ION | Interrupt system on |
| IOF | Interrupt system off |
| IDENT | Identify input/output interrupt |
| PON | Memory management on |
| POF | Memory management off |
| MON | Monitor call |
| WAIT | Wait or give up priority |
| SEX | Set extended address mode |
| REX | Reset extended address mode |
| PION | Memory management and interrupt system on |
| PIOF | Memory management and interrupt system off |
Except for the MON instruction, all the system control instructions belong to the class of privileged instructions.
ND-06.014.02
Page 179¶
3.3.6.1 Interrupt Control Instructions¶
A full description of the interrupt system is presented in Section 2.2. A short summary is given here.
The ND-100 computer has a priority interrupt system with 16 program levels. Each program level has its own set of registers and status indicators. The priority increases — program level 15 has the highest priority, program level 0 the lowest.
The arrangement of the 16 program levels is as follows:
| Program Level | Description |
|---|---|
| 15 | Reserved for extremely fast user interrupts |
| 14 | Internal hardware status interrupts |
| 13 - 10 | Vectored interrupts, maximum 2048 vectored interrupts |
| 9 - 0 | System programming and user programming levels |
All 16 program levels can be activated by program control. In addition, program level 15, 13, 12, 11 and 10 may also be activated from external devices.
The program level to run is controlled by the two 16 bit registers:
- PIE — Priority Interrupt Enable
- PID — Priority Interrupt Detect
Each bit in the two registers is associated with the corresponding program level. The PIE register is controlled by program only.
The PID register is controlled both by program and hardware interrupts. At any time, the highest program level which has its corresponding bits set in both PIE and PID is running, i.e., the contents of the PL register.
The PIE and PID are controlled by the TRA, TRR, MST and MCL instructions.
ND-06.014.02
Page 180¶
Interrupt System Control¶
When power is turned on, the power-up sequence will reset PIE and PID and the register set on program level zero will be used. Two instructions are used to control the on-off function of the interrupt system.
ION¶
Interrupt system on
Format: ION
The ION instruction turns on the interrupt system. At the time the ION is executed, the computer will resume operation at the program level with highest priority. If a condition for change of program levels exists, the IOX instruction will be the last instruction executed at the old program level, and the old program level will point to the instruction after ION. The interrupt indicator on the operator’s display is lighted by the ION. The ION instruction is privileged.
| Code | 150 402 |
IOF¶
Interrupt system off
Format: IOF
The IOF instruction turns off the interrupt system, i.e., the mechanisms for changing of program levels are disabled. The computer will continue operation at the program level at which the IOF instruction was executed, i.e., the PL register will remain unchanged. The interrupt indicator on the operator’s display is reset by the IOF instructions. The IOF instruction is privileged.
| Code | 150 401 |
In addition, the following three registers are available for interrupt programming:
| Register | Description |
|---|---|
| IIE | Internal Interrupt Enable |
| IIC | Internal Interrupt Code |
| PVL | Previous Level causing internal hardware status interrupt |
In ND-100 there are possibilities for 2048 vectored input/output interrupts where each physical input/output will have its own unique identification code and priority. The IDENT instruction is used to distinguish between vectored interrupts.
ND-06.014.02
Page 181¶
IDENT¶
Identify vectored interrupt
Code: 143 600
Format: IDENT
When a vectored interrupt occurs, the IDENT instruction is used to identify and service the input/output device causing the interrupt. Actually, there are four IDENT instructions, one to identify and serve input/output interrupts on each of the four levels 10, 11, 12, and 13. The particular level to serve is specified by the program level number.
The four instructions are:
| IDENT | PL10 | Identify input/output interrupt on level 10 | Code: 143 604 |
|---|---|---|---|
| IDENT | PL11 | Identify input/output interrupt on level 11 | Code: 143 611 |
| IDENT | PL12 | Identify input/output interrupt on level 12 | Code: 143 622 |
| IDENT | PL13 | Identify input/output interrupt on level 13 | Code: 143 643 |
The identification code of the input/output device is returned in bits 0 - 8 of the A register with bits 9 - 15 all zeros.
If the IDENT instruction is executed, but there is no device to serve, the A register is unchanged. An IOX error interrupt to level 14 will occur if enabled. Refer to the Interrupt System.
If several devices on the same program level have simultaneous interrupts, the priority is determined by which input/output slot the device is plugged into, and the interrupt line to the corresponding PID bit will remain active until all devices have been serviced. When a device responds to an IDENT, it turns off its interrupt signal. The IDENT instruction is privileged.
For ND-100 the identification codes are standardized for input/output devices delivered from Norsk Data.
ND-06.014.02
Page 182¶
3.3.6.2 Memory Management Control Instructions¶
A full description of memory management is given in Section 2.3. The paging system is controlled by the following privileged instructions:
| Instruction | Description | Code |
|---|---|---|
| PON | Memory management on | 150 410 |
| Format: | PON | |
| This instruction should only be used with the | ||
| interrupt system on and with the necessary | ||
| internal hardware status interrupts enabled. | ||
| The page index tables and the PCR registers | ||
| should be initialized before PON is executed. | ||
| The PON instruction is privileged. | ||
| The instruction executed after the PON | ||
| instruction will use the page index table | ||
| specified by PCR. |
| POF | Memory management off | 150 404 | | Format: | POF | | | | This instruction is a privileged instruction | | | | and may only be executed if the ring bits are | | | | 11 (3) or 10 (2). | | | | | | | | The instruction will turn off the memory | | | | management system, and the next instruction | | | | will be taken from a physical address in lower | | | | 64K, the address following the POF instruction.| | | | | | | | The CPU will be in an unrestricted mode | | | | without any hardware protection features, i.e.,| | | | all instructions are legal and all memory | | | | "available". POF is privileged. | |
| PION | Memory management and interrupt system on | 150 412 | | Format: | PION | | | | The PION instruction will turn on both the | | | | memory management system and the interrupt | | | | system. Refer to ION and PON. PION is | | | | privileged. | |
ND-06.014.02
Page 183¶
3–69¶
PIOF¶
Memory management and interrupt system off
Code: 150 412
Format: PIOF
The PIOF instruction will turn off both the memory management and interrupt systems. Refer to IOF and POF. PIOF is privileged.
SEX¶
Set extended address mode
Code: 150 406
Format: SEX
The SEX instruction will set the paging system in a 24 bit address mode instead of a 19 bit address mode. A physical address space up to 16 M words will then be available.
Bit number 13 in the status register is set to one, indicating the extended address mode. SEX is privileged.
REX¶
Reset extended address mode
Code: 150 407
Format: REX
The REX instruction will reset the extended address mode (24 bits) to normal address mode (19 bits). This implies that 512K words of physical address space is now available.
Bit number 13 in the status register is reset, indicating normal address mode. REX is privileged.
OPCOM¶
Operator’s Communication
Code: 150 400
Format: OPCOM
The OPCOM instruction has the same function as pushing the OPCOM button on the front panel. OPCOM is privileged.
Page 184¶
3.3.6.3 Wait or Give Up Priority¶
WAIT¶
| Code: | 151 000 |
Format: WAIT
The WAIT instruction will cause the computer to stop if the interrupt system is not on. The program counter will point to the instruction after the WAIT.
In this programmed wait, the RUN lamp on the front panel is switched off. To start the program in the instruction after the WAIT, type ! (exclamation mark) on the console terminal.
If the interrupt system is on, WAIT will cause an exit from the program level now operating, the corresponding bit in PID is reset, and the program level with the highest priority will be entered, which normally will then have a lower priority than the program level which executes the wait instruction. Therefore, the WAIT instruction means "give up priority".
If there are not interrupt requests on any program level when the WAIT instruction is executed, program level zero is entered. A WAIT instruction on program level zero is ignored.
Note that it is legal to specify WAIT followed by a number less than 400₈. This may be useful to detect in which location the program stopped. The WAIT instruction is displayed at the operator's panel, IR register. The WAIT instruction is privileged.
ND-06.014.02
Page 185¶
3.3.7 Examine and Deposit¶
EXAM Examine¶
Code: 150 416
Format: EXAM
After execution of this instruction, the T register will be loaded with the content of the physical memory location, pointed to by the A and D register. EXAM is privileged.
T Register --> MEMORY
Content
A Register D Register
\__________ Address
DEPO Deposit¶
Code: 150 417
Format: DEPO
This instruction will store the content of the T register into the physical memory location, pointed to by the A and D register. DEPO is privileged.
T Register
Content --> MEMORY
A Register D Register
\__________ Address
ND-06.014.02
Page 186¶
3.3.8 Load Writeable Control Store¶
LWCS Load Writeable Control Store
Code: 143 500
Format: LWCS
The result of the execution of this instruction will be that the contents of main memory locations with addresses from 15K to 16K will be loaded into the optional 256 word by 64 bit RAM writeable control store. Microprogram addresses from 7400₈ to 7777₈ will then be accessible. When the instruction is finished, all microprogram addresses are legal and illegal instructions. ROM out of range interrupt will never occur. LWCS is privileged.
MEMORY
63 0
┌────────────────────────────────┐
│ μPROGRAM CONTROL STORE │
│ (3,75 PROM) │
└────────────────────────────────┘
│ WRITEABLE CONTROL STORE │
│ (1/4K RAM) │
└────────────────────────────────┘
15K ─────────────────────────────────────────→
16K
Four ordinary 16 bit memory locations are required to make one 64 bit location in Writeable Control Store. Therefore, 1K is needed from main memory.
The LWCS-instruction must always be performed before executing instructions using microaddresses in the range 4000-7777. This is necessary even if no writeable control store option is installed. The microinstructions from 4000 to 7777 are only used by instructions described in the chapters on the CE or CX options.
ND-06.014.02
Rev. A
Page 187¶
3.3.9 Customer Specified Instructions¶
The remaining free codes may be used to extend the ND-100 instruction set. The codes that can be used for customer specified instructions are as follows:
- 1402XX
- 1405XX
- 1407XX
- 1411XX
- 1413XX
- 1415XX
- 1417XX
- 1421XX
- 1423XX
- 1425XX
These 10 instructions have the following entry points in writeable control store:
| Code | Entry Point in Program |
|---|---|
| 1402XX | 7400₈ |
| 1405XX | 7402₈ |
| 1407XX | 7403₈ |
| 1411XX | 7404₈ |
| 1413XX | 7405₈ |
| 1415XX | 7406₈ |
| 1417XX | 7407₈ |
| 1421XX | 7410₈ |
| 1423XX | 7411₈ |
| 1425XX | 7412₈ |
If these instructions are not implemented, they will cause an internal hardware status interrupt to level 14 (illegal instruction).
All micro instruction codes are available for new customer specified instructions. For further information about programming in WCS, contact Norsk Data.
ND-06.014.02
Rev. A
Page 188¶
3.3.10 Physical Memory Read/Write Instructions¶
When the extended address mode (controlled by the instructions SEX and REX) is used, 7 special, privileged instructions are useful to read/write physical memory locations independent of whether paging is ON or OFF. They will affect the page tables if the address is within the page table range.
3.3.10.1 Format of Instructions:¶
15 5 3 0
---------------
| 1 | 4 | 3 | Δ | TYPE |
---------------
Δ is the displacement (bit 3-5) added to the X-reg. to give the effective location (EL).
| Type | Name | Effect |
|---|---|---|
| 0 | LDATX | A: = (EL) |
| 1 | LDXTX | X: = (EL) |
| 2 | LDDTX | A: = (EL), D: = (EL + 1) |
| 3 | LDBTX | B: = 177000 V ((EL) + (EL)) (V = inclusive OR) |
| 4 | STATX | (EL): = A |
| 5 | SITX | (EL): = 0 |
| 6 | STDTX | (EL): = A, (EL + 1): = D |
In computers with microprogram versions 015xx A-J (48-bit) or 026xx A-F (32-bit), the LDBTX-instruction must be followed by a word containing 177777.
In later versions (015xx K- or 026xx G-) the 177777-instruction is not necessary, but it may remain in programs written for the earlier versions (the instruction may change the K-bit).
ND-06.014.02
Rev. A
Page 189¶
3.3.10.2 Addressing¶
All the 7 instructions generate a 24-bit effective location (EL). The effective location is calculated from the T- and X-register plus a 3-bit displacement contained in the instruction.
| 15 | 0 | 15 | 0 |
|---|---|---|---|
| T-reg. | X-reg. |
+
| 5 | 3 |
|---|---|
| Δ |
Δ = 3-bit displacement given in the instruction format
| 23 | 0 |
|---|---|
| Effective Location (EL) |
The 3-bit displacement is added to the X-register. If the X-register plus the displacement give a carry, the carry is dropped and not added to the T-register. This means that the T-register always determines which 64 K memory area to address.
Page 190¶
3.4 INSTRUCTIONS IN THE «COMMERCIAL EXTENDED» (CE) OPTION¶
By expanding the microprogram PROM of the ND-100 CPU, a number of instructions are introduced. The instructions are collectively known as the «Commercial Extended» option.
3.4.1 Decimal Instructions¶
3.4.1.1 Data Formats For Decimal Instructions¶
3.4.1.1.1 PACKED DECIMAL NUMBER (BCD-CODED NUMBERS)¶
One decimal digit is represented by 4 binary digits (bits). Two decimal digits are placed next to each other to form a byte (8 bits). Two such bytes are placed in each memory location.
The decimal digits form operands. Maximum length of an operand is 31 digits plus a sign byte. This occupies eight 16 bit words in the memory.
Memory
| 15 | 12 | 11 | 8 | 7 | 4 | 3 | 0 |
|---|---|---|---|---|---|---|---|
| 1.digit | 2.digit | 3.digit | 4.digit | ||||
| 5.digit | 6.digit | 7.digit | 8.digit | One operand takes a maximum of 8 memory locations | |||
| ... | ... | ... | ... | ||||
| 29.digit | 30.digit | 31.digit | sign |
ND-06.014.02
Rev. A
Page 191¶
Decimal to Binary Representation¶
Each decimal digit is represented by the following binary digit:
| Decimal Digit | Binary Digit |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
The codes 1010 - 1111 do not represent digits. These codes are used to represent the decimal digit's sign (plus or minus). This is done in the following way:
1010, 1100 and 1110 represent plus.
1011 and 1101 represent minus.
1111 represents unsigned (treated as plus).
All sign codes are allowed, but only 1100 (for plus) and 1101 (for minus) are used in the instructions.
Page 192¶
3.4.1.1.2 ASCII Coded Decimal Number¶
In the ASCII format each decimal digit occupies one byte. The four high-order bits of this byte are called the zone. The four low-order bits, the numeric are occupied by the decimal digit, and are encoded the same way as a packed decimal digit. The most significant bit in the byte is the parity-bit. This bit is neither tested nor set in the instruction.
| Decimal Digit | ASCII CODE |
|---|---|
| 0 | 0 0 1 1 0 0 0 0 |
| 1 | 0 0 1 1 0 0 0 1 |
| 2 | 0 0 1 1 0 0 1 0 |
| 3 | 0 0 1 1 0 0 1 1 |
| 4 | 0 0 1 1 0 1 0 0 |
| 5 | 0 0 1 1 0 1 0 1 |
| 6 | 0 0 1 1 0 1 1 0 |
| 7 | 0 0 1 1 0 1 1 1 |
| 8 | 0 0 1 1 1 0 0 0 |
| 9 | 0 0 1 1 1 0 0 1 |
The parity bit (bit 7) is always 0.
These bits have the same value as the binary digits in Section 3.4.1.1.
Page 193¶
Decimal Operand Sign Representations¶
A decimal operand in this format may have four different sign representations:
-
Separate trailing, the byte to the right of the last significant digit contains the sign. Sign is represented by the ASCII code of
+(53 octal) or−(55 octal). -
Separate leading, ASCII code of the sign occupies the first byte (left-most).
-
Embedded trailing, the right-most byte occupies both the least significant digit and the sign.
-
Embedded leading, the first byte (left-most) in the number contains both the sign and the left-most digit.
When the sign is embedded, the following codes are used to represent the right-most / left-most digit and sign:
Positive Operand¶
| Operand | ASCII Code |
|---|---|
| 0 = 173 | 0 1 1 1 1 0 1 1 |
| 1 = 101 | 0 1 0 0 0 0 0 1 |
| 2 = 102 | 0 1 0 0 0 0 1 0 |
| 3 = 103 | 0 1 0 0 0 0 1 1 |
| 4 = 104 | 0 1 0 0 0 1 0 0 |
| 5 = 105 | 0 1 0 0 0 1 0 1 |
| 6 = 106 | 0 1 0 0 0 1 1 0 |
| 7 = 107 | 0 1 0 0 0 1 1 1 |
| 8 = 110 | 0 1 0 0 1 0 0 0 |
| 9 = 111 | 0 1 0 0 1 0 0 1 |
Negative Operand¶
| Operand | ASCII Code |
|---|---|
| 0 = 175 | 0 1 1 1 1 1 0 1 |
| 1 = 112 | 0 1 0 0 0 1 0 0 |
| 2 = 113 | 0 1 0 0 0 1 1 1 |
| 3 = 114 | 0 1 0 0 1 0 0 0 |
| 4 = 115 | 0 1 0 0 1 0 0 1 |
| 5 = 116 | 0 1 0 0 1 1 0 0 |
| 6 = 117 | 0 1 0 0 1 1 1 1 |
| 7 = 120 | 0 1 0 1 0 0 0 0 |
| 8 = 121 | 0 1 0 1 0 0 0 1 |
| 9 = 122 | 0 1 0 1 0 0 1 0 |
A decimal operand in ASCII format has maximum 32 digits, maximum field length is 16 words, 32 bytes.
Page 194¶
3.4.1.2 THE DECIMAL INSTRUCTIONS¶
The decimal operands reside in main memory only. They occupy fields that may start at any byte address. The decimal operands must be right adjusted, i.e. the least significant digits (and sign) are placed right adjusted from the last byte of the field. The operands must be packed decimal numbers (BCD-coded numbers).
A decimal operand is specified by a two words descriptor, D1 and D2.
The two words have the following formats:
D1: Bit 0-16 give the decimal operand's word address in the memory.
D2: Bit 15. This bit specifies whether the operand start in the left byte or the right byte.
- Bit 15 = 0, left byte
- Bit 15 = 1, right byte
Bit 14. Not used.
Bit 11-13. These bits specify the sign representation when the operand is in ASCII format.
| Bits | Description |
|---|---|
| 0 0 0 | embedded trailing (default) |
| 0 0 1 | separate trailing |
| 0 1 0 | embedded leading |
| 0 1 1 | separate leading |
| 1 0 0 | unsigned |
Bit 13 is also used to represent an unsigned number in BCD-representation (the sign-code is 1111).
Bit 10. This bit is used to specify rounding. If the least significant digits are lost during shift, and the last digit shifted out of the fields is ≥ 5, a one is added to the shifted operand.
- Bit 10 = 0, rounding off
- Bit 10 = 1, rounding on
Bit 5-9. These bits give the position of the decimal point in the field. The number in these bits can be a positive decimal number from 0 to 31. Zero means that the decimal position is to the right of the least significant digit. The number has to be less than the field length. (It is not legal to specify a point outside the field.) The decimal point position is used to compute the shift count in the shift instruction (SHDE).
ND-06.014.02
Rev. A
Page 195¶
Bit 0-4¶
These bits give the field length of the operand in nibbles (4 bits) or bytes. The field length includes sign. The field length is in nibbles when you have packed decimal number (BCD) and in bytes when you have ASCII coded decimal numbers. The field length is a maximum of 32 nibbles/bytes.
Specification of the operands for all the decimal instructions:¶
Descriptor of the first operand in A,D registers.
Descriptor of the second operand in X,T registers.
Before any operation is performed, the operands are read into the CPU’s registerfile. Then the operation is performed, before the result is written back to memory. This is why overlap is not tested in the ND-100 CIS (Commercial Instruction Set).
ADDD Add decimal¶
Code: 140 120
Format: ADDD
The second operand is added to the first operand and the sum is placed in the first operand’s location. If necessary, high-order zeroes are applied for either operand.
When the first operand field is too short to contain all significant digits of the sum, a decimal overflow occurs.
Overflow has two possible causes:
a) A carry from of the most significant digit position in the result field.
b) Oversized result, which occurs when the second operand field is larger than the first operand field and significant result digits are lost. The field sizes alone are not an indication of overflow.
This instruction does not give automatic scaling as in N10-CIS, so the operands have to be aligned before entering this instruction, for example, by the shift instruction (SHDE).
If bit 13 in D2 in the destination descriptor is set, the sign in the result field is 1111 (unsigned).
An empty operand (field-length equal 0) is treated as a positive zero.
ND-06.014.02
Page 196¶
Error Indication¶
| Error | Description |
|---|---|
| ADDD | % instruction |
| ERROR | % error return, overflow |
| CONTINUE | % skip, OK return |
SUBD¶
Subtract decimal
Code: 140 121
Format: SUBD
The second operand is subtracted from the first operand and the difference is placed in the first operand's location.
The subtract decimal is similar to add decimal, except that the sign of the second operand is changed from positive to negative, or from negative to positive after the operand is read from memory, but before the arithmetic operation. A zero difference can have both positive and negative sign.
Error (overflow) is indicated by error return (see ADDD).
COMD¶
Compare decimal
Code: 140 122
Format: COMD
The first operand is compared with the second operand. The result is placed in the A-register. If the operands are unequal in length, the shorter is extended with zeroes. None of the operands are changed as a result of the operation.
The positions of the decimal points are not taken into account when the two digits are compared. Therefore the operands must be aligned before the operation, as in ADDD/SUBD. Use the instruction SHDE to align the operands.
One of the two fields is extended with zeroes so the two fields have the same number of digits.
An unsigned number is treated as positive, positive and negative zeroes are equal. An empty operand is treated as a positive zero.
Result in A-reg.:
| Condition | Result |
|---|---|
| operands equal | 0 |
| first operand greater | 1 |
| second operand greater | -1 |
This instruction will always have a skip return (no error condition).
ND-06.014.02
Page 197¶
SHDE Decimal Shift¶
Code: 140126
Format: SHDE
Operand one is moved to the operand two field with its digits offset (shifted) to the left or right.
The shift count is computed as the difference in decimal position of the two operands.
When shifting left the second operand is generated from left to right; for right shift the second operand field is generated from right to left.
Shift input will always be zero. The sign is set to either + (14 octal) or − (15 octal) depending on what sign the source operand have, or 17 octal (unsigned) if bit 13 in D2 is set. Digits shifted out of the operand field are lost. If high order digits different from zero are lost during left shift, this is indicated by an error return (no skip).
Rounding is performed if bit 10 in D2 of the destination operand is set. This means that a 1 is added to the operand if the last digit shifted out of the field is ≥ 5.
PACK Convert to Packed Decimal¶
Code: 140 124
Format: PACK
The format of the first operand is changed from ASCII Coded Decimal Number (unpacked) to Packed Decimal Number (packed), and the result put in the second operand location. The right four bits in the ASCII code (the numeric) are used for the digits. The specified sign representation in the unpacked format is converted to 14 octal (+) or 15 octal (−), unsigned is converted to plus, unless bit 13 in D2 of the destination descriptor is set. If so the sign code in the destination field will always be 17 octal (unsigned).
The conversion is done one digit at a time, and the destination is filled from the least significant position (sign position).
The sign and digits of the first operand are checked for valid codes, and illegal codes are reported.
If necessary, the second operand field is extended with high-order zeroes. If the second operand field is too short to contain all significant digits of the first operand, the remaining digits are ignored, causing overflow.
| ND-06.014.02 Rev. A |
|---|
Page 198¶
Error Codes and Overflow¶
Both illegal code and overflow are reported by an error-return (no skip), with an error code placed in D-register bits (0-4). The first detected error is reported.
Error codes:
| Code | Description |
|---|---|
| 1 | Forbidden overlap - not used in the ND-100 CIS. |
| 2 | Illegal code |
| 3 | Overflow |
After error return caused by illegal code, both A-reg. and D-reg. bit 15 point to the byte containing the illegal code.
UPACK¶
Convert to unpacked decimal
Code: 140 125
Format¶
UPACK
The format of the first operand is changed from Packed Decimal Number (packed) to ASCII Coded Decimal (unpacked), and the result is placed in the second operand’s location.
The digits of the packed operand are tested for illegal codes and supplied with zones with coding 0011 (no parity set). The sign of the packed operand is not tested for legal code, but is treated as plus if bit 0 is 0, and minus if bit 0 is 1 (except for the code 1111, which is unsigned and treated as plus). The sign is then converted to the specified representation in the unpacked format.
If necessary, the second operand is extended with high-order zeroes (ASCII). The conversion starts in the least significant position (sign) and the fields are processed one word at a time. If the second operand field is too short to contain all significant digits of the first operand, the remaining digits are ignored. This is detected as overflow. The error-code reported back is the one detected first, and the same as in PACK. After error return caused by illegal code, the A-reg. and D-reg. bit 15 point to the byte containing the illegal code, also as in PACK.
ND·06.014.02
Rev. A
Page 199¶
3.4.2 Stack Handling Instructions¶
Programs written in high level languages such as FORTRAN, COBOL and PLANC, execute faster if they use the specially provided stack handling instructions in the CE-option.
3.4.2.1 Data Structure Operated Upon by the Instructions¶
Note that a page fault during execution of a stack handling instruction can result in a destroyed B-register. Stack handling instructions must therefore not be used if page faults can occur.
The B-register will always point to a «stack-frame» containing the following information.
| B-reg. | Description |
|---|---|
| -200 | LINK points to the next instruction in case a LEAVE-instruction is executed. |
| -177 | PREVB points to the previous stack frame on the stack. |
| -176 | STP points to the next stack frame on the stack. |
| -175 | SMAX points to the top of the stack. This is used to detect stack overflow. |
| -174 | Reserved for system use. |
| -173 | ERRCODE is filled with the A-register's content each time an ELEAV-instruction is executed. |
In addition to these addresses which are used by the microprogram, the stack will usually contain a number of addresses accessed by other instructions.
| INIT | Initialize stack | Code: 140 134 |
Usage:
INIT: - Next address: Stack demand (words) - Next address: Address of stack start (words) - Next address: Maximum stack size (words) - Next address: Flag - Next address: Not used by the microprogram
Error return address
Normal return address
ND-06.014.02
Rev. A
Page 200¶
ENTR¶
Enter stack
Code: 140 135
Usage:
ENTR
Next address: Stack demand (words)
Error return address
Normal return address
Effect:
- (B - 176) + 200 =⇒ B
- L + 1 =⇒ B - 200 (LINK)
- Old B =⇒ B - 177 (PREVB)
- (Old B - 175) =⇒ B - 175 (SMAX)
- Stack decimal - 172 + B =⇒ B - 176 (STP)
Stack overflow will result in an error return.
All other cases will result in a normal return.
LEAVE¶
Leave stack
Code: 140 136
Format: LEAVE
Effect:
- (B - 200) =⇒ P (LINK)
- (B - 177) =⇒ B (PREVB)
ELEAV¶
Error leave stack
Code: 140 137
Format: ELEAV
Effect:
- (B - 200) - 1 =⇒ B - 200 (LINK)
- A =⇒ B - 173 (ERRCODE)
- (B - 200) =⇒ P (LINK)
- (B - 177) =⇒ B (PREVB)
ND-06.014.02
Rev. A
Page 201¶
3.5 INSTRUCTIONS IN THE CX-OPTION¶
By expanding the microprogram PROM of the ND-100 CPU, a number of instructions are introduced. These instructions comprise what is known as the CX-option.
The CX-option consists of improved CE-instructions (Commercial Extended) plus the following instructions (CX only):
- MOVEW: move block of words
- TSET: test and set
- RDUS: read don’t use cache
- SINTRAN III: segment-change instructions
The improved CE-instructions are described in the Sections 3.5.1 and 3.5.2 below.
3.5.1 Decimal Instructions¶
The decimal instructions in the CX-option are improved by including better overflow detection tests.
The data formats and the instructions are described in Section 3.4.1.
The decimal instructions include the following instructions:
- ADDD: add decimal
- SUBD: subtract decimal
- COMD: compare decimal
- PACK: convert to packed decimal
- UPACK: convert to unpacked decimal
- SHDE: decimal shift
ND-06.014.02
Rev. A
Page 202¶
3.5.2 Stack Handling Instructions¶
The stack handling instructions in the CX-option are improved to tolerate page-faults.
In the CE-option, a page fault during execution of a stack handling instruction could result in a destroyed B-register.
The stack handling instructions are described in Section 3.4.2.
The stack handling instructions include the following instructions:
- INIT initialize stack
- ENTR enter stack
- LEAVE leave stack
- ELEAV error leave stack
3.5.3 Move Words¶
MOVEW Move block of words Code: 1431xx
Format: MOVEW
This instruction moves a block of words from one area to another. The opcode is 1431xx, where xx has the following effects:
| xx | move from | move to |
|---|---|---|
| 00 | normal page table | normal page table |
| 01 | normal page table | alternative page table |
| 02 | normal page table | physical memory |
| 03 | alternative page table | normal page table |
| 04 | alternative page table | alternative page table |
| 05 | alternative page table | physical memory |
| 06 | physical memory | normal page table |
| 07 | physical memory | alternative page table |
| 08 | physical memory | physical memory |
- means that the instruction is privileged.
L-register contains the number of 16-bit words to move. Maximum is 2k words. If more than 2k words are specified, no words are moved.
ND-06.014.02
Rev. A
Page 203¶
Register Addressing¶
A- and D-registers hold the word address of the source.
X- and T-registers hold the word address of the destination.
The A- and/or X-registers are only used when the physical memory is addressed. In this case the A- and/or X-registers are incremented when the D- and/or T-registers overflow. The word address of the physical source or the destination field may thereby cross a 64k border.
The instructions do not check overlap. The status bits O, Q and C in the status register are changed if the instruction is privileged.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TONI | PONI | SEXI | N100 | P | I | L | M | C | O | Q | Z | K | TG |
Status register. Refer to Section 2.1.9 for details.
The page tables are not used when in POF-mode (Paging OFF). In this case addresses normally mapped through PT (Page Table) or APT (Alternative Page Table) will access physical bank 0. The APT is only used when in PON-mode (Paging ON) and the PTM is on (Page Table Modus) (status register bit 0 is 1). If PTM is off (status register bit 0 is 0), the xx=0, 1, 3 and 4 are equivalent, as well as xx=2 and 5, and xx=6 and 7.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TONI | PONI | SEXI | N100 | P | I | L | M | Z | K | TG | PTM |
Status register.
The instructions are interruptable. The L-, A-, D-, X-, T-, and P-registers are then changed to restart the instructions.
When the instruction is finished, the L-register is 0. The A-, D-, X- and T-registers will point to the addresses after the last moved word if any words have been moved. The registers are not changed if zero words have been moved.
ND-06.014.02
Rev. A
Page 204¶
3.5.4 Test and Set¶
TSET Test and set
Code: 140123
Format: TSET
This instruction writes -1 into the memory address pointed to by the T-register. Simultaneously, the old content of the same address is read into the A-register. This read/write sequence is performed with the memory system 'locked', so that the two memory accesses cannot be split by other accesses on other memory channels. This may be used to implement processor synchronizing.
The address in the T-register is a logical memory address. Translation to a physical memory address is normally done by using the page tables. However, the translation will use the alternative page table when PTM is on (Page Table Modus) (status register bit 0 is 1) and the paging system is on, PON.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| IONI | PONI | SEXI | N100 | P | I | L | M | C O | Q | Z | K | TG |
Status register.
The old content of the memory address is always read from the memory, and never from the cache.
Data is written both to memory and cache.
ND-06.014.02
Rev. A
Page 205¶
3.5.5 Read Don’t Use Cache¶
RDUS
Read don’t use cache
Code: 140127
Format: RDUS
This instruction reads the content of the memory location pointed to by the T-register into the A-register.
The address in the T-register is a logical memory address. Translation to a physical memory address is normally done by using the page tables. However, the translation will use the alternative page table when PTM is on (Page Table Modus) (status register bit 0 is 1) and the paging system is on, PON.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PON | PON | SEXI | N100 | P | I | L | M | C | Q | Z | K | TG |
Status register.
The old content of the memory address is always read from the memory, and never from the cache.
Data is written to cache.
ND-06.014.02
Rev. A
Page 206¶
3.5.6 SINTRAN-III Segment Change Instructions¶
These instructions are tailor made for the routines in SINTRAN that they speed up.
The instructions are privileged.
The instructions have opcodes in the range from 140300 through 140304. The instructions are described below:
SETPT Set page tables¶
Code: 140300
Format: SETPT
SETPT is a replacement for the following statements:
SETPT: JXZ * 7 % FINISHED
LDDTX 20
BSET ZRO 130 DA % PGU-BIT
LDBTX 10
STD ,B % STORE IN PAGE TABLE
LDXTX 00
JMP *-6
CLEPT Clear page tables¶
Code: 140301
Format: CLEPT
CLEPT is a replacement for the following statements:
CLEPT: JXZ * 10 % FINISHED
LDBTX 10
LDA ,B
JAZ * 3
STATX 20
STZ ,B % CLEAR ENTRY IN PAGE TABLE
LDXTX 00
JMP *-7
CLNREENT Clear non reentrant¶
Code: 140302
Format: CLNREENT
The instruction does the following:
- Reads the content of the memory address A + 2 to find the page table to be affected.
- Reads RT-description bitmap words (found in the memory addresses X + 25 through X + T).
- Clears page-table entries corresponding to the 1-bits in the bitmap.
ND-06.014.02
Rev. A
Page 207¶
CHREENTPAGES Change not reentrant pages¶
Code: 140303
Format: CHREENTPAGES
This instruction does the following:
- Reads address D,X = R1 ; D,X → previous (scratch reg.).
If R1 = 0; skip return (finished). - Reads address, T,R1 + 2.
- If not WIP; T,R1 → previous; Reads address T,R1 = R1; jump back
- Reads address T,R1 = R2.
- Writes R2 → address previous.
- R1 ~ X ; Previous → D,A ; Return.
CLEPU Clear page tables, collect PGU information¶
Code: 140304
Format: CLEPU
This instruction is the same as CLEPT, but includes working set information for all page-table entries handled if PGU of entry is 1.
D = 300
B = 776 SHR 1 — D
B-reg bits 0-3 are now bit number
B-reg bits 4-6 are now word number
Sets bit in 8-word table in page-map bank pointed to by the L-register
The 8-word table has the following layout:
| L-reg | bit 15 | bit 0 | ||
|---|---|---|---|---|
| word 0 | page 17 | page 0 | ||
| word 1 | page 37 | page 20 | ||
| word 2 | page 57 | page 40 | ||
| word 7 | page 177 | page 160 |
ND-06.014.02
Rev. A
Page 208¶
I'm unable to extract any text from the page you provided. It appears to be blank with a page number and document details at the bottom. If there's specific text you want to convert, please provide a clearer scanned image or more details.
Page 209¶
OPERATOR'S INTERACTION¶
4.1 CONTROL PANEL PUSH BUTTONS¶
When the panel key is unlocked, the panel push buttons are active and have the following effect:
| MCL | This is the MASTER CLEAR button used to force the computer system into a defined initialized state. First, the red and green indicator lamps on the CPU board will light up. Then the microprogram is forced to execute the master clear routine. This will also be executed when the MACL command is given to MOPC (refer to Section 4.2.2.1.1), when the CPU goes through the power up sequence, or when the bus line called MCL is activated by an interface.
The master clear routine turns off the green indicator lamp, then the PIE register is cleared. The paging and interrupt systems are turned off. The paging system is set in REX mode. Subsequent memory examine functions with MOPC are set to 24 bit physical examine mode. The CPU self test microprogram is executed. If no errors are found, the green indicator lamp is lit, and the terminal interface on the CPU board (the MOPC terminal) is initialized to receive and transmit 7 bits and even parity. Parity is not checked by MOPC on input. An interrupt level change to level 0 is then executed. After this the CPU will be in stop mode. |
| STOP | This push button has the same effect as giving the STOP command to MOPC. The CPU will enter stop mode and MOPC will be active. |
| LOAD | This push button has the same effect as writing $ or & to MOPC. Its exact effect is determined by the setting of the ALD thumb-wheel switch on the CPU board. |
| OPCOM | OPCOM is always operative in stop mode. When the machine is running, pressing this button will allow the operator to use the CPU board terminal for operator communication. When the CPU is running, it will enable MOPC to read input from the terminal interface located on the CPU board. It will also inhibit input interrupts from this terminal, and disable the transfer of data from the terminal interface to any macro program (main memory program). The terminal interface will be in this state until the escape character is typed, or the CPU is stopped and restarted. When MOPC is entered a # is printed at the beginning of each line. |
ND-06.014.02
Page 210¶
ND-100 Front Panel¶
Control Panel (Standard)¶
- LOCK
ON
- RESET
OFF
- ND
ND-100
- RUN
ON
- STOP
OFF
- LOAD
- MC
ON
Display Panel (Optional)¶
| FUNCTION | DATA | ADDRESS |
|---|---|---|
| UTIL | HM:1 | |
| MAINT | FUNC:5 | |
| MODE | LEVEL:0 |
Figure 4.1: ND-100 Front Panel
ND-06.014.02
Page 211¶
4.1.1 The Panel Lock Key¶
The Panel Lock Key has three positions:
-
LOCK
When placed in this position, the operator’s panel control switches are disabled. This is the normal position for an operating machine. Main power is applied to the computer.
Note: Automatic restart may be initiated after power failure only if the lock key is switched in this position.
-
ON
In this position the panel switches can be operated. Main power is applied to the computer.
-
STAND-BY
In this position the main power is disabled. Stand-by voltage is applied to memory and display. This position will not be present (or valid) on machines delivered from January 1980.
4.1.2 Status Indicators¶
POWER ON
Indicates that +5V is present in the rack.
RUN
Indicates that the CPU is running.
OPCOM — Operator Communication
Indicates that the operators communication microprogram is running. This light may also be lit in RUN mode by pressing the OPCOM button. (OPCOM and RUN are lit at the same time). The OPCOM light will always be lit when the computer is not running.
Note: When OPCOM and RUN are lit at the same time, input from the console terminal will only interact with the OPCOM microprogram. Output to console may come from OPCOM or the active program.
ND-06.014.02
Page 212¶
4.2 MICROPROGRAMMED OPERATOR'S COMMUNICATION¶
4.2.1 General Considerations¶
The ND-100 has a microprogram in the read only memory for communication between the operator and the machine. This program is called MOPC (Microprogrammed Operator’s Communication) and is used for operational control of the ND-100. It includes such functions as memory and register examine and deposit, breakpoint control, bootstrap loading, etc.
Whenever entered, MOPC will perform the necessary communication with the terminal connected to the current loop interface on the CPU printed circuit board. This terminal will be shared as output device between MOPC and other possible programs. As input device MOPC will receive input from the terminal as long as the OPCOM lamp on the operator’s panel is lit.
MOPC will never wait if the terminal is not ready for the transmission of characters. Instead, it will start executing the STOP routine or the running program. MOPC will then be dormant until next time it is entered, and continue with the tasks it had to postpone. The maximum time spent in MOPC is 20 µs. If MOPC does not have any activity to sustain on the terminal, it will use 6 µs every time it is entered.
The ND-100 operator’s communication includes bootstrap programs and automatic hardware load from both character oriented devices and mass storage devices.
When communicating with the MOPC program, the following characters are legal input characters:
Characters legal in STOP or RUN:
| Character | Use |
|---|---|
| 0 - 7 | Octal digits used to specify addresses and data. |
| A - Y | Letters used to specify commands and register names. Letters typed in succession are acted upon when CR (carriage return) or / is typed. Different letter combinations may have the same effect because of a scrambling algorithm used to pack the letters. |
ND-06.014.02
Page 213¶
Technical Page¶
Symbols and Their Uses¶
| Symbol | Use |
|---|---|
| @ or (space) | All characters written before this character are ignored (break character). |
| < | Used to separate lower and upper bounds in dump commands. |
| / | Specifies memory or register examine. |
| ↵ (carriage return) | Ends a line. Used to terminate commands or to perform a register or memory deposit function. |
| * | This character will cause the address of the last examined memory address to be printed. |
| "escape" | Terminates the communication between the CPU board terminal and MOPC. This character has no effect if the CPU is in STOP mode. |
Characters Only Legal in STOP¶
| Character | Use |
|---|---|
| ! | Start program in main memory command. |
| Z | Single instruction command. |
| & or $ | Bootstrap load command. |
| . | Breakpoint command. |
| " | Manual instruction command. |
| # | Start microprogrammed memory test. |
All other characters are answered with a ?, and characters written before the erroneous character will be forgotten (as if "space" had been typed).
Page 214¶
4.2.2 Control Functions (Does not affect display)¶
4.2.2.1 System Control¶
4.2.2.1.1 MASTER CLEAR¶
When MACL ↵ is written to MOPC, the CPU microprogram will execute the master clear routine. The effect of this routine is described in the section on Panel Pushbuttons - 4.1.
4.2.2.1.2 STOP¶
When STOP ↵ is written to MOPC, the CPU will stop execution of the program in main memory. No level change will be performed and program execution can be continued by typing the exclamation mark character.
ND-06.014.02
Page 215¶
4.2.2.1.3 ALD LOAD¶
In the following table the different columns signify:
- ALD: Setting of the ALD thumbwheel switch on the CPU module.
- I12: Corresponding value of the internal register number 12.
- POW OK: Indicates the action performed when the panel key is locked and power comes on (or hardware master clear is finished), and standby power has been on all the time since power last went off.
- POW NOK: Indicates the action performed when the panel key is locked and power comes on (or hardware master clear is finished), and standby power has been missing for some time since power last went off.
- LOAD: Indicates the action performed if the load button is pressed, or $ & is written to MOPC.
| ALD | I12 | STB POW OK | STB POW NOK | LOAD |
|---|---|---|---|---|
| 15 | 0 | Start in address 20 | Stop | Nothing |
| 14 | 1560 | Start in address 20 | Binary load from 1560 | Binary load from 1560 |
| 13 | 20500 | Start in address 20 | Mass storage load from 500 | Mass storage load from 50 |
| 12 | 21540 | Start in address 20 | Mass storage load from 1540 | Mass storage load from 15 |
| 11 | 400 | Start in address 20 | Binary load from 400 | Binary load from 400 |
| 10 | 1600 | Start in address 20 | Binary load from 1600 | Binary load from 1600 |
| 9 | Start in address 20 | |||
| 8 | Start in address 20 | |||
| 7 | 100000 | Stop | Stop | Nothing |
| 6 | 101560 | Binary load from 1560 | Binary load from 1560 | Binary load from 1560 |
| 5 | 120500 | Mass storage from 500 | Mass storage load from 500 | Mass storage load from 500 |
| 4 | 121540 | Mass storage from 1540 | Mass storage load from 1540 | Mass storage load from 1540 |
| 3 | 100400 | Binary load from 400 | Binary load from 400 | Binary load from 400 |
| 2 | 101600 | Binary load from 1600 | Binary load from 1600 | Binary load from 1600 |
Page 216¶
4.2.2.1.4 GENERAL LOAD¶
Binary load is started by typing:
<physical device address> & or <physical device address> $
Loading will take place from the specified device. This device must conform with the programming specifications of either Teletype or tape reader. The device address is the lowest address associated with the device. Binary load will be performed if & or $ is written (or the LOAD button is pressed) and the switch selected ALD has bit 13 equal to "0".
4.2.2.1.5 LEAVE MOPC¶
ESCAPE
If the ESCAPE key is pressed and the CPU is running, MOPC will be left, and subsequent input from the terminal will be routed to main memory programs. MOPC will be entered again by pushing the OPCOM button on the panel or by executing the instruction 150400 (OPCOM).
4.2.2.2 Program Execution¶
4.2.2.2.1 START PROGRAM¶
Format:
xxxxxx !
The machine is started in the address given by the octal number. The address will be physical or virtual depending on whether the paging system is on or off.
4.2.2.2.2 CONTINUE PROGRAM¶
!
If the octal number is omitted, the P register is used as start address, i.e., this is a "continue function". The program level will be the same as when the computer was stopped (if Master Clear has not been pushed or the MACL command typed).
ND-06.014.02
Page 217¶
4.2.2.2.3 SINGLE INSTRUCTION¶
xxxxxxZ
A single Z character will cause one main memory instruction (or one interrupt level change) to be executed. If an octal argument is specified, the specified number of instructions are executed, after which stop mode is entered again. Page faults, protect violations and interrupt level changes are executed correctly, but are counted as extra instructions. An extra overhead of approximately 3 µs is introduced between each instruction when the CPU is in this semi-RUN mode.
4.2.2.2.4 INSTRUCTION BREAKPOINT¶
xxxxxx.
This command starts execution in the same semi-RUN mode as described in Section 4.2.2.2.3. When the program address xxxxxx is reached, execution stops before that address is executed, and a "." is printed. If the specific address is never reached, the semi-RUN mode continues until a character other than 0-7 or A-Y is typed.
4.2.2.2.5 MANUAL INSTRUCTION¶
xxxxxx''
This command starts continuous execution of the instruction specified as argument. The execution stops when a character other than 0-7 or A-Y is typed.
Example:
150410'' is an easy way to turn on the paging system.
4.2.2.2.6 SINGLE I/O INSTRUCTION FUNCTION¶
xxxxxxIO/
This function executes an IOX instruction with xxxxxx as device number. The output data is taken from the operator's register OPR (see Section 4.2.3.2.5). Returned data is printed after the slash and not stored anywhere. No working registers are affected.
ND-06.014.02
Page 218¶
4.2.2.3 Miscellaneous Functions¶
4.2.2.3.1 INTERNAL MEMORY TEST¶
xxx#
When the # character is typed, memory test of the addresses between the B register (lower limit) and the X register (upper limit) is performed in segment xxx. If the test is successful, # is typed when finished. If the test is unsuccessful, ? is typed and the test stops at the failing address. The registers then contain the following information:
| Symbol | Description |
|---|---|
| T | Failing bits |
| P | Failing address |
| D | Error pattern |
| L | Test pattern |
| B | Start address |
| X | Stop address |
4.2.2.3.2 DELETE ENTRY¶
When @ or (space) is typed, all characters written before this character are ignored.
4.2.2.3.3 CURRENT LOCATION COUNTER¶
*
When * is typed, an octal number is printed indicating the current physical or virtual address on which a memory examine or memory deposit will take place. The current location counter is set by the examine command /, and it is incremented for each time carriage return is typed afterward.
ND-06.014.02
Page 219¶
4.2.3 Monitor Functions (Also shown on Display)¶
4.2.3.1 Memory Functions¶
4.2.3.1.1 Physical Examine Mode¶
E↵
Subsequent examine will be in physical memory with a 24 bit address. Default mode after master clear.
4.2.3.1.2 Virtual Examine Mode¶
nE↵
This command will change the examine mode for subsequent memory examine functions. n is in the range 0-3 and specifies the page table via which the examine address shall be mapped. Page fault and memory protect violation are ignored and physical page 0 used instead.
ND-06.014.02
Page 220¶
4.2.3.1.3 MEMORY EXAMINE¶
Format:
xxxxxx /
The octal number before the character "/" specifies the memory address.
When the "/" is typed, the contents of the specified memory cell are printed out as an octal number.
If a ⏎ (carriage return) is given, the contents of the next memory cell are printed out.
If the paging system is used, examine mode may be selected by an E command (see Section 4.2.3.1.1 and 4.2.3.1.2). If virtual examine is specified page faults and protect violations are ignored. In this case, <octal number> specifies a virtual address. If physical examine is specified, <octal number> may contain up to 24 bits of physical address.
Example:
717/003456 % Examine address 717
717/003456 ⏎ % Examine address 717
003450 ⏎ % and 720
000013 % and 721
4.2.3.1.4 MEMORY DEPOSIT¶
Format:
xxxxxx ⏎
After a memory examine, the contents of the memory cell may be changed by typing an octal number terminated by CR. If the CPU is running, "DEP" must be written between the number and CR.
Example:
717/003456 3475 ⏎ % The contents of
003450 1700 ⏎ % address 717 is changed
000123 ⏎ % From 3456 to 3475 and 720
123456 % is changed from 3450 to 1700.
% 721 contains 123 and remains
% unchanged.
Page 221¶
4.2.3.1.5 DEPOSIT RULES¶
Content is only changed by zzzzzz′ in STOP mode and by zzzzzzDEP′ in STOP or RUN mode.
Content is unchanged by f in STOP or RUN mode and zzzzzz′ in RUN mode (? is answered).
4.2.3.1.6 MEMORY DUMP¶
xxxxxx < yyyyyy′
The contents of the memory addresses between xxxxxx and yyyyyy are printed out, with 8 addresses per line. The dump is taken from the 64K area last addressed by a preceding memory examine function. A memory examine function should always be done before a memory dump. The dumping will stop if any key is pressed.
Page 222¶
4.2.3.2 Register Functions¶
4.2.3.2.1 REGISTER EXAMINE¶
Format:
xx Ry/
The first octal (xx) number specifies the program level (0-17). If this number is omitted, program level zero is assumed.
The second octal number (y) specifies which register to examine on that level. The following codes apply:
| Code | Register |
|---|---|
| 0 | Status register, bits 0-7 |
| 1 | D register |
| 2 | P register |
| 3 | B register |
| 4 | L register |
| 5 | A register |
| 6 | T register |
| 7 | X register |
After the "/" is typed, the contents of the register are printed out.
Example:
R5/ A register level 0
7R2/ P register level 7
Instead of the notation Ry, it is possible to address registers by their names. The names are single letter names, namely: S, D, P, B, L, A, T, X corresponding to R0-R7 respectively.
Page 223¶
4.2.3.2.2 REGISTER DEPOSIT¶
Format:
xxxxxx/
After a register examine, the contents of the register may be changed by typing an octal number terminated by CR. If the CPU is running, "DEP" must be written between the number and CR.
Examples:
| Command | Explanation |
|---|---|
| A/ 123456 54321/ | % Contents of A register on level 0 % is changed to 054321 |
| 7P/ 000044 55/ | % Contents of P register on level 7 % is changed to 000055 |
4.2.3.2.3 REGISTER DUMP — RD¶
xx < yy RD /
The contents of the working registers in register blocks xx to yy are printed out, with one register block per line. The registers are printed in the following order: STS, D, P, B, L, A, T, X.
If only one register block should be printed, xx must be equal to yy.
Note the case: <RD/ dump register block on level 0.
4.2.3.2.4 USER REGISTER — U¶
U/
The last value written by TRR LMP, is selected as display source.
ND-06.014.02
Page 224¶
4.2.3.2.5 OPERATOR PANEL SWITCH REGISTER — OPR¶
OPR/
This selects a scratch register where a code to be read by TRA OPR can be deposited. Content of OPR can be read and changed from the console.
ND-06.014.02
Page 225¶
4.2.3.3 Internal Register Functions¶
4.2.3.3.1 INTERNAL REGISTER EXAMINE¶
Format:
I xx /
The octal number (xx) specifies which internal register is examined. The following codes apply:
| Code | Register | Description |
|---|---|---|
| 0 | PANS | Operator's Panel Status, used by operator's panel micro-program. |
| 1 | STS | Status register. |
| 2 | OPR | Operator's panel switch register, simulated by a scratch register. |
| 3 | PGS | Paging status register |
| 4 | PVL | Previous program level |
| 5 | IIC | Internal interrupt code |
| 6 | PID | Priority interrupt detect |
| 7 | PIE | Priority interrupt enable |
| 10 | CSR | Cache status register, for maintenance only. |
| 11 | ACTL | Current level, decoded. |
| 12 | ALD | Automatic load descriptor |
| 13 | PES | Memory error status |
| 14 | PGC | Paging control register. The examined register belongs to the program level controlled by bits 3-6 of the A register. |
| 15 | PEA | Memory error address |
| 16 | Spare | Do not use. |
| 17 | Spare | Do not use. |
ND-06.014.02
Rev. A
Page 226¶
4.2.3.3.2 INTERNAL REGISTER DEPOSIT¶
Format:
xxxxx /
After an internal register examine, the contents of the internal register with the same internal register code may be changed by typing an octal number terminated by CR. If the CPU is running, "DEP" must be written between the number and CR. For deposit, the following internal register codes apply:
| Code | Register | Description |
|---|---|---|
| 0 | PANC | Operator's panel control, used by operator's panel microprogram. |
| 1 | STS | Status register. Only bits 0-7 will be changed. |
| 2 | LMP | Writes into a scratch register that may be displayed by writing U/ to MOPC. |
| 3 | PCR | Paging control register. |
| 4 | Spare | Do not use. |
| 5 | IIE | Internal interrupt enable. |
| 6 | PID | Priority interrupt detect. |
| 7 | PIE | Priority interrupt enable. |
| 10 | CCL | Cache Clear. |
| 11 | LCIL | Lower cache inhibit limit register. |
| 12 | UCILR | Upper cache inhibit limit register. |
| 13 | Spare | Do not use. |
| 14 | Spare | Do not use. |
| 15 | ECCR | Error correction control register. |
| 16 | Spare | Do not use. |
| 17 | Spare | Do not use. |
Examples:
I7/ 030013 0/ % Examine PIE and change to 000000
I12/ 021540 20044/ % Examine ALD and change UCILR % to 020044
ND-06.014.02
Page 227¶
4.2.3.3.3 INTERNAL REGISTER DUMP — IRD¶
IRD/
The 16 internal registers are printed out. This function is only allowed when the CPU is in STOP mode. This restriction avoids the unintentional unlocking of PEA, PES and IIC when the CPU is running.
4.2.3.3.4 SCRATCH REGISTER DUMP — RDE¶
xx < yy RDE/
The contents of the 8 scratch registers (only microprogram accessible) in the register blocks xx to yy are printed out, with one register block per line. This function is useful for microprogram debugging only.
Page 228¶
4.2.4 Display Functions (Affects only display)¶
4.2.4.1 Displayed Format¶
uuzzxy F
This command will define the display format when the optional display unit is included in the system. uuzzxy are octal digits and define the chosen format. F, without argument, (or with argument equal to zero) will set the default display format which is octal format. The parts of the argument have the following effect:
| x | Number representation code. |
|---|---|
| x = 0 | Displayed data is in octal representation. zz have no effect. |
| x = 1 | Displayed data is in unary representation, i.e., 4 of the bits in the displayed data are used to light one out of 16 indicators. zz indicates which 4 bits to decode. |
| x = 2 | Displayed data is in binary representation. zz has no effect. |
| y | Afterglow code. |
|---|---|
| y = 0 | No afterglow in display. |
| y = 1 | Zeros are stretched. |
| y = 2 | Ones are stretched. |
| y = 3 | Zeros and ones are stretched. |
| zz | Lower start bit for binary display. |
|---|---|
| zz = 0-24 | Position of lowest bit position to be represented in binary representation. |
| uu | Display processor maintenance codes (4 bits). |
|---|---|
| uu = 1 | Display year and month. |
| uu = 2 | Inhibit message. |
| uu = 4 | Initialize panel processor. |
| uu = 10 | Abort message. |
Example:
1421F
After this format specification, bits 14₈ - 17₈ will be shown in unary representation with afterglow on ones.
ND-06.014.02
Page 229¶
4.2.4.2 Display Memory Bus¶
xy BUS/
This command is only useful when the optional display is included in the system. The memory bus is displayed, and depending on the argument xy, various types of bus information can be sampled and displayed. Read from cache is not displayed.
| x | ||
|---|---|---|
| 0 | = | CD |
| 1 | = | DD |
| 2 | = | CA |
| 3 | = | DA |
| y | ||
|---|---|---|
| 0 | nothing is displayed | |
| 1 | = | R |
| 2 | = | W |
| 3 | = | WR |
Example:
23 BUS/
All addresses sent from the CPU to memory will be displayed in the DATA field and "CAWR" is shown in the FUNCTION field.
4.2.4.3 Display Activity¶
ACT/
With this display mode active levels (ACT), clock and indicator functions are displayed.
ND-06.014.02
Page 230¶
4.2.5 Bootstrap Loaders¶
The ND-100 has bootstrap loaders for both mass storage and character oriented devices. There are two different load formats:
- Binary format load.
- Mass storage load.
Octal load is not implemented in ND-100.
4.2.5.1 Binary Format Load¶
Binary load is started by typing:
\<physical device address> & or \<physical device address> $
Loading will take place from the specified device. This device must conform with the programming specifications of either Teletype or tape reader. The device address is the lowest address associated with the device. Binary load will be performed if & or $ is written (or the LOAD button is pressed) and the switch selected ALD has bit 13 equal to "0".
The binary information must obey the following format:
| A | B | C | ! | E | F | G | H | I |
|---|---|---|---|---|---|---|---|---|
- A Any characters not including ! (ASCII 41₈).
- B (Optional) octal number (any number of digits) terminated with a CR (line feed is ignored).
- C (Optional) octal number terminated with the character ! (see below).
- ! Indicates start of binary information (ASCII 41₈).
- E Block start address. Presented as two bytes (16 bits), most significant byte first.
- F Word count. Presented as two bytes (16 bits), most significant byte first (E, F and H are not included in F).
- G Binary information. Each word (16 bits) presented as two bytes, most significant byte first.
ND-06.014.02
Page 231¶
Checksum and Action Code¶
H Checksum. Presented as two bytes (16 bits), most significant byte first. The checksum is the 16 bit arithmetic sum of all words in G.
I Action code. If I is a blank (zero), then the program is started in the address previously found in the octal number (see above). If I is not a blank, then control is returned to the operator’s communication. (The number B will be found in the P register.)
If no device address precedes the & command, then the & is equivalent to pushing the LOAD button on the operator’s panel.
If a checksum error is detected, "?" is typed on the console and control is returned to the operator’s communication.
Note that the binary loader does not require any of the main memory.
The binary load will change the registers on level 0.
The binary load format is compatible with the format dumped by the )BPUN command in the MAC assembler.
4.2.5.2 Mass Storage Load¶
Mass storage load is started in the same way as binary format load, except that bit 13 in the device address should be a "1".
When loading from mass storage, 1K words will be read from mass storage address 0 into main memory starting in address 0. After a successful load, the CPU is started in main memory address 0.
The mass storage device must conform with either drum or disk programming specifications.
ND-06.014.02
Page 232¶
4.2.5.3 Automatic Load Descriptor¶
The ND-100 has a thumbwheel switch called the Automatic Load Descriptor (ALD) (CPU card). This switch selects a 16 bit value to use when the LOAD button is pushed or when a single $ or & is typed.
The 16 bit value has the following meaning:
| 15 | 14 | 13 | 12 | 11 | 0 |
|---|---|---|---|---|---|
| 0 | 0 | M | 0 | Address |
M: Mass Storage Load
If this bit (bit 13) is 1, mass storage load is taken from the device whose (lowest) address is found in bits 0-10 (unit 0).
If bit 13 is 0, binary load is taken from the device whose (lowest) address is found in bits 0-10.
Page 233¶
4.3 THE DISPLAY¶
4.3.1 General¶
The optional display part of the panel is present if the machine has the memory management module installed. This module contains, in addition to the memory management system and cache memory, a display processor. The display processor controls the activity on the display.
There is one button on the display part, the "OPCOM" button. This button allows the operator to use the CPU board terminal for operator communication. This button has the same function as the "OPCOM" button on the operator’s panel. The display part of the panel may be placed outside the cabinet (in another room, etc.). Therefore, it is practical to have an "OPCOM" button on this part of the panel.
4.3.2 The Different Display Functions¶
Figure 4.1 shows the normal activity on the display when the machine is running.
The DATA field displays information in binary or octal format (see Section 4.2.4.1). The possible contents are:
-
Active levels (only binary)
The active levels in the computer will be shown. There are 16 positions (0-15), one for each level. A one ( I ) is set in one of these positions, indicating the active level. The display is provided with afterglow so that it is possible to observe a single instruction on a program level.
-
Register contents.
If a register examine is done, the content of the register is shown here.
-
Memory contents.
When a memory examine is done, the content of the examined cell will be shown here.
-
Bus information.
If the BUS command is given to display memory accesses on the ND-100 bus, the data present on the bus will be shown here and updated continually. When binary format is selected, the address field is used as extension for bit 16-23.
ND-06.014.02
Page 234¶
The ADDRESS Field¶
-
Calendar clock.
A clock that tracks the operating system clock is shown here displaying day, hour, minute and second. This clock is adjusted by the "UPDATE" command under SINTRAN III. Under the load procedure this clock will be read by the operating system and taken as system clock. The clock is also connected to the stand-by power and will stay correct even in case of a power failure.
-
Year and month.
Year and month from the system clock is also shown here by giving the specific F command to MOPC (see Section 4.2.4.11). For example, 1979:10 means October 1979.
-
Current program counter.
During a register examine, the current program counter is shown here. For example, PC:10153.
-
Memory address.
If a memory examine is done, the address of the memory location examined is shown here.
The FUNCTION Field¶
-
Indicator functions.
UTIL, utility of the machine, is shown here. That is, how much time the machine spends on level 0 (idle). The more utility, the less the time spent on level 0 and more segments on the display are lit up.
Example:

Page 235¶
4-27¶
No activity.
HIT, tells the hits rate in cache memory. The higher the cache hit rate, the more segments are lit up on the display.
Example:
RING, indicates the user ring taken from the PCR.
Example:
| Paging off | Ring 1 | Ring 2 | Ring 3 |
|---|---|---|---|
MODE, tells if the interrupt system and/or the paging system is turned on.
Example:
| Both the interrupt system and the paging system is on. | Only the interrupt system is on. |
|---|---|
ND-06.014.02
Page 236¶
Register Name¶
If a register examine is done, the name of the register, eventually also the level for the register, is shown.
Example:
5A, OPR, etc.
5A = A register on level 5
OPR = Operator’s Register
Memory Examine Mode¶
When a memory examine is done, the examine mode; virtual or physical, will be shown.
Example:
PEXM — physical examine
2EXM — virtual examine mapped through page table 2.
Bus Examine Type¶
What kind of bus information to be sampled and displayed by the BUS command is displayed here.
Example:
DC R — data under a CPU read from memory operation.
Page 237¶
APPENDIX A¶
ND-100 INSTRUCTIONS¶
A.1 ND-100 INSTRUCTION CODES¶
Instruction formats and explanations found in the ND-100 Reference Manual.
Δ = displacement
^ = logical AND
∨ = inclusive OR
⩚ = exclusive OR
MEMORY REFERENCE INSTRUCTIONS¶
Effective Address:¶
| Code | Description | Calculation |
|---|---|---|
| 000000 | Address relative to P; | EL:=P+Δ |
| ,X 002000 | Address relative to X; | EL:=X+Δ |
| I 001000 | Indirect address; | EL:=(P+Δ) |
| ,B 000400 | Address relative to B; | EL:=B+Δ |
Store Instructions:¶
| Code | Instruction | Operation |
|---|---|---|
| STZ 000000 | Store zero; | (EL):=0 |
| STA 004000 | Store A; | (EL):=A |
| STT 010000 | Store T; | (EL):=T |
| STX 014000 | Store X; | (EL):=X |
| MIN 040000 | Mem.incr, skip if zero | (EL):=(EL)+1 |
Load Instructions:¶
| Code | Instruction | Operation |
|---|---|---|
| LDA 044000 | Load A; | A:=(EL) |
| LDT 050000 | Load T; | T:=(EL) |
| LDX 054000 | Load X; | X:=(EL) |
Arithmetical and Logical Instructions:¶
| Code | Instruction | Operation |
|---|---|---|
| ADD 060000 | Add to A (C, O and Q may also be affected); | A:=A+(EL) |
| SUB 064000 | Subtract from A (C, O and Q may also be affected); | A:=A−(EL) |
| AND 070000 | Logical AND to A; | A:=A^(EL) |
| ORA 074000 | Logical inclusive OR to A; | A:=A∨(EL) |
| MPY 120000 | Multiply integer (O and Q may also be affected); | A:=A⩚(EL) |
ND-06.014.02
Page 238¶
Double Word Instructions¶
| Code | Description | Operation |
|---|---|---|
| STD | 020000 | Store double word; |
| LDD | 024000 | Load double word; |
Floating Instructions¶
| Code | Description | Operation |
|---|---|---|
| STF | 030000 | Store floating accum.; |
| LDF | 034000 | Load floating accum.; |
| FAD | 100000 | Add to floating accum. |
| (C may also be affected); | ||
| FSB | 104000 | Subtract from floating accum. |
| (C may also be affected); | ||
| FMU | 110000 | Multiply floating accum. |
| (C may also be affected); | ||
| FDV | 114000 | Divide floating accum. |
| (Z and C may also be affected); |
Byte Instructions¶
Addressing: EL = (T) + (X)/2
X = 1: Right byte
X = 0: Left byte
| Code | Description |
|---|---|
| SBYT | 142600 |
| LBYT | 142200 |
| BFILL | 140130 |
| MOVB | 140131 |
| MOVBF | 140132 |
Register Operations¶
Arithmetic Operations, RAD = 1¶
C, O and Q may be affected by the following instructions:
| Code | Description | Operation |
|---|---|---|
| RADD | 146000 | Add source to destination; |
| RSUB | 146600 | Subtract source from destination; |
| COPY | 146100 | Register transfer; |
| AD1 | 000400 | Also add one to destination; |
| ADC | 001000 | Also add old carry to destination; |
Page 239¶
Logical Operations, RAD = 0¶
| Operation | Code | Description |
|---|---|---|
| SWAP | 144000 | Register exchange; ( (sr) := (dr) ); ( (dr) := (sr) ) |
| RAND | 144400 | Logical AND to destination; ( (dr) := (dr) \land (sr) ) |
| REXO | 145000 | Logical exclusive OR; ( (dr) := (dr) \oplus (sr) ) |
| RORA | 145400 | Logical inclusive OR; ( (dr) := (dr) \lor (sr) ) |
| CLD | 000100 | Clear destination before op.; ( (dr) = 0 ) |
| CM1 | 000200 | Use one's complement of source; ( (sr) = (sr)^o ) |
Combined Instructions¶
| Instruction | Code | Description |
|---|---|---|
| EXIT | 146142 | COPY SL DP, Return from subroutine |
| RCLR | 146100 | COPY, Register clear |
| RINC | 146400 | RADD AD1, Register increment |
| RDCR | 146200 | RADD CM1, Register decrement |
Extended Arithmetic Operations¶
| Operation | Code | Description |
|---|---|---|
| RMPY | 141200 | Multiply source with destination. Result in double accumulator ( AD := (sr) \times (dr) ) |
| RDIV | 141600 | Divide double accumulator with source register. Quotient in A, remainder in D ( AD = A \times (sr) + D ); ( A := AD/(sr) ) |
EXECUTE INSTRUCTION¶
| Instruction | Code | Description |
|---|---|---|
| EXR | 140600 | Execute instruction found in specified register. |
ND-06.014.02
Page 240¶
BIT INSTRUCTIONS¶
| Instruction | Code | Description |
|---|---|---|
| BSKP | 175000 | Skip next location if specified condition is true; P:= P+1 |
| BSET | 174000 | Set specified bit equal to specified condition; |
| BSTA | 176200 | Store and clear K; (B):= K; K:= 0 |
| BSTC | 176000 | Store complement and set K; (B):= K₀; K:= 1 |
| BLDA | 176600 | Load K; K:= (B) |
| BLDC | 176400 | Load bit complement to K; K:= (B)₀ |
| BANC | 177000 | Logical AND with bit compl.; K:= K ∧ (B)₀ |
| BORC | 177400 | Logical OR with bit compl.; K:= K∨ (B)₀ |
| BAND | 177200 | Logical AND to K; K:= K ∧ (B) |
| BORA | 177600 | Logical OR to K; K:= K∨ (B) |
SHIFT INSTRUCTIONS¶
| Instruction | Code | Description |
|---|---|---|
| SHT | 154000 | Shift T register |
| SHD | 154200 | Shift D register |
| SHA | 154400 | Shift A register |
| SAD | 154600 | Shift A and D registers connected. Arithmetic shift. During right shift, bit 15 is extended. During left shift, zeros are shifted in from right. |
| ROT | 001000 | Rotational shift. Most and least significant bits are connected. |
| ZIN | 002000 | Zero end input |
| LIN | 003000 | Link end input. The last vacated bit is fed to M after every shift instruction. |
| SHR | 000200 | Shift right; gives negative shift counter. |
FLOATING CONVERSION¶
| Instruction | Code | Description |
|---|---|---|
| NLZ | 151400 | Convert the number in A to a floating number in FA. |
| DNZ | 152000 | Convert the floating number in FA to a fixed point number in A. |
| NLZ + 20 | 151420 | Integer to floating conversion. |
| DNZ - 20 | 152360 | Floating to integer conversion. |
Page 241¶
Sequencing Instructions¶
Unconditional Jump¶
| Instruction | Code | Description |
|---|---|---|
| JMP | 124000 | Jump; P = EL |
| JPL | 134000 | Jump to subroutine; L = P; P = EL |
Conditional Jump¶
| Instruction | Code | Description |
|---|---|---|
| JAP | 130000 | Jump if A is positive; P = + Δ if: A ≥ 0 |
| JAN | 134000 | Jump if A is negative; A < 0 |
| JAZ | 131000 | Jump if A is zero; A = 0 |
| JAF | 131400 | Jump if A is nonzero; A ≠ 0 |
| JXN | 133400 | Jump if X is negative; X < 0 |
| JPC | 132000 | Increment X and jump if positive; X = X + 1; P = P + Δ if X > 0 |
| JNC | 132400 | Increment X and jump if negative; X = X + 1; P = P + Δ if X < 0 |
| JXZ | 133000 | Jump if X is zero; X = 0 |
Skip Instructions¶
| Instruction | Code | Description |
|---|---|---|
| SKP | 140000 | Skip next location if specified condition is true; P = P + 1 |
Specified Condition¶
| Mnemonic | Code | Description |
|---|---|---|
| EQL | 000000 | Equal to |
| UEQ | 002000 | Unequal to |
| GRE | 001000 | Signed greater or equal to |
| LST | 003000 | Signed less than |
| MLST | 003400 | Magnitude less than |
| MGRE | 001400 | Magnitude greater or equal to |
| IF | 000000 | May be used freely to obtain |
| O | 000000 | Easy readability |
ND-06.014.02
Page 242¶
TRANSFER INSTRUCTIONS¶
Load Independent Instructions:¶
| Instruction | Code | Description |
|---|---|---|
| TRA | 150000 | Transfer specified internal register to A |
| TRR | 150100 | Transfer A to specified internal register |
Inter-level Instructions:¶
| Instruction | Code | Description |
|---|---|---|
| IRR | 153600 | Inter-register Read |
| A := Specified register on specified level | ||
| IRW | 153400 | Inter-register Write |
| Specified register on specified level := A |
MEMORY EXAMINE/DEPOSIT INSTRUCTIONS¶
| Instruction | Code | Description |
|---|---|---|
| EXAM | 150416 | Memory examine |
| T := memory location pointed to by AD register | ||
| DEPO | 150417 | Memory deposit |
| Move T to memory location pointed to by AD register |
SYSTEM CONTROL INSTRUCTIONS¶
| Instruction | Code | Description |
|---|---|---|
| IOF | 150401 | Turn off interrupt system |
| ION | 150402 | Turn on interrupt system |
| LWCS | 143500 | Load writeable control store |
| MON | 153000 | Monitor call instruction |
| PIOF | 150405 | Turn off paging and interrupt |
| PION | 150412 | Turn on page and interrupt |
| POF | 150404 | Turn off paging system |
| PON | 150410 | Turn on paging system |
| REX | 150407 | Reset extended address mode |
| SEX | 150406 | Set extended address mode |
| WAIT | 151000 | Halt the program/ Give up priority |
| OPCOM | 150400 | Start MOPC |
Page 243¶
PRIVILEGED INSTRUCTIONS¶
The instructions available only to programs running in system mode (ring 2 or 3) are termed privileged instructions, which are:
| Instruction | Code | Description |
|---|---|---|
| IOF | 150401 | Turn off interrupt system |
| ION | 150402 | Turn on interrupt system |
| PIOF | 150405 | Turn off paging and interrupt |
| PION | 150412 | Turn on page and interrupt |
| POF | 150404 | Turn off memory management system |
| PON | 150410 | Turn on memory management system |
| LWCS | 143500 | Load writeable control store |
| WAIT | 151000 | Give up priority, reset current PID bit |
| IDENT | 143600 | Identify interrupt |
| IOX | 164000 | Input/Output |
| IOXT | 150415 | Input/Output |
| TRA | 150000 | Transfer internal register to A |
| TRR | 150100 | Transfer internal register from A |
| MCL | 150200 | Masked clear of register |
| MST | 150300 | Masked set of register |
| LRB | 152600 | Load registerblock |
| SRB | 152402 | Store register block |
| IRW | 153400 | Inter-register write |
| IRR | 153600 | Inter-register read |
| REX | 150407 | Reset extended address mode |
| SEX | 150406 | Set extended address mode |
| EXAM | 150416 | Memory examine (T = memory location pointed to by AD register) |
| DEPO | 150417 | Memory deposit (Memory location pointed to by AD register) |
| OPCOM | 150400 | Set in OPCOM mode |
Page 244¶
Physical Memory Read/Write Instructions¶
| Instruction | Code | Operation |
|---|---|---|
| LDATX | 143300 | A := (EL) |
| LDXTX | 143301 | X := (EL) |
| LDDTX | 143302 | A := (EL), D := (EL + 1) |
| LDBTX | 143303 | B := 177000 ∨ ((EL) + (ED)) |
| STATX | 143304 | (EL) := A |
| STZTX | 143305 | (EL) : 0 |
| STDTX | 143306 | (EL) := A, (EL + 1) := D |
Input/Output Control¶
| Instruction | Code | Operation |
|---|---|---|
| IOXT | 150415 | Transfer data to/from specified device |
| IOX | 164000 | Transfer data to/from specified device |
| IDENT | 1436PL | Transfer IDENT code of interrupting device with highest priority on the specified level to A register. |
| PL10 | 000004 | Level 10 |
| PL11 | 000011 | Level 11 |
| PL12 | 000022 | Level 12 |
| PL13 | 000043 | Level 13 |
Argument Instructions¶
| Instruction | Code | Operation |
|---|---|---|
| SAA | 170400 | Set argument to A; A := ARG |
| AAA | 172400 | Add argument to A; A := A + ARG |
| SAX | 171400 | Set argument to X; X := ARG |
| AAX | 173400 | Add argument to X; X := X + ARG |
| SAT | 171000 | Set argument to T; T := ARG |
| AAT | 173000 | Add argument to T; T := T + ARG |
| SAB | 170000 | Set argument to B; B := ARG |
| AAB | 172000 | Add argument to B; B := B + ARG |
Page 245¶
Register Block Instructions¶
Addressing:
(EL) + 1 + 2 + 3 + 4 + 5 + 6 + 7
P X T A D L STS B
| Instruction | Code | Description |
|---|---|---|
| LRB | 152600 | Load register block |
| SRB | 152402 | Store register block |
Instructions in the CE-Option¶
(CE = Commercial Extended)
| Instruction | Code | Description |
|---|---|---|
| ADDD | 140120 | Add decimal |
| SUBD | 140121 | Subtract decimal |
| COMD | 140122 | Compare decimal |
| PACK | 140124 | Convert to packed decimal |
| UPACK | 140125 | Convert to unpacked decimal |
| SHDE | 140126 | Decimal shift |
| INIT | 140134 | Initialize stack |
| ENTR | 140135 | Enter Stack |
| LEAVE | 140136 | Leave stack |
| ELEAV | 140137 | Error leave stack |
Instructions in the CX-Option¶
The same instructions as in the CE-option described above, plus the following instructions:
| Instruction | Code | Description |
|---|---|---|
| MOVEW | 1431xx | Move block of words (xx is in the range 00 through 08) |
| TSET | 140123 | Test and set |
| RDUS | 140127 | Read don't use cache |
| SETPT | 140300 | Set page tables |
| CLEPT | 140301 | Clear page tables |
| CLNREENT | 140302 | Clear non reentrant |
| CHREENT-PAGES | 140303 | Change not reentrant pages |
| CLEPU | 140304 | Clear page tables, collect PGU information |
ND-06.014.02
Rev. A
Page 246¶
NORD-100 MNEMONICS AND THEIR OCTAL VALUES¶
| Mnemonic | Value | Mnemonic | Value | Mnemonic | Value |
|---|---|---|---|---|---|
| AAA | 172400 | EXIT | 146142 | MIN | 040000 |
| AAB | 172000 | EXR | 140600 | MIX3 | 143200 |
| AAT | 173000 | FAD | 100000 | MLST | 003400 |
| AAX | 173400 | FDV | 114000 | MON | 153000 |
| ADC | 001000 | FMU | 110000 | MOVEW | 1431xx |
| ADD | 060000 | FSB | 104000 | MPY | 120000 |
| ADDD | 140120 | GEQ | 004400 | MST | 150300 |
| AD1 | 000040 | GRE | 001000 | NLZ | 151400 |
| ALD | 000012 | I | 001000 | ONE | 000200 |
| AND | 070000 | IDENT | 143600 | OPCOM | 150400 |
| ,B | 000400 | IF | 000000 | OPR | 000002 |
| BAC | 000060 | IIC | 000005 | ORA | 074000 |
| BANC | 177000 | IIE | 000005 | PACK | 140124 |
| BAND | 177200 | INIT | 140134 | PCR | 000003 |
| BCM | 000400 | IOF | 150401 | PEA | 000015 |
| BLDA | 176600 | ION | 150402 | PES | 000013 |
| BLDC | 176400 | IOX | 164000 | PGC | 000014 |
| BORA | 177600 | IOXT | 150415 | PGS | 000003 |
| BORC | 177400 | IRR | 153600 | PID | 000006 |
| BSET | 174000 | IRW | 153400 | PIE | 000007 |
| BSKP | 175000 | JAF | 131400 | PIOF | 150405 |
| BSTA | 176200 | JAN | 130400 | PION | 150412 |
| BSTC | 176000 | JAP | 130000 | PL10 | 000004 |
| CCLR | 000010 | JAZ | 131000 | PL11 | 000011 |
| CHREENT- | JMP | 124000 | PL12 | 000022 | |
| PAGES | 140303 | JNC | 132400 | PL13 | 000043 |
| CILR | 000012 | JPC | 132000 | POF | 150404 |
| CLD | 000010 | JPL | 134000 | PON | 150410 |
| CLEPT | 140301 | JXN | 133400 | PVL | 000004 |
| CLEPU | 140304 | JXZ | 133000 | RADD | 146000 |
| CLNREENT | 140302 | LBYT | 142200 | RAND | 144400 |
| CM1 | 000200 | LCIL | 000011 | RCLR | 146100 |
| CM2 | 000600 | LDA | 044000 | RDCR | 146200 |
| COMD | 140122 | LDATX | 143300 | RDIV | 141600 |
| COPY | 146100 | LDBTX | 143303 | RDUS | 141027 |
| CSR | 000010 | LDD | 024000 | REX | 150407 |
| DA | 000005 | LDDTX | 143302 | REXO | 145000 |
| DB | 000003 | LDF | 034000 | RINC | 146400 |
| DD | 000001 | LDT | 050000 | RMPY | 141200 |
| DEPO | 150417 | LDX | 054000 | RORA | 145400 |
| DL | 000004 | LDXTX | 143301 | ROT | 001000 |
| DNZ | 152000 | LEAVE | 140136 | RSUB | 146600 |
| DP | 000002 | LIN | 003000 | SA | 000050 |
| DT | 000006 | LMP | 000002 | SAA | 170400 |
| DX | 000007 | LRB | 152600 | SAB | 170000 |
| ECCR | 000015 | LSS | 002040 | SAD | 154600 |
| EA | 140137 | LST | 003000 | SAT | 171000 |
| ENTR | 140135 | LWCS | 143500 | SAX | 171400 |
| EOL | 000000 | MCL | 150200 | SB | 000030 |
| EXAM | 150416 | MGRE | 001400 | SBYT | 142600 |
Page 247¶
A-11¶
| Code | Value |
|---|---|
| SD | 000010 |
| SETPT | 140300 |
| SEX | 150406 |
| SHA | 154400 |
| SHD | 154200 |
| SHDE | 140126 |
| SHR | 000200 |
| SHT | 154000 |
| SKP | 140000 |
| SL | 000040 |
| SP | 000020 |
| SRB | 152402 |
| SSC | 000060 |
| SSK | 000020 |
| SSM | 000070 |
| SSO | 000050 |
| SSQ | 000040 |
| SSTG | 000010 |
| SSZ | 000030 |
| ST | 000060 |
| STA | 004000 |
| STATX | 143304 |
| STD | 020000 |
| STDTX | 143306 |
| STF | 030000 |
| STS | 000001 |
| STT | 010000 |
| STX | 014000 |
| STZ | 000000 |
| STZTX | 143305 |
| SUB | 064000 |
| SUBD | 140121 |
| SWAP | 144000 |
| SX | 000070 |
| TRA | 150000 |
| TRR | 150100 |
| TSET | 140123 |
| UCIL | 000012 |
| UEQ | 002000 |
| UPACK | 140125 |
| WAIT | 151000 |
| ,X | 002000 |
| ZIN | 002000 |
| ZRO | 000000 |
ND-06.014.02
Rev. A
Page 248¶
A.2 ND-100 Instruction Execution Times¶
NOTE: The instruction times are measured for a program running on a standard ND-100. That is, all references are in local memory. Two models of the ND-100 are available and the instruction times are given first for the slower model without cache and then for the faster model with cache.
| Instruction | Standard 190ns cycle time (Not Cache) (in μs) | Fast CPU 150ns cycle time (Cache) (in μs) |
|---|---|---|
| JMP *1 | 1.84 | 0.99 |
| SAA 5 | 0.73 | 0.46 |
| AAA 2 | 0.73 | 0.46 |
| COPY SA DD | 0.73 | 0.46 |
| RADD SB DA | 0.73 | 0.46 |
| RSUB ST DX | 0.73 | 0.46 |
| SWAP SA DB | 0.94 | 0.74 |
| RAND SA DT | 0.73 | 0.46 |
| REXO ST DT | 0.73 | 0.46 |
| RORA SD DA | 0.73 | 0.46 |
| BSET ONE 20 DX | 1.14 | 0.89 |
| BSET BAC 30 DX | 1.72 | 1.32 |
| BSTA 40 DX | 2.31 | 1.76 |
| BLDA 20 DX | 1.33 | 1.03 |
| SHA 1 | 1.33 | 1.03 |
| SHA 13 | 3.29 | 2.48 |
| SHT 1 | 1.33 | 1.03 |
| SAD 1 | 1.53 | 1.17 |
| LDA *16 | 1.65 | 0.95 |
| STA *16 | 1.52 | 1.20 |
| LDD *16 | 2.39 | 1.29 |
| STD *16 | 2.14 | 1.80 |
| LDF *16 | 3.12 | 1.66 |
| STF *16 | 2.72 | 2.41 |
| IRW 50 DX | 2.14 | 1.61 |
| IRR 50 DB | 2.14 | 1.61 |
| TRA PIE | 0.94 | 0.84 |
| TRR PCR | 3.44 | 2.83 |
| MCL PID | 8.38 | 8.05 |
| SRB 40 | 6.71 | 6.24 |
| LRB 40 | 7.57 | 4.11 |
| LBYT % LEFT | 2.22 | 1.38 |
| SBYT % LEFT | 2.87 | 2.22 |
| LBYT % RIGHT | 2.04 | 1.24 |
| SBYT % RIGHT | 2.48 | 1.93 |
| LDA !*16 | 2.39 | 1.29 |
| STA !*16 | 2.26 | 1.55 |
| IOX 302 | 5.02 | 3.64 |
| ION | 6.71 | 6.13 |
| MON 0 | 0.77 | 0.59 |
Page 249¶
Conditional JUMP-SKIP Instructions¶
Condition TRUE¶
| Instruction | Standard (in µs) | Fast CPU (in µs) |
|---|---|---|
| JAN *2 | 1.49 | 0.94 |
| JPC *2 | 1.49 | 0.94 |
| SKP DX EQL SA | 1.49 | 0.94 |
| BSKP ONE 10 DA | 1.95 | 1.30 |
| BSKP BCM 10 DA | 2.60 | 1.65 |
Condition FALSE¶
| Instruction | Standard (in µs) | Fast CPU (in µs) |
|---|---|---|
| JAN *2 | 0.87 | 0.71 |
| JPC *2 | 0.87 | 0.71 |
| SKP DX EQL SA | 0.87 | 0.71 |
| BSKP ONE 10 DA | 1.95 | 1.30 |
| BSKP BCM 10 DA | 1.95 | 1.42 |
Instructions with Data Dependent Execution Times¶
| Instruction | (in µs) Standard | (in µs) Fast CPU |
|---|---|---|
| MPY *5 | 7.49 | 5.57 |
| MIX3 | 0.78 | 0.60 |
| RMPY SX DT | 4.86 | 3.62 |
| RDIV ST % POS. NO. | 8.40 | 6.22 |
| RDIV SB % NEG. NO. | 7.75 | 5.82 |
| RDIV SX % OVERFLOW | 2.28 | 1.74 |
| FAD *7 | 4.55 | 3.13 |
| FAD *12 | 8.17 | 5.57 |
| FAD *15 | 13.46 | 9.55 |
| FSB *7 | 4.74 | 3.24 |
| FSB *12 | 11.00 | 7.70 |
| FSB *15 | 16.22 | 11.62 |
| FMU *7 | 18.82 | 13.89 |
| FMU *12 | 18.84 | 14.13 |
| FMU *20 | 18.82 | 13.90 |
| FDV *7 | 19.98 | 14.62 |
| FDV *12 | 20.15 | 14.78 |
| FDV *20 | 4.34 | 3.24 |
| NLZ 20 % 0 | 0.94 | 0.73 |
| NLZ 20 % 1 | 5.77 | 4.37 |
| NLZ 20 % 40000 (8) | 3.08 | 2.31 |
| DNZ — 20 % 0 | 1.88 | 1.45 |
| DNZ— 20 % 1 | 5.79 | 3.27 |
| DNZ — 20 % 40000 (8) | 2.07 | 1.59 |
| MIN *3 % SKP FALSE | 2.25 | 1.56 |
| MIN *3 % SKP TRUE | 2.82 | 1.79 |
| EXR SA | 0.91 | 0.69 |
| WAIT | ND-06.014.02 | 6.99 |
Rev. A
Page 250¶
MDS Parameters¶
| Symbol | Name | Description |
|---|---|---|
| WN | White Gaussian Noise | Variance is white, mean is zero |
| R | Reference Signal | Known signal used for comparison |
| X | Disturbance Signal | Unknown component in the multilook process |
| Y | Measured Signal | Sum of Reference and Disturbance signals |
Multilook Processing¶
The processing of multilook images involves combining several looks to improve the signal-to-noise ratio. Each look is an independent observation of the same scene and can, therefore, be considered a realization of the same underlying stochastic process.
References¶
- XYZ et al. (2023). Advanced Radar Techniques, Journal of Modern Signal Processing.
Page 251¶
Appendix B¶
Model 33 ASR/KSR Teletype Code (ASCII) in Binary Form¶
Hole Punched = Mark = 1
No Hole Punched = Space = 0
| Character | Description | Binary | |
|---|---|---|---|
| @ | SPACE | NULL/IDLE | 000000 |
| A | START OF MESSAGE | 000001 | |
| B | " | END OF ADDRESS | 000010 |
| C | # | END OF MESSAGE | 000011 |
| D | $ | END OF TRANSMISSION | 000100 |
| E | % | WHO ARE YOU | 000101 |
| F | & | ARE YOU | 000110 |
| G | ' | BELL | 000111 |
| H | ( | FORMAT EFFECTOR | 001000 |
| I | ) | HORIZONTAL TAB | 001001 |
| J | * | LINE FEED | 001010 |
| K | + | VERTICAL TAB | 001011 |
| L | , | FORM FEED | 001100 |
| M | - | CARRIAGE RETURN | 001101 |
| N | . | SHIFT OUT | 001110 |
| O | / | SHIFT IN | 001111 |
| P | 0 | DCO | 010000 |
| Q | 1 | HEADER ON | 010001 |
| R | 2 | TAPE (AUX ON) | 010010 |
| S | 3 | READER OFF | 010011 |
| T | 4 | (AUX OFF) | 010100 |
| U | 5 | ERROR | 010101 |
| V | 6 | SYNCHRONOUS IDLE | 010110 |
| W | 7 | LOGICAL END OF MEDIA | 010111 |
| X | 8 | S 0 | 011000 |
| Y | 9 | S 1 | 011001 |
| Z | : | S 2 | 011010 |
| [ | ; | S 3 | 011011 |
| \ | < | S 4 | 011100 |
| ] | = | S 5 | 011101 |
| ^ | > | S 6 | 011110 |
| _ | ? | S 7 | 011111 |
| 00 | Same | |
|---|---|---|
| 01 | Same | |
| 10 | Same | |
| 11 | Same |
RUB OUT - PARITY
ND-06.014.02
Page 252¶
B-2¶
| ND-06.014.02 |
Page 253¶
APPENDIX C¶
STANDARD ND-100 DEVICE REGISTER ADDRESSES AND IDENT CODES¶
In the following only the most frequently used Device Names are listed.
Two Device Names may use the same Device Register Address range. In these cases only the most common Device Name is listed.
Definitions:¶
Device Register Address = Device Number + Register Number.
Device Number = The lowest Device Register Address for each Device Name.
Register Number = Register Number within the Device (see the manual ND-100 Input/Output System, Appendix B).
| Interrupt Level | Description |
|---|---|
| Interrupt Level 10 | Output Devices (PIO). |
| Interrupt Level 11 | Mass Storage Devices (DMA). |
| Interrupt Level 12 | Input Devices (PIO). |
| Interrupt Level 13 | Real Time Clock. |
SINTRAN III Logical Device Number is a unique number for the Device Name.
Ident Code is a code sent from the device interface. The Ident Code tells the CPU which device asked for an interrupt. The Ident Code is unique for the Device Number on a specified Interrupt Level.
Page 254¶
STANDARD ND-100 DEVICE NUMBERS* AND IDENT CODES¶
| Device Reg. Address Range (octal) | Interrupt Level | SINTRAN III Logical Device Numbers* (octal) | Ident Code (octal) | Device Name |
|---|---|---|---|---|
| 4-7 | 4 | Memory Parity N-12/N-42 | ||
| 10-13 | 13 | 1 | Real Time Clock 1 | |
| 14-17 | 13 | 2 | Real Time Clock 2 | |
| 20-23 | 13 | 6 | Real Time Clock 3 | |
| 24-27 | 13 | 7 | External Interrupt | |
| 30-33 | 12 | 16 | NORD-50/1 | |
| 34-37 | 10 | 16 | ACM 5 | |
| 40-43 | 10 | 15 | ACM 1 | |
| 44-47 | 10 | 25 | ACM 2 | |
| 50-53 | 10 | 40 | ACM 3 | |
| 54-57 | 10 | 41 | ACM 4 | |
| 60-77 | NORD-50/1 Regs. | |||
| 100-107 | 10/12 | 6 | 4 | Sync. Modem 1 |
| 110-117 | 10/12 | 16 | 14 | Sync. Modem 2 |
| 120-127 | 10/12 | 30 | 20 | Sync. Modem 3 |
| 130-137 | 10/12 | 31 | 24 | Sync. Modem 4 |
| 140-147 | 10/12 | 26 | 30 | Sync. Modem 5 |
| 150-157 | 10/12 | 27 | 34 | Sync. Modem 6 |
| 160-167 | 10/12 | 40 | Sync. Modem 7 | |
| 170-177 | 10/12 | 10 | Sync. Modem 8 | |
| 200-207 | 10/12 | 7 | 60 | Terminal 17 |
| 210-217 | 10/12 | 17 | 61 | Terminal 18 |
| 220-227 | 10/12 | 52 | 62 | Terminal 19 |
| 230-237 | 10/12 | 53 | 63 | Terminal 20 |
| 240-247 | 10/12 | 54 | 64 | Terminal 21 |
| 250-257 | 10/12 | 55 | 65 | Terminal 22 |
| 260-267 | 10/12 | 56 | 66 | Terminal 23 |
| 270-277 | 10/12 | 57 | 67 | Terminal 24 |
| 300-307** | 10/12 | 1 | 1(120)*** | Terminal 1 |
| 310-317** | 10/12 | 11 | 5(121)*** | Terminal 2/TET 15 |
| 320-327** | 10/12 | 42 | 6(122)*** | Terminal 3/TET 14 |
| 330-337** | 10/12 | 43 | 7(123)*** | Terminal 4/TET 13 |
| 340-347 | 10/12 | 44 | 44 | Terminal 5/TET 12 |
| 350-357 | 10/12 | 45 | 45 | Terminal 6/TET 11 |
| 360-367 | 10/12 | 46 | 46 | Terminal 7/TET 10 |
| 370-377 | 10/12 | 47 | 47 | Terminal 8/TET 9 |
- A complete list of SINTRAN III Logical Device Numbers is found in SINTRAN III Reference Manual (ND-60.125).
** Terminal no. 1 is implemented on the CPU module. Terminals with device numbers 310-317, 320-327 and 330-337 are normally not used.
*** Number in parenthesis is valid for 4 current loop modules.
ND-06.014.02
Page 255¶
C-3¶
| Device Reg. Address Range (octal) | Interrupt Level | SINTRAN III Logical Device Numbers* (octal) | Ident Code (octal) | Device Name |
|---|---|---|---|---|
| 400 - 403 | 12 | 2 | 2 | Paper Tape Reader 1 |
| 404 - 407 | 12 | 12 | 22 | Paper Tape Reader 2 |
| 410 - 413 | 10 | 3 | 2 | Paper Tape Punch 1 |
| 414 - 417 | 10 | 13 | 22 | Paper Tape Punch 2 |
| 420 - 423 | 12 | 4 | 3 | Card Reader 1 |
| 424 - 427 | 12 | 14 | 23 | Card Reader 2 |
| 430 - 433 | 10 | 5 | 3 | Line Printer 1 |
| 434 - 437 | 10 | 15 | 23 | Line Printer 2 |
| 440 - 443 | 10 | 10 | 11 | Calcomp Plotter 1 |
| 444 - 447 | 10 | 50 | 12 | Card Punch 1 |
| 450 - 453 | 10 | 35 | 21 | Card Punch 3/Calc. 2 |
| 454 - 457 | 10 | 51 | 13 | Card Punch 2 |
| 460 - 467 | 10/12 | 31 | E & Pict. Syst. I/O | |
| 470 - 477 | 12 | Graphical Pen | ||
| 500 - 507 | 11 | 1 | 1 | Disk System 1 |
| 510 - 517 | 11 | 5 | 5 | Disk System 2 |
| 520 - 527 | 11 | 3 | 3 | Mag.Tape 1 |
| 530 - 537 | 11 | 7 | 7 | Mag.Tape 2 |
| 540 - 547 | 11 | 2 | 2 | Drum 1 |
| 550 - 557 | 11 | 6 | 6 | Drum 2 |
| 560 - 577 | 12/13 | 1006 | 156 | HDLC HASP 1 |
| 600 - 607 | 11 | 22 | 4 | Versatec 1 |
| 610 - 617 | 11 | 11 | 11 | Core -to-Core 1 |
| 620 - 637 | 11 | 36 | 10 | CDC I/O Link |
| 640 - 647 | 10/12 | 1040 | 124 | Terminal 33 |
| 650 - 657 | 10/12 | 1041 | 125 | Terminal 34 |
| 660 - 667 | 10/12 | 1042 | 126 | Terminal 35 |
| 670 - 677 | 10/12 | 1043 | 127 | Terminal 36 |
| 700 - 707 | 12 | 20 | 11 | CATSY 1 |
| 710 - 717 | 12 | 21 | 21 | CATSY 2 |
| 720 - 727 | 11 | 23 | E & S Pict. Syst. DMA | |
| 730 - 737 | 10 | 10 | D/A- Converter | |
| 750 - 753 | 13 | 5 | BIG MPM LOG Module | |
| 754 - 757 | 12 | 13 | Process Input 5 | |
| 760 - 767 | 10-11-12-13 | 100 | Test Card | |
| 770 - 773 | 12 | 17 | Dig. Reg. 1 Input | |
| 774 - 777 | 10 | 17 | Dig. Reg. 1 Output | |
| 1000-1003 | 12 | 26 | Dig. Reg. 2 Input | |
| 1004-1007 | 10 | 26 | Dig. Reg. 2 Output | |
| 1010-1013 | 12 | 27 | Dig. Reg. 3 Input | |
| 1014-1017 | 10 | 27 | Dig. Reg. 3 Output | |
| 1020-1023 | 12 | 43 | Dig. Reg. 4 Input | |
| 1024-1027 | 10 | 43 | Dig. Reg. 4 Output | |
| 1030-1033 | 12 | 116 | NORD 50/2 | |
| 1034 | Watch Dog | |||
| 1035 | Process Output 1 | |||
| 1036 | Process Output 2 |
ND-06.014.02
Page 256¶
C-4¶
| Device Reg. Address Range (octal) | Interrupt Level | SINTRAN III Logical Device Numbers (octal) | Ident Code (octal) | Device Name |
|---|---|---|---|---|
| 1037 | Process Output 3 | |||
| 1040-1043 | 12 | 15 | Process Input 1 | |
| 1044-1047 | 12 | 25 | Process Input 2 | |
| 1050-1053 | 12 | 40 | Process Input 3 | |
| 1054-1057 | 12 | 12 | Process Input 4 | |
| 1060-1077 | NORD-50/2 Reg. | |||
| 1100-1107 | 10/12 | 1044 | 130 | Terminal 37 |
| 1110-1117 | 10/12 | 1045 | 131 | Terminal 38 |
| 1120-1127 | 10/12 | 1046 | 132 | Terminal 39 |
| 1130-1137 | 10/12 | 1047 | 133 | Terminal 40 |
| 1140-1147 | 10/12 | 1050 | 134 | Terminal 41 |
| 1150-1157 | 10/12 | 1051 | 135 | Terminal 42 |
| 1160-1167 | 10/12 | 1052 | 136 | Terminal 43 |
| 1170-1177 | 10/12 | 1053 | 137 | Terminal 44 |
| 1200-1207 | 10/12 | 70 | 70 | Terminal 25 |
| 1210-1217 | 10/12 | 71 | 71 | Terminal 26 |
| 1220-1227 | 10/12 | 72 | 72 | Terminal 27 |
| 1230-1237 | 10/12 | 73 | 73 | Terminal 28 |
| 1240-1247 | 10/12 | 74 | 74 | Terminal 29/PHOTOS. 1 |
| 1250-1257 | 10/12 | 75 | 75 | Terminal 30/PHOTOS. 2 |
| 1260-1267 | 10/12 | 76 | 76 | Terminal 31/PHOTOS.3 |
| 1270-1277 | 10/12 | 77 | 77 | Terminal 32/PHOTOS. 4 |
| 1300-1307 | 10/12 | 60 | 50 | Terminal 9 |
| 1310-1317 | 10/12 | 61 | 51 | Terminal 10 |
| 1320-1327 | 10/12 | 62 | 52 | Terminal 11 |
| 1330-1337 | 10/12 | 63 | 53 | Terminal 12 |
| 1340-1347 | 10/12 | 64 | 54 | Terminal 13 |
| 1350-1357 | 10/12 | 65 | 55 | Terminal 14 |
| 1360-1367 | 10/12 | 66 | 56 | Terminal 15 |
| 1370-1377 | 10/12 | 67 | 57 | Terminal 16 |
| 1400-1407 | 10/12 | 1054 | 140 | Terminal 45 |
| 1410-1417 | 10/12 | 1055 | 141 | Terminal 46 |
| 1420-1427 | 10/12 | 1056 | 142 | Terminal 47 |
| 1430-1437 | 10/12 | 1057 | 143 | Terminal 48 |
| 1440-1443 | 12 | 101 | A/D Converter 1 | |
| 1444-1447 | 12 | 102 | A/D Converter 2 | |
| 1450-1453 | 12 | 103 | A/D Converter 3 | |
| 1454-1457 | 12 | 104 | A/D Converter 4 | |
| 1460-1463 | 12 | 105 | A/D Converter 5 | |
| 1464-1467 | 12 | 106 | A/D Converter 6 | |
| 1470-1473 | 12 | 107 | A/D Converter 7 | |
| 1474-1477 | 12 | 110 | A/D Converter 8 | |
| 1500-1507 | 10/12 | 1060 | 144 | Terminal 49 |
ND-06.014.02
Page 257¶
C-5¶
| Device Reg. Address range (octal) | Interrupt Level | SINTRAN III Logical Device Numbers (octal) | Ident Code (octal) | Device Name |
|---|---|---|---|---|
| 1510-1517 | 10/12 | 1061 | 145 | Terminal 50 |
| 1520-1527 | 10/12 | 1062 | 146 | Terminal 51 |
| 1530-1537 | 10/12 | 1063 | 147 | Terminal 52 |
| 1540-1547 | 11 | 17 | Big Disk System 1 | |
| 1550-1557 | 11 | 20 | Big Disk System 2 | |
| 1560-1567 | 11 | 1000-1002 | 21 | Floppy Disk 1 (Unit 0, 1, 2) |
| 1570-1577 | 11 | 1003-1005 | 22 | Floppy Disk 2 (Unit 0, 1, 2) |
| 1600-1603 | 11 | 14 | Versatec 2 | |
| 1604-1607 | HDLC Remote Load 1 | |||
| 1610-1613 | HDLC Remote Load 2 | |||
| 1614-1617 | HDLC Remote Load 3 | |||
| 1620-1623 | HDLC Remote Load 4 | |||
| 1624-1627 | HDLC Remote Load 5 | |||
| 1630-1633 | HDLC Remote Load 6 | |||
| 1634-1637 | HDLC Remote Load 7 | |||
| 1640-1657 | 12/13 | 150 | HDLC NORD-NET 1 | |
| 1660-1677 | 12/13 | 151 | HDLC NORD-NET 2 | |
| 1700-1717 | 12/13 | 152 | HDLC NORD-NET 3 | |
| 1720-1737 | 12/13 | 153 | HDLC NORD-NET 4 | |
| 1740-1757 | 12/13 | 154 | HDLC NORD-NET 5 | |
| 1760-1777 | 12/13 | 155 | HDLC NORD-NET 6 | |
| 100000-100003 | Bus Expander 0 | |||
| 100004-100007 | Bus Expander 1 | |||
| 100010-100013 | Bus Expander 2 | |||
| 100014-100017 | Bus Expander 3 | |||
| 100020-100023 | Bus Expander 4 | |||
| 100024-100027 | Bus Expander 5 | |||
| 100030-100033 | Bus Expander 6 | |||
| 100034-100037 | Bus Expander 7 | |||
| 100115 | ECCR | |||
| 100200-100203 | 13/13 | 20 | Bus Controller 1 | |
| 100204-100207 | 13/13 | 21 | Bus Controller 2 | |
| 100210-100213 | 13/13 | 22 | Bus Controller 3 | |
| 100214-100217 | 13/13 | 23 | Bus Controller 4 | |
| 100220-100223 | 13/13 | 24 | Bus Controller 5 | |
| 100224-100227 | 13/13 | 25 | Bus Controller 6 | |
| 100230-100233 | 13/13 | 26 | Bus Controller 7 | |
| 100234-100237 | 13/13 | 27 | Bus Controller 8 | |
| 100240-100243 | 13/13 | 30 | Bus Controller 9 | |
| 100244-100247 | 13/13 | 31 | Bus Controller 10 | |
| 100250-100253 | 13/13 | 32 | Bus Controller 11 | |
| 100254-100257 | 13/13 | 33 | Bus Controller 12 | |
| 100260-100263 | 13/13 | 34 | Bus Controller 13 |
ND-06.014.02
Page 258¶
Technical Data¶
Device Information¶
| Device Reg. Address Range (octal) | Interrupt Level | SINTRAN III Logical Device Numbers (octal) | Ident Code (octal) | Device Name |
|---|---|---|---|---|
| 100264-100267 | 13/13 | 35 | Bus Controller 14 | |
| 100270-100273 | 13/13 | 36 | Bus Controller 15 | |
| 100274-100277 | 13/13 | 37 | Bus Controller 16 | |
| 100300-100303 | 13/13 | 40 | Bus Controller 17 | |
| 100304-100307 | 13/13 | 41 | Bus Controller 18 | |
| 100310-100313 | 13/13 | 42 | Bus Controller 19 | |
| 100314-100317 | 13/13 | 43 | Bus Controller 20 | |
| 100320-100323 | 13/13 | 44 | Bus Controller 21 | |
| 100324-100327 | 13/13 | 45 | Bus Controller 22 | |
| 100330-100333 | 13/13 | 46 | Bus Controller 23 | |
| 100334-100337 | 13/13 | 47 | Bus Controller 24 | |
| 100340-100343 | 13/13 | 50 | Bus Controller 25 | |
| 100344-100347 | 13/13 | 51 | Bus Controller 26 | |
| 100350-100353 | 13/13 | 52 | Bus Controller 27 | |
| 100354-100357 | 13/13 | 53 | Bus Controller 28 | |
| 100360-100363 | 13/13 | 54 | Bus Controller 29 | |
| 100364-100367 | 13/13 | 55 | Bus Controller 30 | |
| 100370-100373 | 13/13 | 56 | Bus Controller 31 | |
| 100374-100377 | 13/13 | 57 | Bus Controller 32 |
ND-06.014.02
Page 259¶
APPENDIX D¶
INTERNAL REGISTERS¶
The following internal registers are implemented for internal control and status of the CPU. Format is given in the following table. Detailed descriptions are found in the sections specified.
| Register Name | No. | Description |
|---|---|---|
| PANS | 0 | Panel status register. Gives information to the microprogram about the display status. Also used by microprogram. |
| PANC | 0 | Panel Control. Controls the state of the display from the microprogram. Also used by microprogram. |
| STS | 1 | Status Register. Bits 0-7 are level dependent and accessible from user programs while bits 8-15 are system dependent and only accessible by system (TRA/TRR). |
| OPR | 2 | Operator's register. Implemented in firmware. |
| LMP | 2 | Display register. Implemented in firmware. |
| PGS | 3 | Paging status register. |
| PCR | 3 | Paging control register, (write). |
| PVL | 4 | Previous level. The content of the register is: IRR |
| IIC | 5 | Internal interrupt code. |
| IIE | 5 | Internal interrupt enable. |
| PID | 6 | Priority interrupt detect. |
| PIE | 7 | Priority interrupt enable. |
| CSR | 10 | Cache status. |
| CCLR | 10 | Clear cache |
| LCILR | 11 | Lower cache inhibit limit register |
| ACTL | 11 | Active level |
| ALD | 12 | Automatic load descriptor |
ND-06.014.02
Rev. A
Page 260¶
D–2¶
| UCILR | 12 | Upper cache inhibit limit register |
|---|---|---|
| PES | 13 | Parity error status |
| PGC | 14 | Paging control register read on specified level |
| PEA | 15 | Parity error address |
| [0] TRA PANS | DISP. | INP | RAN | PAN | PAN | 7 | FUNC | RAN | 5 | 4 | 3 | 2 | REFER SECTION |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PRESS | POY | NAL | INT. | 0 | 0 | 0 | 0 | 5 FUNC | 0 | 0 | 4 | 4 |
| [0] TRR PANC | 0 | 0 | READ | N.A. | 0 | PFUNC | 0 | WPAN | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [1] TRA STS | ION | PON | SEXI | N100 | 3 | 2 | 1 | 0 | PL | M | C | Q | Z | K | TG | PTM | 2.1.9 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [1] TRR STS | M | C | Q | Z | K | TG | PTM | 2.1.9 |
| [2] TRA OPR | 15 | 0 | 4.2.3.2.5 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [2] TRR UMP | 15 | 0 | 4.2.3.3.2 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [3] TRA PGS | FF | PM | PT | VPN | 2.3.8.3 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [3] TRR PCR | | | PT | APT | 3 | PL | | RING | | | | 2.3.8.2 | |-------------|---|---|---|---|---|---|---|-----|---|---|---|---|---|
| [4] TRA PVL | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 2 | PREV. LEVEL | 0 | 2.2.5.3 | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [5] TRA IIC | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | IIC CODE | 2.2.4.1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [5] TRR IIE | POW | MOR | PTY | IOX | PI | Z | II | PF | MPV | MC | 2.2.4.1 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [6] TRA/TRR PID | 15 | 0 | 2.2.3 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [7] TRA/TRR PIE | 15 | 0 | 2.2.3 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [10] TRA CSR | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | MAN | DIS | CON | CUP | DATALESS | 2.4.6.3.2 | |--------------|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|-----|-----|---|---------|
| [10] TRR CCLR | | | | | | | | | | | | | | | | | | | | 2.4.6.3.2 |
| [11] TRR LCIL | 13 | LOWER LIMIT PAGE NUMBER | 0 | 2.4.6.3.1 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [11] TRA ACTL | 15 | | | | | | | | | | | 0 | 4.2.4.3 | |---------------|----|---|---|---|---|---|---|---|---|---|---|---|---|-------|
| [12] TRA ALD | 0 | 0 | M | 0 | ADDRESS | 0 | | | | | | | | 4.2.5.3 | |-------------|---|---|---|---|---------|---|---|---|---|---|---|---|---|
| [12] TRR UCIL | 13 | | | | UPPER LIMIT PAGE NUMBER | | | | 0 | 2.4.6.3.1 | |---------------|---|---|---|---|---------------------|---|---|---|---|---|---|---|---|---|
| [13] TRA PES | Fench | DMA | Fatal | | ERROR CODE | | | 6 | 23 | 22 | 21 | | MEMORY ADDRESS | | 19 | 18 | 17 | 16 | | 0 | 2.4.4.2 | |--------------|-------|-----|------|---|-----------|---|---|---|---|---|---|---|----------------|---|---|---|---|---|---------------|
| [14] TRA 14 read paging control register | REQUIRE LEVEL INFORMATION IN A REGISTER BEFORE TRA 14 | 0 | PL | | 2.3.8.2 | |------------------------------------------|-------------------------------------------|---|---|---|----|----|------|--------|
| [15] TRA PEA | | 15 | MEMORY ADDRESS | 0 | | 2.4.4.2 | |--------------|---|---|----------------|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [15] TRR ECCR | N.A. | TEST | 6 | DIS | ANY | TEST | TEST | 15 | 0 | 2.4.4.1 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ND-06.014.02
Rev. A
BIT ASSIGNMENT FOR INTERNAL REGISTERS
Page 261¶
Appendix E¶
Operator's Communication Instruction Survey¶
E.1 Control Functions (Does Not Affect Display)¶
System Control¶
| Command | Function |
|---|---|
| OPCOM | Enter Operator's Communication mode |
| ESC key | Leave Operator's Communication mode |
| MCL ☐ | Generate Master Clear |
| STOP ☐ | Stop Program and enter OPCOM Mode |
| LOAD ☐ | Load according to ALD code (read by I/2/) |
| & or $ | Load from device x |
Program Control¶
!Continue Program from address of program counterxxxxxx!Start Program from address xZExecute a Single Instruction according to program counterxxxxxxZExecute x Instructions from address of program counterxxxxxx*Execute Program until program counter = x and stopxxxxxx'Execute Instruction Code x repeatedlyxxxxxxIO/nnnnnnExecute IOX instruction with device number xOPR= Output Data;n= Returned Data
Miscellaneous Functions¶
xxxx#Do Memory Test in segment x from address of B register to address of X register.P= Fail Address,T= Fail Bits,D= Fail Pattern,L= Test Pattern.
space or @Delete entrynnnnnnCurrent Location of memory examine is n (16 least sign. bits)OPR/nnnnnn zzzzzzChange Operators Panel "Switches" from n to z
ND-06.014.02
Rev. A
Page 262¶
E.2 DISPLAY FUNCTIONS (AFFECTS ONLY DISPLAY)¶
uuzzyxF
Define Format of Displayed Information (F = 3 default)
| x (3 bits) | 0 = Octal | 1 = Decoded according to z |
|---|---|---|
| 2 = Binary | ||
| y (3 bits) | 0 = Normal | 1 = Stretch Zeros |
| 2 = Stretch Ones | 3 = Stretch Zeros and Ones | |
| z (6 bits) | Decode the 4 bits to z + 3 to a ONE among ZEROs | |
| u (4 bits) | for Display Processor Maintenance |
1 = Display Year and Month
2 = Inhibit message
4 = Initialize panel processor
10 = Abort message
yxBUS/ Display Memory Accesses on NORD-100 Bus
| x (3 bits) | 0 = Undefined | 1 = Read Access |
|---|---|---|
| 2 = Write Access | 3 = Write or Read Access | |
| y (3 bits) | 0 = CPU Data | 1 = DMA Data |
| 2 = CPU Address | 3 = DMA Address |
ACT/ Display Computer Activity (default after MACL)
ND-06.014.02
Rev. A
Page 263¶
E.3 MONITOR FUNCTIONS (ALSO SHOWN ON DISPLAY)¶
Memory¶
- E ↓
- Set Physical Examine mode (default after MACL).
- xE ↓
- Set Virtual Examine mode. Map via page table x.
- xxxxxxxx/ nnnnnn zzzzzz ↓
- Examine and Change Content of memory address x from n to z. x is 24 bits at Physical and 16 bits at Virtual Examine.
- xxxxxx < yyyyyy ↓
- Dump Content of memory from address x to address y. Select 64K area of last Examine.
Registers¶
- xxRy/ nnnnnn zzzzzz ↓
- Examine and Change Content of register Ry on level xx from n to z. Ry may be written as R0=S, R1=D, R2=P, R3=B, R4=L, R5=A, R6=T, R7=X.
- xx < yyRD ↓
- Dump Registers R0 to R7 from level x to level y.
- U/ nnnnnn
- Content of User Register is n
- OPR/nnnnnn zzzzzz ↓
- Change Operators Panel "Switches" from n to z
Internal Registers¶
- Ixx/ nnnnnn
- Content of Internal Register No. x is n
| x (4 bits) | Description | |-----------|-------------| | 0 | PANS | | 1 | STS | | 2 | OPR | | 3 | PSR | | 4 | PVL | | 5 | IIC | | 6 | PID | | 7 | PIE | | 10 | CSR | | 11 | ACTL | | 12 | ALD | | 13 | PES | | 14 | PCR | | 15 | PEA |
- Content of Internal Register No. x is n
- Iyy/ nnnnnn zzzzzz ↓
- Deposit z in Internal Registers No. y (n is dummy)
| y (4 bits) | Description | |-----------|-------------| | 0 | PANC | | 1 | STS | | 2 | LMP | | 3 | PCR | | 5 | IIE | | 6 | PID | | 7 | PIE | | 10 | CCLR | | 11 | LCIL | | 12 | UCIL | | 15 | ECCR |
- Deposit z in Internal Registers No. y (n is dummy)
- IRD ↓
- Dump Internal Registers 0 - 15 (only in STOP)
- xx < yyRDE ↓
- Dump Scratch Registers from level x to level y
Deposit Rules¶
- Content is only changed by zzzzzz ↓ in STOP mode and by zzzzzzDEP ↓ in STOP or RUN mode.
- Content is unchanged by ↓ in STOP or RUN mode and by zzzzzz ↓ in RUN mode (? is answered).
Explanations:¶
- ☐ = Control Panel Button
- ↓ = Carriage Return
- n = computer answer
All other characters are typed by Operator.
ND-06.014.02
Rev. A
Page 264¶
I'm sorry, but the image you uploaded is blank. Could you provide another image or describe the content you need converted to Markdown?
Page 265¶
APPENDIX F¶
ND-100 TECHNICAL SPECIFICATIONS¶
F.1 SPECIFICATIONS¶
Processor:¶
| Feature | Specification |
|---|---|
| Microprocessor cycle time | 190 ns/150 ns (fast option) |
| CACHE memory size | 1K/31 bits |
| Paging overhead with CACHE | 0 |
| Paging overhead without CACHE | 50 ns |
Memory:¶
| Feature | Specification |
|---|---|
| Maximum virtual memory address space | 64 K words |
| Maximum physical memory address space | 512 K words normal address mode |
| 16 M words extended address mode | |
| Access time for Local Memory | read 320 ns |
| write 200 ns | |
| Add 40 ns if correction | |
| Error checking and correcting memory | 22 bits, single bit detection and correction |
| All double bit errors are detected | |
| Battery stand-by power for memory | Minimum 18 minutes |
Interrupt System:¶
| Feature | Specification |
|---|---|
| 16 priority interrupt levels each with 8 registers | |
| Context block switching time | Min. 5.0 μs. Typical 7.5 μs |
| External interrupt identification time | 3.3 μs typical |
I/O System:¶
| Feature | Specification |
|---|---|
| Maximum DMA rate/channel to local memory | 1.8 M words |
ND-06.014.02
Rev. A
Page 266¶
F.2 PHYSICAL¶
ND-100 CPU Crate, Rack Mountable:
Dimensions¶
| Height | 400 mm |
| Width | 482 mm |
| Depth | 505 mm |
Can be mounted in 19 inch cabinets of various heights, depending on configuration.
Power¶
- 230V, range 198 - 264V
- (115V, range 90-132V)
- 45-440 Hz
- Max. 2 Amp. 230V
ND 06 014 02
Rev. A
Page 267¶
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-100 Reference Manual | Manual number: |
What problems do you have? (use extra pages if needed)
Do you have suggestions for improving this manual?
Your name: _____ Date: __ Company: ____ Position: _ Address: ____________
What are you using this manual for?
Send to:
Norsk Data A.S.
Documentation Department
P.O. Box 4, Lindeberg Gård
Oslo 10, Norway
Norsk Data’s answer will be found on reverse side.
Page 268¶
Answer from Norsk Data¶
| Answered by | Date |
|---|---|
Norsk Data A.S.
Documentation Department
P.O. Box 4, Lindeberg Gård
Oslo 10, Norway
Page 269¶
NORSK DATA A.S¶
NORSK DATA A.S BOX 4 LINDEBERG GARD OSLO 10 NORWAY
Phone: 30 90 30
Telex: 18661
— we make bits for the future