Skip to content

Page 1

Test Micro Program Descriptions for ND-500


Page 2

Test Micro Program

Descriptions for

ND-500


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 © 1981 by Norsk Data A.S.


Page 4

PRINTING RECORD

Printing Notes
05/81 Version 01
09/81 Version 02

Test Micro Program Descriptions for ND-500
Publ. No. ND-30.013.02

NORSK DATA A.S
P.O. Box 4, Lindeberg gÄrd
Oslo 10, Norway


Page 5

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 6

PREFACE

THE PRODUCT

This manual describes the ND-500 micro test programs:

Program Description
COMTE ND-100/ND-500 communication test program
SLICE ND-500 slice test program
MEMIC ND-500 cache and memory test program
PREF ND-500 prefetch processor test program
ARITH ND-500 external arithmetic test program
NOMAN ND-500 no-memory-management test program
QMOFF ND-500 memory-management-off test program
QMENT ND-500 memory-management-on test program
TRAPT ND-500 trap system test program
EXTRA Extra ND-500 test program

THE READER

This manual is mainly written for the ND-500 production and service staff.

PREREQUISITE KNOWLEDGE

NORD I/O SYSTEMS.

These programs may be run by persons without detailed knowledge of ND-500. If errors are reported, however, a good knowledge of ND-500 hardware is necessary in order to locate and repair the errors.

THE MANUAL

This manual describes how to load and start the test programs. Some useful information about ND-500 hardware (registers etc.) is also included. Each test program describes: - What the separate tests do, - Which break characters to use, - What the U-register contains.

ND - 30.013.02,


Page 7

Related Manuals

ND-500 Reference Manual ND.05.009

Acknowledgement

The author is grateful for the willingness of the hardware chaps to supply the information necessary to the writing of this manual.

ND - 30.013.02


Page 8

TABLE OF CONTENTS

Section Page
1. Introduction. 1
2. A list of some abbreviations that occur in the text. 3
3. A short list of registers, IOX instructions etc. 5
3.1. The CONTROL word register on 3022. 5
3.2. The STATUS register on 3022. 5
3.3. The memory address register (MAR) on 3022. 5
3.4. The DATA register on 3022. 6
3.5. The DATAX register on 3022. 6
3.6. The DATA-IN register on 5015. 6
3.7. The DATA-OUT register on 5015. 6
3.8. The BREAK register on 5015. 6
3.9. The write address register (WA) on 5015. 6
3.10. The lower and upper limit registers (LL, UL) on 3022. 7
3.11. The control register (CSCNT) on 5015. 7
3.12. The TAG-IN register on 5015 (I/O from ND-100). 7
3.13. The TAG-OUT register on 5015 (data from ND-500). 8
3.14. IOX instructions. 8
3.15. Some widely used communication subroutines. 9
3.15.1. Master clear, set stop bit, reset tag bits. 9
3.15.2. Write tag from the A register. 10
3.15.3. Write data to 5015 from the A register. 10
3.15.4. Read data from 5015 to the A register. 10
3.16. Subroutines to write and read the control store. 12
3.16.1. Write a 16-bit word into the control store. 12
3.16.2. Read a 16-bit word from the control store. 12
3.17. Other registers used by the test programs. 13

ND - 30.013.02


Page 9

Section

Section Page
3.17.1. The prefetch status register (PSTAT, 32-bit, read only). 13
3.17.2. The (trap) status register S1. 15
3.17.3. The (trap) status register S2. 16
3.17.4. The memory and cache registers. 16
4.1. Data memory status registers (DST0, DSTS1, DSTS2). 17
4.2. Data memory control registers (DC0N0, DC0N1). 18
4.3. Instruction memory status registers (ISTS0, ISTS1, ISTS2). 18
4.4. Instruction memory control registers (IC0N0, IC0N1). 18
3.17.5. Memory modus register (MMOD). 18
3.17.6. Limit registers (HL,LL). 19
3.17.7. Memory management substitute registers. 19
3.17.8. Memory management registers. 20
8.1. Scratch files (ISCRF,DSCRF). 20
8.2. Status registers (IMSTS,DMSTS). 20
8.3. Logical address (IIADDR,DIADDR). 21
8.4. WIP/PGU broadside (IWPIGU,DWPIGU). 21
8.5. Real address (IRADDR,DRADDR). 21
8.6. Control registers (IMCNTR,DMCNTR). 21
8.7. Scratch file address (ISCFA,DSCFA). 22
8.8. Process control registers (IPROCC,DPROCC). 22
8.9. Domain registers (IDOMR,DDOMR). 22
8.10. Alternative domain registers (IADOM,DAD0M). 22
8.11. Current segment registers (ICSEG,DCSEG). 22
8.12. Alternative segment registers (IASG,DASEG). 22
8.13. Translate speed-up buffer page (ITSB,DTSB). 23
8.14. Sequential TSB address register (ISTS8,DSTS8). 23
8.15. Index for hashed or sequential TSB (IHXA,DHXA). 23

4. How to use the programs.

Section Page
4.1. Stand-alone. 25
4.2. SINTRAN. 25
4.2.1. Loading. 25
4.2.2. Running one program at a time. 26
4.2.3. Running all programs in sequence. 26
4.3. Break characters. 27
4.4. The A (all) and O (one-by-one) mode. 28
4.5. The user register. 29
4.6. Recommended executing sequence. 29
4.7. Stop on full page. 29

ND - 30.013.02


Page 10

Section

Page
5. The user micro program. 31
5.1. Description of the commands. 31
5.2. Some useful micro instructions. 33

6. COMTE - the ND-100/ND-500 communication test program.

6.1. General information. 35
6.2. How to load and start the program. 35
6.3. The test routines. 36
6.3.1. TST01 Continual master clear. 36
6.3.2. TST02 Set and reset stop bit. 36
6.3.3. TST03 Set and reset activate. 36
6.3.4. TST04 Set and reset reverse tag bus bit. 36
6.3.5. TST05 Test 3022 control register (bits 3-2 always 10). 36
6.3.6. TST06 Test 3022 status register. 37
6.3.7. TST07 Test 3022 memory address register. 37
6.3.8. TST08 Test 3022 data register. 37
6.3.9. TST09 Test 3022 lower limit register. 37
6.3.10. TST10 Test 3022 upper limit register. 37
6.3.11. TST11 Test tag dataway. 37
6.3.12. TST12 Test DATA-IN to DATA-OUT. 37
6.3.13. TST13 Test DATA-IN to WA-reg to DATA-OUT. 37
6.3.14. TST14 Test DATA-IN to BREAK-reg to DATA-OUT. 38
6.3.15. TST15 Test DATA-IN to CSCNT-reg to DATA-OUT. 38
6.3.16. TST16 Test TAG-OUT on 5015. 38
6.3.17. TST17 Test DATA-IN to DATA-OUT, most significant 16 bits. 38
6.3.18. TST18 Test control signals for load control store. 38
6.3.19. TST19 Test control signals for read control store. 38
6.3.20. TST20 Test write-and-read one 16-bit word in the control store. 39
6.3.21. TST21 Test control signals for start (from stop mode). 39
6.3.22. TST22 Test break (by setting WA=BREAK). 39

6.4. The verification routines.

6.4.1. TST23 Verify 3022 DATA register. 39
6.4.2. TST24 Verify 24 bits memory address register. 39
6.4.3. TST25 Verify 3022 CONTROL register (Bit 2=0. Bit 4=1 clears bit 6). 40

ND - 30.013.02


Page 11

Section

Section Page
6.4.4. TST26 Verify STATUS register (not bits 0, 5, 011 and 017). 40
6.4.5. TST27 Verify 3022 (DMA) lower limit register. 40
6.4.6. TST28 Verify 3022 (DMA) upper limit register. 40
6.4.7. TST29 Verify tag dataway. 40
6.4.8. TST30 Verify dataway, least significant 16 bits. 40
6.4.9. TST31 Verify WA register. 41
6.4.10. TST32 Verify BREAK register. 41
6.4.11. TST33 Verify CSCNT register. 41
6.4.12. TST34 Verify TAG-OUT. 41
6.4.13. TST35 Verify data least significant 16 bits controlled by MOST bit. 41
6.4.14. TST36 Verify data most significant 16 bits controlled by MOST bit. 42
6.4.15. TST37 Verify control store. 42
6.4.16. TST38 Verify load of WA, BREAK, CONTROL, TAG-OUT, and read back a lot of times. 42
6.4.17. TST39 Verify DATA-IN to DATA-OUT, 32 bits. 42

6.5. The micro programmed routines.

Section Page
6.5.1. TST40 Verify write-STATUS on 3022 from ND-500 (not bits 017, 011-7, 5, 0). 43
6.5.2. TST41 Verify write MAR on 3022 from ND-500. 43
6.5.3. TST42 Verify store-in-memory (write-DATA) from ND-500. 43
6.5.4. TST43 Verify read-and-write-STATUS on 3022 from ND-500 (not bits 017, 011-7, 5, 0). 44
6.5.5. TST44 Verify read-and-write-MAR on 3022 from ND-500. 44
6.5.6. TST45 Verify read-CONTROL-and-write-MAR on 3022 from ND-500 (not bits 6-3, always bit 2). 44
6.5.7. TST46 Verify read-and-write-DATA on 3022 from ND-500. 44
6.5.8. TST47 Verify DATA-IN to DATA-OUT, 32 bits, and then DATA-OUT-2 to DATA-OUT-1. 45
6.5.9. TST48 Verify lower and upper (DMA) limit registers during DMA transfer. 45
6.5.10. TST49 Micro programmed moving control store test. 45

7. SLICE - the ND-500 slice test program.

Section Page
7.1. General information. 47
7.2. How to load and start the program. 47
7.3. The test routines. 47
7.3.1. TST01 Test single step. 47
7.4. The verification routines. 48
7.4.1. TST02 Verify sequencing (single step a lot of NEXT). 48

ND - 30.013.02


Page 12

Section

Section Page
7.4.2. TST03 Verify sequencing (single step a lot of JMP *-1). 48
7.4.3. TST04 Verify sequencing (single step a lot of JSR SUB). 48
7.4.4. TST05 Verify sequencing (single step a lot of ALUJADIR and JMPCAR and W,XD). 49
7.4.5. TST06 Verify sequencing (single step a lot of ALUJADIR and JMPREL and NEXT). 49
7.4.6. TST07 Verify bit mask bits as A-opr and B-opr. 49
7.4.7. TST08 Verify AJBMR and BJBMR (bit mask register). 50
7.4.8. TST09 Verify all logical ALU functions. 50
7.4.9. TST10 Verify all arithmetical ALU functions. 50
7.4.10. TST11 Verify ND-500 registers (X#0-X#3, AM#0-AL#0-AM#1-AL#1, etc.). 51
7.4.11. TST12 Verify scratch registers as A-block and B-block. 51
7.4.12. TST13 Verify sequencing (conditional jumps). 51
7.4.13. TST14 Verify loop counter decrement (ICDECR). 52

8. MEMTC - the ND-500 cache and memory test program.

Section Page
8.1. General information. 53
8.2. How to load and start the program. 53
8.3. The test routines. 56
8.3.1. TST01 Test EA (OPR(32-bits)-to-X#0-to-EA). 56
8.3.2. TST02 Test data/instr. memory (OPR(32-bits)-to-memory). 56
8.4. The verification routines. 56
8.4.1. TST03 Verify address arithmetic. 56
8.4.2. TST04 Verify data memory (address in address). 57
8.4.3. TST05 Verify data memory (compl. of address in address). 57
8.4.4. TST06 Verify instruction memory (address in address). 57
8.4.5. TST07 Verify instruction memory (compl. of address in address). 57
8.4.6. TST08 Verify memory (write once and read five times). 58
8.4.7. TST09 Verify data read and write with 1, 2, 3, and 4 bytes. 58
8.4.8. TST10 Verify data cache directory. 58
8.4.9. TST11 Verify instruction cache directory. 58

9. PREEF - the ND-500 prefetch processor test program.

Page
59

ND - 30.013.02


Page 13

Section

Section Page
9.1. General information. 59
9.2. How to load and start the program. 59

9.3. The test routines.

| 9.3.1. TST01 Test prefetch clear and prefetch start. | 59 | | 9.3.2. TST02 Test prefetch clear, start, and continue. | 59 |

9.4. The verification routines.

| 9.4.1. TST03 Verify execution of instructions with no operands. | 60 | | 9.4.2. TST04 Verify execution of instructions without operands, with register number. | 60 | | 9.4.3. TST05 Verify execution of instructions with one operand. | 60 | | 9.4.4. TST06 Verify execution of GO:B. | 60 | | 9.4.5. TST07 Not yet implemented. | 61 | | 9.4.6. TST08 Verify execution of JMPMAP. | 61 |

10. ARITH - The ND-500 external arithmetic test program.

| | 63 |

10.1. General information.

| | 63 |

10.2. How to load and start the program.

| | 63 |

10.3. The test routines.

| 10.3.1. TST01 Test logical shift. | 63 | | 10.3.2. TST02 Test arithmetical shift. | 63 | | 10.3.3. TST03 Test rotational shift. | 63 | | 10.3.4. TST04 Test single floating sum (A+B). | 64 | | 10.3.5. TST05 Test single floating diff (A-B). | 64 | | 10.3.6. TST06 Test single floating mult (A*B). | 64 | | 10.3.7. TST07 Test single floating div (A/B). | 64 | | 10.3.8. TST08 Test convert to floating. | 64 | | 10.3.9. TST09 Test convert to integer. | 64 | | 10.3.10. TST10 Test single integer div (A/B). | 64 |

10.4. The verification routines.

| 10.4.1. TST11 Verify shift logical with shift count as argument. | 65 | | 10.4.2. TST12 Verify shift logical with shift count from shift count register. | 65 | | 10.4.3. TST13 Verify shift arithmetical with shift count as argument. | 65 | | 10.4.4. TST14 Verify shift arithmetical with shift count from shift count register. | 65 | | 10.4.5. TST15 Verify shift rotational with shift count as argument. | 65 | | 10.4.6. TST16 Verify shift rotational with shift count from shift count register. | 65 | | 10.4.7. TST17 Verify double floating sum. | 66 |

ND – 30.013.02


Page 14

Section

Section Page
10.4.8. TST18 Verify double floating diff. 66
10.4.9. TST19 Verify double floating mult. 66
10.4.10. TST20 Verify double floating div. 66

11. NOMAN - the ND-500 no-memory-management test program.

67

11.1. General information.

67

11.2. How to load and start the program.

67

11.3. The test routines.

67

11.3.1. TST01 Test no-memory-management registers

67

11.4. The verification routines.

67

11.4.1. TST02 Verify DCINHL-DClNlHJ-DZPA-DUPL.

67

11.4.2. TST03 Verify ICINHLH-ICINHLJ-IZPA-IUPL.

67

11.4.3. TST04 Verify DRADDRM and DRADDRL.

68

11.4.4. TST05 Verify IRADDRM and IRADDRL.

68

11.4.5. TST06 Verify cache inhibit for data memory.

68

11.4.6. TST07 Verify cache inhibit for instruction memory.

68

11.4.7. TST08 Verify that read and write only affects the DZPA-DUPL area.

69

11.4.8. TST09 Verify that read and write only affects the IZPA-IUPL area.

69

11.4.9. TST10 Verify data cache clear.

69

11.4.10. TST11 Verify instruction cache clear.

69

12. GMOFF - the ND-500 memory-management-off test program.

71

12.1. General information.

71

12.2. How to load and start the program.

71

12.3. The test routines.

71

12.3.1. TST01 Not yet implemented.

71

12.3.2. TST02 Dump routine for IWTIPGU/DWIPGU.

71

12.4. The verification routines.

72

12.4.1. TST03 Verify data scratch file (DSCFA and DSCRF).

72

12.4.2. TST04 Verify instr. scratch file (ISCFA and ISCRF).

72

12.4.3. TST05 Verify DLADDR and DRADDR.

72

12.4.4. TST06 Verify ILADDR and IRADDR.

72

12.4.5. TST07 Verify WIP-buffer for data memory (DWIPGU).

72

12.4.6. TST08 Verify PGU-buffer for data memory (DWIPGU).

72

12.4.7. TST09 Verify WIP-buffer for instr. memory (IWIPGU).

72

ND - 30.013.02


Page 15

Section

Section Page
12.4.8. TST10 Verify PGU-buffer for instr. memory (IWTIPGU). 73
12.4.9. TST11 Verify WIP and PGU for data memory write and read (HIC=1). 73
12.4.10. TST12 Verify WIP and PGU for instr. memory (HIC=1). 73

13. GMEMT - the ND-500 memory-management-on test program.

13.1. General information.

Page 75

13.2. How to load and start the program.

Page 75

13.3. The test routines.

  • 13.3.1. TST01 Test hashed TSB.
    • Page 75
  • 13.3.2. TST02 Dump routine for IWMIPGU/DWMIPGU.
    • Page 76
  • 13.3.3. TST03 Test sequential TSB (hash index = 0).
    • Page 76

13.4. The verification routines.

  • 13.4.1. TST04 Verify the hash addressed TSB for data memory (DTSB).
    • Page 77
  • 13.4.2. TST05 Verify the hash addressed TSB for instr. memory (ITSB).
    • Page 77
  • 13.4.3. TST06 Verify the sequential addressed TSB for data memory (DTSB).
    • Page 77
  • 13.4.4. TST07 Verify the sequential addressed TSB for instr. memory (ITSB).
    • Page 78
  • 13.4.5. TST08 Verify data cache clear.
    • Page 78
  • 13.4.6. TST09 Verify instr. cache clear.
    • Page 78

14. TRAPT - the ND-500 trap system test program.

14.1. General information.

Page 79

14.2. How to load and start the program.

Page 79

14.3. The test routines.

  • 14.3.1. TST01 Not yet implemented.
    • Page 79
  • 14.3.2. TST02 Not yet implemented.
    • Page 79

14.4. The verification routines.

  • 14.4.1. TST03 Verify S1 traps enabled by the TE register.
    • Page 79
  • 14.4.2. TST04 Verify S1 traps not enabled by the TE register.
    • Page 80
  • 14.4.3. TST05 Verify S2 traps.
    • Page 80
  • 14.4.4. TST06 Verify S1 bit 5 and 6 (zero and carry, integer arithmetic).
    • Page 80
  • 14.4.5. TST07 Verify S1 bit 5 (zero, floating

ND - 30.013.02


Page 16

Section

Page
arithmetic). 80
14.4.6. TST08 Verify S1 bit 6 and 011 (carry and overflow). 80
14.4.7. TST09 Verify S1 bit 7 (sign, integer arithmetic). 80
14.4.8. TST10 Verify S1 bit 7 (sign, floating arithmetic). 80
14.4.9. TST11 Verify S1 bit 010 and 6 and 5 (flag and carry and zero). 81
14.4.10. TST12 Verify overflow trap (S1 bit 011). 81
14.4.11. TST13 Verify floating underflow trap (S1 bit 015). 81
14.4.12. TST14 Verify floating overflow trap (S1 bit 016). 81
14.4.13. TST15 Verify single instruction trap (S1 bit 021). 81
14.4.14. TST16 Verify branch trap (S1 bit 022). 81
14.4.15. TST17 Verify address trap fetch (S1 bit 025). 82
14.4.16. TST18 Verify address trap read for data memory (S1 bit 026). 82
14.4.17. TST19 Verify address trap write for data memory (S1 bit 027). 82
14.4.18. TST20 Verify address zero access trap for instruction fetch (S1 bit 030). 82
14.4.19. TST21 Verify address zero access trap for data memory (S1 bit 030). 83
14.4.20. TST22 Verify disable process switch timeout (S1 bit 036). 83
14.4.21. TST23 Verify disable process switch error (S1 bit 037). 83
14.4.22. TST24 Verify index scaling error trap (S2 bit 0). 83
14.4.23. TST25 Verify illegal instruction code trap (S2 bit 1). 83
14.4.24. TST26 Verify illegal operand specifier trap (S2 bit 2). 83
14.4.25. TST27 Verify activate-from-ND-100 trap (S2 bit 5). 84
14.4.26. TST28 Verify terminate-from-ND-100 trap (S2 bit 6). 84
14.4.27. TST29 Verify IFAIL trap (S2 bit 010). 84
14.4.28. TST30 Verify DFAIL trap (S2 bit 011). 84
14.4.29. TST31 Verify processor fault trap (S2 bit 013). 84

15. FXTRA - the ND-500 extra test program.

15.1. General information.

85

15.2. How to load and start the program.

85

15.3. The test routines.

85

15.3.1. TST01 Not yet implemented.

85

ND - 30.013.02


Page 17

Section

Section Page
15.4. The verification routines. 85
    15.4.1. TST02 Verify index counters. 85
    15.4.2. TST03 Verify conversion (BYTH BYTW HWTW). 85
    15.4.3. TST04 Verify conditional ALU. 86
    15.4.4. TST05 Verify prefetch addressing modes. 86
    15.4.5. TST06 Verify W1:=DESC(L.0110:B)(R4). 86
    15.4.6. TST07 Verify INIT, CALL, ENTS, RET. 87

Appendix A

ND-500 micro mnemonics in alphabetical and numerical order 89

Index

119

ND - 30.013.02


Page 18

Introduction

1. Introduction

The micro test programs test the ND-500 by executing IOX-instructions. They do not use the interrupt system.

The micro test programs work in two ways: - They test the communication interfaces (3022, 5015) by executing IOX-instructions from the ND-100 (ND-500 is passive). In this way, the first testing of the ND-100/ND-500 communication is done. - They test ND-500 by loading small micro programs into the control store, starting them, and checking the results. These micro programs are always loaded from the specified minimum control store address. Utility micro programs, like dump programs, initiation programs, etc., are loaded into the uppermost part of the control store. The micro programs are relocatable.

The programs consist of sets of subroutines, each testing a small part of ND-500. There are two different kinds of subroutines: - Verification routines that run tests, check results, and report errors, if any. - Test routines, intended to run repeatedly and to be used together with oscilloscopes, logic probes, etc., to locate errors. As input to these routines there is a simulated OPR, with the possibility to flip (change from 0 to 1 to 0 to 1 ...) any of the bits in it.

Each program may run in one-by-one-mode (one routine runs over and over again), or in all-mode where all routines are run in sequence, one after another.

All the programs may also be run in sequence (one after another). This is intended for week-end runs, for instance. The programs may be started friday nights, and the results collected monday morning.

The error messages are assumed to be self-explanatory.

| ND - 30.013.02 |


Page 19

Introduction


ND - 30.013.02


Page 20

A list of some abbreviations that occur in the text

2. A list of some abbreviations that occur in the text

Some of the abbreviations are micro code mnemonics and should be looked for in the mnemonics list.

Abbreviation Description
ALT Alternative addressing mode.
BDU Data bus on the 3022 card.
CDB Internal bus for the ND-500 CPU cards.
DBU A bus between the 3022 card and the 5015 card.
DOUB Data bus on the 3022 card.
DUEN A decoded value in the TAGIN register on the 5015 card. It enables the least significant part of the DATA-OUT register (IODOUT).
DUT A bus on the 5015 card.
MM Memory Management system.
MOST Bit 7 in the TAGOUT register on the 5015 card. Will select the most or the least significant part of some 32 bit registers.
OPR Operator register. Will be displayed on the ND-100 front panel if the user types U/2F cr on terminal 1 when this is in monitor mode. It is used by most routines to display test information.
TE Trap enable register.
TSB Translation Speedup Buffer. Belongs to the memory management system.
WA Write Address register on the 5015 card. It holds a control store address.

Page 21

Abbreviations

A list of some abbreviations that occur in the text.


Page 22

A short list of registers, IOX instructions etc.

The interface between the ND-100 and the ND-500 consists of 2 interface cards; the 3022 card on the ND-100, and the 5015 card on the ND-500. These cards contain several registers, which are listed below.

3.1. The CONTROL word register on 3022.

Bit Meaning
0 Enable interrupt from ND-500
1 Not used
2 Activate ND-500 operation (and lock the communication)
3 Test mode
4 ND-500 programmed clear
5 Disable TAG-IN decoding when locked
6 DMA error
7 Command chaining
8-14 ND-500 operation
15 Not used

3.2. The STATUS register on 3022.

Bit Meaning
0 Interrupt enabled
1 Not used
2 ND-500 busy
3 ND-500 finished
4 Error
5 Interface locked
6 DMA error
7 ND-500 power fault (set by micro program). The stop bit is set
8 ND-500 power is/has been off
9 ND-500 micro clock has stopped
10-14 ND-500 stop reason
15 CONTROL register bit 15

3.3. The memory address register (MAR) on 3022.

This is a 24-bit register, pointing to the ND-100 memory. It is used in DMA transfers. It must be loaded from the 16-bit A-register in two operations. The most significant part is loaded first. It must also be read in two operations. The least significant part will be read first. When it is read, the upper half of the leftmost 16 bits of MAR (bits 24-31, not used) will be equal to the upper half of the rightmost 16 bits (bits 8-15).

ND - 30.013.02


Page 23

A short list of registers, IOX instructions etc.

3.4. The DATA register on 3022.

This is a 16 bit register. It acts as an intermediary between the ND-500 and the ND-100 memory in DMA transfers from ND-500 to ND-100. In DMA transfers from ND-100 to ND-500, the DATAX register is used as the intermediary register, but the DATA register is set, nonetheless.

3.5. The DATAX register on 3022.

This 16-bit register connects the bus DOUB with the bus BOU. It is also used in DMA transfers from ND-100 to ND-500. Do not confuse it with the DATA register.

3.6. The DATA-IN register on 5015.

This 32-bit register is either used as a whole, or as DATA-IN-1 (the lower 16 bits), and DATA-IN-2 (the uppermost 16 bits). When the other registers on the 5015 cards are loaded from ND-100, data goes via the DATA-IN register to the CDB bus. In DMA read (ND-100 memory read by ND-500), data will go to the DATA-IN register. The MOST bit selects the most or least significant part.

3.7. The DATA-OUT register on 5015.

This 32-bit register is either used as a whole, or as DATA-OUT-1 (the lower 16 bits), and DATA-OUT-2 (the uppermost 16 bits). When the other registers on 5015 are read from ND-100, data goes via DATA-OUT to ND-100. In DMA write (ND-500 to ND-100), data must be placed in DATA-OUT before the write. The MOST bit selects the most or least significant part.

3.8. The BREAK register on 5015.

This 16-bit register is used when the control store is loaded. Data to be loaded must be in the BREAK register. The BREAK register is connected to the least significant part of the CDB bus.

3.9. The write address register (WA) on 5015.

The 16-bit WA register is used to hold the control store address when loading and reading the control store. The WA register is connected to the least significant part of the CDB bus.

ND - 30.013.02


Page 24

A short list of registers, IOX instructions etc.

3.10. The lower and upper limit registers (LL, UL) on 3022.

These are 16-bit registers, and represent bits 8-23 of a DMA address. They are compared with bits 8-23 of the MAR register to ensure that ND-500 keeps within limits. For instance, if LL contains 1, and UL contains 3, the legal area for DMA transfers is 0400, 0401, ..., 01376, and 01377.

3.11. The control register (CSCNT) on 5015.

Bit Name Meaning
0 CSLOAD Control store load
1 CSREAD Control store read
2-5 WE0,WE1,WE2,WE3 Control store group (0-8)
6 BRKEN BREAK enable
7 STADREN Start address enable
8 TSTPTTY Test control-store-parity-checking (ND-500 passive)
9 TSTTIQ Returns TAG-OUT instead of TAG-IN
10 CSPTY Control store parity
11 AFIN Prefetch addr. calc. not finished
12 PFIN Prefetch instruction not finished
13 BALM Memory reference not finished
14-15 Not used

Bits 10-15 may only be read. They give micro program stop conditions.

3.12. The TAG-IN register on 5015 (I/O from ND-100).

The tag registers are additional control registers used to control the communication. Bits 0-3 in the TAG-IN register on 5015 give 16 code values. Bit 4 is not used, and bit 5 (octal 040) is used to return TAG-IN bits (0-4). The codes are:

Bit Name Meaning
0 Not used
1 DICLKl Clock DATA-IN-1 register
2 DICLK2 Clock DATA-IN-2 register
3 DUCLK Clock DATA-OUT register (both)
4 WAeLK Clock write-addr register
5 BRKCLK Clock BREAK register
6 TGUCUIK Clock TAG-OUT register
7 CNICLK Clock CSCNT register
8 DlEN Enable DATA-IN register to bus (CDB)
9 DUEN Enable DATA-OUT register (least sign.)
10 WAR Read write-addr register
11 BRKR Read BREAK register
12 CNTR Read CSCNT register
13 RESBRK Reset break
14 DUNI Unlock
15 EOUTEN Enable data line driver (from ND-500)

ND - 30.013.02


Page 25

A Short List of Registers, IOX Instructions Etc.

3.13. The TAG-OUT Register on 5015 (Data from ND-500).

Bits 0-2 in the TAG-OUT register on 5015 give 8 code values.
Bit 3 means ND-100 if it is 0, and not ND-100 if it is 1.
Bits 4-6 are not used.
Bit 7 is the MOST bit. It enables the most significant part of the DATA-OUT register, and determines which part of the register to use when micro-programmed. MOST also controls least/most significant part of the DATA-IN register. The codes are (for MOST=1, add 0200):

Bit Meaning
0 Read memory address register
1 Write memory address register
2 Read STATUS register
3 Write STATUS register
4 Read CONTROL register
5 Reset activate
6 Read DATA register (and ND-100 memory)
7 Write DATA register (and then into ND-100 memory)

3.14. IOX Instructions.

The ND-500 communication can be locked or unlocked, in test mode or not in test mode. These states are set by IOX ICON (load CONTROL register). IOX instructions have different meanings, depending on the state. In the following list, the three columns display the MAC mnemonics of physical device numbers, the octal device numbers themselves, and their meaning.

Locked and Not in Test Mode:

Mnemonic Octal Meaning
RSTA 062 Read STATUS register
MCLR 066 ND-500 Master Clear
TERM 067 Terminate
RTAG 070 Read TAG-IN
WTAG 071 Write TAG-OUT
WDAT 073 Write DATAX (NB not the DATA register)
SLOC 074 Set locked
CLKD 075 Clock DATA
UNLC 076 Release locked (unlock)
RETG 077 Return tag

Locked and In Test Mode:

Mnemonic Octal Meaning
RSTA 062 Read STATUS register
RCON 064 Read CONTROL register

ND - 30.013.02


Page 26

A short list of registers, IOX instructions etc.

Unlocked and not in test mode:

Code Description
RMAR 060 Read memory address register
LMAR 061 Load memory address register
RSTA 062 Read STATUS register
LCON 065 Load CONTROL register
MCLR 066 ND-500 Master Clear
TERM 067 Terminate
RTAG 070 Read TAG-IN
WTAG 071 Write TAG-OUT
WDAT 073 Write DATAX (NB not the DATA register)
SLOC 074 Set locked
UNLC 076 Release locked (unlock)
RETG 077 Return tag

Unlocked and in test mode:

Code Description
RMAR 060 Read memory address register (do it twice)
LMAR 061 Load memory address register (do it twice)
RSTA 062 Read STATUS register
LSTA 063 Load STATUS register
RCON 064 Read CONTROL register
LCON 065 Load CONTROL register
MCLR 066 Load DATA register
TERM 067 Load DATA register
RTAG 070 Load upper limit register
WTAG 071 Load upper limit register
RLOW 072 Read lower limit register
WDAT 073 Load lower limit register

ND-100 bits 0-15 go to limit register bits 8-23.

3.15. Some widely used communication subroutines.

The routines that follow below are written in MAC (assembly) code.

3.15.1. Master clear, set stop bit, reset tag bits.

IOX UNLC   % unlock
SAA 040
IOX LCON
SAA 2
IOX RETG   % set stop bit
IOX MCLR
SAA 0
IOX WTAG   % write TAG-OUT on 3022
SAA 044
IOX LCON   % activate
IOX UNLC
SAA 040
IOX LCON   % reset activate
EXIT

ND - 30.013.02


Page 27

A short list of registers, IOX instructions etc.

3.15.2. Write tag from the A register.

IOX WTAG  % write TAG-out on 3022
SAA 044
IOX LCON  % activate
IOX UNLC
SAA 040
IOX LCON  % reset activate
EXIT

3.15.3. Write data to 5015 from the A register.

The following routine uses the most/least significant part of the DATA-IN register, depending on the value of n (DATA-IN-1 is the least significant part):

IOX WDAT  % A register to DATAX
SAA n     % n=1: clock DATA-IN-1. n=2: clock DATA-IN-2
IOX WTAG
SAA 044
IOX LCON  % activate
IOX UNLC
SAA 040
IOX LCON  % reset activate
SAA 010   % enable DATA-IN to the CDB bus on 5015
IOX WTAG
SAA 044
IOX LCON  % activate
IOX UNLC
SAA 040
IOX LCON  % reset activate
EXIT

3.15.4. Read data from 5015 to the A register.

The following routine has 3 entry points. The first does not enable the DATA-OUT register (DUEN). The third does not clock the CDB bus to the DATA-OUT register.

ENTRY1=*

SAA 3
IOX WTAG  % clock CDB to DATA-OUT
SAA 044
IOX LCON  % activate
IOX UNLC
SAA 040
IOX LCON  % reset activate
JMP COMON

ND - 30.013.02


Page 28

A Short List of Registers, IOX Instructions etc.

ENTR2=*

SAA 3
IOX WTAG % clock CDB to DATA-OUT
SAA 044
IOX LCON % activate
IOX UNLC
SAA 040
IOX LCON % reset activate

ENTR3=*

SAA 011
IOX WTAG % enable DATA-OUT
SAA 044
IOX LCON % activate
IOX UNLC
SAA 040
IOX LCON % reset activate

COMON=*

SAA 017
IOX WTAG % enable data line driver (DUT to DBU)
SAA 044
IOX LCON % activate
IOX CLKD % clock DATA on 3022
IOX UNLC
SAA 050
IOX LCON % set test mode
SAA 0
IOX MCLR % read DATA (test mode)
STA SAVE
SAA 040
IOX LCON
SAA 0
IOX WTAG % reset tag bits
SAA 044
IOX LCON
IOX UNLC
SAA 040
IOX LCON % reset activate
LDA SAVE
EXIT
ND - 30.013.02

Page 29

A Short List of Registers, IOX Instructions Etc.

3.16. Subroutines to Write and Read the Control Store

The control store address is supposed to be in the WA register. The part number is a number in the range 0-010. A control store word consists of 9 16-bit words, and the part number points to one of these 9 words. Part number 010 (8) points to the most significant part. Data to be written must be in the BREAK register. Data that is read will appear in DATA-OUT-l. The WA register is set by the sequence

LDA ADDR; JPL WRDAT; SAA 4; JPL WRTAG

3.16.1. Write a 16-bit Word into the Control Store

The A register contains the 16 bit data word. The T register contains a control word that is 1, 5, 011, 015, ..., 041 depending on the part number (0-010).

STA SAVE
COPY SL DA
STA LINK
LDA SAVE
JPL WRDAT  % data to the CDB bus on 5015
SAA 5
JPL WRTAG % clock the BREAK register
COPY ST DA
JPL WRDAT % control word to the CDB bus
SAA 7
JPL WRTAG % clock the CSCNT register
LDA SAVE
JMP I LINK

3.16.2. Read a 16-bit Word from the Control Store

The A register contains a control word that is 2, 6, 012, 016, ..., 042 depending on the part number (0-010).

STA SAVE
COPY SL DA
STA LINK
LDA SAVE
JPL WRDAT % control word to the CDB bus
SAA 7
JPL WRTAG % clock the CSCNT register
JPL ENIR3 % read data, already in DATA-OUT
JMP I LINK

ND - 30.013.02


Page 30

A short list of registers, IOX instructions etc.

3.17. Other registers used by the test programs.

3.17.1. The prefetch status register (PSTAT, 32-bit, read only).

Bits Name Meaning
0-10 EP Operation code.
Bit 10 is 0: short operation code. Bits 8-9 are then both zero. Bits 0-7 contain 252 different operation codes, complemented, and not 256. The codes 111111xx, where x is 1 or 0, do not exist for short codes. When the six most significant bits are one, it means long operation code.
Bit 10 is 1: long operation code. Bits 0-9 contain 1024 different operation codes, complemented. A long operation code consists of 16 bits. The six most significant bits are 1, and, since EP is 11 bits long, 5 of them are discarded.
11-14 PCD Program counter displacement. Gives the length (complemented) of the current instruction. 017 means 1 byte, 016 2 bytes, and so on.
15-16 VLB Valid bytes. 3 means 4 bytes left in the instruction buffer, 2 means 3 bytes left, and so on.
17-19 OPTYP Operand type. From 0 to 5: word, float, halfword, byte, bit, and double float.
20 REGOP Register operand. 1 if the address code (first byte of operand specifier) was 0320-0323, otherwise 0.
21 CONOP Constant operand. 1 for constant operands as, for instance, in argument instructions, otherwise 0.

ND - 30.013.02


Page 31

A Short List of Registers, IOX Instructions Etc.

Bit Name Description
22 DESC Descriptor addressing. 0 if legal, otherwise 1.
23 WR Write operation. 1 if write operation, otherwise 0.
24 Not used.
25 PFIRST First operand. 1 for the first operand, otherwise 0. Becomes 0 as soon as the first operand has been fetched. For a sequence of LDR instructions, for instance, it will be 1 all the time.
26-27 DX Descriptor register. Used in descriptor addressing to give the number of the register to use. 3 means R1, 2 means R2, 1 means R3, and 0 means R4.
28-29 SXSEL Source register select. Gives the number of the source register, when there is one. 3 means R1, and so on.
30-31 DXSEL Destination register select. Gives the number of the destination register, when there is one. 3 means R1, and so on.

ND – 30.013.02


Page 32

A Short List of Registers, IOX Instructions etc.

3.17.2. The (trap) status register S1.

This is a 32 bit register. Only bits 9-31 can give a trap. If one of bits 9-29 is to give a trap, the corresponding bit must be set in the trap enable (TE) register.

Bit Meaning
0 Not used
1 Privileged instruction allowed
2 Part done
3 Instruction reference
4 Process switch disable
5 Zero
6 Carry
7 Sign
8 Flag
9 Overflow
10 Not used
11 Invalid operation
12 Divide by zero
13 Floating underflow
14 Floating overflow
15 BCD overflow
16 Illegal operand value
17 Single instruction trap
18 Branch trap
19 Call trap
20 Breakpoint instruction trap
21 Address trap fetch
22 Address trap read
23 Address trap write
24 Address zero access
25 Descriptor range
26 Illegal index
27 Stack overflow
28 Stack underflow
29 Programmed trap
30 Disable process switch timeout
31 Disable process switch error

If bits are going to be set in S1 by software, two mnemonics can be used. D,XST1 must be used to set the bits 17-19, 21-24, or 30-31. D,S1 must be used to set the other bits.

ND - 30.013.02


Page 33

A short list of registers, IOX instructions etc.

3.17.3. The (trap) status register S2.

This is a 12 bit register.

Bit Meaning
0 Index scaling error
1 Illegal instruction code
2 Illegal operand specifier
3 Instruction sequence error
4 Not used
5 Activate from ND-100
6 Terminate from ND-100
7 Not used
8 Instruction failure (PV, MOR, CPE, MME, MSE, PGE)
9 Data failure
10 Power fail
11 Processor fault

3.17.4. The memory and cache registers.

The cache length is always 4K. The width may be 32, 64, or 128 bits. This corresponds to (byte) address ranges of 0-0377777, 0-0777777, and 0-177777. If one cache module is present, the width is 32 bits. If 2, the width is 64 bits, and if 4 modules are present, the width is 128 bits.

The whole cache may be used (partitions 0-3). Two partitions may be used, 0-1, 1-2, or 2-3. Only one partition may be used, 0, 1, 2, or 3. The use of the cache is controlled by the data and instruction memory control registers. There are also status registers to display the status of the instruction and data cache.

ND - 30.013.02


Page 34

A short list of registers, IOX instructions etc.

3.17.4.1. Data memory status registers (DSTS0, DSTS1, DSTS2)

DSTS0

Bits Meaning
0-1 Partition number
2-3 Number of partitions (0-3 means 1-4)
4 TSB-fault
5 Memory parity error
6 Cache parity error + illegal use of cache
7 Blocked. If this bit is 1, then bits 8-15 in DSTS0 and bits 12-15 in DSTS1 will be blocked (they will not change).
8 Cache parity error, cache module 0.
9 " " " " 1.
10 " " " " 2.
11 " " " " 3.
12 Memory " " " 0.
13 " " " 1.
14 " " " 2.
15 " " " 3.

DSTS1

Bits Meaning
0 Memory parity error, byte 0 (bits 7- 0).
1 " " " 1 ( " 15- 8).
2 " " " 2 ( " 23-16).
3 " " " 3 ( " 31-24).
4 Cache " " 0 ( " 7- 0).
5 " " 1 ( " 15- 8).
6 " " 2 ( " 23-16).
7 " " 3 ( " 31-24).
8-9 Cache module number (0-3).
10 Memory timeout.
11 Illegal partition setting.
12 Cache control parity error, byte 0.
13 " " " 1.
14 " " " 2.
15 Cache clear is active.

DSTS2

Bits Meaning
0-7 Memory channel 0-7. If bit 10 in DSTS1 is 1, then some of the bits 0-7 will also be 1.

ND - 30.013.02


Page 35

A short list of registers, IOX instructions etc.

3.17.4.2. Data memory control registers (DCON0, DCON1)

DCON0

Bits Meaning
0-1 Select (the first) partition number
2-3 Number of partitions (0-3 means 1-4)
4 Cache disable (must be zero)

DCON1

Bits Meaning
0-1 Select cache module no. for bits 0-7, DSTSL
2 HIC (hit in cache).
3 Clear block.
4 TSB trap enable.
5 Memory parity error trap enable.
6 Cache parity error trap enable.
7 Memory out of range trap enable.

3.17.4.3. Instruction memory status registers (ISTS0, ISTS1, ISTS2)

These registers have the same format as the data memory status registers.

3.17.4.4. Instruction memory control registers (ICON0, ICON1)

These registers have the same format as the data memory control registers.

3.17.5. Memory modus register (MMOD)

Bit Meaning
0 Alternative address area (default).
1 Alternative address area selected by ALTMOD.
2 Lock until write (not used yet)
3 Data do not use cache
4 Instruction do not use cache
5 Instruction memory reference from micro code

ND - 30.013.02


Page 36

A Short List of Registers, IOX Instructions Etc.

3.17.6. Limit Registers (HL, LL)

These higher and lower limit registers contain 32 bit logical addresses. They are constantly compared to logical program and data addresses, and may give a trap condition if the proper address traps are enabled.

To get an address trap, the proper bit in TE must be set to 1. In addition, if the address of a memory reference (fetch, read or write) is called ADDR, trap depends on the value of D, SETLIM:

D, SETLIM Condition Trap Condition
0 LL < ADDR .AND. ADDR < HL is true gives trap
1 LL < ADDR .OR. ADDR < HL is true gives trap

When the ND-500 has memory management, and bits 31-27 in ADDR are all zero, the segment register will be taken as the uppermost 5 bits of ADDR in the comparison with LL and HL.

3.17.7. Memory Management Substitute Registers

ND-500 may be without memory management. Then, there will be some additional registers:

  • DZPA and IZPA: Data and instruction memory zero point adjust registers. They are 14-bit registers and contain page numbers. A page has 2K bytes. These registers point to the physical page in the memory where the first page of the program itself is loaded.
  • DUPL and IUPL: Data and instruction memory upper page limit register. They are similar to DZPA and IZPA, and point to the program's last physical page in the memory.
  • DCINHLU, DCINHLL, ICINHLU, and ICINHLL: Data and instruction memory cache inhibit limit registers, lower and upper. They are similar to DZPA and IZPA, and inhibit write into the cache memory when the actual program's physical page number is in the range lower to upper (LL <= pageno <= LU).
  • DRADDRL, DRADDRM, IRADDRL, IRADDRM: Data and instruction memory most significant real (physical) address registers. DRADDRL and IRADDRL contain 16 bits, and DRADDRM and IRADDRM contain 8 bits. A real address is a 24-bit byte address (a real address has actually 25 bits, but the most significant bit is removed). The page number in DZPA/IZPA multiplied by 04000 is added to a program's logical data and instruction addresses, and the result goes to the real address registers. If errors occur, the real address registers are locked (that is, new real addresses will not be loaded into them before the clear-block bit in DCON1/ICON1 is set).

Page 37

3.17.8. Memory management registers.

There are two sets of these registers, one for the data memory and one for the instruction memory.

A real address is a logical address translated by the memory management system. The translated address is then shifted one position to the right, thereby discarding bit 0. The real address is therefore a halfword address.

3.17.8.1. Scratch files (ISCRF, DSCRF).

These are two sets of 16 16-bit registers. Such a register is addressed by loading ISCFA or DSCFA with a number in the range 0-15. After each access, ISCFA or DSCFA is incremented by 1, modulo 16.

3.17.8.2. Status registers (IMSTS, DMSTS).

Bit Name Meaning
0 PALIT 0: ALIT mode. Locked by TSB-fault.
1 SMM0 0: SEGEQ (same segm). Locked by TSB-fault. The segment register and bits 31-27 of the logical address are equal.
2 SMM1 0: SEGZ (zero segm). Locked by TSB fault. Bits 31-27 of the logical address are zero.
3 PUS 1: Real-addressed page is used.
4 WIP 1: Real-addressed page is written into.
5 USED 0: Used. Dynamic USED-status of the hashed part of TSB. Only valid if bit 13=0.
6 TSBF 1: TSB-fault [PON=0: 0:
PON=1: 1 if bit 5=1 or not match].
7 NEWS 0: New segment (1 when DMSTS). Bits 31-27 of the logical address are not all zero, and they are not equal to bits 4-0 of the segment register.
8 MMTR 1: MM-trap (locked. Inclusive or of bits 6, compl(7), 9, 10,23).
9 ALTPV 1: ALIT protect violation.
10 WRPV 1: Write protect violation.
11 PON 1: Paging on.
12 TSBC 1: TSB clear is active (not completed). Match not found in sequential TSB, if TSB fault. Sequential TSB is accessed only if TSBF = 1 and if FAS2 = 1 (in IPROCC/DPROCC) and if USED = 0 (in actual hashed TSB entry)
13 FAS2A Match not found in sequential TSB, if TSB fault. Sequential TSB is accessed only if TSBF = 1 and if FAS2 = 1
14 SPARE Not defined.
15 SPARE Not defined.
16 SP0 1: Parity error 0 (PROCC-2, DMOJ-4).
17 SP1 1: Parity error 1 (DOM5-7, SEG0-4, AD19-26).
18 SP2 1: Parity error 2 (AD11-18).

ND - 30.013.02


Page 38

A Short List of Registers, IOX Instructions etc.

Register Description
19 SP3 1: Parity error 3 (BSG0-15).
Page number + two dummy bits.
20 SP4 1: Parity error 4 (the three permit bits). See ICSEG/DCSEG, bits 5-7.
21 SPARE 0
22 SPARE 0
23 BUFFP 1: OR-ed parity error (0 if PON=0 or not used).
24 TEO0 0: Match on PROC and DOM bit 0-4.
25 TEO1 0: Match on SSGM (or bits 27-31) and DOM bit 5-7.
26 TEO2 0: Match on log. addr. bits 11-18.
27 TEO3 0: Match on log. addr. bits 19-26.
28 USED 0: used. Static USED-status of the hashed part of TSB.
29 SPARE Not defined.
30 SPARE Not defined.
31 SPARE Not defined.

Locked bits are unlocked when the memory management is turned off, or when the TSB is written into.

3.17.8.3. Logical Address (ILADDR, DLADDR)

These two 32-bit registers hold the instruction and data logical addresses.

3.17.8.4. WIP/PGU Broadside (IWIPGU, DWIPGU)

A broadside is a 16-bit extract from a 16K bit buffer. There are two such buffers, one for WIP (written in page) and one for PGU (page used). The 16 bits represent one group of 16 pages. Each group is addressed by means of the 10 most significant bits of the real address. Bit 0 represents the page with the lowest page number of the 16, bit 15 represents the page with the highest page number. To read WIP or PGU, bit 9 in IMCNTR or DMCNTR has to be set. Then bit 7 in IPROCC or DPROCC selects either WIP or PGU. If 1, WIP is selected, and if 0, PGU. Default for this bit is 0.

3.17.8.5. Real Address (IRADDR, DRADDR)

These two 24-bit registers hold the instruction and data real addresses. A real address is a logical address translated by the memory management system, and then divided by 2. The result is a halfword address.

3.17.8.6. Control Registers (IMCNTR, DMCNTR)

Bit Meaning
4 Clear ITSB or DTSB.
9 Start to read IWIPGU or DWIPGU.

ND - 30.013.02


Page 39

A short list of registers, IOX instructions etc.

3.17.8.7. Scratch file address (ISCFA, DSCFA)

Two 4-bit registers, each pointing to one of the 32 scratch file registers (16 in each set).

3.17.8.8. Process control registers (IPROCC, DPROCC)

Bit Name Meaning
0 PROC0 Bit 0 of process number.
1 PROC1 Bit 1 of process number.
2 PROC2 Bit 2 of process number.
3 PON Paging on.
4 TSBD Disable TSB. 1: writing into TSB, 0: reading.
5 Not used.
6 FAS2 Enable use of sequential TSB (STSB).
7 SWIP Select WIP-part of IWIPGU/DWIPGU (default 0).

3.17.8.9. Domain registers (IDOMR, DDOMR)

Two 8-bit registers, containing the main domain number (0-255). In the ND-500 Reference Manual, DOMR is called CED (Current Executing Domain).

3.17.8.10. Alternative domain registers (IADOM, DADOM)

Two 8-bit registers, containing the alternative domain number (0-255). In the ND-500 Reference Manual, ADOM is called CAD (Current Alternative Domain).

3.17.8.11. Current segment registers (ICSEG, DCSEG)

Two 8-bit registers, containing the current segment number in bits 0-4, and the protect status in bits 5-7.

Bit Meaning
5 0: Shared segment status. 1: Not shared
6 0: Parameter access permitted. 1: Not permitted
7 0: Write permitted. 1: Not permitted

In the ND-500 Reference Manual, CSEG is called CES (Current Executing Segment).

3.17.8.12. Alternative segment registers (IASEG, DASEG)

Similar to current segment registers, but containing alternative segment number and status. In the ND-500 Reference Manual, ASEG is called CAS (Current Alternative Segment).

ND - 30.013.02


Page 40

3.17.8.13. Translate speed-up buffer page (ITSB, DTSB)

Two buffers, each contains 768 entries. Each entry contains:

  • 3 process number bits
  • 8 domain number bits
  • 8 segment number bits (3 of these are protect status bits)
  • 16 logical address bits (logical address bits 26-11)
  • 14 page number bits (the page part of the real address)
  • 2 dummy bits

One buffer is for data and one for instruction memory. Each buffer is divided into two sections. The lower section, with 512 entries, is addressed by a hashing algorithm, and the upper, with 256 entries, is addressed sequentially.

The hashing algorithm computes a 9-bit index by EXCLUSIVE OR-ing three numbers A, B, C. In the following, if AD31-27 are all zero, SEG4-0 comes from the segment register, bits 4-0. If AD31-27 are not all zero, SEG4-0 comes from AD31-27 (the five most significant bits of the logical address).

A
0 0 0 DOM0 DOM1 DOM2 DOM3
DOM4 DOM5
B
1 SEG0 SEG1 SEG4 SEG3 SEG2 PROC2
PROC1 PROC0
C
AD19 AD18 AD17 AD16 AD15 AD14 AD13
AD12 AD11

3.17.8.14. Sequential TSB address register (ISTSB, DSTSB)

Two 8-bit registers. Top of sequential buffer. 0 means that the sequential buffer is empty, 0377 means that it is full (255 entries). ISTSB/DSTSB must be set and updated by software (micro program).

3.17.8.15. Index for hashed or sequential TSB (IHXA, DHXA)

The lower 8 bits of the 9-bit index may be read and checked. There is one index for instruction memory, and one for data. Either the computed index for the hashed part of TSB is read, or ISTSB/DSTSB. This depends upon the value of bit 13 (FAS2A) of the status register (TMSTS/DMSTS). If this bit is 1, ISTSB/DSTSB is read. If it is 0, the computed index for the hashed part is read.

The most significant bit of IHXA/DHXA can not be read. It is assumed to be the opposite of AD19, when FAS2A=0.

ND - 30.013.02


Page 41

A Short List of Registers, IOX Instructions etc.


ND - 30.013.02


Page 42

How to use the programs

4. How to use the programs

The programs may be run in three different ways: without SINTRAN (stand-alone), one by one with SINTRAN, or all programs in sequence, with SINTRAN.

4.1. Stand-alone

To run the programs without SINTRAN, a diskette with the programs in BPUN format (as written on the diskette by MAC with the MAC command )BPUN ) must be used. Insert the diskette in the floppy disk drive, unit 0. Press MASTER CLEAR and type 1560k on terminal 1. The floppy monitor will be read from the diskette and respond by printing an asterisk. Type LOAD COMTE, LOAD SLICE, LOAD MEMIC, etc., etc., followed by carriage return, and the selected program will start.

4.2. SINTRAN

4.2.1. Loading

Before the programs can be run under SINTRAN, they must be loaded as RT-programs by the RT-loader. A diskette with the programs in BPUN format is needed. Insert the diskette in the floppy disk drive. The loading procedure is the same for each program. In the following, NAME is used as the name of the RT-program, d=directory, u=user, and nnn is the segment number:

Command Response
@ENT-DIR,,F-D=1,0 Response: @
@RT-LOADER Response: heading, asterisk.
*SET-P-T,2 Response: asterisk.
*CL-SEG,nnn Necessary to remove previous versions.
Y Response: asterisk.
*NEW-SFG,nnn,2,DM,,, Response: segment number message.
*READ-BIN,(d:u)NAME,, Response: asterisk.
*SET-L-A,nnn,177777 Response: asterisk.
*DEC-P,NAME,, Response: asterisk.
*END Response: asterisk.
*SET-P-T,2 Response: asterisk.
*CH-RT-D,NAME,10,nnn,,0, Response: asterisk.
*EX Response: @
@REL-DIR d

and the loading of the program is complete.


Page 43

How to use the programs

4.2.2. Running one program at a time

To start one of the programs, log in as user SYSTEM or RT on terminal 1. Type the commands

@RT,NAME
@LOG

and the program will start on terminal 1, when it is free to use.

It is also possible to log in as user RT on any terminal and start the background program STMIC (short for STart MICro test program). Before this can be done, the file STMIC:BPM must have been loaded and dumped by the commands

@PLACE,STMIC
@DUMP,STMIC,0,0

by the user RT. STMIC will ask for which RT program to start, and then it will start this RT program directly on the terminal of the user. STMIC uses the file N500-TEST-PARAM:DATA.

4.2.3. Running all programs in sequence

It is possible to run all the programs in sequence, one after another. This requires the loading and starting of another RT-program called HAREM. This program is able to start any of the micro test programs. When HAREM is started, it will ask for all parameters needed, put them on a file, and start (for instance) COMTE. When COMTE has completed a run, it will give control back to HAREM, which will then start SLICE, and so on. When the last one is done, it will start the first one again. The programs will take their parameters from the file which has the name:

N500-TEST-PARAM:DATA

If the file does not exist, HAREM will create it as a continuous file with one page and save the parameters on it. This means that user RT must have some free pages.

ND - 30.013.02


Page 44

How to use the programs

4.3. Break characters

The program execution may be interrupted by break characters, which act as commands. When a character is typed on the terminal, the program will stop normal execution and respond with the appropriate action, perhaps after a slight delay. After the proper action for the break character is carried out, the program will continue automatically, or ask for another break character. The break characters are letters only, with one exception:
If escape is typed, the program will halt and wait for the next break character. If any character other than a break character is typed, an error message will be printed, and the program continues. Escape may also be typed as a response to questions from the programs. Another break character must then be typed. This may be useful when the user does not want to answer the question, but instead wants to restart the program, etc.
The break characters are:

Character Description
C Octal control store dump. Will ask for first and last address of the control store area to be dumped. Each control store location is dumped as an address and 9 16-bit numbers. After this, the program will be in one-by-one mode.
D Display current test subroutine (symbolic). Lists the symbolic ND-500 micro code if the test is micro programmed. If not, pseudo assembly code is listed.
E End of program.
F Flip (switch) simulated OPR bit. Will ask for bit number of the bit to flip. After this, the specified bit in the simulated OPR will be alternately 1 or 0.
G ND-500 register dump. A micro program will be started. It will read and send the contents of most of the ND-500 registers to ND-100 for dumping. After this, the program will be in one-by-one mode.
I Initialise the program. The program is restarted at its very beginning.
L LMP. The value of the user register is dumped. Useful in the case where ND-100 is without a front panel. This is a 16-bit register.
M ND-500 memory dump. The first and last ND-500 memory address of the area to dump will be requested. A micro program will be started. It will read from the ND-500 memory and send to ND-100 for dumping. After this, the program will be in one-by-one mode.
N Start the next test subroutine.
O OPR. The value of simulated OPR will be printed out. The program will not continue before a new value, or CR (carriage return) is given. CR means that the old value will remain unchanged. The simulated OPR is a 32 bits register.

Page 45

How to use the programs

O
OPR. The value of simulated OPR will be printed out. The program will not continue before a new value, or CR (carriage return) is given. CR means that the old value will remain unchanged. The simulated OPR is a 32 bits register. Most of the routines in COMME, though, will use only the lower part of OPR.

P
Start the previous test subroutine.

R
Repeat the current test subroutine. After this, the program will be in one-by-one-mode.

S
Stop. Returns to the last question in the initiation. After this question has been answered, a memory initiation routine will set some memory registers and clear the cache. This is very useful whenever the power has been turned off.

T
Trace micro program addresses. Will trace an already loaded micro program, and print out the addresses of the micro program as it is executed. It asks for start address. A sequence of micro addresses, with no jumps, will be dumped as two numbers, the first and the last of the sequence. It is also possible to specify a break address, and to have printed the last 0100 micro addresses before the break. After this, the program will be in one-by-one mode.

U
User micro program. The user may enter his own micro program, or modify an already loaded one, and then start the program. Before the program is started, the ND–500 DATA-IN register is loaded with simulated OPR. If ND–500 unlocks, the micro address is printed, and the ND–500 DATA-OUT register is read by ND–100 and dumped in three different formats. The micro program is then continued. After this, the program will be in one-by-one mode. The user micro program is described in a separate chapter.

W
Write error messages. Used to turn on error messages in one-by-one mode.

X
Exclude error messages. Used to turn off error messages in one-by-one mode.

esc
Wait for the next break character.

4.4. The A (all) and O (one-by-one) mode

A program can be run in A mode or O mode. A means that the routines in the program are all run, one after another. When all the routines have been executed, the process is repeated. O means that only one routine is run, repeatedly. This continues until a break character is typed, for instance N or P. When the programs are run under HAREM control, the mode is always A. When the mode is A mode, and a routine has printed the maximum number of error messages, the next routine is entered immediately.

ND – 30.013.02


Page 46

How to use the programs

4.5. The user register

The user register may be displayed on the ND-100 front panel. The different subroutines use this register for the display of test values, addresses, etc. This may be helpful when the tests are run, because one is able to follow the progress of each test. The contents of the user register is described for each test.

It is important that the programs are run in a proper sequence. The first run should be COMWF, and maximum control store address should be specified as zero. The communication between ND-100 and ND-500 will then be tested only from ND-100. After this, SLICE should be run, to check that the sequencing works. When this is OK, COMWF should be run with the maximum control store address different from zero, to test the communication from the ND-500 side also. After this, SLICE should be run, and MEMMC, if ND-500 has memory, and then the remaining programs. At present, the maximum control store address is usually specified as 010000.

4.7. Stop on full page

It is possible to make the program halt when a full page has been written on the terminal. A full page has 22 lines. To continue, the user must type one character. The program will then continue. The character will be ignored by the program and cannot be used as input. If the user wishes to type a break character when the program has written a full page, he should first type the escape character, and then the break character.

ND - 30.013.02


Page 47

How to use the programs

ND - 30.013.02


Page 48

The User Micro Program

5. The User Micro Program

5.1. Description of the Commands

When the user types the break character U, a special program is entered. It makes it possible for the user to create, modify, and start his own micro program. This special program has its own set of commands:

Command Description
C Control store dump
D Disassembly of micro instructions
G Get back saved micro program (see P)
H Help (list the commands)
K Continual master clear
L Look-at control store or memory
M Mnemonics list
P Put octal micro program into the save area
R Run
S Symbolic assembly
esc Exit. Waits for break character

When the program is ready for a command, it prints U:. One of the command letters should then be typed by the user. If a letter is typed before the program is ready for a command, it will be taken as a break character. In this way, the OPR register may be changed while the user micro program is executed. Below follows a description of the commands:

C This is the usual control store dump.

D The contents of the control store will be disassembled into symbolic micro instructions. The first and last control store addresses will be requested. It is possible to output the disassembled micro instructions to a file, if the test program runs under SINTRAN. The file name will be requested.

G Gets back a saved octal micro program. There is a memory area in ND-100 with room for 0200 (128) micro instructions. If a micro program has been saved (Put) there, it will be loaded back into the proper addresses in the control store.

H Help. Will print a list of commands.

ND - 30.013.02


Page 49

The User Micro Program

K

Continual master clear (please excuse the K, as C was already used!). This routine will first call the master clear routine, and then remove the stop bit. Then, it will give continual master clear with a frequency determined by the OPR register. OPR=0 will give the highest frequency, and OPR=077777 will give the lowest. Continual master clear is very useful for debugging, as it starts the micro program in address 0 over and over again.

L

Look-at control store (C), instruction memory (I), or data memory (D). If the next character typed is C, this can be used to inspect and maybe change the octal contents of the control store. The routine will ask for control store address, and then print out the contents of the control store, one part at a time. After an octal number has been printed, the user can change it by typing another number, followed by CR (carriage return). If no change is wanted, CR must be typed. This proceeds until the user types a point (full stop) instead of a new number or CR. The program will then ask for the next command.

If the next character typed is I or D, the instruction or data memory may be inspected and/or changed. The routine will first initiate some memory registers and clear the cache. After this, the procedure is the same as for look-at control store.

M

This command will produce the list of the micro code mnemonics, together with their values. There are over 720 such mnemonics.

P

Puts an octal micro program into the save area, which is an area in the ND-100 memory with room for 128 micro instructions. The routine will request the first and last control store addresses. It is very useful to save an octal micro program while the ND-500 is being debugged. If the user wants to put a printed circuits board on an extension board, for instance, the power must be turned off, and his micro program will disappear. Therefore, it should first be saved by typing P.

R

Run a micro program. The start address will be requested. Before the micro program is started, the OPR register is loaded into IODIN (the DATA-IN register), and then the micro program runs until it is stopped by the user, or until ND-500 unlocks. When ND-500 unlocks, ND-100 will print out the micro address of the next instruction and the value of IODOUT (the DATA-OUT register) in three different formats, word, halfword, and byte. After this, ND-100 will load the value of OPR into IODIN and continue the micro program. The user can stop all this by typing the break character u. Control will then be returned to the user program. Remember that the OPR register may be changed at any time during the run of a micro program, but IODIN will not be loaded with this value unless ND-500 unlocks.


ND – 30.013.02


Page 50

The User Micro Program

Symbolic Assembly

The control store address will be requested. The user types mnemonic codes, separated by space, and the program will translate them to octal. When a semicolon is typed, the octal micro instruction will be loaded into the control store. Long arguments and jump addresses must be typed as two 16 bit octal numbers. For instance, a long argument may be typed as 6,6. The jump address 5 must be typed as 5,0. A short argument, for instance 3, can be typed as 0,3 or only as 3. After the last semicolon, a point (full stop) will end the assembly. An incorrect mnemonic will be ignored, or it may be erased (before the separating space is typed) by typing ctrl W. If the same mnemonic is typed twice, the whole micro instruction is deleted (set to zero).

It is possible to assemble symbolic files from the disk, if the test program runs under SINTRAN. The file name will be requested. In this case, comments (%) are skipped during the assembly. If the file is not ended by a full stop (.), end-of-file will simulate it.

5.2. Some Useful Micro Instructions

ALU,ADIR A,XD,IODIN SLOW1 D,IODOUT NEXT;
    % This loop can be used to
    % check the bus from IODIN
    % through ALU to IODOUT by
UNLOCK NEXT; % changing simulated OPR.
W,XD NEXT;
JMP BACKTHREE;

ALU,ADIR A,XD,SARG SLOW1 2 D,TAG NEXT;
    % read STATUS to IODIN-1
W,IO NEXT;

ALU,ADIR A,XD,SARG SLOW1 3 D,TAG NEXT;
    % write IODOUT-1 to STATUS
W,IO NEXT;

In the next example, the MOST bit (0200) selects IODIN-2.
The two parts of MAR will be read alternately, and are not dependent on the MOST bit.

ALU,ADIR A,XD,SARG SLOW1 0 D,TAG NEXT;
    % least sign MAR to IODIN-1
W,IO NEXT;
ALU,ADIR A,XD,SARG SLOW1 0200 D,TAG NEXT;
    % most sign. MAR TO IODIN-2
W,IO NEXT;
ALU,ADIR A,XD,IODIN SLOW1 D,IOODUT NEXT;
ALU,ADIR A,XD,SARG SLOW1 0201 D,TAG NEXT;
    % IODOUT-2 to MAR
W,IO NEXT;
ALU,ADIR A,XD,SARG SLOW1 1 D,TAG NEXT;
    % IODOUT-1 to MAR
W,IO NEXT;

ALU,ADIR A,XD,SARG SLOW1 6 D,TAG NEXT;
    % read 16 bit from ND-100
W,IO NEXT;
    % MAR was already set
ALU,ADIR A,XD,IODIN SLOW1 D,IODOUT NEXT;
    % 16-bit word to IODOUT
ALU,ADIR A,XD,SARG SLOW1 7 D,TAG NEXT;
    % write to next ND-100 word
W,IO NEXT;
    % MAR was autom. incr.

In the examples above, with tag codes 0 to 7, it is the least significant part of IODOUT that is used. If the most significant part is wanted, 0200 must be added (0200 to 0207).

ND – 30.013.02

Page 51

The User Micro Program

ALU,A=B A,X#0 B,X#0 SEM COND,MZRO NEXT;  % condition is now true
C,SEQ JMP PREVIOUS F,NEXT;
UNLOCK NEXT;
W,ND NEXT;                                % stop
JMP BEGIN;                                % continue here after stop

ALU,ADIR A,XD,SARG SLOW1 0100 D,LC NEXT;  % loop counter:=0100
LCDECR NEXT;                              % decrement loop counter
ALU,ADIR A,XD,LC SLOW1 D,IOODUT NEXT;
UNLOCK NEXT;
W,ND NEXT;
JMP BACKFOUR;                             % jump to new decrement

In the following example, the contents of X#0 is written to the memory. X#1 holds the memory address.

ALU,ADIR A,XD,SARG SLOW1 0 D,MMOD NEXT;  % data memory
ALU,ADIR A,X#0 PASSAB AB,IX IX1 MEM,WR4 W,MEM NEXT;

ALU,ADIR A,XD,SARG SLOW1 040 D,MMOD NEXT;  % instr mem.
PASSAB AB,IX IX1 AD,ILC NEXT;
ALU,ADIRC A,X#0 SLOW1 D,IDAT MEM,WR4 W,MEM PASSAB NEXT;

Next, the contents of the memory word whose address is in X#1, is read to X#0.

ALU,ADIR A,XD,SARG SLOW1 0 D,MMOD NEXT;  % data memory
PASSAB AB,IX IX1 MEM,RD4 W,MEM NEXT;
ALU,ADIR A,DATA D,X#0 NEXT;

ALU,ADIR A,XD,SARG SLOW1 040 D,MMOD NEXT;  % instr mem.
PASSAB AB,IX IX1 AD,ILC NEXT;
A,XD,IDAT XMOV D,CONST MEM,RD4 W,MEM PASSAB NEXT;
ALU,ADIRC A,XD,CONST SLOW2 D,X#0 NEXT;

Next, the B-operand is converted from byte to halfword:

ALU,BDIR B,X#0 TYP,BY BYTH SLOW1 D,IOODUT NEXT;

Please remember that a lot of small micro programs may be studied by typing D when the test programs are running!

ND - 30.013.02

Page 52

COMTE - the ND-100/ND-500 communication test program

6. COMTE - the ND-100/ND-500 communication test program

6.1. General Information

COMTE tests the communication between ND-100 and ND-500. The first 22 routines are not verification routines. The first 39 routines are not micro programmed. They just use IOX instructions from the ND-100, the ND-500 being passive. If the user wants to know what the different routines do, the break character D will dump the symbolic micro code of the test, or pseudo assembly code. The break character C may then be used to inspect the octal micro program. It is always loaded from the minimal control store address.

6.2. How to load and start the program

Stand-alone: MASTER CLEAR. 1560&. *LOAD COMTE.

SINTRAN: @RT COMTE and possibly @LOG, or @STIMIC.

COMTE first asks whether the user wants to run on another terminal. If the answer is Y, COMTE will request a decimal logical device number (SINTRAN), or an octal physical device number (stand-alone).

If the program runs under SINTRAN, it will reserve the ND-500 and possibly some memory (COMTE needs no ND-500 memory). COMTE will ask all the necessary questions.

COMTE asks for maximum control store address. Answer 0, and the micro programmed routines will not be used. Answer 02000, 010000, etc., depending on the hardware configuration, and tests both with ND-500 passive and ND-500 active (micro programmed) will be run.

COMTE asks for minimum control store address. The answer should be less than maximum control store address. If this address is different from zero, the micro programs will be relocated when they are loaded.

COMTE asks for stop on full page. If you want the program to pause when 22 lines have been printed on the terminal, you should type Y, otherwise N. Stop on full page is useful when you are using a screen terminal.

COMTE asks for TEST, VERIFY, OR BOTH?

Answer Routine Execution
T Only routines 1 to 22 are run.
V Only routines 23 to 49 are run.
B All routines are run.

ND - 30.013.02


Page 53

COMTE - the ND-100/ND-500 communication test program

COMTE asks if you want information. If the answer is Y, a list, describing the two modes and the break characters, is printed.

COMTE asks if the tests are to be run all in succession, or one by one. If the answer is the letter O, COMTE will ask for the routine number, and if error messages are wanted. Then the routine with the given number will be run repeatedly.
If the answer is A, all routines will be run in succession in a ring.

The execution of the program may be interrupted and changed at any time by the typing of break characters.

6.3. The test routines

6.3.1. TST01 Continual master clear

Will give master clear (IOX MCLR) continually. The frequency depends on simulated OPR. This routine may be used to start a micro program in address 0 again and again, if the stop bit is off.
The user register is not used.

6.3.2. TST02 Set and reset stop bit

Will switch (flip-flop) the stop bit (IOX RETG) continually (from bit 1 in the A-register).
The user register is not used.

6.3.3. TST03 Set and reset activate

Will switch (flip-flop) the activate bit (IOX LCON) continually (from bit 2 in the A-register).
The user register is not used.

6.3.4. TST04 Set and reset reverse tag bus bit

Will switch (flip-flop) the reverse tag bus bit (IOX RETG) continually (from bit 0 in the A-register).
The user register is not used.

6.3.5. TST05 Test 3022 control register (bits 3-2 always 10)

Will load the control register with the contents of simulated OPR, and then read it back and display it in the user register. Bit 3 is always set to 1, and bit 2 is always set to 0.

ND - 30.013.02


Page 54

COMTE - the ND-100/ND-500 communication test program.

6.3.6. TST06 Test 3022 status register.

Will load the status register with the contents of simulated OPR, and then read it back and display it in the user register.

6.3.7. TST07 Test 3022 memory address register.

Will load MAR with the contents of simulated OPR (the lower 24 bits of the 32 available), and then read it back and display it in the user register. If the lowermost 16 bits of the read back value are all zero, the uppermost 8 bits will be displayed. If not, the lowermost 16 bits are displayed.

6.3.8. TST08 Test 3022 data register.

Will load the data register with the contents of simulated OPR, and then read it back and display it in the user register.

6.3.9. TST09 Test 3022 lower limit register.

Will load the lower (DMA) limit register with the contents of simulated OPR, and then read it back and display it in the user register.

6.3.10. TST10 Test 3022 upper limit register.

Will load the upper (DMA) limit register with the contents of simulated OPR, and then read it back and display it in the user register.

6.3.11. TST11 Test tag dataway.

Simulated OPR is used as tag code (write-tag). The tag code is read back (IOX RTAG) and displayed in the user register.

6.3.12. TST12 Test DATA-IN to DATA-OUT.

Data is taken from simulated OPR, written to 5015 via the DATA-IN register, and then read from the DATA-OUT register. Only the least significant part is tested. The result is displayed in the user register.

6.3.13. TST13 Test DATA-IN to WA-reg to DATA-OUT.

Data is taken from simulated OPR, written to 5015 via the DATA-IN register and the WA (write-address) register is clocked. Then the WA register is enabled, and data is read from the DATA-OUT register. The result is displayed in the user register.

ND - 30.013.02


Page 55

COMTE - the ND-100/ND-500 communication test program

6.3.14. TST14 Test DATA-IN to BREAK-reg to DATA-OUT

Data is taken from simulated OPR, written to 5015 via the DATA-IN register, and the BREAK register is clocked. Then the BREAK register is enabled, and data is read from the DATA-OUT register. The result is displayed in the user register.

6.3.15. TST15 Test DATA-IN to CSCNT-reg to DATA-OUT

Data is taken from simulated OPR, written to 5015 via the DATA-IN register, and the CSCNT register is clocked. Then the CSCNT register is enabled, and data is read from the DATA-OUT register. The result is displayed in the user register.

6.3.16. TST16 Test TAG-OUT on 5015

Data is taken from simulated OPR, written to 5015 via the DATA-IN register, and the TAG-OUT register is clocked. Then bit 9 (TSTTGG, 01000) is written to 5015 via the DATA-IN register, and the CSCNT register is clocked. IOX RMTG (return tag) with the A-register equal to 3, and IOX RTAG (read tag) are executed. The result is displayed in the user register.

6.3.17. TST17 Test DATA-IN to DATA-OUT, most significant 16 bits

Data is taken from simulated OPR and written to 5015 via the most significant part of the DATA-IN register. Then the MOST bit (0200) is written to 5015 via the least significant part of the DATA-IN register, and the TAG-OUT register is clocked. Data is read back from the DATA-OUT register without using the DJEN bit. The result, the most significant part of the DATA-OUT register, is displayed in the user register.

6.3.18. TST18 Test control signals for load control store

The BREAK register is filled with a 16 bit micro code word (at present, it is 0). Then simulated OPR is put into the CSCNT register. The user register is not used by this test.

6.3.19. TST19 Test control signals for read control store

Simulated OPR is put into the CSCNT register. Then the DATA-OUT register is read and displayed in the user register.

ND - 30.013.02


Page 56

COMTE - the ND-100/ND-500 communication test program

6.3.20. TST20 Test write-and-read one 16-bit word in the control store

The user has to specify a control store address and a part number in the range 0-8. After that, 9 16-bit words, all zero, are written into the specified location in the control store, and the specified address is put into the WA register. Then a loop is started, writing simulated OPR into the control store location with the specified part number in the specified address, reading it back, and displaying it in the user register.

6.3.21. TST21 Test control signals for start (from stop mode)

The stop bit is set, simulated OPR is put into the CSCNT register, and the stop bit is reset. The user register is not used by this test.

6.3.22. TST22 Test break (by setting WA=BREAK)

The stop bit is set, simulated OPR is put into the WA register and the BREAK register, and the break enable bit (0100) is put into the CSCNT register. The user register is not used by this test.

6.4. The verification routines

6.4.1. TST23 Verify 3022 DATA register

The DATA register is loaded and read by the sequence SAA 010; IOX LCON; LDA DATA; IOX TERM; SAA 0; IOX MCLR. The result is checked, and error messages are printed where applicable. The user register displays the read-back value. It will be continually incremented.

6.4.2. TST24 Verify 24 bits memory address register

The MAR register is loaded twice by IOX LMAR and read twice by IOX RMAR. The most significant part is loaded first, and the first part that is read back, is assumed to be the least significant part. The result is checked, and error messages are printed where applicable. The user register displays the least significant part of the read-back value. It will be continually incremented.

ND - 30.013.02


Page 57

COMTE - the ND-100/ND-500 communication test program.

6.4.3. TST25 Verify 3022 CONTROL register (Bit 2=0, Bit 4=1 clears bit 6).

The CONTROL register is loaded and read by IOX instructions. The result is checked, and error messages are printed where applicable. Bit 2 (the activate bit) is always 0 in this test. The user register displays the read-back value. It will be continually incremented.

6.4.4. TST26 Verify STATUS register (not bits 0, 5, 011 and 017).

The STATUS register is loaded and read by IOX instructions. The result is checked, and error messages are printed where applicable. Some of the bits are not part of the test, as they cannot be set or reset by IOX LSTA. The user register displays the read-back value. It will be continually incremented.

6.4.5. TST27 Verify 3022 (DMA) lower limit register.

The LL register is loaded and read by IOX instructions. The result is checked, and error messages are printed where applicable. The user register displays the read-back value. It will be continually incremented.

6.4.6. TST28 Verify 3022 (DMA) upper limit register.

The UL register is loaded and read by IOX instructions. The result is checked, and error messages are printed where applicable. The user register displays the read-back value. It will be continually incremented.

6.4.7. TST29 Verify tag dataway.

This routine will write tag, read it back, and check the result. Error messages will be printed where applicable. The user register will display the value that was read back (it will be continually incremented).

6.4.8. TST30 Verify dataway, least significant 16 bits.

The least significant 16 bits of the data path from ND-100 to DATA-IN to DATA-OUT to ND-100 will be verified. Error messages will be printed where applicable. The user register will display the value that was read back. It will be continually incremented.

ND - 30.013.02


Page 58

COMTF - the ND-100/ND-500 communication test program

6.4.9. TST31 Verify WA register

Data is sent from ND-100 to DATA-IN to WA to DATA-OUT to ND-100, and then checked for correctness. Error messages are printed where applicable.
The user register will display the read-back value. It will be continually incremented.

6.4.10. TST32 Verify BREAK register

Data is sent from ND-100 to DATA-IN to the BREAK register to DATA-OUT to ND-100, and then checked for correctness. Error messages are printed where applicable.
The user register will display the read-back value. It will be continually incremented.

6.4.11. TST33 Verify CSCNT register

Data is sent from ND-100 to DATA-IN to the CSCNT register to DATA-OUT to ND-100, and then checked for correctness. Error messages are printed where applicable.
The user register will display the read-back value. It will be continually incremented up to 02000.

6.4.12. TST34 Verify TAG-OUT

Data is sent from ND-100 to TAG-OUT. Then bit 9 (TSTTIGU, 01000) is put into the CSCNT register, and TAG-OUT is read back and checked. Error messages are printed where applicable.
The user register will display the read-back value. It will be continually incremented.

6.4.13. TST35 Verify data least significant 16 bits controlled by MOST bit

Zero is put into the TAG-OUT register, to ensure that the MOST bit is off. After this, data is sent from ND-100 to DATA-IN to DATA-OUT to ND-100, without using the DUEN bit. The result is checked, and error messages printed where applicable.
The user register displays the read-back value. It will be continually incremented.

ND - 30.013.02


Page 59

COMTE - the ND-100/ND-500 communication test program

6.4.14. TST36 Verify data most significant 16 bits controlled by MOST bit

The MOST bit (0200) is put into TAG-OUT. Then data from ND-100 is written into the most significant part of the DATA-IN register. The DATA-OUT register is read back to ND-100 without using the DUE bit, and the result is checked. Error messages are printed where applicable.
The user register will display the read-back value. It will be continually incremented.

6.4.15. TST37 Verify control store

This routine will check the specified part of the control store. First, it will do an address-in address test. Then it will write a test pattern once and read it 4 times, and check for errors. Error messages are printed where applicable. There are 4 different patterns. Every time the pattern is written into a control store location (144 bits), it is rotate shifted 1 left. This means that within one 144-location block, no two locations are alike. Every time a 144-bit word is read from the control store, the CSPTY bit in the 5015 CSCNT register is checked.
The user register will display the control store address, both for write and read. For write, bit 15 (017) will be set to 1.

6.4.16. TST38 Verify load of WA, BREAK, CONTROL, TAG-OUT, and read back a lot of times

The TAG-OUT, WA, BREAK and CONTROL registers on 5015, are loaded with 017, 036000, 140300, and 01460, respectively, and then they are read back many times. The results are checked, and error messages are printed where applicable.
The user register displays a counter.

6.4.17. TST39 Verify DATA-IN to DATA-OUT, 32 bits

The value of a counter is sent from ND-100 to the least significant part of DATA-IN. The complement of this counter is sent to the most significant part of DATA-IN. The least significant part of DATA-OUT is read, and then the most significant part. The results are checked, and error messages are printed where applicable.
The user register displays the least significant part of the counter.

ND - 30.013.02


Page 60

COMTE - the ND-100/ND-500 communication test program.

6.5. The micro programmed routines.

6.5.1. TST40 Verify write-STATUS on 3022 from ND-500 (not bits 017, 011-7, 5, 0).

This routine loads a small micro program into the control store and starts it. The micro program loads the STATUS register on 3022, and then unlocks ND-500. ND-100 then reads the STATUS register and checks it. Error messages are printed where applicable. If ND-500 does not unlock, a timeout message is printed.
The user register displays the STATUS register, as it is read back by ND-100. It will rotate shift left a single 1, or a single 0. Some of the bits in the STATUS register are not part of the test, as they are not controlled by a simple STATUS load from ND-500.

6.5.2. TST41 Verify write MAR on 3022 from ND-500.

A small micro program is loaded and started. It will load the memory address register from ND-500 and then unlock. ND-100 reads and checks the register, and prints error messages where applicable.
The user register displays the least significant part of the memory address register as it is read by ND-100. It will rotate shift left a single 1, or a single 0.

6.5.3. TST42 Verify store-in-memory (write-DATA) from ND-500.

ND-100 loads the memory address register. When the program is run under SINTRAN, it is loaded with 0; 017. When it is run stand-alone, it is loaded with 0; addr, where addr is an address somewhere in the program area. Then a micro program is loaded and started. This will do a DMA transfer (write) of one word, and then unlock. ND-100 will fetch the result from the DATA register and check it. If OK, ND-100 will read the memory address register and check that it has been incremented by 1. If OK, ND-100 will fetch the result from the memory and check it. Where applicable, error messages will be printed.
The user register will display the DATA register as it is read by ND-100. It will rotate shift left a single 1 or a single 0.

ND - 30.013.02


Page 61

COMTE - the ND-100/ND-500 communication test program

6.5.4. TST43 Verify read-and-write-STATUS on 3022 from ND-500 (not bits 017, 011-7, 5, 0).

A micro program is loaded and started. ND-500 will read the STATUS register, complement it, write it back, and then unlock. ND-100 will check that the STATUS register has been complemented, and print error messages where applicable.
The user register will display the value of the STATUS register as it is read by ND-100. It will rotate shift a single 1 or a single 0.

6.5.5. TST44 Verify read-and-write-MAR on 3022 from ND-500.

A micro program is loaded and started. ND-500 will read the memory address register, complement it, write it back, and unlock. ND-100 will check that the register has been complemented. Where applicable, error messages are printed.
The user register will display the least significant part of the memory address register as it is read by ND-500. It will rotate shift left a single 1 or a single 0.

6.5.6. TST45 Verify read-CONTROL-and-write-MAR on 3022 from ND-500 (not bits 6-3, always bit 2).

A micro program is loaded and started. ND-500 will read the control word from 3022 and write it back to the least significant part of MAR, and unlock. ND-100 will check the result. Error messages are printed where applicable.
The user register will display the value of the least significant part of MAR as it is read from ND-100. It will rotate shift a single 1 or a single 0. Bits 3-5 have to be 0 for this test, and bit 2 has to be 1.

6.5.7. TST46 Verify read-and-write-DATA on 3022 from ND-500.

ND-100 first loads the memory address register. Then a micro program is loaded and started. ND-500 will read a 16-bit word from the ND-100 memory (via the DATAX register), decrement the memory address register by 1, complement the 16-bit word and write it back (via the DATA register), and then unlock. ND-100 will check that the memory address register is incremented by 1, and that the data word is complemented.
The user register will display the data word as it is read by ND-100. It will rotate shift a single 1 or a single 0.

ND - 30.013.02


Page 62

COMTE - the ND-100/ND-500 communication test program

6.5.8. TST47 Verify DATA-IN to DATA-OUT, 32 bits, and then DATA-OUT-2 to DATA-OUT-1.

The most significant part of DATA-IN is loaded with the value of a counter. A micro program is loaded and started. ND-500 will copy DATA-IN to DATA-OUT, move the most significant part of DATA-OUT to the least significant part (thereby destroying the most significant part), and then unlock. ND-100 will check the results and print error messages where applicable. The user register displays the counter as it is loaded into DATA-IN.

6.5.9. TST48 Verify lower and upper (DMA) limit registers during DMA transfer.

The LL register is loaded with 0 and the UL register is loaded with 177777. After this, the MAR register is loaded with all values from 0,0 to 0377,177000 with an increment of 0400. The program checks that the status register, bit 6, is always 0 (legal DMA). Then the limit registers are loaded with 177777 and 0 (no DMA is legal). The MAR register is loaded with all values from 0,0 to 0377,177400. The program checks that the status register, bit 6, is always 1 (illegal DMA). After this, the LL and UL registers are loaded with 0 and 1. This means that DMA transfers into the memory area from 0 to 0377 are legal. A micro program is then started. It will do three DMA transfers (read) from address 0376, 0377, and 0400. Before each DMA transfer, the micro program will read S2 (ND-500 status register 2). ND-100 will check that the two first have bit 6=0 (legal), and that the last has bit 6=1 (illegal). The user register will display the uppermost 16 bits of the MAR register as it is loaded.

6.5.10. TST49 Micro programmed moving control store test.

This is a fairly big micro program. It consists of a little less than 400 micro instructions. When it is loaded and started, it will write into and read from the control store three different patterns. They are address+partnumber in address, complement of address+partnumber in address, and a fixed pattern with a mixture of ones and zeros. When the control store has been written and read with all three patterns, ND-500 unlocks, and ND-100 loads the micro program from the next higher control store address and starts it again. If ND-500 detects errors, it will unlock, and ND-100 will print error messages. The user register will display the load address of the micro program.

ND - 30.013.02


Page 63

COMTE

The ND-100/ND-500 communication test program.


ND - 30.013.02


Page 64

SLICE - the ND-500 slice test program.

7. SLICE - the ND-500 slice test program.

7.1. General information.

SLICE tests the ND-500 slice and sequencing: single step, sequencing through single stepping, bit mask, AIU functions, registers, etc. Only the first routine is a test routine, and the rest are verification routines. All routines test with the help of micro programs. All micro programs are loaded from the minimum control store address specified by the user in the initiation of the program. They are relocatable. After SLICE has been started, its execution may be modified and altered by typing break characters (one-letter commands).

7.2. How to load and start the program.

Stand-alone: MASTER CLEAR. 156O6:. *LOAD SLICE.

SINTRAN: @RT SLICE and possibly @LOG, or @STMIC.

SLICE asks for some parameters. These questions are similar to the questions asked by COMTE, with one exception. Maximum control store address should not be specified as zero. See the chapter on COMTE.

7.3. The test routines.

7.3.1. TST01 Test single step.

This is not a verification routine. It tests single step by putting the first control store address into the WA and BREAK registers. Then it puts the break enable and start address enable bits (6-7, 0300) into the CSCNT register. It activates ND-500 and removes the stop bit. After that, the program unlocks ND-500, sets the stop bit, resets the break and start address enable bits, and resets break. The user register is not used by this routine.

ND - 30.013.02


Page 65

7.4. The verification routines.

7.4.1. TST02 Verify sequencing (single step a lot of NEXT).

This routine starts by filling the specified part of the control store with the micro instruction NEXT. Then the micro program is started in the first control store address, and the micro program is single stepped through every micro instruction. This is done 8 times. ND-100 reads the CSA bus (control store address bus) and checks that the address has been incremented by 1 for each single step. Error messages are printed where applicable. The user register will display the control store address. When the micro program is loaded, the user register will count with an increment of 0100. When the micro program is executed, it will count with an increment of 1.

7.4.2. TST03 Verify sequencing (single step a lot of JMP *-1).

The control store is filled with the micro instruction JMP *-1; (jump to the previous location). In the first location, a jump to the last micro instruction in the program is inserted. When this is done, the micro program is started in its first address. ND-100 single steps through the entire micro program 8 times. It reads the CSA bus (control store address bus) and checks that it has been decremented by 1. Error messages are printed where applicable. The user register counts with an increment of 0100 when the micro program is loaded, else it counts with an increment of -1.

7.4.3. TST04 Verify sequencing (single step a lot of JSR SUB).

The control store is filled with the micro instruction JSR SUBR1, except for the first 4 and the last 3 locations. In the first 4 locations are loaded two subroutines jumping to other subroutines. In the last 3 are loaded two subroutines. The first one jumps to the next, and the second only returns. In this way, ND-100 will, when it is single stepping through the micro program, check the 4 level subroutine jump facility. ND-100 checks this by reading the CSA bus (control store address bus) for every single step. Error messages are printed where applicable. The user register counts with an increment of 0100 when the micro program is loaded. When the micro program is executed (4 times), it is a little more complicated. It is started in location n+4, if the first control store address is n, and the sequence of addresses will be

n n+2 last last-1 n+3 n+1 n+5
n n+2 last last-1 n+3 n+1 n+6
n n+2 last last-1 n+3 n+1 n+7

and so on.

ND – 30.013.02


Page 66

SLICE - the ND-500 slice test program

7.4.4. TST05 Verify sequencing (single step a lot of ALUJ, ADIR and JMPCAR and W,XD)

This routine verifies the computed address register. It fills the control store with the three micro instructions ALUJ, ADIR, JMPCAR; W,XD; over and over again, from address n+1 (if the first control store address is n). The ALUJ, ADIR instruction loads the computed address register with an address (different for each ALUJ, ADIR: n+4, n+7, n+012, n+015, and so on). The program is started in location n+1 (if the first control store address is n), and the CSA bus should go like this: n+1 n+2 n+4 n+5 n+7 n+010 ... ND-100 reads the CSA bus (control store address bus) and checks it. Error messages are printed where applicable.

The user register counts with an increment of 077 when the micro program is loaded. When the micro program is executed, the user register displays the CSA bus (n+1 n+2 n+4 n+5 n+7 n+010 n+012 etc.).

7.4.5. TST06 Verify sequencing (single step a lot of ALUJ, ADIR and JMPREL and NEXT)

This routine verifies jumps relative to the micro address. The displacement is in the computed address register. The control store is loaded over and over again with the micro instructions ALUJ, ADIR; JMPREL; NEXT; The ALUJ, ADIR instruction loads the computed address register with a displacement of -5. The program is started in one of the last ALUJ, ADIR instructions. SLICE will step through the micro program, read the CSA bus, and check it. Error messages are printed where applicable.

The user register will count with an increment of 077 when the micro program is loaded. When it is executed, it will go like this: 011 012 013 6 7 010 3 4 5 ...

7.4.6. TST07 Verify bit mask bits as A-opr and B-opr

This routine verifies the bit mask by letting a micro program load the #%0-%#3 registers with 4 different bit masks, and then report back to ND-100 (by doing DMA transfers). ND-100 checks that the bits are correct, loads another piece of micro program with other bit masks, and starts ND-500 once more. Error messages are printed where applicable. The bit mask is generated both as A-operand and B-operand.

The user register will count to 0100, because the routine is run 64 times (each run testing 32 A-operands and 32 B-operands).


ND - 30.013.02


Page 67

SLICE - the ND-500 slice test program

7.4.7. TST08 Verify A,BMR and B,BMR (bit mask register).

The 5-bit Bit Mask Register is verified by letting a micro program load it with a bit number, and then load two of the X40-Xf3 register with numbers containing only one 1-bit, decoded from the BMR. This is done with the BMR both as A-operand and B-operand. ND-500 then reports back to ND-100 (by DMA transfers), and ND-100 checks the results. Error messages are printed where applicable. ND-100 then modifies the micro program with other bit numbers, and starts ND-500 once more.

The user register displays the number of runs by counting to 040, since the BMR register can hold 32 different values (it has 5 bits).

7.4.8. TST09 Verify all logical AIJ functions.

All the 16 logical AIJ functions are verified. Those with only one operand are checked first. All four data types, word, float, halfword, and byte, are used. There are 66 operands: 0, -1, single 1-bit (32 different operands), single 0-bit (32 different operands). A micro program is loaded that executes the logical function and reports back to ND-100 by doing DMA transfers. ND-100 checks the results and prints error messages where applicable. Then another micro program is loaded, and the process is repeated. If the program is run in one-by-one mode, all functions, or only one, can be tested. When only one function is selected, the routine will run this function until N or P is typed, thus making it possible to extensively check a specific function.

The user register displays the octal value of the logical function in bits 2-6, with bit 6 always equal to 1, and the data type in bits 0-1.

7.4.9. TST10 Verify all arithmetical AIJ functions.

The 16 arithmetical AIJ functions are verified in numerical order. Those with no or only one operand will execute faster (0, 3, 014, 017). The four data types word, float, halfword, and byte, are all used. The four carry types forced zero, forced one, carry from status, and carry from micro status, are all used. There are 66 operands: 0, -1, single 1-bit (32 different operands), single 0-bit (32 different operands). ND-100 loads a micro program and starts it. ND-500 then executes an arithmetical AIJ function, with a given data type, carry type, and zero, one, or two operands. The result is sent back to ND-100 by DMA transfers, and ND-500 unlocks. ND-100 then checks the results and prints error messages where applicable. The micro program is modified, loaded and started, and the whole process is repeated. If the program is run in one-by-one mode, all functions, or only one, can be tested. When only one function is selected, the routine will run this function until N or P is typed, thus making it possible to do an extensive check of a specific function.

The user register displays octal arithmetical AIJ function code in bits 4-8 (bit 8 is zero), data type in bits 2-3, and carry type in bits 0-1.

ND - 30.013.02


Page 68

SLICE - the ND-500 slice test program.

7.4.10. TST11 Verify ND-500 registers (X#0-X#3, AM#0-AL#0-AM#1-AL#1, etc.).

The ND-500 registers are tested, 4 32-bits registers at a time, by loading patterns into them. A micro program loads the registers, sends their contents to ND-100 by DMA transfers, and unlocks. ND-100 checks the results and prints error messages where applicable. Then the micro program is modified by inserting the next shifted version of the pattern, and the program is reloaded and restarted. When the pattern has been completely used, new register codes are inserted into the micro program, and the process is repeated. Four 128-bit patterns are used, and each of them is rotate shifted left for each run. If the program is run in one-by-one mode, all registers, or only one register block, can be tested. When only one register block is selected, the routine will check this specific register block over and over again, until N or P is typed.

The user register displays the number of the register block under test, in bits 9-13, pattern number in bits 7-8, and shifted version number in bits 0-6. There are 024 register blocks.

7.4.11. TST12 Verify scratch registers as A-block and B-block.

This routine is run 4 times, by a micro program loaded and started by ND-100. All the scratch registers are loaded with patterns, the first two times by ADIR instructions, the next two by ADRIC instructions. In the first and third run, the scratch registers are copied to X#0-X#3 by A-operands, and in the second and fourth run, by B-operands. The X#0-X#3 registers are sent to ND-100 by DMA transfers, and ND-100 checks the results. Error messages are printed where applicable.

The user register displays the run number (0 to 3).

7.4.12. TST13 Verify sequencing (conditional jumps).

This routine checks conditional jumps. It loads a micro program and single steps through it. For every single step, the CSA bus, containing the control store address, is read and compared to an expected value. In case that the address is not at all like the expected value, an error message containing the two numbers will be printed. Otherwise, the error messages will contain information about status or micro status, the condition that failed, etcetera. The user register will contain the control store address, and bits 10-15 will be continually incremented.

ND - 30.013.02


Page 69

SLICF - the ND-500 slice test program

7.4.13. TST14 Verify loop counter decrement (JCDECR)

The control store is filled with the micro instruction JCDECR; IODIN is loaded with a start value. The micro program is started. The start value is copied to the loop counter, and all the micro instructions are executed, thereby decrementing the loop counter. The result is copied to IODIOUT, and ND-500 unlocks. ND-100 reads and checks this value, and prints error messages where applicable. Then another start value is loaded into IODIN, and the process is repeated.

The user register will first display control store load address, and then the different start values that are loaded into IODIN.

ND - 30.013.02


Page 70

MEMIC - the ND-500 cache and memory test program.

8. MEMIC - the ND-500 cache and memory test program.

8.1. General information.

MEMIC tests the ND-500 memory and cache. There are two channels, one for data, and one for instructions. The same memory may be used both as instruction and data memory. The first two routines are not verification routines. All the routines are micro programmed. They are loaded and started by ND-100. When the program has been started, its execution may be modified and altered by typing break characters (one-letter commands).

8.2. How to load and start the program.

Stand-alone: MASTER CLEAR. 1560&. *LOAD MEMIC.

SINTRAN: @RT MEMIC and possibly @LOG, or @STMIC.

MEMIC first asks whether the user wants to run on another terminal. If the answer is Y, MEMIC will request a decimal logical device number (SINTRAN), or an octal physical device number (stand-alone).

If the program runs under SINTRAN, it will reserve the ND-500 and possibly some memory, if the user wants it. MEMIC will ask all the necessary questions.

Which memory addresses to use when MEMIC is run, depends on the circumstances. MEMIC may be run under SINTRAN, or stand-alone. It may check only memory, only cache, or both cache and memory. It may run with memory management on, or off, or without memory management at all. It can run in a system where the ND-100 and the ND-500 both have their own memory, or where the ND-100 at least has memory which the ND-500 cannot reach. It can also run in a system where the ND-100 and the ND-500 share all the memory (user, beware!). The memory configuration of a system may be checked by the stand-alone test program MPEST. It will print out two memory maps, one for the ND-100 and one for the ND-500. If there is shared memory, the ND-100 value of address 0 of the ND-500 address space will also be printed out. Below follows some advice on how to use MEMIC (memory management is shortened to MM):

  • Stand-alone and no MM.
    If the ND-100 has local memory: specify any addresses.
    If the ND-100 and the ND-500 share the memory: specify addresses from 0400000 and up. This is the start address of (ND-100) bank 1, and the micro programs started by ND-500 will not overwrite MEMIC itself.
  • Stand-alone and MM off.
    The same as for no MM above.

ND - 30.013.02


Page 71

MEMIC - the ND-500 cache and memory test program

Stand-alone and MM on

If the ND-100 has local memory: specify any addresses. Be aware that an initiation micro program fills the TSB (translation speed-up buffer). If too much memory is specified, the memory addresses specified by the user will be changed by the program, because the TSB is filled up. For instance, if memory addresses from 0 to 06000000 (6 million) are specified, the program will change the last address to 05773774.

If the ND-100 and the ND-500 share the memory: specify addresses from 0400000 and up. Remember that the TSB has room for not more than 01377 pages!

SINTRAN and no MM

Specify addresses from 0 and up. The size of the specified memory area should correspond to the number of pages reserved (each page holds 04000 bytes). If this area is too big, MEMIC will change the last address. The I2PA and D2PA registers will be set pointing to the first reserved memory page, and IUPL and DUPL will point to the last.

SINTRAN and MM off

The addresses specified should correspond to the pages reserved, with the first address pointing to the address of the first page, and the last address pointing to the last page (multiply the page numbers by 04000). If any of the specified addresses point outside the memory area reserved, MEMIC will change them.

SINTRAN and MM on

Specify addresses from 0 and up. The size of the specified memory area should correspond to the number of pages reserved. If this area is too big, MEMIC will change the last address. Address 0 will point to the first reserved memory page, and the TSB will be initiated for the reserved pages. If too much memory is specified (the TSB is filled up), the last address will be changed by MEMIC.

MEMIC may also run without memory. If the maximum memory addresses are specified as 0, only the cache will be used. In that case, memory need not be reserved when MEMIC runs under SINTRAN. When the machine has memory management, this should be off when running without memory. If not, a lot of misleading error messages will appear.

MEMIC asks for maximum control store address. The answer must be different from zero, i.e., 02000, 010000, or anything else suitable.

MEMIC then asks for the first control store address. The answer must be less than the maximum address. If it is nonzero, the micro programs will be relocated when they are loaded. The micro programs are always loaded from the first control store address.

MEMIC asks for stop on full page. If you want the program to pause when 22 lines have been written on the terminal, you should type Y, otherwise N. Stop on full page is useful when you are using a screen terminal.


ND - 30.013.02


Page 72

MEMIC - the ND-500 Cache and Memory Test Program

MEMIC asks for the last and first instruction memory addresses. Memory addresses occupy 25 bits. The first address must be less than the last. MEMIC will set the two last bits in both addresses to zero, to get addresses at word boundary. The two addresses might be given as for instance 0 and 0100000. If the last address is given as 0, the instruction memory will not be tested (The cache memory will be tested. The HIC bit will be set to 1, meaning Hit In Cache. All memory references will be forced to go to the cache, and therefore not use the memory at all.)

MEMIC then asks for the last and first data memory address. The answers follow the rules for the instruction memory questions.

MEMIC then asks for the number of instruction and data cache modules. The answer to both these questions is a single digit: 0, 1, 2, or 4. If the answer is 1 or 2 or 4, MEMIC will print the corresponding last cache address and ask if the user wants to change this last address. If the answer is Y, MEMIC asks for the new last address. This can be useful if only part of the cache memory is wanted (for instance if the user wants to avoid using a specific address bit). If the answer is 0, only the memory (and not the cache memory) will be tested. The program will set the don't-use-cache bit in the memory modus register.

MEMIC then asks whether the program is to be run with memory management or not. If memory management exists, MEMIC asks if it is to be on or off. After this question, an initiation micro program is run. It will clear the cache, set some registers, and, if the MM is on, fill the TSB (translation speed-up buffer). If necessary, MEMIC will change the memory addresses specified by the user.

MEMIC asks: TEST, VERIFY, OR BOTH? If the answer is T, only the first two routines will be run. If the answer is V, all routines except the first two will be run. If the answer is B, all routines are run.

MEMIC then asks whether information is wanted. If the answer is Y, a list, describing the two modes and the break characters, is printed.

MEMIC then asks whether all routines are to run in succession, or one by one. If the answer is the letter O, MEMIC will ask if error messages are wanted, and for the number of the test. The test routine with the specified number will then be run repeatedly. If the answer was A, all routines will be run in succession, one after the other. After the answer to this question, the memory initiation micro program is always run.

At last, MEMIC asks whether the tests 4 to 7 should check memory and cache parity or not. If the answer is Y, the memory status registers will be read and checked for every memory read. A side effect of this is that the IR register will not be used when parity checking, because TOONI/DOONI is loaded for every read.

The execution of the program may be interrupted and changed at any time by the typing of break characters.

ND - 30.013.02


Page 73

MEMIC - the ND-500 cache and memory test program

8.3. The test routines

8.3.1. TST01 Test EA (OPR(32-bits)-to-X#0-to-EA)

This is not a verification routine. It will ask for data or instruction memory. The answer is D or I. Then MEMIC will load a micro program and start it. ND-500 will then copy simulated OPR to the Effective Address register. OPR may be changed by the break character 0, or by F (flip switch) a bit in OPR. The user register is not used by this test.

8.3.2. TST02 Test data/instr. memory (OPR(32-bits)-to-memory)

This is not a verification routine. It will ask for data or instruction memory. The answer is D or I. Then it will request a memory address, load a micro program and start it. ND-500 will then write simulated OPR into the memory, in the specified address. The contents of the memory may be changed by the break characters 0 or F. The user register is not used by this test.

8.4. The verification routines

8.4.1. TST03 Verify address arithmetic

A micro program with ten different address arithmetic tests is loaded. Then the first test is started. It uses 200 different patterns, and also the complement of the patterns. Errors are reported back to ND-100 by DMA transfers. When one test is completed, the next is started, until all the ten tests are done. The following address arithmetic modes are tested:

  • PASSAA AA,DP1
  • PASSAA AA,DP2
  • PASSAA AA,FA1
  • PASSAA AA,FA2
  • PASSAB AB,IX
  • PASSAB AB,Z1X
  • PASSAB AB,4IX
  • PASSAB AB,8IX
  • PASSAB AB,1/8IX
  • PASSAB AB,B
  • PASSAB AB,R
  • PASSAB AB,PC
  • PASSAB AB,DPARG
  • AA+AB AA,FA1 AB,B
  • AA+AB AA,FA2 AB,R
  • A,SP
  • A,P

The user register displays test number. It counts from 0 to 011.

ND - 30.013.02


Page 74

MEMIC - the ND-500 Cache and Memory Test Program

8.4.2. TST04 Verify Data Memory (Address in Address)

This routine verifies the data memory, if any. ND-500 will store word address in word address in the specified memory area, and then read it back. If errors are detected, or the reading is complete, ND-500 unlocks. ND-100 checks the results and prints error messages where applicable. Memory reading and writing are done in two ways, sequentially and randomly. Sequentially means that the memory write and read starts at a minimum address, is incremented by 4, and ends at a maximum address. Randomly means that the addresses occur in this sequence: minimum, maximum, minimum+4, maximum-4, minimum+010, ...

There are four runs:

Run Operation
0 Write sequentially, read sequentially
1 Write sequentially, read randomly
2 Write randomly, read sequentially
3 Write randomly, read randomly

In addition, when writing randomly, the micro program does 4 writes by consecutive micro instructions in order to stress the memory. When reading from the memory (and/or the cache), the registers DSTS0, DSTS1, and DSTS2, are read and checked, if parity check is requested. The user register displays run number.

8.4.3. TST05 Verify Data Memory (Compl. of Address in Address)

This routine is similar to the previous one. The difference is that the complement of word address is stored.

8.4.4. TST06 Verify Instruction Memory (Address in Address)

This routine is similar to TST04 above. The difference is that it verifies the instruction memory, and checks the registers ISTS0, ISTS1, ISTS2.

8.4.5. TST07 Verify Instruction Memory (Compl. of Address in Address)

This routine is similar to TST05 above. The difference is that it verifies the instruction memory.


Page 75

MEMIC - the ND-500 cache and memory test program

8.4.6. TST08 Verify memory (write once and read five times)

This routine verifies both data and instruction memory. ND-500 will write into the memory 17 32-bit words over and over again. When the specified memory area is filled, ND-500 will read it 5 times. Errors will be reported to ND-100 by DMA transfers. When 5 reads are completed, the pattern will be rotate shifted one left, and the process is repeated. Altogether, the writing takes place 01040 times.

The user register displays the number of reads, 05240 per channel (if both channels are verified, the count will go to 012500).

8.4.7. TST09 Verify data read and write with 1, 2, 3, and 4 bytes

This routine verifies a memory area of the same size as the cache (never more than 0200000 bytes). The contents of this area will always be halfword address in halfword during this test. This means that the first halfword will contain 0, the next will contain 2, the next 4, and so on. ND-500 first writes this area full, 4 bytes at a time, and reads it back, 4 bytes at a time. Next, ND-500 reads back 1 byte at a time, 2 bytes at a time, and 3 bytes at a time. Errors are reported to ND-100. After this, ND-500 writes halfword address in halfword address three times more, but now it writes 1 byte, 2 bytes, and 3 bytes at a time. Each time the whole area is written, it is read back 4 bytes at a time and checked, and errors are reported to ND-100. ND-100 waits for unlock, and prints error messages where applicable.

The user register is not used in this test.

8.4.8. TST10 Verify data cache directory

The specified memory area is first written with word address in word. After this, the memory contents is read back in such a way that the cache directory bits are checked. An example will clarify this: If the first memory address is specified as 0, and the number of bytes in the cache is 0100000 (two cache modules), then the memory read addresses will be in this sequence:

0, 0100000, 0, 0200000, 0, 0300000, 0, ... ,
4, 0100004, 4, 0200004, 4, 0300004, 4, ... ,

and so on.

The user register is not used in this test.

8.4.9. TST11 Verify instruction cache directory

This test is similar to the one above.

ND - 30.013.02


Page 76

PREFEF - the ND-500 prefetch processor test program.

9. PREFEF - the ND-500 prefetch processor test program.

9.1. General information.

PREFEF tests the prefetch processor. It loads instructions into the memory, and loads and starts small micro programs. These micro programs simulate macro program execution. They read and check the prefetch status register and the P register.

9.2. How to load and start the program.

Stand-alone: MASTER CLEAR. 1560&. *LOAD PREFEF.

SINTRAN: @RT PREFEF and possibly @LOG, or @STIMIC.

PREFEF asks for some parameters. These questions are similar to the questions asked by MEMIC. See the chapter on MEMIC.

9.3. The test routines.

9.3.1. TST01 Test prefetch clear and prefetch start.

The P register is loaded with zero. Then the micro program does prefetch clear and prefetch start. The micro program is restarted continually by master clear from ND-100.

9.3.2. TST02 Test prefetch clear, start, and continue.

The start address will be asked for. Then the micro program is loaded and started. It will load the P register with the specified start address, and then do prefetch clear, prefetch start, and prefetch continue. The micro program will be continually restarted by master clear from ND-100.

The user micro program (break character U) with the command L may be used to insert different macro instructions into the instruction memory prior to running this routine.

ND - 30.013.02


Page 77

PREF - the ND-500 prefetch processor test program

9.4. The verification routines

9.4.1. TST03 Verify execution of instructions with no operands

The memory is filled with instructions without operands, for instance NOOP. Then a micro program is loaded and started. It loads the P register, and does PRF,CLEAR and PRF,START and one PRF,PCONT for each macro instruction. It will read the prefetch status register and the P register after each PRF,PCONT. Errors are reported to the ND-100. Only one error is allowed for each macro instruction.
The user register will display the instruction under test.

9.4.2. TST04 Verify execution of instructions without operands, with register number

The memory is filled with instructions, for instance W1 CLR. Then a micro program is loaded and started. It will load the P register, do PRF,CLEAR and PRF,START and one PRF,PCONT for each macro instruction loaded into the memory. It will read and check the prefetch status register and the P register after each PRF,PCONT. Errors are reported to the ND-100. Only one error is allowed for each macro instruction.
The user register will display the instruction under test.

9.4.3. TST05 Verify execution of instructions with one operand

The memory is filled with instructions, for instance 'H3:=B.377:B. Then a small micro program is loaded and run. It will load the P register and do PRF,CLEAR and PRF,START and one PRF,PCONT for each macro instruction loaded into the memory. It will read and check the prefetch status register and the P register after each PRF,PCONT. Also, for some macro instructions, it will read and check a constant in A,DATA and an address (B+displacement) in B,FAL. Errors are reported to the ND-100. Only one error is allowed for each macro instruction.
The user register will display the instruction under test.

9.4.4. TST06 Verify execution of GO:B

The memory is filled with GO +6; GO -2 over and over again. Then a small micro program is loaded. It will start the macro program in address 2, check the results, and report errors where applicable. The most important check is that the P register is correct (2, 010, 6, 014, 012, 020, ...). Errors are reported to the ND-100. Only one error is allowed.
The user register is not used during this test.

ND – 30.013.02


Page 78

PREF - the ND-500 prefetch processor test program

9.4.5. TST07 Not yet implemented.

9.4.6. TST08 Verify execution of JMPMAP

The control store is filled with:

ALU, ADIR A, XD, SARG SLOW2 D, X#0 <addr> JMP LABEL,

where <addr> is the micro instruction's own address, and LABEL is the entry point of the verifying part of the micro program. A ND-500 macro instruction is fetched from a table, stored in the instruction memory and a small micro program starts it. The JMPMAP instruction in the micro program will jump to an entry point (a control store address), and this address will be loaded into X#0. X#0 is then verified against a table. This table contains approx. 1850 macro instructions. After all the legal macro instructions have been checked, it is checked that all the illegal macro instructions jump to a common entry point.

If this test is run in one-by-one mode, with maximum control store address equal to 01000, and the break character I is typed, the user can prepare a loop to use with the oscilloscope. Use maximum control address 010000, start the user micro program, and assemble JMP 0762,0; into address 0 and 01000. Start the user micro program in 0762. OPR may then be set with different instruction codes, and followed on the oscilloscope.

The user register will first contain a micro program load address. It will be incremented by 0100 as long as the micro program is loaded. When JMPMAP is checked, the user register contains a macro instruction table index. Afterwards, the user register contains an illegal instruction table index.

ND - 30.013.02


Page 79

PREFET

  • The ND–500 prefetch processor test program.

ND – 30.013.02


Page 80

ARITH - The ND-500 external arithmetic test program

10. ARITH - The ND-500 external arithmetic test program

10.1. General information

ARITH tests the external arithmetic. It does this by loading small micro programs that shift logical, arithmetical, and rotational. They also do floating add, subtract, multiply, and divide. The results are checked, and errors reported.

10.2. How to load and start the program

Stand-alone: MASTER CLEAR. 1560&. *LOAD ARITH.

SINTRAN: @RT ARITH and possibly @LOG, or @STMIC.

ARITH asks for some parameters. These questions are similar to the questions asked by SLICE. See the chapter on SLICE.

10.3. The test routines

10.3.1. TST01 Test logical shift

The routine will ask for two 32-bit numbers and a shift count. Then the first number is shifted logically. The number of positions to shift is specified by the shift count. Negative shift count is shift right, positive is shift left. Then the second number is shifted in the same way, and the whole process is repeated until a break character is typed. If the jump instructions in the micro program at addresses 5 and 012 are changed to NEXT; by the user micro program, the results will be output to the terminal.

10.3.2. TST02 Test arithmetical shift

This routine is similar to the previous one, but the shift is arithmetical (the sign bit is copied in right shifts).

10.3.3. TST03 Test rotational shift

This routine is similar to the previous two, but the shift is rotational, and the shift count should only be positive.


Page 81

ARITH - The ND-500 external arithmetic test program

10.3.4. TST04 Test single floating sum (A+B)

The program will ask for two numbers. Each is given either as a floating number or as two 16-bit octal numbers. Then a small micro program will add the two numbers repeatedly, first A+B, then B+A, and so on. If the jump instructions at addresses 5 and 012 are replaced with NEXT; by the user micro program, the results will be output to the terminal.

10.3.5. TST05 Test single floating diff (A-B)

This routine is similar to the previous one, except that it computes the difference, and not the sum.

10.3.6. TST06 Test single floating mult (A*B)

This routine is similar to the previous two, except that it computes the product of the two numbers.

10.3.7. TST07 Test single floating div (A/B)

This routine will compute A/B, but not B/A. Jump instructions at addresses 4, 010, 015, 021, and 026 may be replaced with NEXT; by the user micro program. The intermediate and final results will then be output to the terminal.

10.3.8. TST08 Test convert to floating

This routine will convert two 32-bit integers to floating. If the micro instructions at addresses 4, 010, 015, and 021 are changed to NEXT; by the user micro program, the results will be output to the terminal.

10.3.9. TST09 Test convert to integer

This routine will convert two floating numbers to integers. If the micro instructions at the addresses 5 and 012 are changed to NEXT; by the user micro program, the results will be output to the terminal.

10.3.10. TST10 Test single integer div (A/B)

This routine will convert two integers to floating, divide them, and convert the result back to integer. Jump instructions at addresses 4, 010, 015, 021, 026, 032, 037, 043, 050, 054, 061, 065, 072, 076 and 0103 may be changed to NEXT; by the user micro program in order to produce results on the terminal.

ND - 30.013.02


Page 82

ARITH - The ND-500 External Arithmetic Test Program

10.4. The Verification Routines

10.4.1. TST11 Verify Shift Logical with Shift Count as Argument

Shift logical is tested as word shift, halfword shift, and byte shift. Shift count is in the range 037 to -037, 017 to -017, or 7 to -7. For each type and shift count, a set of patterns is shifted, and the results are checked.
The user register displays shift count in bits 11-7, and a pattern number in bits 6-0.

10.4.2. TST12 Verify Shift Logical with Shift Count from Shift Count Register

This routine is similar to the previous one, except that it takes the shift count from the shift count register.

10.4.3. TST13 Verify Shift Arithmetical with Shift Count as Argument

This routine is similar to TST11 above. The only difference is that it checks arithmetical shift.

10.4.4. TST14 Verify Shift Arithmetical with Shift Count from Shift Count Register

This routine is similar to TST12 above. The only difference is that it checks arithmetical shift.

10.4.5. TST15 Verify Shift Rotational with Shift Count as Argument

This routine is similar to TST11 above, except that it checks rotational shift, and the shift count is in the range 037 to 0, 017 to 0, or 7 to 0.

10.4.6. TST16 Verify Shift Rotational with Shift Count from Shift Count Register

This routine is similar to TST12 above, except that it checks rotational shift. The shift count is only positive.

ND - 30.013.02


Page 83

ARITH - The ND-500 external arithmetic test program

10.4.7. TST17 Verify double floating sum.

Pairs of double floating numbers are added together, and the resulting sums are checked. The first part of this test consists of 63 numbers with only one bit in the mantissa (apart from the hidden bit). This number is added to itself, and the result should have the same mantissa, and an exponent incremented by one. The second part consists of a set of different patterns with given results to check against.
The user register will first display a bit number in the range 0 to 077, and then a pattern number.

10.4.8. TST18 Verify double floating diff.

This routine is similar to the previous one, except that it checks double floating difference.

10.4.9. TST19 Verify double floating mult.

Pairs of double floating numbers are multiplied together, and the results are checked.
The user register displays a pattern number.

10.4.10. TST20 Verify double floating div.

This routine is similar to the previous one, except that it checks double floating division. The divisions will be 1/(2n-1), where n is in the range 1 to 55 ( means exponentiation).

ND - 30.013.02


Page 84

NOMAN - the ND-500 no-memory-management test program

11. NOMAN - the ND-500 no-memory-management test program

11.1. General information

NOMAN tests the no-memory-management. Some machines are not equipped with memory management. NOMAN is intended for use on these machines.

A word of warning should be given here. NOMAN must not be run under SINTRAN on systems where the memory is shared and the ND-100 has no local memory (that is, address 0 for both the ND-100 and the ND-500 is the same memory word). If this were attempted, SINTRAN will be destroyed immediately.

11.2. How to load and start the program

Stand-alone: MASTER CLEAR. 15606. *LOAD NOMAN.

SINTRAN: @RT NOMAN and possibly @LOG, or @STIMIC.

NOMAN asks for some parameters. These questions are similar to the questions asked by MEMIC. See the chapter on MEMIC.

11.3. The test routines

11.3.1. TST01 Test no-memory-management registers

This routine loads and reads the registers DCINHL!, DCINHLJ, DZPA, DUPL, or ICINHL!, ICINHLJ, IZPA, IUPL. They are loaded with the value of OPR. This value may be changed at any time by using the break character 0.

11.4. The verification routines

11.4.1. TST02 Verify DCINHL!-DCINHLJ-DZPA-DUPL

These four 14-bit registers are loaded with all possible values. After each load, the values are read back and checked. The user register displays the value loaded.

11.4.2. TST03 Verify ICINHL!-ICINHLJ-IZPA-IUPL

This routine is similar to the previous one, except that it checks the instruction registers.

ND - 30.013.02


Page 85

NOMAN - the ND-500 no-memory-management test program

11.4.3. TST04 Verify DRADDRM and DRADDRL.

This routine checks the data real address registers. DRADDRM is an 8-bit register, and DRADDRL is a 16-bit register. DRADDRM is the most significant part of the real address, and DRADDRL is the least significant part. The real address is a 24-bit physical (not logical) memory byte address. The most significant bit is missing. Real address is the sum of the logical address and 04000*DZPA. The routine writes in the memory with different logical addresses and different contents of DZPA. Then it reads the real address and checks it. The user register displays the value of DZPA.

11.4.4. TST05 Verify IRADDRM and IRADDRL.

This routine is similar to the previous one, except that it tests the corresponding instruction registers.

11.4.5. TST06 Verify cache inhibit for data memory.

This routine checks the data cache inhibit limit registers DCINHLL and DCINHLIU. First, both registers are set to zero, meaning no inhibit. Then 4096 words are written into the available cache in such a way that not two words belong to the same page (the first address is 0, and the address is incremented by 040004, 0100010, or 020000, depending on the number of cache modules installed). The contents of the written words are address in address. After this, DCINHLL and DCINHIU are loaded with test values, and 4096 words are written into the cache, containing complement of address in address. After this, all the 4096 words are read back and checked. The area with page numbers greater than DCINHLL and smaller than DCINHIU should contain address in address. If not, cache inhibit does not work. The rest of the area should contain complement of address in address. If not, cache inhibit is active outside the range specified. All this is repeated 4 times, in order to check all 14 bits of DCINHLL/DCINHIU (the 4 initial addresses are 0, 040000000, 0100000000, 0140000000). The user register displays the value 0 to 3 in bits 7-6, and a table index for test values ranging from 0 to 074 in bits 5-0.

11.4.6. TST07 Verify cache inhibit for instruction memory.

This routine is similar to the previous one. The only difference is that it checks the corresponding functions in the instruction channel.

ND – 30.013.02


Page 86

NOMAN - the ND-500 no-memory-management test program

11.4.7. TST08 Verify that read and write only affects the DZPA-DUPL area.

This routine tests the DZPA and DUPL registers. First, DZPA is loaded with 0, and DUPL with 037777. Then address in address is written into the available memory area. After this, DZPA and DUPL are loaded with test values, and complement of real address is written into the memory. Then DZPA and DUPL are reloaded with 0 and 037777, cache is cleared, and the contents of the memory is read and checked. The memory area with page numbers lower than DZPA, or with page numbers greater than DUPL, should contain address in address. If not, DZPA and/or DUPL did not work properly. The rest of the memory should contain complement of address in address. If not, DZPA and/or DUPL failed. Please observe that this test uses cache clear. If cache clear does not work, this test will fail. TST10 will check cache clear. If run with a memory size of 010000000 (ten million octal) bytes, this test will take approx. 2 hours 10 minutes. The user register is not used by this test.

11.4.8. TST09 Verify that read and write only affects the IZPA-IUPL area.

This routine is similar to the previous one, except that it checks the corresponding functions in the instruction channel.

11.4.9. TST10 Verify data cache clear.

This routine checks that data cache clear works. The cache has 4 partitions, and any combination of these 4 may be cleared. First, the program selects an area of available data memory twice the size of the available cache. This memory area is thought to be divided in 8 parts, parts 0-7. DZPA is then made to point to the first page in part 0, and DUPL is made to point to the last page in part 7. Then the memory area is filled with address in address, written from the highest address to the lowest. After this, DZPA is made to point to the first page in part 4. Cache is not cleared. Part 0 to 3 of the memory is read, and it is checked that it really contains addresses for part 0 to 3. Then cache is cleared, with an argument in the range 0 to 017. This means that any combination of cache partitions may be cleared. Then parts 0 to 3 are read once more. The contents should be addresses from part 4 or 0, 5 or 1, 6 or 2, 7 or 3, depending on if the cache is cleared or not. If cache is cleared, the contents should come from part 4 to 7. The user register displays the cache clear argument (0-017).

11.4.10. TST11 Verify instruction cache clear.

This routine is similar to the previous one, except that it checks instruction cache clear.

ND - 30.013.02


Page 87

NOMAN

  • the ND-500 no-memory-management test program.

ND - 30.013.02


Page 88

GMOFF - the ND-500 memory-management-off test program

12. GMOFF - the ND-500 memory-management-off test program

12.1. General information

GMOFF tests the memory management, with memory management turned off. Some machines are not equipped with memory management, but the majority are. GMOFF is intended for use on those that are so equipped.

12.2. How to load and start the program

Stand-alone: MASTER CLEAR. 1560&. *LOAD GMOFF.

SINTRAN: @RT GMOFF and possibly @LOG, or @STIMC.

GMOFF asks for some parameters. These questions are similar to the questions asked by MEMIC. See the chapter on MEMIC.

12.3. The test routines

12.3.1. TST01 Not yet implemented

12.3.2. TST02 Dump routine for IWIPGU/DWIPGU

Both for instructions and data, there are two buffers, written-in-page (WIP) and page-used (PGU). Each of these buffers (4 altogether) contains 16384 bits. Each bit represents a page in the memory. These bits may be dumped on the terminal by this routine. 8 16-bit words (broadsides) are printed on each line. The bit for the smallest page number is in bit 0 of the leftmost word, and the bit for the greatest page number is in bit 15 of the rightmost word. The broadside number of the first 16 bits on a line is printed first on the line.

ND - 30.013.02


Page 89

GMOFF - the ND-500 memory-management-off test program.

12.4. The verification routines.

12.4.1. TST03 Verify data scratch file (DSCFA and DSCRF).

The 16 16-bit words in the scratch file are written, each separately, and then read back and checked. After this, all 16 words are written using the automatic incrementation of DSCFA, and then read back and checked.
The user register will display a scratch file word number in the range 0-017.

12.4.2. TST04 Verify instr. scratch file (ISCFA and ISCRF).

This routine is similar to the previous one. It checks the instruction scratch file.

12.4.3. TST05 Verify DLADDR and DRADDR.

The data memory is referenced (read 4 bytes). After this, the logical and real address registers are read and checked (they should be equal, except that the real address is shifted 1 to the right).
The user register displays the logical address.

12.4.4. TST06 Verify ILADDR and IRADDR.

This routine is similar to the previous one. It checks the instruction logical and real address registers.

12.4.5. TST07 Verify WIP-buffer for data memory (DWIPGU).

The WIP buffer for data memory is filled with a data pattern. After this, the pattern is read back and checked. Several different patterns are used.
The user register will contain 0 during this test.

12.4.6. TST08 Verify PGU-buffer for data memory (DWIPGU).

This routine is similar to the previous one. It checks the PGU buffer for data memory.

12.4.7. TST09 Verify WIP-buffer for instr. memory (IWIPGU).

This routine is similar to the previous one. It checks the WIP buffer for instruction memory.


Page 90

GMOFF - the ND-500 memory-management-off test program

12.4.8. TST10 Verify PGU-buffer for instr. memory (IWIPGU).

This routine is similar to the previous one. It checks the PGU buffer for instruction memory.

12.4.9. TST11 Verify WIP and PGU for data memory write and read (HIC=1).

The data memory is written into and read from, over the whole address range. The HIC bit is set to 1 in this test, to ensure that Sintran will not be destroyed (only the cache is used). As a result of this, patterns of bits should be 1 in WIP and PGU. These buffers are then read and checked.

The user register is not used in this test.

12.4.10. TST12 Verify WIP and PGU for instr. memory (HIC=1).

This routine is similar to the previous one. It checks the instruction memory.

ND – 30.013.02


Page 91

GMOFF

  • the ND-500 memory-management-off test program.

ND - 30.013.02


Page 92

GMEMT - the ND-500 Memory-Management-On Test Program

13. GMEMT - the ND-500 Memory-Management-On Test Program

13.1. General Information

GMEMT tests the memory management, with memory management turned on. Some machines are not equipped with memory management, but the majority are. GMEMT is intended for use on those that are so equipped.

13.2. How to Load and Start the Program

Stand-alone: MASTER CLEAR. 1560&. *LOAD GMEMT.

SINTRAN: @RT GMEMT and possibly @LOG, or @STMIMC.

GMEMT asks for some parameters. These questions are similar to the questions asked by MEMIC. See the chapter on MEMIC.

13.3. The Test Routines

13.3.1. TST01 Test Hashed TSB

This is a routine for accessing the memory with memory management on. It is both for instruction and data memory. TST01 asks for all relevant parameters. Based on these parameters, the hashed index is computed in the same way as the hardware will do, and printed on the terminal. If the user wants another index, the parameters will be asked for once more. After this, a microprogram is loaded and started. It will run in a loop until stopped. It will do the following:

  • Enable the TSB for write.
  • Clear the TSB and wait until the clear is finished.
  • Enable the TSB for read.
  • Load the process, segment, and domain registers.
  • Load the memory modus register.
  • Do a clear-block (bit 3 in DCON1/ICON1).
  • Read from the memory (address in X#0).
  • Read the status and put it in X#1 (should give TSB fault).
  • Enable the TSB for write.
  • Insert a page number into the TSB.
  • Enable the TSB for read.
  • Do a clear block.
  • Read from the memory.
  • Read the status and put it in X#2 (should not give TSB fault).
  • Read the real address and put it in X#3.
  • Read the hardware computed hashed index and put it in AL#1.
  • Repeat the whole sequence.

ND - 30.013.02


Page 93

GMEMT - the ND-500 memory-management-on test program.

13.3.2. TST02 Dump routine for IWIPGU/DWIPGU.

This is the same dump routine as TST02 under GMOFF.

13.3.3. TST03 Test sequential TSB (hash index = 0).

This routine is somewhat similar to TST01, but it will test the sequential part of the TSB, instead of only the hashed part. The routine inserts one entry in the hashed part of the TSB, with hash index equal to zero. After this, the memory is accessed three more times, with hash index equal to zero, but with other parameters. The next three entries, therefore, will go into the sequential part of the TSB. The routine will do the following:

  • Enable the TSB for write.
  • Clear the TSB and wait until the clear is finished.
  • Enable the TSB for read.
  • Load the process, segment, and domain registers, all with 0.
  • Load the memory modus register and do a clear block.
  • Load the X#3 register with 010,0.
  • Read from the memory, address in X#3.
  • Read the status to IODOUT (should give TSB fault).
  • Enable the TSB for write.
  • Insert a page number into the TSB.

After this, the first entry in the hashed part of the TSB holds a page number. Then the memory is accessed three times more, and the sequential part of the TSB will be used. Only the first of the three follows below:

  • Load ISTTSB/DSTTSB with 0. This means that the sequential part of the TSB is empty, as ISTTSB/DSTTSB always points to the first free entry. (The next two times, load with 1 and 2.)
  • Enable the TSB for read.
  • Activate FAS2. This makes the use of the sequential TSB possible.
  • Load the process register with 1, and the segment and domain registers with 0. (The next time, load the process register with 2, and the last time load with 4.)
  • Load the memory modus register and do a clear block.
  • Read from address 0.
  • Read the status to IODOUT (should give TSB fault).
  • Enable the TSB for write. Insert a page number (0100, 0101, 0102) in the (sequential) TSB.
  • Read the sequential TSB pointer (IHXA/DHXA) to AL#1 (or AL#2 or AL#3).
  • Repeat two more times, then do all of it again.

ND - 30.013.02


Page 94

GMEMT - the ND-500 memory-management-on test program.

13.4. The verification routines.

13.4.1. TST04 Verify the hash addressed TSB for data memory (DTSB).

This routine will fill the 512 entries of the TSB, and check the memory management status and the real address. The values of the process, segment, and domain registers are taken from a table, together with the logical address. The routine executes the following steps:

  1. Clear the TSB. Read from the memory with the values from the 512 entries of the table, and insert page numbers 0 to 0777. Check the memory management status (TSB-fault should occur).

  2. Read from the memory once more with the values from the table. Check the memory management status (TSB-fault should not occur), the real address, and the hardware computed hashed TSB index (remember, the most significant of the 9 bits is not checked).

  3. As step 1, but some of the values from the tables are ones-complemented, and the page numbers to be inserted go from 037777 to 037000. In this way, all the bits in the TSB will get both the values 0 and 1.

  4. As step 2, with some values ones-complemented.

  5. As step 1, but with some other values ones-complemented.

  6. As step 2, but with some other values ones-complemented.

The user register will display the following values: the value 0 to 5 in bits 14-12, and an index in bits 11-0.

13.4.2. TST05 Verify the hash addressed TSB for instr. memory (ITSB).

This routine is similar to the one above, except that it checks the instruction part.

13.4.3. TST06 Verify the sequential addressed TSB for data memory (DTSB).

This routine is somewhat similar to TST04, but it checks the sequential part of the TSB. It has the same 6 steps. It will read from the memory 257 times per step. All hashed indexes will be 0, because of the 257 different values taken from a table. This table is made in such a way that all the entries give the same hashed index, namely 0. The first access goes to the hashed part of the TSB, and the next 256 go to the sequential part of the TSB, since they have the same hashed index, and since FAS2 is enabled. The status, real address and sequential TSB pointer are checked.

ND - 30.013.02


Page 95

QMNT - the ND-500 memory-management-on test program.

13.4.4. TST07 Verify the sequential addressed TSB for instr. memory (ITSB).

This routine is similar to the one above, except that it checks the instruction part.

13.4.5. TST08 Verify data cache clear.

This routine checks that data cache clear works. The cache has 4 partitions, and any combination of these 4 may be cleared. First, the program selects an area of available data memory twice the size of the available cache. This memory area is thought to be divided in 8 parts, parts 0-7. Then the TSB is initiated for memory parts 0-7 with domain number 0, and for memory parts 4-7 with domain number 077 (63). In the first initiation, the first logical address is made to point to part 0. In the second initiation, the same first logical address is made to point to part 4. In this way, the same logical address will be translated to two different real addresses, dependent upon the value of the domain register. Now the memory area is filled with address in address, written from the highest address to the lowest, and domain number 0 is used. After this, the domain number is set to 077. Cache is not cleared. Part 0 to 3 of the memory is read, and it is checked that it really contains addresses for part 0 to 3. Then cache is cleared, with an argument in the range 0 to 017. This means that any combination of cache partitions may be cleared. Then parts 0 to 3 are read once more. The contents should be addresses from part 4 or 0, 5 or 1, 6 or 2, 7 or 3, depending on whether the cache is cleared or not. If cache is cleared, the contents should come from part 4 to 7. The user register displays the cache clear argument (0-017).

13.4.6. TST09 Verify instr. cache clear.

This routine is similar to the previous one, except that it checks instruction cache clear.

ND - 30.013.02


Page 96

TRAPT - the ND-500 trap system test program.

14. TRAPT - the ND-500 trap system test program.

14.1. General information.

TRAPT tests the trap system, using the registers S1, S2, and TE.

14.2. How to load and start the program.

Stand-alone: MASTER CLEAR. 1560&. *LOAD TRAPT.

SINTRAN: @RT TRAPT and possibly @LOG, or @STMIC.

TRAPT asks for some parameters. These questions are similar to the questions asked by MEMIC. See the chapter on MEMIC.

14.3. The test routines.

14.3.1. TST01 Not yet implemented.

14.3.2. TST02 Not yet implemented.

14.4. The verification routines.

14.4.1. TST03 Verify S1 traps enabled by the TE register.

This routine will check all S1 traps that may be enabled by the TE (trap enable) register. First, S1 and S2 are set to zero, and one of the bits 9 to 29 (011 to 035) is set to 1 in TE (the trap is enabled). The trap system is turned on. Then the routine checks that no traps occur. After that, the routine will set (by software) one of the bits 9 to 29 in the S1 register to 1, and check that the trap occurs (whenever there is a trap, the micro program continues in micro address 0627). When this routine is run in one-by-one mode, it will ask for the number of the bit to test. If the user answers with a negative number, a list of all the bits will be printed.

The user register displays the number of the bit under test.


Page 97

TRAPT - the ND-500 Trap System Test Program

14.4.2. TST04 Verify S1 Traps Not Enabled by the TE Register

This test is similar to the previous one, except that TE register is set to zero. Only two bits are tested, bits 30 and 31 (036 and 037).

14.4.3. TST05 Verify S2 Traps

This routine is similar to the previous two. The difference is that it checks the S2 traps. The TE register is set to zero. Bits 0 to 11 (00 to 013) are checked.

14.4.4. TST06 Verify S1 Bit 5 and 6 (Zero and Carry, Integer Arithmetic)

This routine checks that bits 5 and 6 in S1 are set properly by hardware. Two equal numbers are subtracted, and the micro program checks that only the two bits 5 and 6 become 1 in S1. This is repeated about 2 million times. Before the test starts, the registers TE, S1, and S2 are all set to zero. The user register is not used in this test.

14.4.5. TST07 Verify S1 Bit 5 (Zero, Floating Arithmetic)

This routine is similar to the previous one. It subtracts two equal floating numbers from each other and checks that S1 contains 1 only in bit 5.

14.4.6. TST08 Verify S1 Bit 6 and 011 (Carry and Overflow)

This routine is similar to the previous two. A number is subtracted from an integer that has only one bit, the sign bit. The micro program checks that only bits 6 and 9 in S1 are 1.

14.4.7. TST09 Verify S1 Bit 7 (Sign, Integer Arithmetic)

One number is subtracted from another, the first being 1 greater than the second. The result should be -1. It is checked that S1 contains 1 in bit 7 only.

14.4.8. TST10 Verify S1 Bit 7 (Sign, Floating Arithmetic)

Two floating numbers are subtracted from each other. The first is one less than the second, giving the result -1.0. The micro program checks that bit 7 in S1 becomes 1.


ND - 30.013.02


Page 98

TRAPT - the ND-500 trap system test program

14.4.9. TST11 Verify S1 bit 010 and 6 and 5 (flag and carry and zero)

Two numbers are subtracted from each other, giving zero as a result. Then K,LIFZ is applied, setting the flag to 1. This is then checked.

14.4.10. TST12 Verify overflow trap (S1 bit 011)

S1 and S2 are set to zero, and bit 9 is set in TE. The trap system is turned on. Then the number which has a 1 next to the sign bit is added into itself. This should give overflow trap. The micro program checks that the trap has occurred. This is done about half a million times. When the micro program stops, it leaves the last S1 in the IODOUT register, where the ND-100 fetches it, and checks that bit 9 is 1. If there is no trap, S1 is also left in IODOUT, but bit 0 is set to one to indicate a missing trap. The user register is not used by this test.

14.4.11. TST13 Verify floating underflow trap (S1 bit 015)

This routine is similar to the previous one. Bit 13 in TE is set to 1. A very small floating number (0100,1) is multiplied by itself. The micro program checks that the trap takes place. When the micro program stops, after about half a million trys, ND-100 reads IODOUT and examines bit 0. If 1, there was a trap missing. If 0, ND-100 checks that bit 13 is 1.

14.4.12. TST14 Verify floating overflow trap (S1 bit 016)

A great floating number (077777,177777) is multiplied by itself, after bit 14 in TE has been set to 1. IODOUT is checked by the ND-100 as in the previous routine.

14.4.13. TST15 Verify single instruction trap (S1 bit 021)

Four NOOP instructions are loaded into the memory, and bit 17 in TE is set to 1. Then the program in the memory (the 4 NOOP's) is started. When the first instruction is finished, the micro program checks that trap has taken place. Error checking is done by the micro program and by the ND-100 as in the previous routines.

14.4.14. TST16 Verify branch trap (S1 bit 022)

Two instructions (JMPG ABSOLUTE) are loaded into the memory. Bit 18 is set to 1 in TE. The program is started. When the first instruction is completed, the micro program checks that the trap has taken place. S1 is checked by the ND-100.

ND - 30.013.02


Page 99

TRAPT - the ND-500 Trap System Test Program

14.4.15. TST17 Verify Address Trap Fetch (S1 bit 025)

Four NOOP's are loaded into the memory. TE bit 21 is set to 1. The lower limit register (LL) is loaded with the address of the first NOOP. The higher limit register (HL) is loaded with the address+4. D, SEHLIM is set to 1 (In this case, it could as well have been set to 0. See HL and LL.), and the program is started. When the first instruction has been completed, the micro program checks that the trap has occurred.

14.4.16. TST18 Verify Address Trap Read for Data Memory (S1 bit 026)

For no memory management:

Bit 22 in TE is set to 1. The LL register is loaded with the address+020. The HL register is loaded with the address. D, SEHLIM is set to 1. Then data is read from the address+040, and the micro program checks that the trap has occurred.

For memory management:

The logical address ADDR is set to a start value of 020000000 (twenty million).
The segment register will take all values from 0 to 037, D, SEHLIM will be either 0 or 1.
LL and HL will take the values ADDR-4, ADDR, ADDR+4.
For each set of values, data is read from the memory, and the micro program checks whether trap occurs or not, according to the rules laid down for the LL and HL registers (the limit registers).
When the uppermost 5 bits of ADDR are all zero, bits 4-0 of the segment register are used in their place in the comparison with LL and HL.
After each check, ADDR is increased by 020000000 (twenty million).
When ADDR becomes zero, the test is finished.

14.4.17. TST19 Verify Address Trap Write for Data Memory (S1 bit 027)

Bit 23 in TE is set to 1. The LL register is loaded with the address. The HL register is loaded with the address+040. D, SEHLIM is set to 0. Then data is written to address+020, and the micro program checks that the trap has occurred.

14.4.18. TST20 Verify Address Zero Access Trap for Instruction Fetch (S1 bit 030)

Bit 24 in TE is set to 1. Four NOOP instructions are loaded into address zero in the memory and started. When the first has been finished, the micro program checks that the trap has occurred.

ND - 30.013.02


Page 100

TRAPT - The ND-500 Trap System Test Program

14.4.19. TST21 Verify Address Zero Access Trap for Data Memory (S1 bit 030)

Bit 24 in TE is set to 1. Data is read from address zero. The micro program checks that the trap has occurred.

14.4.20. TST22 Verify Disable Process Switch Timeout (S1 bit 036)

The TE register is set to zero. The loop counter (LC) is set to 0400 (256). Then bit 4 in S1 (disable process switch) is set to 1. The timeout should take place after 256 micro cycles. The loop counter is now decremented every second micro cycle. If it becomes zero, no trap took place, and the error is reported to the ND-100. If a trap occurred, the micro program checks that the value of the loop counter is in the range 0174 to 0203. If not, the error is reported to the ND-100.

14.4.21. TST23 Verify Disable Process Switch Error (S1 bit 037)

The TE register is set to zero. Bit 4 in S1 (disable process switch) is set to 1, and then bit 9 in S2 is set to 1 (DFATL). This should give a trap. ND-100 checks that S1 (read from IODOUT) has a 1 in bit 31 (037).

14.4.22. TST24 Verify Index Scaling Error Trap (S2 bit 0)

The instructions W1:=B.0(R3) and NOOP are loaded into the memory. X#2 is loaded with a number with only one bit equal to 1, namely bit 30 (036). Then the program is started. When the first instruction is finished, the micro program checks if the trap has occurred.

When the micro program stops, it puts S2 in IODOUT for ND-100 to read. S2 has only 12 bits. The rest are set to 1 if there has not been any trap, and to zero if trap took place. This is the same for all routines that checks S2 traps.

14.4.23. TST25 Verify Illegal Instruction Code Trap (S2 bit 1)

Illegal instructions are loaded into the memory (octal value 001). Then the program is started, and when the first illegal instruction has been executed, the micro program checks for a trap.

14.4.24. TST26 Verify Illegal Operand Specifier Trap (S2 bit 2)

The memory is loaded with two instructions (W1:=0). Then the program is started, and when the first instruction is finished, the micro program checks for a trap.

ND - 30.013.02


Page 101

TRAPT - the ND-500 Trap System Test Program

14.4.25. TST27 Verify Activate-from-ND-100 Trap (S2 Bit 5)

The micro program does not reset activate (tag code 5) as all the other routines initially do. Trap should therefore occur. This is checked by the micro program, and by the ND-100, as usual, checking S2.

14.4.26. TST28 Verify Terminate-from-ND-100 Trap (S2 Bit 6)

The micro program starts by setting the loop counter to 0400 and by counting it down to zero. This is done in order to let the ND-100 have time to execute IOX TERM. After the delay, the micro program checks for a trap.

14.4.27. TST29 Verify IFAIL Trap (S2 Bit 010)

The micro program starts by doing a cache disable (bit 4 in ICON0). Then it enables all kinds of error traps in ICON1. A program is started in the memory. This should set some error bits in ISTS1, and these bits should give a trap.

14.4.28. TST30 Verify DFAIL Trap (S2 Bit 011)

Bit 4 is set to 1 in ICON0 (cache disable). Error traps are enabled in ICON1. Then data is read from the memory. This should set error bits in DSTS1, and these bits should give a trap.

14.4.29. TST31 Verify Processor Fault Trap (S2 Bit 013)

In the micro program, address 014, a jump to address 020015 is made. The micro program will continue in address 015, but bit 13 in the address should give processor fault trap.

If ND-500 has 02000 control store locations, processor fault will not occur. Instead, the program checks that control store parity error stops the micro program.

ND - 30.013.02


Page 102

EXTRA - the ND-500 extra test program

15. EXTRA - the ND-500 extra test program

15.1. General information

EXTRA will do some additional tests that there were no room for in the other test programs. The tests in EXTRA are mainly prefetch processor tests.

15.2. How to load and start the program

Stand-alone: MASTER CLEAR. 1560&. *LOAD EXTRA.

SINTRAN: @RT EXTRA and possibly @LOG, or @STIMIC.

EXTRA asks for some parameters. These questions are similar to the questions asked by MEMIC. See the chapter on MEMIC.

15.3. The test routines

15.3.1. TST01 Not yet implemented

15.4. The verification routines

15.4.1. TST02 Verify index counters

There are four 8-bit index counters. First, they are cleared by D, IOCLR, and the micro program reads all four and checks that they really are zero. Then they are incremented, one by one, by IADJ. After each increment, the four counters are read and checked. The user register is not used by this test.

15.4.2. TST03 Verify conversion (BYTH BYTW HWYW)

The number 04000000 (four million) is put in X#0. Then X#0 is converted in three different ways, and the results are put into X#1, X#2, and X#3. The results are then checked. After each check, X#0 is decremented by 1, and the test continues until X#0 is zero. The user register is not used by this test.


ND - 30.013.02


Page 103

EXTRA - the ND-500 extra test program

15.4.3. TST04 Verify conditional AIUJ.

Conditional AIUJ is checked by first setting COND,MZRO to true, and then using the AIUJ operations AIUJ,FZRO and F,FONE. The result is then checked. Next, the condition is set to false, and the same AIUJ operations are used and checked once more. The test is repeated 04000000 (four million) times. The user register is not used in this test.

15.4.4. TST05 Verify prefetch addressing modes.

28 of the 30 addressing modes described in the ND-500 Reference Manual are tested (see Survey of addressing modes). The two exceptions are DESC and ALT. The test is done in the following way:

The micro program starts by loading 30 macro instructions into the instruction memory. The data memory is written in such a way that every word contains its own address+020. Then execution is started at the first instruction memory address. After the execution of every macro instruction, the micro program checks EA1 and EA2, the data register, P, the result in one of the index registers, and the prefetch status register. If necessary, the constant register is also checked. If an error message occurs, the test is stopped at once (if multiple errors, only the first is reported). When the last macro instruction has been executed, a GO instruction brings the micro program back to the beginning again. This loop is executed 040000 times. The user register is not used by this test.

15.4.5. TST06 Verify W1:=DESC(B.0110:B) (R4).

The instruction memory is loaded with four macro instructions, and the data memory is loaded with the descriptor (array length and array address). Then execution is started. The micro program will check array length in the data register, logical index in ORB, descriptor address in EA1 and EA2, the P register, the prefetch status register, the address of the current array element (in EA1 and EA2), and the logical index after incrementation. If an error message occurs, the test is stopped at once. The array that the descriptor points to takes all of the specified data memory. Therefore, the bigger the data memory is, the longer the test will last.

ND - 30.013.02


Page 104

EXTRA - the ND-500 extra test program

15.4.6. TST07 Verify INIT, CALL, ENIS, RET

The instruction memory is loaded with the four macro instructions INIT, CALL, ENIS and RET. Then execution is started at the first instruction memory address. After all four macro instructions have been executed, the micro program checks the results.

For INIT:

  • The bottom-of-stack address in the displacement register.
  • The main-stack-demand in ORB.
  • The total-stack-demand in ORB.
  • The P register.

For CALL:

  • The subroutine address in the displacement register.
  • The number of arguments in ORB.
  • The argument address in EAL.
  • The P register.
  • The conditions CONOP, DATOP and ENIER.

For ENIS:

  • The stack-demand in ORB.

For RET:

  • The P register.

The test is repeated 65535 times.
The user register is not used by this test.

ND - 30.013.02


Page 105

EXTRA - the ND-500 extra test program.

ND - 30.013.02


Page 106

ND-500 Micro Mnemonics

ND-500 micro mnemonics in alphabetical and numerical order

Appendix A

ND-500 micro mnemonics in alphabetical and numerical order


ND - 30.013.02


Page 107

ND-500 Micro Mnemonics

In Alphabetical and Numerical Order


ND - 30.013.02


Page 108

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

LOCATE TYPE RF REG Z -1 0 1 VALUE Z LEAST SIGN MOST SIGN.
A J N Z A A A A A Z A A A A
A J Z Z + A A A A J J J J J
A AR N Z J A A A + J + Z Z Z
A AR A Z J A A A * Z * * * *
A AR N Z * Z J A J * J Z Z Z

ND - 30.013.02


Page 109

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Address Mnemonic
0000000 AAI7
0000001 AAZ7
0000002 AMA0
0000003 AMA1
0000004 AMA2
0000005 AMA3
0000006 AMA4
0000007 AMA5
0000010 AMA6
0000011 AAA1
0000012 AAA2
0000013 AAA3
0000014 AAA4
0000015 AAA5
0000016 AAA6
0000017 AAA7
0000020 AAAZ
0000021 ABM1
0000022 ABM2
0000023 ABM3
0000024 ABM4
0000025 ABM5
0000026 ABM6
0000027 ABM7
0000030 ABMZ
0000031 ADA0
0000032 ADA1
0000033 ADA2
0000034 ADA3
0000035 ADA4
0000036 ADA5
0000037 ADA6
0000040 ADA7
0000041 ADAZ
0000042 ADM7
0000043 ADMZ
0000050 ADI7
0000051 ADIZ
0000060 AFAI
0000061 Afr
0000062 Afr
0000070 Cregerc
0000071 Cregercr
0000073 APSP Lesn

(...continues up to 0000377)

Note: Adjust table as necessary for full continuation and clarity.


Page 110

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Address Hex Mnemonic
000001 01 COMPL
000002 02 WRITE ADR & REG 1
000003 03 READ AD. & REG. UPPER 1
000004 04 ADD ADR. & REG. UPPER 1
000005 05 ADD ADR. & REG. UPPER 2
000006 06 WRITE ADR. & REG. 2
000007 07 WRITE ADR. & REG. UPPER 2
000010 08 COMPARE ALL
000011 09 REG. TO MEMORY
000012 0A TEST REG.
000013 0B COMPARE ADR & REG
000014 0C SUBTRACT ADR & REG 1
000015 0D SUBTRACT ADR & REG. UPPER 1
000016 0E SUBTRACT ADR & REG. 2
000017 0F SUBTRACT ADR & REG. UPPER 2
000020 10 HALT
000021 11 WAIT
000022 12 RESET
000023 13 CAM
000024 14 CAM (CACHE)
000025 15 INST MF
000026 16 INST MF (MEMORY)
000027 17 INST MF 2
000030 18 STOP
000031 19 SKIP
000032 1A CONTINUE
000033 1B NOP
000034 1C RESUME
000035 1D DEFINE MEMORY
000036 1E DEFINE MAP
000037 1F RETURN
000040 20 TRANSFER
000041 21 TRANSFER UPPER
000042 22 TRANSFER LOWER
000043 23 TRANSFER BLOCK
000044 24 TRANSFER BLK UPPER
000045 25 TRANSFER BLK LOWER
000046 26 ADDRESS CALL
000047 27 ADDRESS RETURN
000050 28 ADJUST
000051 29 ADJUST UPPER
000052 2A CACHE ADDRESS
000053 2B CACHE DATA
000054 2C CACHE CONTROL
000055 2D CACHE MODE
000056 2E CACHE INSTRUCT
000057 2F CACHE MATCH
000060 30 FETCH
000061 31 FETCH UPPER
000062 32 STORE
000063 33 STORE UPPER
000064 34 LOAD
000065 35 LOAD UPPER
000066 36 MOVE
000067 37 SWAP
000070 38 MOVE LONG
000071 39 SWAP LONG
000072 3A COPY
000073 3B COPY UPPER
000074 3C EXCHANGE LONG
000075 3D EXCHANGE
000076 3E EXCHANGE UPPER
000077 3F EXCHANGE LONG UPPER
000100 40 SHIFT
000101 41 SHIFT LEFT
000102 42 SHIFT RIGHT
000103 43 SHIFT LEFT ARITHM
000104 44 SHIFT RIGHT ARITHM
000105 45 ROTATE
000106 46 ROTATE LEFT
000107 47 ROTATE RIGHT
000110 48 NEGATIVE
000111 49 ADD
000112 4A ADD ADR
000113 4B ADD ADR UP
000114 4C ADD ADR LOW
000115 4D ADD ADR UPPER
000116 4E ADD ADR UPPER UP
000117 4F ADD ADR LOWER DOWN
000120 50 SUBTRACT
000121 51 SUBTRACT ADR
000122 52 SUBTRACT ADR UP
000123 53 SUBTRACT ADR LOW
000124 54 SUBTRACT ADR UPPER
000125 55 SUBTRACT ADR UPPER UP
000126 56 SUBTRACT ADR LOWER
000127 57 SUBTRACT ADR LOWER DOWN
000130 58 MULTIPLY
000131 59 DIVIDE
000132 5A LOGICAL AND
000133 5B LOGICAL OR
000134 5C LOGICAL XOR
000135 5D LOGICAL NOT
000136 5E ARITHMETIC AND
000137 5F ARITHMETIC OR
000140 60 ARITHMETIC XOR
000141 61 ARITHMETIC NOT
000142 62 PRIORITY ENCODE
000143 63 PRIORITY DECODE
000144 64 SIGNAL
000145 65 UPDATE
000146 66 DISCARD
000147 67 RETAIN
000150 68 PROTECT
000151 69 UNPROTECT
000152 6A TRACE ENABLE
000153 6B TRACE DISABLE
000154 6C TRACE LINE
000155 6D TRACE ADDRESS
000156 6E TRACE DATA
000157 6F TRACE CONTROL
000160 70 BREAK
000161 71 BREAK POINT
000162 72 BREAK SETUP
000163 73 MONITOR
000164 74 MONITOR SETUP
000165 75 MONITOR START
000166 76 MONITOR END
000167 77 DEBUG
000170 78 DEBUG START
000171 79 DEBUG STOP
000172 7A DEBUG SETUP
000173 7B HALT SETUP
000174 7C HALT START
000175 7D HALT STOP
000176 7E TEST LONG
000177 7F TEST SHORT
000200 80 IO START
000201 81 IO STOP
000202 82 IO READ
000203 83 IO WRITE
000204 84 IO CONTROL
000205 85 IO DATA
000206 86 IO STATUS
000207 87 IO CONFIGURE
000210 88 IO SETUP
000211 89 IO TEST
000212 8A IO ENABLE
000213 8B IO DISABLE
000214 8C IO INITIALIZE
000215 8D IO RESET
000216 8E IO WAIT
000217 8F IO READY
000220 90 POWER ON
000221 91 POWER OFF
000222 92 RESTART
000223 93 SHUTDOWN
000224 94 SHUTDOWN INITIATE
000225 95 SHUTDOWN COMPLETE
000226 96 SAFETY ENABLE
000227 97 SAFETY DISABLE
000230 98 SAFETY LOCK
000231 99 SAFETY UNLOCK
000232 9A PERMISSION GRANT
000233 9B PERMISSION REVOKE
000234 9C PERMISSION QUERY
000235 9D PERMISSION CHECK
000236 9E MODE SWITCH
000237 9F MODE READ
000240 A0 MODE WRITE
000241 A1 MODE TEST
000242 A2 SYNCHRONIZE
000243 A3 SYNCH INIT
000244 A4 SYNCH COMPLETE
000245 A5 SYNCH EXCEPTION
000246 A6 SYNCH RECOVERY
000247 A7 SYNCH LOG
000250 A8 LOG START
000251 A9 LOG STOP
000252 AA LOG QUERY
000253 AB LOG UPDATE
000254 AC LOG RESET
000255 AD LOG SAVE
000256 AE LOG LOAD
000257 AF LOG CLEAR
000260 B0 FAST MODE
000261 B1 SLOW MODE
000262 B2 PERF MON
000263 B3 PERF READ
000264 B4 PERF WRITE
000265 B5 PERF TEST
000266 B6 PERF ENABLE
000267 B7 PERF DISABLE
000270 B8 TEMP MON
000271 B9 TEMP READ
000272 BA TEMP WRITE
000273 BB TEMP SET
000274 BC TEMP RESET
000275 BD TEMP ENABLE
000276 BE TEMP DISABLE
000277 BF TEMP SENSOR
000300 C0 VOLT MON
000301 C1 VOLT READ
000302 C2 VOLT WRITE
000303 C3 VOLT SET
000304 C4 VOLT RESET
000305 C5 VOLT ENABLE
000306 C6 VOLT DISABLE
000307 C7 VOLT SENSOR
000310 C8 CURR MON
000311 C9 CURR READ
000312 CA CURR WRITE
000313 CB CURR SET
000314 CC CURR RESET
000315 CD CURR ENABLE
000316 CE CURR DISABLE
000317 CF CURR SENSOR
000320 D0 FAN MON
000321 D1 FAN READ
000322 D2 FAN WRITE
000323 D3 FAN SET
000324 D4 FAN RESET
000325 D5 FAN ENABLE
000326 D6 FAN DISABLE
000327 D7 FAN SENSOR
000330 D8 AIRFLOW MON
000331 D9 AIRFLOW READ
000332 DA AIRFLOW WRITE
000333 DB AIRFLOW SET
000334 DC AIRFLOW RESET
000335 DD AIRFLOW ENABLE
000336 DE AIRFLOW DISABLE
000337 DF AIRFLOW SENSOR
000340 E0 LIGHT MON
000341 E1 LIGHT READ
000342 E2 LIGHT WRITE
000343 E3 LIGHT SET
000344 E4 LIGHT RESET
000345 E5 LIGHT ENABLE
000346 E6 LIGHT DISABLE
000347 E7 LIGHT SENSOR
000350 E8 WATER MON
000351 E9 WATER READ
000352 EA WATER WRITE
000353 EB WATER SET
000354 EC WATER RESET
000355 ED WATER ENABLE
000356 EE WATER DISABLE
000357 EF WATER SENSOR
000360 F0 PRESSURE MON
000361 F1 PRESSURE READ
000362 F2 PRESSURE WRITE
000363 F3 PRESSURE SET
000364 F4 PRESSURE RESET
000365 F5 PRESSURE ENABLE
000366 F6 PRESSURE DISABLE
000367 F7 PRESSURE SENSOR
000370 F8 HUMIDITY MON
000371 F9 HUMIDITY READ
000372 FA HUMIDITY WRITE
000373 FB HUMIDITY SET
000374 FC HUMIDITY RESET
000375 FD HUMIDITY ENABLE
000376 FE HUMIDITY DISABLE
000377 FF HUMIDITY SENSOR

ND - 30.013.02


Page 111

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Mnemonic Code Operation ALU Notes
AADD 0000000001 Add Yes
ABOR 0000000010 Or Yes
AADDP 0000000011 Add with previous carry Yes
ASUB 0000000100 Subtract Yes
AMUL 0000000101 Multiply Yes
ADIV 0000000110 Divide Yes
AXOR 0000000111 Exclusive Or Yes
ANOT 0000001000 Not Yes
... ... ... ... ...
ZZEND 1111111111 End No Terminator

ND - 30.013.02


Page 112

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD
SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB
MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL MUL
DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV DIV
AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND
OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR
XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR
NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT

ND-30.013.02


Page 113

ND-500 Micro Mnemonics

Alphabetical and Numerical Order

AND CLR DATA FADD JMP LDX STOP SUB XOR BIT MASK NEX PWD SBW XORW ABW ATAN CARR CIRC COLW COMM DIV ECXR EXP LAW LDXW LDYW LIN LRX MAX MIN NULL PW SCALW SHIFT SUN SWAP WG ZRO
ERR FACT IDLR JPS LN SUBW TEST ADD MASK NEXW SIN SQR STC STMXW ADC BACK DIVW SHIFW SINW LSX MINW MULW NXT RX SUMW SWAPW TAN WCD SCPW SIGN SWST TGI XOR

Page 114

ND-500 Micro Mnemonics

In Alphabetical and Numerical Order

Address Mnemonic Operation
000000 AAAAA DOUBLE
000001 AAAAB DOUBLE
000002 AAAAC DOUBLE
000003 AAAAD DOUBLE
000004 AAAAE DOUBLE
000005 AAAAF DOUBLE
000006 AAAAG DOUBLE
000007 AAAAA DOUBLE
000010 AAAAI DOUBLE
000011 AAAAJ DOUBLE
000012 AAAAK DOUBLE
000013 AAAAL DOUBLE
000014 AAAAM DOUBLE
000015 AAAAN DOUBLE
000016 AAAAO DOUBLE
000017 AAAAP DOUBLE
000020 AAAAQ DOUBLE
000021 AAAAR DOUBLE
000022 AAAAS DOUBLE
000023 AAAAT DOUBLE
000024 AAAAU DOUBLE
000025 AAAAV DOUBLE
000026 AAAAW DOUBLE
000027 AAAAX DOUBLE
000030 AAAAY DOUBLE
000031 AAAAZ DOUBLE
361 CEXNO CARRY FROM STATUS
362 CEXNZ CARRY FROM STATUS
363 CEXO CARRY FROM STATUS
364 CEXZ CARRY FROM STATUS
365 CLCZO CARRY FROM ALU OUTPUT
366 CLCZZ CARRY FROM ALU OUTPUT
... ... ...
420 W

Note: The table continues with similar entries, showing various mnemonics with their respective numerical codes and operations.

ND - 30.013.02


Page 115

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Code A L L E A S T ...
000000 A A A 1 1 Z E N
000001 A L L E A S T A
000002 A L L E A S T Z
000003 A L L E A S T Y
000004 A L L E A S T C
000005 A L L E A S T M
000006 A L L E A S T I
000007 A L L E A S T E
... ... ... ... ... ... ... ... ...
000755 N Z Z Z E R O R

Additional Information

  • Legend: The table above illustrates the ND-500 micro mnemonics arranged alphabetically and numerically.
  • Note: See references to controls, stores, and registers on the right side indicating various operations and registers.

Page 116

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Code Mnemonic Name
020000 COM ST. ORG. ADDRESS REG.
020001 COM ST. FIRST ADDRESS REG.
020002 ALT. 1
020003 ALT. 2
020004 ALT. 3
020005 ALT. 4
020006 ALT. 5
020007 ALT. 6
020010 ALT. 7
020011 ALT. 8
020012 ALT. 9
020013 ALT. 10
020014 ALT. 11
020015 ALT. 12
020016 ALT. 13
020017 ALT. 14
020020 ALT. 15
020021 VWP
020022 A
020023 B
020024 C
020025 D
020026 AX
020027 BX
020030 CX
020031 DX
020032 AXL
020033 BXL
020034 CXL
020035 DXL
020036 IMMR
020037 Q
020040 Z
020041 M
020042 N
020043 V
020044 W
020045 X
020046 Y
020047 S
020050 T
020051 U
020052 P
020053 PSW
020054 WPTR
020055 LVL
020056 TMA
020057 TMB
020060 IMCS
020061 CCB
020062 CDB
020063 CME
020064 CSC
020065 RNG
020066 FIL
020067 OPC
020070 GFA
020071 GTA
020072 GFF
020073 GTB
020074 GFC
020075 GFD
020076 NMI
020077 PFH
020100 EXTI
020101 EXTO
020102 INI
020103 INTI
020104 INTR
020105 GFH
020106 PI
020107 PO
020110 CO
020111 BO
020112 COA
020113 AAI
020114 AIN
020115 AOS
020116 EXPC
020117 REC. 9
020120 ID
020121 IDT
020122 STI
020123 STOM
020124 CIO
020125 PIR1
020126 PSP
020127 SSC
020130 PTR
020131 INSC
020132 FF
020133 ASL
020134 ARA
020135 ADS
020136 RETA
020137 WDC
020140 K0
020141 K1
020142 K2
020143 K3
020144 K4
020145 K5
020146 K6
020147 K7
020150 MLE
020151 ADD
020152 SUB
020153 EXIT
020154 AW
020155 MD
020156 DSU
020157 DIV
020160 ALU
020161 MUL
020162 SPC
020163 INC
020164 LR
020165 DSR
020166 CR
020167 EMASK
020170 BADL
020171 MOD
020172 OPL
020173 CF
020174 OPLII
020175 TBBC
020176 XOR
020177 LCR
020200 REC.
020201 STSET2
020202 RSET2
020203 LPIM
020204 EMA
020205 GTV
020206 LW12
020207 REG. 4
020210 REG. 5
020211 REG. 6
020212 REG. 7
020213 REG. 8
020214 AXT
020215 CNP
020216 ANA
020217 ANB
020220 ANR
020221 AND
020222 OR
020223 NOT
020224 ORR
020225 ORA
020226 AA
020227 AB
020230 AS
020231 SGN
020232 RCD
020233 AMI
020234 ZXY
020235 PSH
020236 POP
020237 STSB
020240 GSF
020241 SEGF
020242 GFA
020243 AF
020244 AG
020245 AH
020246 AI
020247 AJ
020250 AK
020251 AL
020252 AM
020253 AN
020254 AO
020255 AP
020256 AQ
020257 AR
020260 AS
020261 AT
020262 AU
020263 AV
020264 AW
020265 AX
020266 AY
020267 AZ
020270 BA
020271 BB
020272 BC
020273 BD
020274 BE
020275 BF
020276 BG
020277 BH
020300 BI
020301 BJ
020302 BK
020303 BL
020304 BM
020305 BN
020306 BO
020307 BP
020310 BQ
020311 BR
020312 BS
020313 BT
020314 BU
020315 BV
020316 BW
020317 BX
020320 BY
020321 BZ
020322 CA
020323 CB
020324 CC
020325 CD
020326 CE
020327 CF
020330 CG
020331 CH
020332 CI
020333 CJ
020334 CK
020335 CL
020336 CM
020337 CN
020340 CO
020341 CP
020342 CQ
020343 CR
020344 CS
020345 CT
020346 CU
020347 CV
020350 CW
020351 CX
020352 CY
020353 CZ
020354 DA
020355 DB
020356 DC
020357 DD
020360 DE
020361 DF
020362 DG
020363 DH
020364 DI
020365 DJ
020366 DK
020367 DL
020370 DM
020371 DN
020372 DO
020373 DP
020374 DQ
020375 DR
020376 DS
020377 DT
020400 DU
020401 DV
020402 DW
020403 DX
020404 DY
020405 DZ
020406 EA
020407 EB
020410 EC
020411 ED
020412 EE
020413 EF
020414 EG
020415 EH
020416 EI
020417 EJ
020420 EK
020421 EL
020422 EM
020423 EN
020424 EO
020425 EP
020426 EQ
020427 ER
020430 ES
020431 ET
020432 EU
020433 EV
020434 EW
020435 EX
020436 EY
020437 EZ
020440 FA
020441 FB
020442 FC
020443 FD
020444 FE
020445 FF
020446 FG
020447 FH
020450 FI
020451 FJ
020452 FK
020453 FL
020454 FM
020455 FN
020456 FO
020457 FP
020460 FQ
020461 FR
020462 FS
020463 FT
020464 FU
020465 FV
020466 FW
020467 FX
020470 FY
020471 FZ
020472 GA
020473 GB
020474 GC
020475 GD
020476 GE
020477 GF

ND - 30.013.02


Page 117

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Address Mnemonic
0000 INDEX Q REG
0001 DECOAD
0002 IND X 0
0003 IND Y 0
0004 IND X Z
0005 EQUIL
0006 ARC SLL1A
0007 SLL7A
0008 J6
0009 ARC WAIT
0010 INDEX R E
0011 EXT JUL
0012 SKSLA
0013 FLAVEL
0014 ARC ORDER
0015 ARC NONE
0016 IND3
0017 T3040
0018 K929 Z
0019 FREELATHY
0020 DEC 9
0021 K LSUP
0022 ARC REQLA
0023 AIYRA
0024 DIREER
0025 ENKAM
0026 CLEFT A
0027 UPAK
0028 MARTRACE
0029 ARC MAVEL
0030 ARC MAVELU
0031 ARC MEET
0032 CIREER
0033 ARJUMP
0034 ARC CLEAR
0035 ARC MAJESTIC
0036 NEWKANDY
0037 REELY
0038 FOX
0039 CREATURE
0040 ARCADE1
0041 ARAB1A
0042 UNDEAD
0043 TWO IDM
0044 PAINFUL
0045 KALIB
0046 LOOP
0047 SMASHER
0048 AARON
0049 APLULA
0050 HAMSTER
0051 BOULDER
0052 COFFEE
0053 CAFE
0054 FEARED
0055 FEER
0056 JAMELLA
0057 LABEL
0058 PINEAPPLE
0059 JIM
0060 HUGO
0061 OLD TIMER
0062 FFLETCH
0063 BIG MAJOR
0064 LIL PEP
0065 CONVECT
0066 FILLELA
0067 TRAMPOLINE
0068 SPANN
0069 LATENT
0070 TARSCOR
0071 JUMMY
0072 KYLE
0073 PILLOW
0074 NIKSOR
0075 PALOOPA
0076 LAPLAP
0077 SURVIVOR
0078 CAT
0079 CATALOGUE
0080 FOTILLA

ND - 30.013.02


Page 118

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Code Mnemonic
60010 JUMP TO SUBR
60011 JUMP TO TEMP
60020 JUMP TO LINK
60021 JUMP TO RELATIVE
60022 JUMP TO ADR. REG.
60023 JUMP TO MEMORY
60024 JUMP CONDITIONAL IF FALSE
60025 CALL MONITOR
60026 INTERRUPT CONTROL
60027 RESET INTERRUPT CONTROL
60030 INCREMENT MEMORY
60031 DECREMENT MEMORY
61000 SEND TO PERI.
61001 RECEIVE FROM PERI.
61003 SEND TO MON.
61004 SEND EXTENDED
61005 READ MEMORY
61006 WRITE MEMORY
61007 TRANSFER MEMORY
61010 SET IF EQUAL
61011 SET IF GREATER THAN
61012 SET IF LESS THAN
61013 FREE JOB
61014 COPY PERIPH.
61015 COPY MEM.
61016 READ ADR. REG.
61017 WRITE ADR. REG.
61020 READ INDEX
61021 WRITE INDEX
61022 ADD MEMORY
61023 SUBTRACT MEMORY
61024 SHIFT MEMORY
61025 ROTATE MEMORY
61026 BRANCH ON CONDITION
62000 ADD ILLEGAL OPCODE
62001 COMPARE ILLEGAL OPCODE
62002 BRANCH (IF TRUE)
62003 BRANCH (IF FALSE)
62004 COPY MEMORY TO MEMORY
62005 COPY MEMORY TO IO REG.
62006 COPY IO REG. TO MEMORY
62007 EXCHANGE OPERAND
62010 EXCHANGE INDEX REG
62011 EXCHANGE ADR. REG.
62012 EXCHANGE PC ON ADR.
62013 EXCHANGE ADR. ON PC
62014 JUMP TO ADR. REG.
62015 JUMP TO PC
62016 JUMP ON CONDITION
62017 JUMP ON CONDITION EXE.
62020 INPUT DATA
62021 OUTPUT DATA
62022 CHANGE CONTROL REGISTERS
62023 COPY MASTER TO SLAVE
62024 COPY SLAVE TO MASTER
62025 EXECUTE ON CONDITION
62026 EXECUTE ON CONDITION EXE.
62027 JAM CONDITION
62030 JAM CONDITIONAL
62031 JUMP CONDITIONAL
62032 JUMP CONDITIONAL IF TRUE
62033 JUMP CONDITIONAL IF FALSE
62034 RETURN FROM SUBR.
62035 RETURN FROM INTERRUPT
62036 RETURN FROM 1..
62037 SET ADR. REG.
62040 SET INDEX REG.
62041 TRANSFER BLOCK
62042 TRANSFER INDEX
62043 SWAP MASTER/slave
62044 KEEP SLAVE MASTER
62045 SIGN EXTENSION
62046 EXTENSION 0
62047 SET PERI. INFO
63000 SET REG. X
63001 SET REG. Y
63002 RETURN FORWARD
63003 RETURN BACKWARD
63004 SET IF NOT EQUAL
63005 SET IF NOT GREATER THAN
63006 SET IF NOT LESS THAN
63007 TORQUE EXCHANGE
63010 CHANGE ADR.
63011 CHANGE INDEX
63012 JUMP ADR.
63013 JUMP INDEX
63014 RETURN ADR.
63015 RETURN INDEX
64000 JUMP TO MASTER
64001 JUMP TO SLAVE
64002 JUMP TO NEXT ITEM
64003 JUMP TO PREV. ITEM
64004 JUMP TO LIST ITEM
64005 JUMP TO ID FIELD
64006 TRAP ILLEGAL OPCODE
64007 TRAP TO MONITOR
64010 TRAP TO SUPERVISOR
64011 TRAP TO USER
64012 TRAP TO STACK
64013 GET STACK ITEM
64014 GET NESTED STACK
64015 NESTED TO STACK
64016 DECREMENT STACK
64017 INCREMENT STACK

ND - 30.013.02


Page 119

ND-500 Micro Mnemonics

Alphabetical Order

Mnemonic Binary Code Description
AAA 0100000 00000 WRITE 8 BYTES 10 LO BA MEMORY
AABRQ 0100000 00001 READ 4 BYTES LO BA MEMORY
AABRZ 0100000 00010 SAVE Z REG
ADM 0100000 00011 ADD MOV SIGN OUTPUT
ALU 0100000 00100 MICROINST PW@CS
ALOW 0100000 00101 ALU ACTIVATE OUTPUT CS
AMZNNF 0100000 00110 CONTROL INSTR FINISH
AMZNNNF 0100000 00111 WAIT FOR MEM CYC FINISHED
AMZNFY 0100000 01000 FETCH MACHINE
BCR 0100000 01001 RESTORE BATTERY CONTROL
BRCZ 0100000 01010 BRANCH CYCLE STARTED
CEL 0100000 01011 CYCLE SEQ CIRCUIT SEQ
CLKM 0100000 01100 CYCLE ON INSTR
CLKSLW 0100000 01101 CYCLE IS SLOW
CMPAGN 0100000 01110 COUNT A LEFT
CONM 0100000 01111 CONTINUE MICROINSTRUCTION
ECHO 0100000 10000 SINGLE INSTR FINISHED
IALU 0100000 10001 FINISHED INSTR
INIT 0100000 10010 INIT COUNTER A
IOCEP 0100000 10011 INPUT CHAN MON
IP 0100000 10100 INPUT CHAN ACCEPT
LDCZ 0100000 10101 RELOAD CNT INSTR
LF 0100000 10110 LATES CODE FORM MGC
LOADA 0100000 10111 CYCLE IS THINKING
LTC 0100000 11000 BRANCH PROGRAM COUNT
LLC 0100000 11001 BRANCH L OFF OF INS
MEMI 0100000 11010 EXECUTE AND CONTROL CHN
MVGAB 0100000 11011 OUTPUT EMPTY
NIP 0100000 11100 CONTROL FRONT PANEL
PH1 0100000 11101 SINGLE INSTR IS LOW
RCS 0100000 11110 FINALLY FINISHED
FSM 0100000 11111 FINISHED FIN INST
SL1UV 0100001 00000 STEP AND LATCHER MOV
SOS 0100001 00001 INITIALIZE CN LOG
SV0 0100001 00010 COUNTER CNT MOVED
SV1 0100001 00011 SAVE COUNTER SAVE VALUE
SOSL 0100001 00100 SAVE PAST CYCLE CMP
TRANS 0100001 00101 MOVE FROM ALU TRANSFER
TX4 0100001 00110 LAST CYCLE XFER
TLK 0100001 00111 TAKE LATCHER

Numerical Order

Code Mnemonic Description
643 AMZNNNF WAIT FOR MEM CYCLE FINISHED
644 AMZNNF CONTROL INSTR FINISH
645 IOCEP INPUT CHAN MON
646 PH1 SINGLE INSTR IS LOW
647 BCR RESTORE BATTERY CONTROL
648 CLKSLW CYCLE IS SLOW
649 IALU FINISHED INSTR
650 NIP CONTROL FRONT PANEL
651 RCS FINALLY FINISHED
652 SL1UV STEP AND LATCHER MOV
653 S1 COUNT A LEFT
654 SOS INITIALIZE CN LOG
655 SOSL SAVE PAST CYCLE CMP
656 FSM FINISHED FIN INST
657 LDCZ RELOAD CNT INSTR
658 MVGAB OUTPUT EMPTY
659 TRANS MOVE FROM ALU TRANSFER
660 TLK TAKE LATCHER
661 ADM ADD MOV SIGN OUTPUT
662 ALU MICROINST PW@CS
663 REGDL LATER FOR STRG
664 LOADA CYCLE IS THINKING
665 LLC BRANCH L OFF OF INS
666 MEMI EXECUTE AND CONTROL CHN
667 CEL CYCLE SEQ CIRCUIT SEQ
668 CLK CYCLE ON INSTR
669 CFM COUNTER CNT INSTR
670 CONM CONTINUE MICROINSTRUCTION
671 COUNT CYCLE PAST INS PLL
672 CLKM CYCLE ON INSTR
673 MPCC FINISH COL MAC SEQ
674 ECHO SINGLE INSTR FINISHED
675 3PH FETCH MACHINE
676 LINE CONTROL INSTRUCTION
677 SEL1 SELECTING INSTRUCTION
678 S20 SYSTEM READY INST
679 TSTS INITIALIZE SYSTEM TEST
680 WBKQ DOUBLE MEM ACCESS
681 WBKZ OPENING DOG APPE
682 WRAP TIME RS STORE CNTW
683 OSTEP FINISH UNIT COMPACT
684 PLC0 FIGS AFT REJECT SE
685 PLC1 STEM MORE MOV AW
686 SV0 COUNTER CNT MOVED
687 SV1 SAVE COUNTER SAVE VALUE
688 LTC BRANCH PROGRAM COUNT
689 AABRQ READ 4 BYTES LO BA MEMORY

ND - 30.013.02


Page 120

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Address Mnemonic
721 MKES
722

EMBLE EXRT RESULT INTO CPU

* 000010,000010,000010,000010,000010,000010,000010,000010,000010

ND - 30.013.02


Page 121

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

S FUNCT ALU OPERATOR B SOURCE B SELECT THROUGH ALU ALU CARRY L + CARRY T + STATUS D REGISTER X REGISTER Y REGISTER ALU OPERAND MISC COMMENT
000000 0.1 A A * B A + B C CARRY*1 A * B Z WR B X ACDP B AS B ADD ACC
000002 0.6 0 A A * C A * B A + C C D I
000004 0.1 A ADD DCONST VOID ADD EXIST ADDITION_OPERATION ALU ALU
000010 0.1 ACDP ACDP NOR ADD NOR Z PTR BIT
000010 0.0 A * C A + B 0 (ALU) 0 0 COMMENT
000011 0.1 1 2 4 CARRY + K ADDITION OPERATION L 7 A
000012 1 A C 2 Z D SELECT
000015 4 5 6 7 8 9 A B C D E F
000020 0 TRANSFER MEMORY INSTRUCTION F G H J K F CARRY AS FORCED ONE B F STATUS X
000027 1 A ACDP S T U WX Y ZZZ T A B MEMORY 0 4 V
000030 3 2 1 0 FZ ZX K STATUS 9 8 7 6 5 4 3
000034 0.2 0 1 0 . X Y Z Z REG Z ALU SW B YX ALU OP Z

ND - 30.013.02


Page 122

ND-500 Micro Mnemonics

In Alphabetical and Numerical Order

No of Bytes in A S T Z IX ZX IY ZY IZ ZIZ IZI IZZ ZC BCD
AFLAG - - - - - - - - - - - - -
ADEKO1 COUNZ Z - Z - Z - Z Z Z Z ZC BADC
ADD REG . L L L L L L L L L L L L
ADDLY NEGBIN REG . L L L L L L L L L L
ADLIT LOWNUM L . L L L L L L L L L L
ADOUT STOP UP 3 UP 3 UP 3 UP UP UP UP UP UP
ADR BSEXT L . L L L L L L L L L L
ADRT NEGNUM TYPE 2 2 2 2 2 2 2 2 2 2 2
ADTOT OFFGE - - - - - - - - - - - -

...

INST CODE PAGE INST CODE PAGE INST CODE PAGE
LD 000001 77643 POPW 000067 77745 RETI 000027 81605
LDIN 000002 77664 PUSHW 000071 77763 RETM 000030 81703
LDI 000003 77684 BRA 000072 80012 RET 000036 81726
PUSH 000073 80112

...

ND - 30.013.02


Page 123

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Count Most Sign. Least Sign. Binary
14 7 7 00000100 00000000
14 8 8 00001000 00000000
14 9 9 00001001 00000000
14 A A 00001010 00000000
14 B B 00001011 00000000
14 C C 00001100 00000000
14 D D 00001101 00000000
14 E E 00001110 00000000
14 F F 00001111 00000000
3 0 0 00000000 00000100
3 1 1 00000001 00000000
3 2 2 00000010 00000000
3 3 3 00000011 00000000
3 4 4 00000100 00000000
3 5 5 00000101 00000000
3 6 6 00000110 00000000
3 7 7 00000111 00000000

ND - 30.013.02


Page 124

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

AAA AO AFMC ASHM ADAL AFMC AFMC CAF IRD MNZ XERC FL CNME HIR MNZ NMJ LTTL XERC MNZ FLAT CNME
ATBAO AFC CNS MAX CRST ZMOD LEAR IMI
MIND ADC HLW BM LATH ANST CDB
STRZ AAA MGMF MCRD DSCC SCLR
MILLS ZEN SWI USR BODY DDLD CNME
COMME INV PLA TRIM CRM szb AMIX UMC
PNTRS ERRY PWDP ABTR DDD AFMC MIND SMCC
AFM RID ATE AWH OB YR YRT TBSC IH ZBA ATEO BL BL ZOID CLL LEAR 0D WRD LTNR ROA BZ
36300 8070 BODY MACR RAFM WKND IW ASHM UOL ERRY AQ AFM FLAT YR 7040 CRST ODBC BLRR FLAT FLYB KM
3740 CAL APO SWI IDA IDI LOL IL RAAA NPO MV KKKK LZW PTF MOD REGN ZZZ YA RRD RID assertTrue
AssertEqual ISQR YOB ROW XERC EIC XP QAM ZZZ DD MT SRR SWI UMC NMI EIFL ERL LZW DSTSQ MTH YMT
SCLN SAM LSSH AM FAL CLLC CCH FL RUM AMG EOH LFW DF ERXN AMAC ZZZ LE NNN FAAAAAAAAAAXYNZZZAAAY A FLT
LUT FLAT ROM DEC ATE HASH CMDB TPSD DZT HAR ZN CTT YAR HKNN KNOS AU UNK HFL IWL KE

ND - 30.013.02


Page 125

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

ABREG Z NDCHN N
ABS LAST SIGN. F MREG
ABS MOST SIGN. F MTEC
ACASL YMPT Z
ACASU YMPT Z
ADD FLOAT F FL
ADD FIX. POINT F FN
AND LAST SIGN. F NDCHN
AND MOST SIGN. F NDCHN
AREA LAST SIGN. N MREG
AREA MOST SIGN. N MTEC
CFP Y 1
CL Y 1
EX LAST SIGN. N NDCHN
INC MOST SIGN. F NDCHN
INCH N MREG
JMP STP Z
JSEQ STP Z
LIA Y Z
LIG LAST SIGN. N NDCHN
LIP LAST SIGN. N NDCHN
LOP MOST SIGN. F NDCHN
NEG N TLAP
LIG MO. SIGN. F MTEC
PAU ALL INCP
PAU2 ALL INP
PAUSE INP4 Z
SJ LAST SIGN. N NDCHN
SMU MOST SIGN. F FL
SREG SIGN 7
STOP Z 1
WRA TO 2
Code Mnemonic
0000 WRA
0001 STOP
0002 SREG SIGN
0003 SMU
0004 SJ LAST
0005 PAUSE
0006 PAU2
0007 PAU ALL
0010 NEG
0011 LOP MOST
0012 LIP LAST
0013 LIG LAST
0014 LIG MOST
0015 LIA
0016 JSEQ
0017 JMP
0020 INCH
0021 INC MOST
0022 EX LAST
0023 CL
0024 CFP
0025 AREA MS
0026 AREA LS
0027 AND MS

ND - 30.013.02


Page 126

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Address Mnemonic Binary
0 Z BT MASK BIT 7 01001111
1 Z BT MASK BIT 6 01001110
2 Z BT MASK BIT 5 01001101
3 Z BT MASK BIT 4 01001100
4 Z BT MASK BIT 3 01001011
5 Z BT MASK BIT 2 01001010
6 Z BT MASK BIT 1 01001001
7 Z BT MASK BIT 0 01001000
10 Z EXTR R E 01000111
11 Z EXTMASK 01000110
12 Z CMP INTFC TO EXTL 01000101
13 Z LTC IRCON TOEREG 01000100
14 Z FIX SEGREG 01000011
15 Z NDX DO SPL OUT 01000010
16 Z NETWORK 01000001
17 Z MMV 01000000
0010000 Z INT TO 00010000
0010100 Z CMP INTFC TOER 01010100
0011100 Z DATA BACKUP Z DATA BUS REGISTER 00011100
0100000 Z DATA REGISTER 00000000
0100100 Z DIN 00001100
0101000 Z SIGN EXTEN 00010100
0110000 Z IRX DC 00100000
0140000 Z SCUL INT SBEG17 01100000
1400000 Z EXTMASK 00000110
1410000 Z INT TO BPH 00001101
1414401 Z CONTROL REG 00001110
1414404 Z MAIL REG 00011011
1414405 Z CONTROL REG 000101
1414406 Z BANK REGISTER 00101001
1414407 Z INT KIFA Z CK R SECU-U 00101100
s144 40 Z-1 SECUR-UP 0100111 1
s444041 Z-1 SAVE-UP 00010100
s444042 Z-SEG REG-DEF 00111100
s 444043 Z DEFU AG 01000001
s 444046 Z SCGR SEGREG 11100001

Page 127

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Binary Mnemonic Attribute Comment
00000 00000 00000 ZMH N SYS MISC
00000 00000 00100 ZSC N SYS MICRO
00000 00000 01000 ZRD ZRD GENERAL
00000 00000 01001 ZDD ZDD EDIT
00000 00000 01010 ZLD ZLD LOAD
00000 00000 01011 ZSD ZSD STORE
00000 00000 01100 ZCD ZCD COMPARE
00000 00000 01101 ZID ZID IO
00000 00000 01110 ZMD ZMD MODIF
00000 00000 01111 ZCK ZCK CHECK
00000 00000 10000 ZHT ZHT HALT
00000 00000 10001 ZDS ZDS DISABLE
00000 00000 10010 ZIS ZIS ENABLE
00000 00000 10011 ZRC ZRC RESUME
00000 00000 10100 ZSR ZSR SETUP
00000 00000 10101 ZCC ZCC CONTROL
00000 00000 10110 ZTS ZTS TEST
00000 00000 10111 ZHT ZHT HALT
00000 00001 00000 ZPT ZPT PRINT
00000 00001 00001 ZAD ZAD ADD
00000 00001 00010 ZSU ZSU SUBTRACT
00000 00001 00011 ZMU ZMU MULTIPLY
00000 00001 00100 ZDV ZDV DIVIDE
00000 00001 00101 ZLR ZLR LOWER
00000 00001 00110 ZUP ZUP UPPER
00000 00001 00111 ZLE ZLE LESS
00000 00001 01000 ZGT ZGT GREATER
00000 00001 01001 ZEQ ZEQ EQUAL
00000 00001 01010 ZNE ZNE NOT EQUAL
00000 00001 01011 ZLN ZLN LINE
00000 00001 01100 ZSP ZSP SPACE
00000 00001 01101 ZBR ZBR BRANCH
00000 00001 01110 ZLB ZLB LONG BR
00000 00001 01111 ZSC ZSC SHORT COND
00000 00001 10000 ZLC ZLC LOOP COND
00000 00001 10001 ZSL ZSL SHIFT LEFT
00000 00001 10010 ZSR ZSR SHIFT RIGHT
00000 00010 00000 ZOR ZOR OR
00000 00010 00001 ZAN ZAN AND
00000 00010 00010 ZXO ZXO XOR
00000 00010 00011 ZCC ZCC CY CLE CL

ND - 30.013.02


Page 128

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

DOUBLE AM AEMBLER REG LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST MOST MOST MOST MOST MOST MOST
BET STORE A WREG AD JUSTMENT ALTITUDE CONTROL L SAFETY CHECK LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST LEAST MOST MOST MOST MOST MOST MOST MOST MOST MOST MOST MOST MOST
GET STOP A 1 2 3 4 5 L LINE ADDRESS PARAMETERS INSTRUCTIONS HEX UL A
000007, 000102, 000t03, 000005 000006, 000107, 000110, 000111 000112, 000113, 000114, 000115
2 3 4
5 6 7
10 11 12
argetter
7 7 7 7 7 N N 7 N N
2 2 2 2 2 2 Z 7 Z Z

ND - 30.013.02


Page 129

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Mnemonic Code
ADD MOST 00000000000
ADD S (A) 00000000001
ADDRESS 00000000010
AMOST 00000000011
AP OUT 00000000100
AP TEST 00000000101
AREG MOST 00000000110
AREG S (A) 00000000111
ATEST 00000001000
ATTR 00000001001
AVERAGE 00000001010
BNZ 00000001011
BP 00000001100
BP TEST 00000001101
CACHE REF 00000001110
CMOV 00000001111
CMOV APA 00000010000
CMOVS A 00000010001
COMBINE 00000010010
CONCAT 00000010011
COUNT 00000010100
DIV 00000010101
FAIL 00000010110
INSTR 00000010111
INTMEM 00000011000
IO READY 00000011001
JUMP 00000011010
LWU 00000011011
LWUWO 00000011100
MEM LWU 00000011101
MWA 00000011110
NEGATIVE 00000011111
NOT (M) 00000100000
NOT A 00000100001
NOT P 00000100010
NOT REL 00000100011
ONES 00000100100
POP CNT 00000100101
REV TRI 00000100110
SEQU 00000100111
SINGLE 00000101000
SKIP 00000101001
STORE (M) 00000101010
SUB MEM 00000101011
TIM OS 00000101100
UPSHIFT M 00000101101
WORD 00000101110
ZERO 00000101111

ND - 30.013.02


Page 130

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Address Mnemonic Binary Code
12654 CNOP,LC,W,CZ 0000000000000101
12655 CNOP,LC,W,CAN 0000000000000100
12656 CNOP,LC,W,COZ 0000000000001100
12657 CNOP,LC,W,CSZ 0000000000001101
12660 CNOP,SC,W,CZ 0000000000010101
12661 CNOP,SC,W,CAN 0000000000010100
12662 CNOP,SC,W,COZ 0000000000011100
12663 CNOP,SC,W,CSZ 0000000000011101
12664 CNOP,ZC,W,CZ 0000000000110101
12665 CNOP,ZC,W,CAN 0000000000110100
12666 CNOP,ZC,W,COZ 0000000000111100
12667 CNOP,ZC,W,CSZ 0000000000111101
12670 CNOP,SC,R,CZ 0000000001010101
12671 CNOP,SC,R,CAN 0000000001010100
12672 CNOP,SC,R,COZ 0000000001011100
12673 CNOP,SC,R,CSZ 0000000001011101
12674 CEND,FNC,LC 0000000001100000
12675 CEND,FNC,SC 0000000001100100
12676 CEND,FNC,ZC 0000000001101000
12677 CNAM,LC 0000000110000000
12678 CNAM,SC 0000000110000010
12679 CNAM,ZC 0000000110000100
12680 CNAM,XC 0000000110000110
12681 CNAM,YC 0000000110001000
12682 CNAM,BC 0000000110001010
12683 CNAM,CC 0000000110001100
12684 CNAM,DC 0000000110001110
12685 CNAM,EC 0000000110010000
12686 CNAM,FC 0000000110010010
12687 CNAM,GC 0000000110010100
12688 CNAM,HC 0000000110010110
12689 CNAM,IC 0000000110011000
12690 CNAM,JC 0000000110011010
12691 CNAM,KC 0000000110011100
12692 CNAM,LC 0000000110011110
12693 CNAM,MC 0000000110100000
12694 CNAM,NC 0000000110100010
12695 CNAM,OC 0000000110100100
12696 CNAM,PC 0000000110100110
12697 CNAM,QC 0000000110101000
12698 CNAM,RC 0000000110101010
12699 CNAM,SC 0000000110101100
12700 CNAM,TC 0000000110101110
12701 CNAM,UC 0000000110110000
12702 CNAM,VC 0000000110110010
12703 CNAM,WC 0000000110110100
12704 CNAM,XC 0000000110110110
12705 CNAM,YC 0000000110111000
12706 CNAM,BC 0000000110111010
12707 CNAM,CC 0000000110111100
12708 CNAM,DC 0000000110111110
12709 CNAM,EC 0000000111000000
12710 CNAM,FC 0000000111000010
12711 CNAM,GC 0000000111000100
12712 CNAM,HC 0000000111000110
12713 CNAM,IC 0000000111001000
12714 CNAM,JC 0000000111001010
12715 CNAM,KC 0000000111001100
12716 CNAM,LC 0000000111001110
12717 CNAM,MC 0000000111010000
12718 CNAM,NC 0000000111010010
12719 CNAM,OC 0000000111010100
12720 CNAM,PC 0000000111010110
12721 CNAM,QC 0000000111011000
12722 CNAM,RC 0000000111011010
12723 CNAM,SC 0000000111011100
12724 CNAM,TC 0000000111011110
12725 CNAM,UC 0000000111100000
12726 CNAM,VC 0000000111100010
12727 CNAM,WC 0000000111100100
12728 CNAM,XC 0000000111100110
12729 CNAM,YC 0000000111101000
12730 CNAM,BC 0000000111101010
12731 CNAM,CC 0000000111101100
12732 CNAM,DC 0000000111101110
12733 CNAM,EC 0000000111110000
12734 CNAM,FC 0000000111110010
12735 CNAM,GC 0000000111110100
12736 CNAM,HC 0000000111110110
12737 CNAM,IC 0000000111111000
12738 CNAM,JC 0000000111111010
12739 CNAM,KC 0000000111111100
12740 CNAM,LC 0000000111111110
12741 CNAM,MC 0000001000000000
12742 CNAM,NC 0000001000000010
12743 CNAM,OC 0000001000000100
12744 CNAM,PC 0000001000000110
12745 CNAM,QC 0000001000001000
12746 CNAM,RC 0000001000001010
12747 CNAM,SC 0000001000001100
12748 CNAM,TC 0000001000001110
12749 CNAM,UC 0000001000010000
12750 CNAM,VC 0000001000010010
12751 CNAM,WC 0000001000010100
12752 CNAM,XC 0000001000010110
12753 CNAM,YC 0000001000011000
12754 CNAM,BC 0000001000011010
12755 CNAM,CC 0000001000011100
12756 CNAM,DC 0000001000011110
12757 CNAM,EC 0000001000100000
12758 CNAM,FC 0000001000100010
12759 CNAM,GC 0000001000100100
12760 CNAM,HC 0000001000100110
12761 CNAM,IC 0000001000101000
12762 CNAM,JC 0000001000101010
12763 CNAM,KC 0000001000101100
12764 CNAM,LC 0000001000101110
12765 CNAM,MC 0000001000110000
12766 CNAM,NC 0000001000110010
12767 CNAM,OC 0000001000110100
12768 CNAM,PC 0000001000110110
12769 CNAM,QC 0000001000111000
12770 CNAM,RC 0000001000111010
12771 CNAM,SC 0000001000111100
12772 CNAM,TC 0000001000111110
12773 CNAM,UC 0000001001000000
12774 CNAM,VC 0000001001000010
12775 CNAM,WC 0000001001000100
12776 CNAM,XC 0000001001000110
12777 CNAM,YC 0000001001001000
12778 CNAM,BC 0000001001001010
12779 CNAM,CC 0000001001001100
12780 CNAM,DC 0000001001001110
12781 CNAM,EC 0000001001010000
12782 CNAM,FC 0000001001010010
12783 CNAM,GC 0000001001010100
12784 CNAM,HC 0000001001010110
12785 CNAM,IC 0000001001011000
12786 CNAM,JC 0000001001011010
12787 CNAM,KC 0000001001011100
12788 CNAM,LC 0000001001011110
12789 CNAM,MC 0000001001100000
12790 CNAM,NC 0000001001100010
12791 CNAM,OC 0000001001100100
12792 CNAM,PC 0000001001100110
12793 CNAM,QC 0000001001101000
12794 CNAM,RC 0000001001101010
12795 CNAM,SC 0000001001101100
12796 CNAM,TC 0000001001101110
12797 CNAM,UC 0000001001110000
12798 CNAM,VC 0000001001110010
12799 CNAM,WC 0000001001110100
13004 EPTRT,LC 0000000010000000
13005 EPTRT,SC 0000000010000100
13006 EPTRT,ZC 0000000010001000
13007 EPTRT,XC 0000000010001100
13008 EPTRT,YC 0000000010010000
13009 EPTRT,BC 0000000010010100
13010 EPTRT,CC 0000000010011000
13011 EPTRT,DC 0000000010011100
13012 EPTRT,EC 0000000010100000
13013 EPTRT,FC 0000000010100100
13014 EPTRT,GC 0000000010101000
13015 EPTRT,HC 0000000010101100
13016 EPTRT,IC 0000000010110000
13017 EPTRT,JC 0000000010110100
13018 EPTRT,KC 0000000010111000
13019 EPTRT,LC 0000000010111100
13020 EPTRT,MC 0000000011000000
13021 EPTRT,NC 0000000011000100
13022 F,FLAG 0000000011001000

ND - 30.013.02


Page 131

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Mnemonics Table

Code Mnemonic
125 SAVE CD STATUS
126 SET EOD LEVEL
127 ST LATCH I
128 ST TIMER
129 ST LATCH T
130 Reserved
131 SAVE ALU
132 XFER STATUS
133 XFER PIPE
134 XFER MCHMK
135 XFER UPPER
136 MCH NXT
137 PREFETCH
138 FETCH CAN EQ
139 Z FETCH CAN FALSE
140 Z FETCH NEXT IN LINE
141 Z FETCH T4 CONTINUE
142 INCREMENT
143 INDIC LATCH
144 DECREMENT
145 PLOAD CYCLE
146 HITLEX L
147 IR DISABLE
148 Reserved
149 LAT FETCH
150 LAT SELECT
151 LAT MEM CYCLE
152 LATCH CYCLE
153 LATCH EXEC
154 LDI REG/MEM
155 LDF FETCH
156 LDI EXEC
157 XFER MEM UNIT
158 LATCH AUX
159 PASS PARAMETER
160 SAVE R0
161 LATCH R0
162 SAVE R1
163 LATCH R1
164 LATCH DEST
165 LATCH SRC
166 GPU CHINT
167 GPU SLTI INT
168 GPU ENABLE STE
169 GPU DIS STITE
170 RESET MCU
171 SET HSCH MCH
172 SET PCI
173 SET LBP2
174 ST MEM CYCLE
175 LPC
176 HITCH DEC
177 HITCH NEXT
178 HITCH IR
179 Z WAIT CYCLE
180 WAIT CYCLE
181 WAIT FOR
182 LATCH RFPA
183 LATCH ARITH

Numeric Codes

Number Description
37105 LAT CYCLE1
37106 LAT CYCLE2
37107 LAT CYCLE3
37108 LAT CYCLE4
37109 LAT CYCLE5
37110 LATCH I1
37111 LATCH T
37112 LATCH D1
37113 LATCH D2
37514 XFER RESULT
37515 XFER RAM
37516 XFER SPMEM
37517 XFER REG
37518 EXEC1
37519 EXEC2

ND - 30.013.02


Page 132

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Opcode Mnemonic Description Attribute
000000 ABD Absolute Value Double D FB FALS
000001 A1D Add One Double DBL FALS
000002 ADD T Add (Short) INT SHRT S
000003 ADD L Add (Long) INT LNG R
000004 AND T And (Short) INT SHRT S
000005 AND L And (Long) INT LNG R
000006 ASHM Arithmetic Shift INT LNG T
000007 ASHTL Arithmetic Shift Left LNG SHFT
000008 ASHTR Arithmetic Shift Right LNG SHFT

... (The pattern in the content suggests that these values continue sequentially with similar formatting, expanding the table accordingly to the actual document data available.)


Page 133

ND-500 Micro Mnemonics in Alphabetical and Numerical Order

Value Datatype
0.00000 0000000; 0000000; 2
0.00000 0000000; 0000000; 2
0.00000 0000000; 0000000; 2
0.00000 0000000; 0000000; 2

ND - 30.013.02


Page 134

ND-500 Micro Mnemonics

In Alphabetical and Numerical Order

Page Document Number
117 ND - 30.013.02

Page 135

ND-500 Micro Mnemonics in Alphabetical and Numerical Order


ND - 30.013.02


Page 136

Index

ALT 3
ARITH 63
BOU 3
BREAK 6, 38, 41
characters 27
cache 16
CDB 3
CLKD 8
COMTE 35
CONTROL 5, 36, 40, 44
CSCNT 7, 38, 41
DATA 6, 37, 39, 43, 44
DATAIN 6, 37, 38, 45
DATAOUT 6, 37, 38, 45
DATAX 6
DBU 3
DCINHLL 19
DCINHLU 19
DCONO 18
DCON1 18
DOUB 3
DRADDRL 19
DRADDRM 19
DSTS0 17
DSTS1 17
DSTS2 17
DUEN 3
DUPL 19
DUT 3
DZPA 19
executing
sequence 29
EXTRA 85
GMENT 75
GMOFF 71
HAREM 26
HL 19
ICINHLL 19
ICINHLU 19
ICON0 18
ICON1 18
IOX 8
IRADDRL 19
IRADDRM 19
ISTS0 18
ISTS1 18
ISTS2 18
IUPL 19
IZPA 19
LCON 9
LL 7, 19, 37, 40, 45

Page 137

Index

Term Page Numbers
LMAR 9
LSTA 9
MAR 5, 7, 37, 39, 43, 44
Master
clear 9
MCLR 9
MEMIC 53
memory 16
MM 3
MMOD 18
mode 28
MOST 3, 6, 8, 41, 42
MPEST 53
NOMAN 67
OPR 3
part
number 12
PREEF 59
PSTAT 13
RCON 9
Read
controlstore 12
data 10
RETG 9
RLOW 9
RMAR 9
RSTA 9
RTAG 9
SLICE 47
SLOC 9
STATUS 5, 37, 40, 43, 44
TAGIN 7
TAGOUT 8, 38, 41
TE 3
TERM 9
TRAPT 79
TSB 3
UL 7, 37, 40, 45
UNLC 9
useful
microinstructions 33
user
microprogram 31
register 28
WA 3, 6, 37, 41
WDAT 9
Write
controlstore 12
data 10
tag 10
WTAG 9

Page 138

I'm unable to provide details from the image, but based on the description, here's a possible layout:

Systems That Put People First

ND


Feel free to adjust the content as needed.