================================================================================
CPU Documentation¶
================================================================================
π Table of Contents¶
π CPU Information¶
βοΈ Registers¶
π Instruction Classes¶
- memory_transfer
- jump_on_condition
- register_block
- register_src_dst
- register_dst
- register_arithmetic
- register_logical
- bit_instructions
- bit_instructions_with_condition
- shift_instructions
π Addressing Modes¶
π» Instructions by Category¶
- Argument Instruction
- Arithmetic and Logical
- Bit instructions
- Bit instructions_with_destination
- Byte Instructions
- Control Instructions
- Decimal Instructions
- Execute
- Floating Conversion (Standard Format)
- Input and Output
- Inter-level Instructions
- Interrupt Control Instructions
- Memory Examine and Test Instructions
- Memory Management Instructions
- Memory Transfer - Double word instructions
- Memory Transfer - Load Instruction
- Memory Transfer - Store Instruction
- Memory Transfer Instructions
- Monitor Calls
- Physical Memory Control Instructions
- privileged
- Register Block Instructions
- Register Operations
- Register Transfer
- Sequencing Instructions
- Shift Instructions
- Skip Instruction
- Stack Operations
- Standard Floating Instructions
- System/CPU Information
- Undocumented Instructions
- Word Block Instructions
π Instruction Reference¶
- [172400] AAA
- [172000] AAB
- [173000] AAT
- [173400] AAX
- [060000] ADD
- [140120] ADDD
- [070000] AND
- [177000] BANC
- [177200] BAND
- [140130] BFILL
- [176600] BLDA
- [176400] BLDC
- [177600] BORA
- [177400] BORC
- [174000] BSET
- [175000] BSKP
- [176200] BSTA
- [176000] BSTC
- [140303] CHREENTPAGES
- [140301] CLEPT
- [140304] CLEPU
- [140302] CLNREENT
- [140505] CLPT
- [140504] CNREK
- [140122] COMD
- [146100] COPY
- [150417] DEPO
- [152000] DNZ
- [140137] ELEAV
- [140506] ENPT
- [140135] ENTR
- [150416] EXAM
- [146142] EXIT
- [140600] EXR
- [100000] FAD
- [114000] FDV
- [110000] FMU
- [104000] FSB
- [142700] GECO
- [143600] IDENT
- [140134] INIT
- [140502] INSPL
- [150401] IOF
- [150402] ION
- [160000] IOT
- [164000] IOX
- [150415] IOXT
- [153600] IRR
- [153400] IRW
- [131400] JAF
- [130400] JAN
- [130000] JAP
- [131000] JAZ
- [124000] JMP
- [132400] JNC
- [132000] JPC
- [134000] JPL
- [133400] JXN
- [133000] JXZ
- [140702] LACB
- [140700] LASB
- [140510] LBIT
- [140511] LBITP
- [142200] LBYT
- [140514] LBYTP
- [044000] LDA
- [143300] LDATX
- [143303] LDBTX
- [024000] LDD
- [143302] LDDTX
- [034000] LDF
- [050000] LDT
- [054000] LDX
- [143301] LDXTX
- [140136] LEAVE
- [152600] LRB
- [143500] LWCS
- [140705] LXCB
- [140704] LXSB
- [150200] MCL
- [040000] MIN
- [143200] MIX3
- [153000] MON
- [140131] MOVB
- [140132] MOVBF
- [143100] MOVEW
- [120000] MPY
- [150300] MST
- [151400] NLZ
- [150400] OPCOM
- [074000] ORA
- [140124] PACK
- [150405] PIOF
- [150412] PION
- [150404] POF
- [150410] PON
- [146000] RADD
- [144400] RAND
- [146100] RCLR
- [146200] RDCR
- [141600] RDIV
- [140127] RDUS
- [140517] RDUSP
- [140503] REMPL
- [140507] REPT
- [150407] REX
- [145000] REXO
- [140501] RGLOB
- [146400] RINC
- [141200] RMPY
- [145400] RORA
- [146600] RSUB
- [170400] SAA
- [170000] SAB
- [140703] SACB
- [154600] SAD
- [140701] SASB
- [171000] SAT
- [171400] SAX
- [140512] SBIT
- [140513] SBITP
- [142600] SBYT
- [140515] SBYTP
- [140300] SETPT
- [150406] SEX
- [154400] SHA
- [154200] SHD
- [140126] SHDE
- [154000] SHT
- [140000] SKP
- [152402] SRB
- [004000] STA
- [143304] STATX
- [020000] STD
- [143306] STDTX
- [030000] STF
- [010000] STT
- [014000] STX
- [000000] STZ
- [143305] STZTX
- [064000] SUB
- [140121] SUBD
- [144000] SWAP
- [140707] SZCB
- [140706] SZSB
- [150000] TRA
- [150100] TRR
- [140123] TSET
- [140516] TSETP
- [140125] UPACK
- [140133] VERSN
- [151000] WAIT
- [140500] WGLOB
================================================================================
π CPU Information¶
================================================================================
ND-100¶
Word Size: 16 bits Endianness: big
================================================================================
βοΈ Registers¶
================================================================================
| Name | Description | Size | Type |
|---|---|---|---|
STS |
Status register (user) | 16 bits | |
D |
Data register | 16 bits | |
P |
Program counter | 16 bits | |
B |
Base register for addressing | 16 bits | |
L |
Link register | 16 bits | |
A |
Accumulator register | 16 bits | |
T |
Temporary register | 16 bits | |
X |
Index register | 16 bits |
================================================================================
π Instruction Classes¶
================================================================================
memory_transfer¶
Memory transfer instructions specify memory transfers. These are the only instructions that use the addressing modes in their format.
Format: <opcode> <address mode> <disp>
Mask: 1111_1000_0000_0000
jump_on_condition¶
Jump on condition instructions specify a jump to a specified address if a condition is met. The condition is specified by the condition code bits in the status register.
Format: <opcode> <displacement>
Mask: 1111_1111_0000_0000
register_block¶
Register block instructions specify a register block to be loaded from memory.
Format: <opcode> <level> <type>
Mask: 1111_1111_1000_0000
register_src_dst¶
Class where we can specify a source and destination register
Format: <opcode> <source> <destination>
Mask: 1111_1111_1100_0000
register_dst¶
Class where we can specify a destination register
Format: <opcode> <destination>
Mask: 1111_1111_1111_1000
register_arithmetic¶
Register arithmetic instructions
Format: <opcode> <ADC> <AD1> <CM1> <CM2> <source> <destination>
Mask: 1111_1100_0000_0000
register_logical¶
Register logical instructions
Format: <opcode> <ADC> <AD1> <CM1> <CM2> <source> <destination>
Mask: 1111_1100_0000_0000
bit_instructions¶
Bit instructions
Format: <opcode> <function> <bit_no> <destination>
Mask: ``
bit_instructions_with_condition¶
Bit instructions
Format: <opcode> <condition> <bit_no> <destination>
Mask: ``
shift_instructions¶
Shift instructions
Format: <opcode> <shift_type> <shift_counter>
Mask: 1111_1000_0000_0000
================================================================================
π Addressing Modes¶
================================================================================
These three bits give the addressing mode for the instruction
Bit Structure¶
The addressing mode is encoded in the instruction word and consists of the following subfields:
| Bit | Name | Description |
|---|---|---|
| 10 | X | Index register flag |
| 9 | I | Indirect addressing flag |
| 8 | B | Base register flag |
Effects when Bits are Set¶
- X: Address is indexed by X register
- I: Address is indirect
- B: Base-relative instead of P-relative
Syntax Variations¶
When multiple bits are set, the assembly syntax changes as follows:
- When X=1: Add
,Xprefix of operand - When I=1: Add
Iprefix of operand - When B=1: Add
,Bsuffix of operand
Summary of Addressing Modes¶
| Mode | Value | Format | Example | Effective Address |
|---|---|---|---|---|
| prelative | 0 | <disp> |
STA *2 |
(P) + disp |
| brelative | 1 | <disp>, B |
LDA -4,B |
(B) + disp |
| indirect_prelative | 2 | I <disp> |
LDA I *22 |
((P) + disp) |
| indirect_brelative | 3 | I <disp> ,B |
JPL I 3,B |
((B) + disp) |
| xrelative | 4 | <disp>,X |
LDA 0,X |
(X) + disp |
| brelative_indexed | 5 | <disp>,B,X |
LDA 17,B ,X |
(B) + disp + (X) |
| indirect_prelative_indexed | 6 | ,X I <disp> |
LDA ,X I *4 |
((P) + disp) + (X) |
| indirect_brelative_indexed | 7 | ,X I ,B <disp> |
LDA ,X I ,B *4 |
((B) + disp) + (X) |
See Addressing Modes for more detailed information.
================================================================================
π» Instructions by Category¶
================================================================================
Argument Instruction¶
| Instruction | Description |
|---|---|
AAA |
Add argument to A |
AAB |
Add argument to B |
AAT |
Add argument to T |
AAX |
Add argument to X |
SAA |
Set argument to A |
SAB |
Set argument to B |
SAT |
Set argument to T |
SAX |
Set argument to X |
Description¶
These instructions operate on registers.
The
8-bit argument numbers are extended to 16-bits using Sign extension.
The 8-bit argument becomes the least significant byte The higher byte is extended with ones or zeros.
Positive arguments have the higher byte extended with zeros Nnegative numbers are extended with ones with the argument in 2's complement form.
Arithmetic and Logical¶
| Instruction | Description |
|---|---|
ADD |
Add to A register |
AND |
Logical AND to A register |
MPY |
Multiply integer |
ORA |
Logical inclusive OR to A register |
SUB |
Subtract from A register |
Bit instructions¶
| Instruction | Description |
|---|---|
BANC |
ogical AND with bit compl |
BAND |
Logical AND to K |
BLDA |
Load K |
BLDC |
Load K and complement |
BORA |
Logical OR to K |
BSET |
Set specified bit in equal to specified condition |
BSKP |
Skip next location if specified condition is true |
BSTA |
Store and clear K |
BSTC |
Store complement and set K to 1 |
Description¶
These instructions manipulate single bits within the working and STS registers.
Instruction structure:
15 7 6 3 0
ββββββββββββ¬ββββββββ¬ββββ
β bit op β bn βdr β
ββββββββββββ΄ββββββββ΄ββββ
Bit operation: Bits 11-15 are always set to one for a bit operation. Bits 7-10 determine the type of operation as follows:
ββββββββββββ¬βββββββββββββ¬ββββββββββββββββββββββββββββββββ¬ββββββββββββββ
βtype bits β mnemonic β description β code β
β10 9 8 7 β β β β
ββββββββββββΌβββββββββββββΌββββββββββββββββββββββββββββββββΌββββββββββββββ€
β 0 0 0 0 β BSET ZRO β bit β΅ 0 β 174000β β
β 0 0 0 1 β BSET ONE β bit β΅ 1 β 174200β β
β 0 0 1 0 β BSET BCM β bit β΅ bit β 174400β β
β 0 0 1 1 β BSET BAC β bit β΅ K β 174600β β
β 0 1 0 0 β BSKP ZRO β skip if bit = 0 β 175000β β
β 0 1 0 1 β BSKP ONE β skip if bit = 1 β 175200β β
β 0 1 1 0 β BSKP BCM β skip if bit = bit β 175400β β
β 0 1 1 1 β BSKP BAC β skip if bit = K β 175600β β
β 1 0 0 0 β BSTC β bit β΅ K, K β΅ 1 β 176000β β
β 1 0 0 1 β BSTA β bit β΅ K, K β΅ 0 β 176200β β
β 1 0 1 0 β BLDC β K β΅ bit β 176400β β
β 1 0 1 1 β BLDA β K β΅ bit β 176600β β
β 1 1 0 0 β BANC β K β΅ (bit AND K) β 177000β β
β 1 1 0 1 β BAND β K β΅ (bit AND K) β 177200β β
β 1 1 1 0 β BORC β K β΅ (bit OR K) β 177400β β
β 1 1 1 1 β BORA β K β΅ (bit OR K) β 177600β β
ββββββββββββ΄βββββββββββββ΄ββββββββββββββββββββββββββββββββ΄ββββββββββββββ
Sub-instructions: Only the BSET and BSKP instructions have the following qualifying sub-instructions: ZRO ONE BCM BAC
bn (bits 3-6): The address of the bit to be manipulated is given by these four bits. Remember that each bit is given its OCTAL address.
dr (bits 0-2): The following registers allow bit operations and are specified as follows:
ββββββββββββ¬βββββββββββ¬βββββββββ
β register β mnemonic β code β
ββββββββββββΌβββββββββββΌβββββββββ€
β STS β β β 0β β
β D β DD β 1β β
β P β DP β 2β β
β B β DB β 3β β
β L β DL β 4β β
β A β DA β 5β β
β T β DT β 6β β
β X β DX β 7β β
ββββββββββββ΄βββββββββββ΄βββββββββ
β For STS no mnemonic is required as it is implied by the following table of compound mnemonics:
STS register: There are only eight bits which can be operated on in the STS register. They have special mnemonics and unique octal code values which combine the bn and dr fields.
ββββββββββββββββββ¬βββββββββββ¬ββββββββββββββββββββββββββββββ¬ββββββββββββββ
β compound β STS bit β description β octal code β
β mnemonic β β β β
ββββββββββββββββββΌβββββββββββΌββββββββββββββββββββββββββββββΌββββββββββββββ€
β SSPTM β 0 β page table flag β 00β β
β SSTG β 1 β floating point rounding flagβ 10β β
β SSK β 2 β 1 bit accumulator (K) β 20β β
β SSZ β 3 β error flag (Z) β 30β β
β SSQ β 4 β dynamic overflow flag (Q) β 40β β
β SSO β 5 β static overflow flag (O) β 50β β
β SSC β 6 β carry flag (C) β 60β β
β SSM β 7 β multi-shift link flag (M) β 70β β
ββββββββββββββββββ΄βββββββββββ΄ββββββββββββββββββββββββββββββ΄ββββββββββββββ
Bit instructions_with_destination¶
| Instruction | Description |
|---|---|
BORC |
Logical OR with bit complement |
Byte Instructions¶
| Instruction | Description |
|---|---|
BFILL |
Byte fill. |
LBYT |
Load byte from memory to A register |
MOVB |
Move byte. |
MOVBF |
Move bytes forward. |
SBYT |
Store byte from A register to memory |
Description¶
These instructions address single bytes within the memory map.
A special addressing mode is used for these instructions, utilizing the T and X registers. The contents of T point to the beginning of a character string, and the contents of X point to a specific byte within that string.
Control Instructions¶
| Instruction | Description |
|---|---|
CHREENTPAGES |
Change page tables. |
CLEPT |
Clear page tables. |
CLEPU |
Clear page tables and collect PGU information. |
CLNREENT |
Clear non reentrant pages. |
CLPT |
Clear segment from the page tables. |
CNREK |
Clear non reentrant pages (SINTRAN K only). |
ENPT |
Enter segment in page tables. |
INSPL |
Insert page in page list. (See Appendix B for a software description.) |
LACB |
Load the A register from the core map-table bank (CMBNK). |
LASB |
Load the A register with the contents of the segment-table bank (STBNK). |
LBIT |
Load single bit accumulator (K) with logical memory bit. |
LBITP |
Load single bit accumulator (K) with physical memory bit. |
LBYTP |
Load the A register with a byte from physical memory. |
LXCB |
Load the X register from the core table bank (CMBNK). |
LXSB |
Load the X register from the segment table bank (STBNK). |
RDUSP |
Read a physical memory word without using cache. |
REMPL |
Remove page from page list. |
REPT |
Enter reentrant segment in page tables. (See Appendix B for a software description.) |
RGLOB |
Examine global pointers. |
SACB |
Store the A register in the core map table bank (CMBNK). |
SASB |
Store the A register contents in the segment table bank (STBNK). |
SBIT |
Store the single bit accumulator (K) in a logical memory bit. |
SBITP |
Store the single bit accumulator (K) in a physical memory bit. |
SBYTP |
Store a byte in physical memory. |
SETPT |
Set page tables. |
SZCB |
Store zero in the core map-table bank (CMBNK). |
SZSB |
Store zero in the segment-table bank (STBNK). |
TSETP |
Test and set physical memory word. |
WGLOB |
Initialize global pointers. |
Description¶
SINTRAN III Control Instructions¶
These instructions are PRIVILEGED and only available to:
- Programs running in system mode (rings 2-3)
- Programs running without memory protection
These instructions monitor the contents of physical memory
Decimal Instructions¶
| Instruction | Description |
|---|---|
ADDD |
Add two decimal operands. |
COMD |
Compare two decimal operands. |
PACK |
Convert to BCD. |
SHDE |
Decimal shift. |
SUBD |
Subtract two decimal operands. |
UPACK |
Convert to ASCII. |
Description¶
These instructions use decimal operands residing in main memory only.
Instruction structure:
D1 (word address)
βββββββββββββββββββββββββββββββββ
β15 ... 0 β
β word address β
βββββββββββββββββββββββββββββββββ
D2 (operand features)
ββββββ¬βββββ¬ββββββββ¬ββββββββ¬βββββββββββββββ¬βββββββββββββββ
β15 β14 β13-11 β10 β 9 - 5 β 4 - 0 β
ββββββΌβββββΌββββββββΌββββββββΌβββββββββββββββΌβββββββββββββββ€
βlr β β’ βASCII βr βdecimal point | field length β
ββββββ΄βββββ΄ββββββββ΄ββββββββ΄βββββββββββββββ΄βββββββββββββββ
Descriptors (D1 and D2): - Two 16-bit words (D1 and D2) specify the operands used in decimal instructions. - D1: The first descriptor gives the word address of the decimal operand in memory. - D2: Describes the following operand features: - lr (bit 15): - lr = 0: The operand starts in the left byte of a memory word (least significant 8 bits). - lr = 1: The operand starts in the right byte of a memory word (most significant 8 bits). - ASCII (bits 11-13): - These three bits give the sign representation used for ASCII format:
βββββββ¬ββββββββββββββββββββββββ
βbits β sign representation β
βββββββΌββββββββββββββββββββββββ€
β000 β embedded trailing β
β001 β separate trailing β
β010 β embedded leading β
β011 β separate leading β
β100 β unsigned β
βββββββ΄ββββββββββββββββββββββββ
- Bit 13 also represents an unsigned number in BCD representation.
- r (bit 10): - Rounding bit. If rounding is selected, one is added to the shifted operand when the least significant digit is lost during shift and the last digit shifted out of the field is 25. - r = 1: rounding on - r = 0: rounding off - decimal point (bits 5-9): - These bits give the position of the decimal point (0 to 31, positive or negative). Zero is the decimal place to the right of the least significant digit. The number must be less than the operand field length. - field length (bits 0-4): - These bits give the operand field length in nibbles (4-bit values) or bytes (8-bit values). BCD numbers are represented by 4 bits (1 nibble), so the field length will be in nibbles; an ASCII coded digit is represented by a byte and the field length will be in bytes. - Operands start at any byte address in memory. - The maximum field length is 32 nibbles/bytes.
Decimal operands: - Decimal operands occupy a maximum of eight 16-bit memory locations. Each operand consists of BCD coded numbers. - Decimal operands must be right adjusted so that the least significant digit and sign are in the last byte of the operand field. - Before any instruction is executed, the operands are read into the register file. The result of the instruction is written into memory. - All decimal instructions use two operands. The descriptors of each operand are held in separate registers: - First operand descriptor: A and D registers - Second operand descriptor: X and T registers
Decimal overflow: - Decimal overflow is caused by: - EITHER a carry from the most significant digit position in the result - OR an oversized result, where the second operand was larger than the first, causing the significant digits of the result to be lost. - Note: The field size alone does not indicate possible overflow. - Most decimal instructions are followed by an instruction or jump to a routine which takes care of overflow errors, known as an error return. A decimal instruction executed without error generation skips the error return and program execution continues at the second instruction after it.
BCD- Binary Coded Decimal¶
Decimal digits are represented in binary-coded decimal (BCD), sometimes known as packed decimal.
Four bits are used to represent a decimal digit:
Table 3. BCD notation
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββ
β binary notation β decimal equivalent β
β msb lsb β β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ€
β 0 0 0 0 β 1 β
β 0 0 0 1 β 2 β
β 0 0 1 0 β 3 β
β 0 0 1 1 β 4 β
β 0 1 0 0 β 5 β
β 0 1 0 1 β 6 β
β 0 1 1 0 β 7 β
β 0 1 1 1 β 8 β
β 1 0 0 0 β 9 β
β 1 0 0 1 β 10 β
β 1 0 1 0 β + β
β 1 0 1 1 β - β
β 1 1 0 0 β + β β
β 1 1 0 1 β - β β
β 1 1 1 0 β + β
β 1 1 1 1 β (+) β
βββββββββββββββββββββββββ΄ββββββββββββββββββββββββ
(+) represents unsigned, it is treated as a plus.
β The ND-110 instruction set uses only the codes 1100 for plus and 1101 for minus.
The maximum length of an operand is 31 decimal digits plus a sign nibble (4 bits), this occupies eight consecutive memory locations (eight 16-bit words).
ASCII coded decimal¶
ASCII-coded decimal notation uses eight bits to represent a decimal digit.
The format of an ASCII code decimal is:
βββββββββ¬ββββββββ
β zone β digit β
βββββββββ΄ββββββββ
Figure 5. ASCII byte structure
Table 4. ASCII notation
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββ
β ASCII Code β Decimal Equivalent β
β msb lsb β β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββ€
β 0 0 1 1 0 0 0 0 β 0 β
β 0 0 1 1 0 0 0 1 β 1 β
β 0 0 1 1 0 0 1 0 β 2 β
β 0 0 1 1 0 0 1 1 β 3 β
β 0 0 1 1 0 1 0 0 β 4 β
β 0 0 1 1 0 1 0 1 β 5 β
β 0 0 1 1 0 1 1 0 β 6 β
β 0 0 1 1 0 1 1 1 β 7 β
β 0 0 1 1 1 0 0 0 β 8 β
β 0 0 1 1 1 0 0 1 β 9 β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββ
Bit 7 (msb) is the parity bit and is always zero in ASCII code.
Sign representation:
The ASCII notation for sign is as follows:
+ 00101011 53β
- 00101101 55β
There are four ways of representing the sign in a decimal operand:
- separate trailing: The byte following the last significant digit contains the sign.
- separate leading: The byte preceding the ASCII digit code contains the sign.
- embedded trailing: The byte representing the least significant decimal digit also contains the sign.
- embedded leading: The byte representing the most significant digit also contains the sign.
- embedded sign coding: The embedded codes are represented by ASCII notation as follows:
Table 5. ASCII embedded notation
ASCII value
βββββββββββββββββ¬βββββββββββββββββββ¬ββββββββββββββββββββ
β decimal β Positive sign β negative sign β
β operand β octal | binary | octal | binary β
βββββββββββββββββΌββββββββΌβββββββββββΌβββββββββΌβββββββββββ€
β 0 β 173 β 01111011 β 175 β 01111001 β
β 1 β 101 β 01000001 β 112 β 01001010 β
β 2 β 102 β 01000010 β 113 β 01001011 β
β 3 β 103 β 01000011 β 114 β 01001100 β
β 4 β 104 β 01000100 β 115 β 01001101 β
β 5 β 105 β 01000101 β 116 β 01001110 β
β 6 β 106 β 01000110 β 117 β 01001111 β
β 7 β 107 β 01000111 β 120 β 01010000 β
β 8 β 110 β 01001000 β 121 β 01010001 β
β 9 β 111 β 01001001 β 122 β 01010010 β
βββββββββββββββββ΄ββββββββ΄βββββββββββ΄βββββββββ΄βββββββββββ
Execute¶
| Instruction | Description |
|---|---|
EXR |
Execute instruction found in specified register |
Floating Conversion (Standard Format)¶
| Instruction | Description |
|---|---|
DNZ |
Denormalise |
NLZ |
Normalize |
Input and Output¶
| Instruction | Description |
|---|---|
IOT |
NORD-1 INSTRUCTION (DO NOT USE) |
IOX |
Exchange information between I/O system and A register. |
IOXT |
Exchange information between I/O system and A register. |
Inter-level Instructions¶
| Instruction | Description |
|---|---|
IRR |
Inter Register Read |
IRW |
Inter Register Write |
Interrupt Control Instructions¶
| Instruction | Description |
|---|---|
IDENT |
Transfer IDENT code of interrupting device with highest priority on the specified level to A register. |
IOF |
Interrupt System OFF |
ION |
Interrupt System ON |
OPCOM |
Operator Communication |
POF |
Memory management OFF |
WAIT |
When interrupt system off: halts the program and enters the operator's communication. |
INTERRUPT CONTROL INSTRUCTIONS¶
These instructions are PRIVILEGED and only available to:
- Programs running in system mode (rings 2-3)
- Programs running without memory protection
These instructions control the CPU interrupt system.
General Description¶
The ND-110 has a priority interrupt system with 16 program levels.
Each program level has its own set of working registers (A, B, D, L, P, STS, T, X).
The program levels have increasing priority, that is, program level 15 has the highest priority and program level 0 the lowest.
The 16 levels are subdivided as follows:
| level | used for | controlled by |
|---|---|---|
| 15 | very fast user interrupts | program/ext. device |
| 14 | internal hardware status interrupts | program/ext. device |
| 13-10 | vectored interrupts* | program/ext. device |
| 9-0 | system and user programs | program |
*2048 possible sources
Program level selection and control¶
Program level selection and control is via two 16-bit registers:
- PID: Priority Interrupt Detect
- PIE: Priority Interrupt Enable
PID is affected by program and external interrupts; PIE is controlled by program only. They can only be changed or monitored by the privileged instructions: TRA, TRR, MST, and MCL (see pages 118-120).
Note: When the power is turned on, the power-up sequence resets PIE and PID so that program level 0 is selected.
Interrupt programming is via three registers:¶
- IIC: Internal Interrupt Code
- IIE: Internal Interrupt Enable
- PVL: Previous Level (of hardware interrupt source)
Memory Examine and Test Instructions¶
| Instruction | Description |
|---|---|
RDUS |
Read a word without using cache |
TSET |
Test and set |
Memory Management Instructions¶
| Instruction | Description |
|---|---|
PIOF |
Memory management and interrupt system OFF |
PION |
Memory management and interrupt system ON |
PON |
Memory management ON |
REX |
Reset extended address mode |
SEX |
Set extended address mode |
Description¶
These instructions are PRIVILEGED and only available to:
- programs running in system mode (rings 2-3)
- programs running without memory protection
These instructions control the CPU memory management system.¶
Memory Transfer - Double word instructions¶
| Instruction | Description |
|---|---|
LDD |
Load double word |
STD |
Store double word |
Memory Transfer - Load Instruction¶
| Instruction | Description |
|---|---|
LDA |
Load A register |
LDT |
Load T register |
LDX |
Load X register |
Memory Transfer - Store Instruction¶
| Instruction | Description |
|---|---|
MIN |
Memory increment and skip next instruction if zero (EA): = (EA) + 1 |
STA |
Store A register to memory location |
STT |
Store T register to memory location |
STX |
Store X register to memory location |
STZ |
Store zero to memory location |
Memory Transfer Instructions¶
| Instruction | Description |
|---|---|
LDATX |
Load A register |
LDBTX |
Load B register |
LDDTX |
Load double word |
LDXTX |
Load X register |
STATX |
Store A register |
STDTX |
Store double word |
STZTX |
Store zero |
SINTRAN III Memory Transfer Instructions¶
These instructions are PRIVILEGED and only available to:
- Programs running in system mode (rings 2-3)
- Programs running without memory protection
These instructions read/write from/to physical memory locations independent of whether paging is on or off. If the address is within the page-table range then the page tables are affected.
Instruction format¶
<physical instruction mnemonic> <displacement>
Instruction structure¶
| 15 6 | 5 3 | 2-0 |
|---------------------------|--------------|-----|
| physical memory operation | displacement |type |
- physical memory operation type (bits 15-6 and 2-0): There are seven physical memory read/write instructions, specified by a base octal code of 143300β (bits 15-6) and type field (bits 2-0).
- disp.: The contents of the T and X register give the effective address of the physical memory location (see page 28).
- A 3-bit displacement can be added to the X register within the instruction code. This is denoted by Ξ in the following codes:
| instruction mnemonic | octal code |
|---|---|
| LDATX | 1433Ξ0 |
| LDXTX | 1433Ξ1 |
| LDDTX | 1433Ξ2 |
| LDBTX | 1433Ξ3 |
| STATX | 1433Ξ4 |
| STZTX | 1433Ξ5 |
| STDTX | 1433Ξ6 |
β If you use programs written for ND-100 computers with the microprogram version numbers 015xx A-J (48 bit) or 026xx A-F (32 bit), LDBTX would have been followed by a word containing 177777β.
This is not necessary for later ND-100 versions nor the ND-110. Running these earlier programs may change the status of the K bit in the ND-110 and later ND-100s.
Monitor Calls¶
| Instruction | Description |
|---|---|
MON |
The MON instruction is used in special different contexts when running under an operating system. |
Physical Memory Control Instructions¶
| Instruction | Description |
|---|---|
DEPO |
Deposit |
EXAM |
Examine |
Description¶
These instructions are PRIVILEGED and only available to:
- programs running in system mode (rings 2-3)
- programs running without memory protection
These instructions monitor physical memory location contents.¶
privileged¶
| Instruction | Description |
|---|---|
LWCS |
Writable Control Store Instruction |
Register Block Instructions¶
| Instruction | Description |
|---|---|
LRB |
Load register block |
SRB |
Store register block |
Register Operations¶
| Instruction | Description |
|---|---|
COPY |
Copy source to destination |
EXIT |
Return from subroutine |
MIX3 |
Multiply index by 3. |
RADD |
Add source to destination (dr): = (dr) + (sr) |
RAND |
Logical AND to destination |
RCLR |
Register clear |
RDCR |
Register decrement |
RDIV |
Divide double accumulator with source; quotient in A, remainder in D |
REXO |
Logical exclusive OR |
RINC |
Register increment |
RMPY |
Multiply source with destination; result in double accumulator |
RORA |
OR register |
RSUB |
Register subtract |
SWAP |
Register swap |
Description¶
These instructions specify operations between source (sr) and destination (dr) registers.
Register Transfer¶
| Instruction | Description |
|---|---|
MCL |
Masked clear |
MST |
Masked set |
TRA |
Transfer to A register |
TRR |
Transfer A to internal register |
Sequencing Instructions¶
| Instruction | Description |
|---|---|
JAF |
Condtion: Jump if (A) != 0 (jump if A filled) |
JAN |
Condtion: Jump if (A) < 0 (jump if A is negative) |
JAP |
Condtion: Jump if (A) > 0 (jump if A positive) |
JAZ |
Condtion: Jump if (A) == 0 (jump if A is zero) |
JMP |
Jump - Unconditional jump to specified address |
JNC |
Increment X and jump if X is negative |
JPC |
Increment X and jump if X is positive |
JPL |
Jump if Plus - Jump to specified address if the result of the last operation was positive (sign bit is 0) |
JXN |
Condtion: Jump if (X) < 0 (jump if X negative) |
JXZ |
Condtion: Jump if (X) == 0 (jump if X is zero) |
Description¶
FOR ALL JUMP ON CONDITION TRUE INSTRUCTIONS:
General description: (P) <- (EA)
If condition true, jump to the address of the program counter plus the value of disp. If condition false, continue program execution at (P) + 1.
Shift Instructions¶
| Instruction | Description |
|---|---|
SAD |
Shift A and D registers connected |
SHA |
Shift A register |
SHD |
Shift D register |
SHT |
Shift T register |
Skip Instruction¶
| Instruction | Description |
|---|---|
SKP |
The next instruction is skipped if a specified condition is true. |
Stack Operations¶
| Instruction | Description |
|---|---|
ELEAV |
Error leave stack. |
ENTR |
Enter stack. |
INIT |
Initialize stack. |
LEAVE |
Leave stack. |
Description¶
These instructions handle stack operations improving the execution time of high-level language-based programs.
The B register will always point to a "stack-frame" containing:
| Stack frame content mnemonic | Pointed to by B= (octal) | Description |
|---|---|---|
| LINK | -200β | next instruction address β |
| PREVB | -177β | previous stack frame address |
| STP | -176β | next stack frame address |
| SMAX | -175β | top of stack address |
| β | -174β | reserved for system use |
| ERRCODE | -173β | (A) after an ELEAV instruction |
β In the case of a LEAVE instruction.
The stack-handling instructions are page-fault tolerant in the ND-110.
Standard Floating Instructions¶
| Instruction | Description |
|---|---|
FAD |
Add to floating point accumulator |
FDV |
Divide floating point accumulator |
FMU |
Multiply floating point accumulator. |
FSB |
Subtract from floating point accumulator. |
LDF |
Load floating accumulator (TAD) from memory (FW) |
STF |
Store floating accumulator (TAD) to memory (ea) |
System/CPU Information¶
| Instruction | Description |
|---|---|
VERSN |
** ND-110/ND-120 ONLY** |
Undocumented Instructions¶
| Instruction | Description |
|---|---|
GECO |
GECO is a customer-specifed instruction which appears to be included as part of the standard instruction set from ND-100/CE and later. |
Word Block Instructions¶
| Instruction | Description |
|---|---|
MOVEW |
Word block move. |
================================================================================
π Instruction Reference¶
================================================================================
AAA¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | AAA <number> |
| Category | Argument Instruction |
| Privilege | User |
| Mask | 1111_1111_0000_0000 |
π Description¶
Add argument to A
π Format¶
AAA <number>
Bit Layout¶
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-8 | The opcode determines what type of operation occurs |
number |
numeric | 7-0 | 8-bit argument extended to 16 bits using sign extension |
π© Flags Affected¶
| Flag | Description |
|---|---|
C |
Carry flag |
O |
Static overflow flag |
π Examples¶
Add 3 to the contents of the A register.¶
AAA 3
AAB¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | AAB <number> |
| Category | Argument Instruction |
| Privilege | User |
| Mask | 1111_1111_0000_0000 |
π Description¶
Add argument to B
π Format¶
AAB <number>
Bit Layout¶
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-8 | The opcode determines what type of operation occurs |
number |
numeric | 7-0 | 8-bit argument extended to 16 bits using sign extension |
π© Flags Affected¶
| Flag | Description |
|---|---|
C |
Carry flag |
O |
Static overflow flag |
π Examples¶
Add -26 to the contents of the B register.¶
AAB -26
AAT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | AAT <number> |
| Category | Argument Instruction |
| Privilege | User |
| Mask | 1111_1111_0000_0000 |
π Description¶
Add argument to T
π Format¶
AAT <number>
Bit Layout¶
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-8 | The opcode determines what type of operation occurs |
number |
numeric | 7-0 | 8-bit argument extended to 16 bits using sign extension |
π© Flags Affected¶
| Flag | Description |
|---|---|
C |
Carry flag |
O |
Static overflow flag |
π Examples¶
Add 13 to the contents of the T register.¶
AAT 13
AAX¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | AAX <number> |
| Category | Argument Instruction |
| Privilege | User |
| Mask | 1111_1111_0000_0000 |
π Description¶
Add argument to X
π Format¶
AAX <number>
Bit Layout¶
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-8 | The opcode determines what type of operation occurs |
number |
numeric | 7-0 | 8-bit argument extended to 16 bits using sign extension |
π© Flags Affected¶
| Flag | Description |
|---|---|
C |
Carry flag |
O |
Static overflow flag |
π Examples¶
Add 5 to the contents of the X register.¶
AAX 5
ADD¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | ADD <addressing_mode> <displacement> |
| Category | Arithmetic and Logical |
| Privilege | User |
| Mask | 1111_1000_0000_0000 |
π Description¶
Add to A register
A β΅ A + (EL) Add the contents of the memory location pointed to by the effective address to the A register, leaving the result in A.
π Format¶
ADD <addressing_mode> <displacement>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Note: This instruction uses addressing modes. See Addressing Modes for details.
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
addressing_mode |
addressing_modes | 10-8 | These three bits give the addressing mode for the instruction |
displacement |
displacement | 7-0 | 8-bit signed field gives the memory address displacement (2's complement notation giving a displacement range of -128 to 127 memory locations) |
π© Flags Affected¶
| Flag | Description |
|---|---|
C |
Carry flag |
O |
Static overflow flag |
Q |
Dynamic overflow flag |
ADDD¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | ADDD |
| Category | Decimal Instructions |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
Add two decimal operands.
(op1) β΅ (op1) + (op2)
Add the second operand to the first operand, leaving the result in the first operand's location.
If the first operand field is too short to contain all the significant digits of the result, then decimal overflow occurs.
If bit 13 of D2 in the first operand is set, the sign of the result will be 17β (BCD unsigned).
Any empty operand, that is with a field length of zero, is treated as a positive zero.
Instruction sequence:
ADDD
error handling instruction
next instruction after ADDD or after error handling routine
Note: Operands should be normalized before this instruction is executed using the SHDE instruction.
Example:
ADDD
JMP *12β
STX 20β
The ADDD instruction causes the program counter to skip the next instruction UNLESS an error has been generated. In this case, the instruction immediately after ADDD will handle the error in some way (in this example a jump is executed on error to ((P) + 12β)).
(* is the assembler mnemonic for the P register)
π Format¶
ADDD
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
AND¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | AND <addressing_mode> <displacement> |
| Category | Arithmetic and Logical |
| Privilege | User |
| Mask | 1111_1000_0000_0000 |
π Description¶
Logical AND to A register A β΅ A & (EA)
Perform a bitwise AND operation between the contents of the A register and the contents of the memory location pointed to by the effective address, leaving the result in A.
π Format¶
AND <addressing_mode> <displacement>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Note: This instruction uses addressing modes. See Addressing Modes for details.
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
addressing_mode |
addressing_modes | 10-8 | These three bits give the addressing mode for the instruction |
displacement |
displacement | 7-0 | 8-bit signed field gives the memory address displacement (2's complement notation giving a displacement range of -128 to 127 memory locations) |
BANC¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BANC |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
ogical AND with bit compl
K β΅ K & (B)0
Perform a bitwise AND with the contents of the B register and the contents of the K register, leaving the result in K.
π Format¶
BANC
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
BAND¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BAND |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Logical AND to K
K β΅ K & (B)
π Format¶
BAND
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
BFILL¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BFILL |
| Category | Byte Instructions |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
Byte fill.
Only the destination is used as an operand in this instruction (it is placed in the X and T registers). The lower byte of the A register is then filled with the destination field.
After execution, bit 15 of the T register points to the end of the field (after the last byte position) and the field length equals zero.
π Format¶
BFILL
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
BLDA¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BLDA |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Load K
K β΅ bit
π Format¶
BLDA
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
BLDC¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BLDC |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Load K and complement
K β΅ (B) (complemented)
π Format¶
BLDC
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
BORA¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BORA |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Logical OR to K
K β΅ K | (B)
π Format¶
BORA
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
BORC¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BORC |
| Category | Bit instructions_with_destination |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Logical OR with bit complement
K β΅ K | (B)0
π Format¶
BORC
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
π Examples¶
Complement bit 6 in the X register, then OR the bit with K, leaving the result in K¶
BORC 60 DX
BSET¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BSET <condition> <bit_no> |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Set specified bit in equal to specified condition
π Format¶
BSET <condition> <bit_no>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 7 β 7 6 5 4 3 β
βββββββββββββββββββββΌββββββββββββββββΌβββββββββββββββββββββββ€
β opcode β condition β bit_no β
βββββββββββββββββββββ΄ββββββββββββββββ΄βββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
condition |
enum | 10-7 | Specify condition for BSKP and BSET Values: - ZRO (0000): Specificed bit equals zero- ONE (0001): Specified bit equals one- BAC (0002): Specified bit equals K- BCM (0003): Complement specified bit |
bit_no |
numeric | 7-3 | Specify bit number Values: - SSTG (000010): Floating rounding flag- SSK (000020): 1-bit accumulator (K)- SSZ (000030): Error flag (Z)- SSQ (000040): Dynamic overflow flag (Q)- SSO (000050): Static overflow flag (O)- SSC (000060): Page table flag- SSM (000070): Page table flag |
π Examples¶
Reset the static overflow flag¶
BSET ZRO SSO
BSKP¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BSKP <condition> <bit_no> |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Skip next location if specified condition is true
P β΅ P+1
π Format¶
BSKP <condition> <bit_no>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 7 β 7 6 5 4 3 β
βββββββββββββββββββββΌββββββββββββββββΌβββββββββββββββββββββββ€
β opcode β condition β bit_no β
βββββββββββββββββββββ΄ββββββββββββββββ΄βββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
condition |
enum | 10-7 | Specify condition for BSKP and BSET Values: - ZRO (0000): Specificed bit equals zero- ONE (0001): Specified bit equals one- BAC (0002): Specified bit equals K- BCM (0003): Complement specified bit |
bit_no |
numeric | 7-3 | Specify bit number Values: - SSTG (000010): Floating rounding flag- SSK (000020): 1-bit accumulator (K)- SSZ (000030): Error flag (Z)- SSQ (000040): Dynamic overflow flag (Q)- SSO (000050): Static overflow flag (O)- SSC (000060): Page table flag- SSM (000070): Page table flag |
π Examples¶
Skip the next location if the cary flag is set¶
BSKP ONE SSC
BSTA¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BSTA |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Store and clear K
(B) β΅ K; K β΅ 0
π Format¶
BSTA
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
BSTC¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | BSTC |
| Category | Bit instructions |
| Privilege | User |
| Mask | 1111_1111_1000_0000 |
π Description¶
Store complement and set K to 1
(B) β΅ K (complemented); K β΅ 1
π Format¶
BSTC
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π© Flags Affected¶
| Flag | Description |
|---|---|
K |
Accumulator |
CHREENTPAGES¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | CHREENTPAGES |
| Category | Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Change page tables.
The X register is used to address the current (R1) and previous (Rp) scratch registers.
If the R1 is zero, the reentrant page has nothing to change so the loop is left, otherwise the contents of the memory location pointed to by the R1 + 2 are loaded into T.
T then contains the protect table entry, if the page has not been written to (WIP bit 12 is zero) T and R1 are loaded with Rp. R1 (now containing Rp) is tested again for zero. If the page has been written to, the T register is loaded with the contents of the second scratch register (R2), pointed to by R1, and R2 becomes the address of Rp. X is loaded with R1 as the new pointer to the reentrant pages and Rp is loaded into the D register pointed to by A.
π Format¶
CHREENTPAGES
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
CLEPT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | CLEPT |
| Category | Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Clear page tables.
π Detailed Information¶
This instruction can replace the following instructions: CLEPT: JXZ * 10β LDBTX 10β LDA ,B JAZ 3β STATX 20β STZ ,B LDXTX 00 JMP -7β
Each time the loop is executed (until X becomes zero) the physical memory location addressed by X is loaded into the B register.
The B register contents provide the address of a page table entry, which is loaded into the A register.
If the page table entry is zero (unused) the loop is restarted.
If the page table entry is not zero (used) it is stored in a physical location addressed by X (8 locations away from its original entry) and the original page table entry cleared by placing zero in the location addressed by the B register.
The physical location addressed by X is then loaded into the X register itself and the loop restarted.
- is the mnemonic for P relative addressing.
π Format¶
CLEPT
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
CLEPU¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | CLEPU |
| Category | Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Clear page tables and collect PGU information.
π Detailed Information¶
This instruction collects information on the PGU (page used) bit of a page table entry whilst executing CLEPT.
The instruction places PGU information in an eight word table called the page map bank. Each bit in the bank represents the status of a page's PGU bit as follows:
15 0 +-------------------------------------------------+ | | | | | | | | Ξ² | <- word 0 +-------------------------------------------------+ | | Ξ΅ | | | | | | | <- word 1 +-------------------------------------------------+ . . . . +-------------------------------------------------+ | Ξ | | | | | | | | <- word 7 +-------------------------------------------------+
Ξ denotes page 177β PGU bit Ξ΅ denotes page 32β PGU bit Ξ² denotes page 0β PGU bit
The L register contains the address of the map entry.
π Format¶
CLEPU
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
CLNREENT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | CLNREENT |
| Category | Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Clear non reentrant pages.
The contents of the memory address at A + 2 are read to find the page table to be cleared along with the SINTRAN RT bitmap (addressed by the X and T registers). The page table entries corresponding to those bits set in the RT bitmap are then cleared.
π Format¶
CLNREENT
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
CLPT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | CLPT |
| Category | Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Clear segment from the page tables.
π Format¶
CLPT
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
CNREK¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | CNREK |
| Category | Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Clear non reentrant pages (SINTRAN K only).
π Format¶
CNREK
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
COMD¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | COMD |
| Category | Decimal Instructions |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
Compare two decimal operands.
(A) β΅ (op1) compared to (op2)
(A) = 0 if (op1) = (op2) (A) = 1 if (op1) > (op2) (A) = -1 if (op1) < (op2)
Compare the first operand with the second operand, leaving the result in the A register.
If the two operands are unequal in field length, the shorter operand is extended with zeros to allow comparison. The operands are unaffected by the instruction.
The positions of the decimal points are not taken into account when the two operands are compared, so the two operands should be normalized using the SHDE instruction first.
Any empty operand, that is with a field length of zero, is treated as a positive zero. An unsigned number is treated as positive. Positive and negative zeros are equal.
Instruction sequence:
COMD
error handling instruction
next instruction after COMD or after error handling routine
Example:
COMD
JMP *30β
AAA 20β
The COMD instruction causes the program counter to skip the next instruction UNLESS an error has been generated. In this case, the instruction immediately after COMD will handle the error in some way (in this example a jump is executed on error to ((P) + 30β)).
(* is the assembler mnemonic for the P register)
π Format¶
COMD
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
COPY¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | COPY [sub-instruction(s)] <source> <destination> |
| Category | Register Operations |
| Privilege | User |
| Mask | 1111_1111_0000_0000 |
π Description¶
Copy source to destination
COPY is a compound mnemonic for RADD CLD.
Optional subinstructions: The following sub-instructions are allowed: CM1, CM2, ADC, AD1
Note: Using ADC and AD1i in the same instruction generates a no-operation.
π Format¶
COPY [sub-instruction(s)] <source> <destination>
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββββββββ€
β opcode β source β destination β
βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββ΄ββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-6 | The opcode for register arithmetic |
source |
enum | 5-3 | Source register (sr) Values: - SD (000010): D register as source- SP (000020): P register as source- SB (000030): B register as source- SL (000040): L register as source- SA (000050): A register as source- ST (000060): T register as source- SX (000070): X register as source- ZERO (000000): Source value equals zero |
destination |
enum | 2-0 | Destination register (dr) Values: - DD (000001): D register as destination- DP (000002): P register as destination- DB (000003): B register as destination- DL (000004): L register as destination- DA (000005): A register as destination- DT (000006): T register as destination- DX (000007): X register as destination |
π© Flags Affected¶
| Flag | Description |
|---|---|
C |
Carry flag |
O |
Static overflow flag |
Q |
Dynamic overflow flag |
π Examples¶
Copy the contents of the A register to the D register.¶
COPY SA DD
2's complement the A register. (Equivalent to RADD CM1 ADC SA DA¶
COPY CM2 SA DA
DEPO¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | DEPO |
| Category | Physical Memory Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Deposit
Store the contents of the T register in the physical memory location pointed to by the A and D register contents.
π Format¶
DEPO
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
DNZ¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | DNZ <scaling_factor> |
| Category | Floating Conversion (Standard Format) |
| Privilege | User |
| Mask | 1111_1111_0000_0000 |
π Description¶
Denormalise
Convert the floating number in TAD to a fixed point number in A
π Detailed Information¶
The number in the floating point accumulator (A and D registers) is converted to its Single precision fixed point equivalent in the A register using the scaling factor given.
When converting to an integer, a scaling factor of -16 should always be used and will give a fixed point number with the same value as the integer part of the floating point number. Other scaling factors will have the same result but the overflow test will be affected.
The D register will be cleared after this instruction.
If the conversion causes underflow, the A and D registers will be set to zero. If overflow occurs (the resulting integer has an absolute value greater than decimal 32767), the error flag (Z) is set to one.
48-bit: * 48-bit CPUs allow different scaling factors to be used for DNZ operations. However, the overflow test is only failproof for a scaling factor of 16 (decimal)
π Format¶
DNZ <scaling_factor>
Bit Layout¶
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β scaling_factor β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-8 | The opcode for floating conversion |
scaling_factor |
numeric | 7-0 | Scaling factor in range -128 to 127 (gives converting range from 10^-39 to 10^39) |
π Examples¶
Convert the number in TAD to a fixed point number in A¶
DNZ
Floating to integer conversation. Opcode 152360¶
DNZ -20
ELEAV¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | ELEAV |
| Category | Stack Operations |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
Error leave stack.
If an error occurs, leave the stack.
This instruction saves the previous stack pointer in LINK and restores the B register to its previous value (PREVB) before leaving the stack. The stack is left by loading the P register (program counter) with the return address (LINK). The A register is loaded with an error code which is saved in the ERRCODE stack entry (pointed to by B = 173β).
(B = 200β) β΅ (B = 200β) - 1 (P) β΅ (B = 200β) {LINK} (B) β΅ (B = 177β) {PREVB} (A) β΅ ERRCODEβ (B = 173β) β΅ (A) {ERRCODE}
Format: ELEAV
π Format¶
ELEAV
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
ENPT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | ENPT |
| Category | Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Enter segment in page tables.
π Format¶
ENPT
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
ENTR¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | ENTR |
| Category | Stack Operations |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
Enter stack.
This instruction saves the current stack pointer (B), the return address (LINK), and previous stack pointer (PREVB). It transfers the top of stack address (SMAX) and establishes the new stack demand and pointer.
(B = 177β) β΅ (B) {save current pointer in PREVB} (B = 175β) β΅ (B = 175β) {SMAX} (B = 200β) β΅ (L) + 1 {save return address in LINK} (B) β΅ (B = 176β) + 200β {new pointer} (B = 176β) β΅ stack demand + (B)
Stack overflow causes an error return, that is the program continues at the address following the stack demand value. In all other cases, the program skips this address to find the return address from the stack.
Format:
ENTR
π Format¶
ENTR
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
π© Flags Affected¶
| Flag | Description |
|---|---|
PTM |
Page Table Flag |
EXAM¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | EXAM |
| Category | Physical Memory Control Instructions |
| Privilege | Privileged |
| Mask | 1111_1111_1111_1111 |
π Description¶
Examine
Load the contents of the physical memory location, pointed to by the A and D register contents, into the T register.
π Format¶
EXAM
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
EXIT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | EXIT |
| Category | Register Operations |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
Return from subroutine
This compound mnemonic represents the specific COPY instruction: COPY SL DP
It causes the return from a subroutine by copying the stored return address into the program counter (P register).
π Format¶
EXIT
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
π© Flags Affected¶
| Flag | Description |
|---|---|
C |
Carry flag |
O |
Static overflow flag |
Q |
Dynamic overflow flag |
EXR¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | EXR <sr> |
| Category | Execute |
| Privilege | User |
| Mask | 1111_1111_1100_0000 |
π Description¶
Execute instruction found in specified register
The contents of the sr register are executed as the next instruction. If sr contains a memory reference instruction, the address is given as part of the instruction.
EXR
π Format¶
EXR <sr>
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββ€
β opcode β register β
βββββββββββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-3 | The opcode for execute instruction |
register |
enum | 2-0 | Register containing instruction to execute Values: - SD (000010): D register- SB (000030): B register- SL (000040): L register- SA (000050): A register- ST (000060): T register- SX (000070): X register |
π Examples¶
[(A) = 014177, STX *177] Execute the instruction held in the A register. Store the K register contents in the memory location pointed to by the program counter plus 177.¶
EXR SA
[(B) = 134020, JPL 20] Execute the instruction held in the B register. The instruction is 4a jump to a subroutine at memory location ({P} + 20.). The return address (the address of the instruction after EXR) returned to once the subroutine has been completed is heid in the L register.¶
EXR SB
FAD¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | FAD <addressing_mode> <disp> |
| Category | Standard Floating Instructions |
| Privilege | User |
| Mask | 1111_1000_0000_0000 |
π Description¶
Add to floating point accumulator
(A) β΅ (ea) + (T) (D) β΅ (ea + 1) + (A)
The contents of two sequential memory locations, pointed to by the effective address, are added to the contents of the floating point accumulator (T and A registers). The result is held in the accumulator.
π Format¶
FAD <addressing_mode> <disp>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Note: This instruction uses addressing modes. See Addressing Modes for details.
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
addressing_mode |
addressing_modes | 10-8 | These three bits give the addressing mode for the instruction |
displacement |
displacement | 7-0 | 8-bit signed field gives the memory address displacement (2's complement notation giving a displacement range of -128 to 127 memory locations) |
FDV¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | FDV <addressing_mode> <disp> |
| Category | Standard Floating Instructions |
| Privilege | User |
| Mask | 1111_1000_0000_0000 |
π Description¶
Divide floating point accumulator
The contents of the floating point accumulator (A and D registers) are divided by the contents of two sequential memory locations, pointed to by the effective address.
π Detailed Information¶
Flags affected: - Division by zero sets the error flag (2). - This can be detected by the BSKP instruction
π Format¶
FDV <addressing_mode> <disp>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Note: This instruction uses addressing modes. See Addressing Modes for details.
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
addressing_mode |
addressing_modes | 10-8 | These three bits give the addressing mode for the instruction |
displacement |
displacement | 7-0 | 8-bit signed field gives the memory address displacement (2's complement notation giving a displacement range of -128 to 127 memory locations) |
π© Flags Affected¶
| Flag | Description |
|---|---|
Z |
Error flag |
FMU¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | FMU <addressing_mode> <disp> |
| Category | Standard Floating Instructions |
| Privilege | User |
| Mask | 1111_1000_0000_0000 |
π Description¶
Multiply floating point accumulator.
The contents of the floating point accumulator (A and D registers) are multiplied by the contents of two sequential memory locations, pointed to by the effective address. The result is held in the accumulator.
π Format¶
FMU <addressing_mode> <disp>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Note: This instruction uses addressing modes. See Addressing Modes for details.
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
addressing_mode |
addressing_modes | 10-8 | These three bits give the addressing mode for the instruction |
displacement |
displacement | 7-0 | 8-bit signed field gives the memory address displacement (2's complement notation giving a displacement range of -128 to 127 memory locations) |
π© Flags Affected¶
| Flag | Description |
|---|---|
Z |
Error flag |
FSB¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | FSB <addressing_mode> <disp> |
| Category | Standard Floating Instructions |
| Privilege | User |
| Mask | 1111_1000_0000_0000 |
π Description¶
Subtract from floating point accumulator.
The contents of two sequential memory locations, pointed to by the effective address, are subtracted from the contents of the floating point accumulator (A and D registers). The result is held in the accumulator.
π Format¶
FSB <addressing_mode> <disp>
Bit Layout¶
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Note: This instruction uses addressing modes. See Addressing Modes for details.
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-11 | The opcode determines what type of operation occurs |
addressing_mode |
addressing_modes | 10-8 | These three bits give the addressing mode for the instruction |
displacement |
displacement | 7-0 | 8-bit signed field gives the memory address displacement (2's complement notation giving a displacement range of -128 to 127 memory locations) |
π© Flags Affected¶
| Flag | Description |
|---|---|
Z |
Error flag |
GECO¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | GECO |
| Category | Undocumented Instructions |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
GECO is a customer-specifed instruction which appears to be included as part of the standard instruction set from ND-100/CE and later. The name comes from the customer, GECO (Geophysical Company of Norway)
SINTRAN III version L, and probably version K and possibly earlier, tests for GECO as part of the startup.
The instruction is found in the ND-110 microcode.
π Format¶
GECO
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-0 | The opcode determines what type of operation occurs |
IDENT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | IDENT <level_code> |
| Category | Interrupt Control Instructions |
| Privilege | User |
| Mask | 1111_1111_1100_0000 |
π Description¶
Transfer IDENT code of interrupting device with highest priority on the specified level to A register.
π Format¶
IDENT <level_code>
Bit Layout¶
β 15 14 13 12 11 10 9 8 7 6 β 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββ€
β opcode β level_code β
βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββ
π§ Operands¶
| Name | Type | Bits | Description |
|---|---|---|---|
opcode |
opcode | 15-6 | The opcode determines what type of operation occurs |
level_code |
enum | 5-0 | The interrupt level code Values: - PL10 (000004): Level 10- PL11 (000011): Level 11- PL12 (000022): Level 12- PL13 (000043): Level 13 |
INIT¶
β‘ Quick Reference¶
| Property | Value |
|---|---|
| Format | INIT |
| Category | Stack Operations |
| Privilege | User |
| Mask | 1111_1111_1111_1111 |
π Description¶
Initialize stack.
Loads the addresses pointed to by B with the stack frame addresses.
Sets up
LINK β΅ L + 1 {stack start}
PREVB β΅ (B) {save current pointer}
SMAX β΅ stack start address + maximum stack size
(B) β΅ (B = 200β) + 200β {establish new pointer}
STP β΅ stack demand + (B)
Load the addresses pointed to by B with the stack frame addresses.
Stack overflow and flag error causes an error return, that is the program continues at the address following the stack demand value. In all other cases, the program skips this address to find the return address from the stack.
Format:
INIT
INIT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
INSPL
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
IOF
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ION
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
IOT <device_register_address>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
IOX <device_register_address>
β 15 14 13 12 11 10β 10 9 8 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β device_register_address β
βββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββ
Bit 0 gives the direction of transfer:
- 0: input (from device to CPU)
- 1: output (from CPU to device)
|
#### π Examples
##### Read status of console device into A register
IOX 0306
IOX 0305
IOXT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
IRR <level> <register>
β 15 14 13 12 11 10 9 8 7 β 6 5 4 3 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌβββββββββββββββ€
β opcode β level β register β
βββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ΄βββββββββββββββ
**Values:**
- `STS` (`000000`): Status register
- `DD` (`000001`): D register
- `DP` (`000002`): P register
- `DB` (`000003`): B register
- `DL` (`000004`): L register
- `DA` (`000005`): A register
- `DT` (`000006`): T register
- `DX` (`000007`): X register
|
#### π Examples
##### Copy the program counter on program level 14 into the A register of the current program level.
IRW <level> <register>
β 15 14 13 12 11 10 9 8 7 β 6 5 4 3 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββΌββββββββββββββββΌβββββββββββββββ€
β opcode β level β register β
βββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ΄βββββββββββββββ
**Values:**
- `STS` (`000000`): Status register
- `DD` (`000001`): D register
- `DP` (`000002`): P register
- `DB` (`000003`): B register
- `DL` (`000004`): L register
- `DA` (`000005`): A register
- `DT` (`000006`): T register
- `DX` (`000007`): X register
|
#### π Examples
##### Copy the A register on the current program level into the B register on program level 8
JAF <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
JAN <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
JAP <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
JAZ <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
JMP <address mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
JNC <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
JPC <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
JPL <address mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
JXN <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
JXZ <displacement>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β displacement β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
LACB <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LASB <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LBIT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LBITP
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LBYT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LBYTP
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LDA <addressing_mode> <disp>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
LDATX <disp>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LDBTX <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LDD <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
LDDTX <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LDF <addressing_mode> <disp>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
LDT <addressing_mode> <disp>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
LDX <addressing_mode> <disp>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
LDXTX <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LEAVE
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LRB <level>
β 15 14 13 12 11β 6 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌββββββββββββββββΌβββββββββββββββ€
β opcode β level β type β
βββββββββββββββββββββ΄ββββββββββββββββ΄βββββββββββββββ
**Values:**
- `SRB` (`0`): Store Register Block
- `LRB` (`2`): Load Register Block
|
#### π Examples
##### LRB 160β (152760β)
Load the memory block pointed to by the X register into the register on program level 14.
P (level 14) β΅ (ea)
X (level 14) β΅ (ea + 1)
β β
B (level 14) β΅ (ea + 7)
LRB 160
LWCS
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LXCB <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LXSB <diplacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MCL <internal_register>
β 15 14 13 12 11 10 9 8 7 6 5 4 β 3 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββ€
β opcode β internal_register β
βββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββ
**Values:**
- `STS` (`0001`):
- `PID` (`0006`):
- `PIE` (`0007`):
|
#### π Examples
##### MCL STS (150201β) [ (A) = 000100β ]
Clear the carry flag (bit 6) in the status (STS) register.
MCL STS
MIN <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
MIX3
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MON <monitor_call_number>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β monitor_call_number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
MON 0
MON 1
MON 2
MOVB
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MOVBF
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MOVEW
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MPY <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
MST <register>
β 15 14 13 12 11 10 9 8 7 6 5 4 β 3 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββ€
β opcode β internal_register β
βββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββ
**Values:**
- `STS` (`0001`):
- `PID` (`0006`):
- `PIE` (`0007`):
|
--------------------------------------------------------------------------------
### NLZ
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `NLZ NLZ <scaling_factor>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β scaling_factor β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
NLZ
NLZ +20
OPCOM
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ORA <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
PACK
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
PIOF
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
PION
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
POF
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
PON
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RADD [sub-instruction(s)] <source> <destination>
β 15 14 13 12 11β 10 β 9 β 8 β 8 7 β 7 β 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌβββββββΌβββββββΌβββββββΌββββββββΌβββββββΌβββββββΌββββββββββββΌββββββββββββββββββββββββ€
β opcode β rad β ADC β AD1 β CM2 β CM1 β CLD β source β destination β
βββββββββββββββββββββ΄βββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄βββββββ΄ββββββββββββ΄ββββββββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### Add the contents of the B register to the contents of the A register, leaving the result in the A register.
RADD SB DA
RADD SA DX
RADD CLD SX DB
RADD CM1 CLD AD1 SX DB
RAND [sub-instruction(s)] <source> <destination>
β 15 14 13 12 11β 10 β 9 β 8 β 8 7 β 7 β 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌβββββββΌβββββββΌβββββββΌββββββββΌβββββββΌβββββββΌββββββββββββΌββββββββββββββββββββββββ€
β opcode β rad β ADC β AD1 β CM2 β CM1 β CLD β source β destination β
βββββββββββββββββββββ΄βββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄βββββββ΄ββββββββββββ΄ββββββββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π Examples
##### AND the contents of the L and X registers. Store the result in the X register. (144447β)
RAND SL DX
RAND CM1 ST DB
RCLR <destination>
β 15 14 13 12 11 10 9 8 7 6 5 4 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββ€
β opcode β destination β
βββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββ
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### Clear the contents of the A register.
RCLR DA
RDCR <destination>
β 15 14 13 12 11 10 9 8 7 6 5 4 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββ€
β opcode β destination β
βββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββ
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### Decrement the contents of the B register by one. (146203β)
RDCR DB
RDIV <source> <destination>
β 15 14 13 12 11 10 9 8 7 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββββββββ€
β opcode β source β destination β
βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββ΄ββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `Z` | Error flag |
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
--------------------------------------------------------------------------------
### RDUS
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `RDUS` |
| Category | Memory Examine and Test Instructions |
| Privilege | Privileged |
| Mask | `1111_1111_1111_1111` |
#### π Description
Read a word without using cache
(T) points to the virtual memory word to be accessed
(A) β΅ memory word addressed by T
The address given by the T register is a logical memory address. It is normally translated into a physical address using page tables (if the memory management system is on). The contents of the location addressed by T are loaded into the A register. The old content of the memory address is always read from the memory and never from cache.
The execution time of this instruction includes two read bus cycles (semaphore cycles β see ND-110 Functional Description Manual ND.06.027).
#### π Format
RDUS
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RDUSP
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
REMPL
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
REPT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
REX
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
REXO [flags] <source> <destination>
β 15 14 13 12 11β 10 β 9 β 8 β 8 7 β 7 β 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌβββββββΌβββββββΌβββββββΌββββββββΌβββββββΌβββββββΌββββββββββββΌββββββββββββββββββββββββ€
β opcode β rad β ADC β AD1 β CM2 β CM1 β CLD β source β destination β
βββββββββββββββββββββ΄βββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄βββββββ΄ββββββββββββ΄ββββββββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π Examples
##### Exclusive OR the contents of the B and Y registers, leaving the result in B
REXO ST DB
RGLOB
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RINC <destination>
β 15 14 13 12 11 10 9 8 7 6 5 4 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββ€
β opcode β destination β
βββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββ
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### Increment the contents of the A register by one.
RINC DA
RMPY <source> <destination>
β 15 14 13 12 11 10 9 8 7 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββββββββ€
β opcode β source β destination β
βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββ΄ββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### Multiply the contents of the A and X registers together, leaving the result in the A and D registers.
RMPY SA DX
RORA <sub-instruction(s)> <source> <destination>
β 15 14 13 12 11β 10 β 9 β 8 β 8 7 β 7 β 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌβββββββΌβββββββΌβββββββΌββββββββΌβββββββΌβββββββΌββββββββββββΌββββββββββββββββββββββββ€
β opcode β rad β ADC β AD1 β CM2 β CM1 β CLD β source β destination β
βββββββββββββββββββββ΄βββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄βββββββ΄ββββββββββββ΄ββββββββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### OR the contents of the B and T registers leaving the result in B. (145463β)
RORA ST DB
RSUB <sub-instruction> <source> <destination>
β 15 14 13 12 11β 10 β 9 β 8 β 8 7 β 7 β 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌβββββββΌβββββββΌβββββββΌββββββββΌβββββββΌβββββββΌββββββββββββΌββββββββββββββββββββββββ€
β opcode β rad β ADC β AD1 β CM2 β CM1 β CLD β source β destination β
βββββββββββββββββββββ΄βββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄βββββββ΄ββββββββββββ΄ββββββββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### Subtract the contents of the T register from the contents of the B register leaving the result in B.
RSUB ST DB
SAA <number>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
SAA 10
SAB <number>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
SAB -26
SACB <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SAD <shift_type> <shift_counter>
β 15 14 13 12 11β 10 9 β β 6 β 5 4 3 2 1 0 β 0 β
βββββββββββββββββββββΌββββββββββββββΌββββββββββββΌβββββββββΌββββββββββββββββββββββββΌβββββββββββββ€
β opcode β shift_type β register β mask6 β shift_counter β SHR β
βββββββββββββββββββββ΄ββββββββββββββ΄ββββββββββββ΄βββββββββ΄ββββββββββββββββββββββββ΄βββββββββββββ
**Values:**
- `Arithmetic` (`00`): Arithmetic shift. During right shift, bit 15 is extended. During left shift, zeros are shifted in from right.
- `ROT` (`01`): Rotational shift. Most and least significant bits are connected.
- `ZIN` (`10`): Zero end input
- `LIN` (`11`): Link end input. The last vacated bit is fed to M after every shift instruction.
|
| `register` | enum | 7-8 | The register to shift |
| `mask6` | numeric | 6 | Always 0 |
| `SHR` | assembler_flag | 0 | This a feature of the assembler. This mnemonic can be used to specify shift right, so that instead of calculating the 2's complement for the number of right shifts required, SHR can be used. |
| `shift_counter` | int6 | 5-0 | The number of bits to shift the register.
Bits 0-4 are the number of shifts.
Bit 5=1, then shift right (max 32 times)
Bit 5=0, then shift left (max 31 times)
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `M` | Multi-shift link flag |
--------------------------------------------------------------------------------
### SASB
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `SASB SASB <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SAT <number>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
SAT 20β
SAX <number>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
SAX -5
SBIT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SBITP
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SBYT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SBYTP
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SETPT
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SEX
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SHA <shift_type> <shift_counter>
β 15 14 13 12 11β 10 9 β β 6 β 5 4 3 2 1 0 β 0 β
βββββββββββββββββββββΌββββββββββββββΌββββββββββββΌβββββββββΌββββββββββββββββββββββββΌβββββββββββββ€
β opcode β shift_type β register β mask6 β shift_counter β SHR β
βββββββββββββββββββββ΄ββββββββββββββ΄ββββββββββββ΄βββββββββ΄ββββββββββββββββββββββββ΄βββββββββββββ
**Values:**
- `Arithmetic` (`00`): Arithmetic shift. During right shift, bit 15 is extended. During left shift, zeros are shifted in from right.
- `ROT` (`01`): Rotational shift. Most and least significant bits are connected.
- `ZIN` (`10`): Zero end input
- `LIN` (`11`): Link end input. The last vacated bit is fed to M after every shift instruction.
|
| `register` | enum | 7-8 | The register to shift |
| `mask6` | numeric | 6 | Always 0 |
| `SHR` | assembler_flag | 0 | This a feature of the assembler. This mnemonic can be used to specify shift right, so that instead of calculating the 2's complement for the number of right shifts required, SHR can be used. |
| `shift_counter` | int6 | 5-0 | The number of bits to shift the register.
Bits 0-4 are the number of shifts.
Bit 5=1, then shift right (max 32 times)
Bit 5=0, then shift left (max 31 times)
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `M` | Multi-shift link flag |
--------------------------------------------------------------------------------
### SHD
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `SHD SHD <shift_type> <shift_counter>
β 15 14 13 12 11β 10 9 β β 6 β 5 4 3 2 1 0 β 0 β
βββββββββββββββββββββΌββββββββββββββΌββββββββββββΌβββββββββΌββββββββββββββββββββββββΌβββββββββββββ€
β opcode β shift_type β register β mask6 β shift_counter β SHR β
βββββββββββββββββββββ΄ββββββββββββββ΄ββββββββββββ΄βββββββββ΄ββββββββββββββββββββββββ΄βββββββββββββ
**Values:**
- `Arithmetic` (`00`): Arithmetic shift. During right shift, bit 15 is extended. During left shift, zeros are shifted in from right.
- `ROT` (`01`): Rotational shift. Most and least significant bits are connected.
- `ZIN` (`10`): Zero end input
- `LIN` (`11`): Link end input. The last vacated bit is fed to M after every shift instruction.
|
| `register` | enum | 7-8 | The register to shift |
| `mask6` | numeric | 6 | Always 0 |
| `SHR` | assembler_flag | 0 | This a feature of the assembler. This mnemonic can be used to specify shift right, so that instead of calculating the 2's complement for the number of right shifts required, SHR can be used. |
| `shift_counter` | int6 | 5-0 | The number of bits to shift the register.
Bits 0-4 are the number of shifts.
Bit 5=1, then shift right (max 32 times)
Bit 5=0, then shift left (max 31 times)
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `M` | Multi-shift link flag |
--------------------------------------------------------------------------------
### SHDE
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `SHDE` |
| Category | Decimal Instructions |
| Privilege | User |
| Mask | `1111_1111_1111_1111` |
#### π Description
Decimal shift.
(op2) β΅ (op1) shifted
This instruction is used to normalize operands for decimal operations.
The shift count determines whether the operand is shifted to the left or right:
(op2 - op1) positive then shift op1 to right
(op2 - op1) negative then shift op1 to left
If significant digits are lost by carrying out a left shift, an error is generated, directing the program counter to the instruction after the SHDE (the error return). If no errors occur this instruction is skipped.
The digits of the first operand are shifted and the result is placed in the second operand's memory location.
The number of places shifted is given by the difference in decimal position of the two operands. This normalizes the first operand (op1) to the second (op2) for decimal operations such as ADDD.
The sign of the normalized operand (op1) is as follows:
BCD Sign
14β +
15β -
An unsigned operand is converted to a plus unless bit 13 of the descriptor D2 is set, when the BCD equivalent of unsigned (17β) is used.
The sign and digits of the first operand are checked before execution and any illegal digit codes reported.
If bit 10 of descriptor D2 (op2) is set the result is rounded, that is a 1 is added to the operand if the last digit shifted out of the field is β₯ 5.
**Instruction sequence:**
SHDE
error handling instruction
next instruction after SHDE or after error handling routine
**Example:**
SHDE
JMP *10β
SAD 20β
The SHDE instruction causes the program counter to skip the next instruction UNLESS an error has been generated, when the instruction immediately following the SHDE will handle the error in some way (in this example a jump is executed on error to (P) + 10β)).
(* is the assembler mnemonic for the P register)
#### π Format
SHDE
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SHT <shift_type> <shift_counter>
β 15 14 13 12 11β 10 9 β β 6 β 5 4 3 2 1 0 β 0 β
βββββββββββββββββββββΌββββββββββββββΌββββββββββββΌβββββββββΌββββββββββββββββββββββββΌβββββββββββββ€
β opcode β shift_type β register β mask6 β shift_counter β SHR β
βββββββββββββββββββββ΄ββββββββββββββ΄ββββββββββββ΄βββββββββ΄ββββββββββββββββββββββββ΄βββββββββββββ
**Values:**
- `Arithmetic` (`00`): Arithmetic shift. During right shift, bit 15 is extended. During left shift, zeros are shifted in from right.
- `ROT` (`01`): Rotational shift. Most and least significant bits are connected.
- `ZIN` (`10`): Zero end input
- `LIN` (`11`): Link end input. The last vacated bit is fed to M after every shift instruction.
|
| `register` | enum | 7-8 | The register to shift |
| `mask6` | numeric | 6 | Always 0 |
| `SHR` | assembler_flag | 0 | This a feature of the assembler. This mnemonic can be used to specify shift right, so that instead of calculating the 2's complement for the number of right shifts required, SHR can be used. |
| `shift_counter` | int6 | 5-0 | The number of bits to shift the register.
Bits 0-4 are the number of shifts.
Bit 5=1, then shift right (max 32 times)
Bit 5=0, then shift left (max 31 times)
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `M` | Multi-shift link flag |
--------------------------------------------------------------------------------
### SKP
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `SKP SKP <dr> <condition> <sr>
β 15 14 13 12 11β 10 9 8 β 7 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌβββββββββββββΌβββββββββΌββββββββββββΌβββββββββββββββββ€
β opcode β condition β zeros β sr β dr β
βββββββββββββββββββββ΄βββββββββββββ΄βββββββββ΄ββββββββββββ΄βββββββββββββββββ
**Values:**
- `EQL` (`0`): Equal
- `GEQ` (`1`): Greater or equal to (signed)
- `GRE` (`2`): Greater or equal to (overflow, signed)
- `MGRE` (`3`): Magnitude greater or equal to (overflow, unsigned)
- `UEQ` (`4`): Unequal
- `LSS` (`5`): Less than (overflow, unsigned)
- `LST` (`6`): Less than (overflow, signed)
- `MLST` (`7`): Magnitude less than (overflow, unsigned)
|
| `zeros` | value | 7-6 | Must be 00 |
| `sr` | src_register | 5-3 | The source register to be compared with the destination register |
| `dr` | dst_register | 2-0 | The destination register to be compared with the source register |
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `Z` | Error flag |
| `C` | Carry flag |
| `O` | Static overflow flag |
#### π Examples
##### Skip next instruction if the D register contents equal that of the A register.
SKP DD EQL SL
SKP DB LSS SA
SKP DL UEQ
SKP LSS SD
SRB <level>
β 15 14 13 12 11β 6 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌββββββββββββββββΌβββββββββββββββ€
β opcode β level β type β
βββββββββββββββββββββ΄ββββββββββββββββ΄βββββββββββββββ
**Values:**
- `SRB` (`0`): Store Register Block
- `LRB` (`2`): Load Register Block
|
#### π Examples
##### SRB 100β (152702β)
Store the register block of program level 8 in the memory block pointed to by X.
(ea) β΅ P (level 8)
(ea + 1) β΅ X (level 8)
β β
(ea + 7) β΅ B (level 8)
SRB 100
STA <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
STATX <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
STD <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
STDTX <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
STF <addressing_mode> <disp>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
STT <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
STX <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
STZ <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
STZTX <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SUB <addressing_mode> <displacement>
β 15 14 13 12 11β 10 9 8 β 7 6 5 4 3 2 1 0 β
β β X I B β β
βββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β opcode β addressing_mode β displacement β
βββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
SUBD
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SWAP <sub-instruction(s)> <source> <destination>
β 15 14 13 12 11β 10 β 9 β 8 β 8 7 β 7 β 6 β 5 4 3 β 2 1 0 β
βββββββββββββββββββββΌβββββββΌβββββββΌβββββββΌββββββββΌβββββββΌβββββββΌββββββββββββΌββββββββββββββββββββββββ€
β opcode β rad β ADC β AD1 β CM2 β CM1 β CLD β source β destination β
βββββββββββββββββββββ΄βββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄βββββββ΄ββββββββββββ΄ββββββββββββββββββββββββ
**Values:**
- `SD` (`000010`): D register as source
- `SP` (`000020`): P register as source
- `SB` (`000030`): B register as source
- `SL` (`000040`): L register as source
- `SA` (`000050`): A register as source
- `ST` (`000060`): T register as source
- `SX` (`000070`): X register as source
- `ZERO` (`000000`): Source value equals zero
|
| `destination` | enum | 2-0 | Destination register (dr)
**Values:**
- `DD` (`000001`): D register as destination
- `DP` (`000002`): P register as destination
- `DB` (`000003`): B register as destination
- `DL` (`000004`): L register as destination
- `DA` (`000005`): A register as destination
- `DT` (`000006`): T register as destination
- `DX` (`000007`): X register as destination
|
#### π© Flags Affected
| Flag | Description |
|:-----|:------------|
| `C` | Carry flag |
| `O` | Static overflow flag |
| `Q` | Dynamic overflow flag |
#### π Examples
##### Exchange A and D register contents.
SWAP SA DD
SWAP CLD SA DX
SZCB <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SZSB <displacement>
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
TRA <internal_register>
β 15 14 13 12 11 10 9 8 7 6 5 4 β 3 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββ€
β opcode β internal_register β
βββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββ
**Values:**
- `PANS` (`0000`): Panel status
- `STS` (`0001`): Status register
- `OPR` (`0002`): Operator's panel switch register
- `PSR` (`0003`): Paging status register
- `PVL` (`0004`): Previous level code register
- `IIC` (`0005`): Internal interrupt code register
- `PID` (`0006`): Priority interrupt detect register
- `PIE` (`0007`): Priority enable detect register
- `CSR` (`0010`): Cache status register
- `ACTL` (`0011`): Active level register
- `ALD` (`0012`): Automatic load descriptor
- `PES` (`0013`): Parity error status register
- `PGC` (`0014`): Paging control register
- `PEA` (`0015`): Parity error address register
- `CS` (`0017`): Control store
|
--------------------------------------------------------------------------------
### TRR
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `TRR TRR <internal_register>
β 15 14 13 12 11 10 9 8 7 6 5 4 β 3 2 1 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββ€
β opcode β internal_register β
βββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββ
**Values:**
- `PANC` (`0000`): Panel control
- `STS` (`0001`): Status register
- `LMP` (`0002`): Panel data display buffer register
- `PCR` (`0003`): Paging control register
- `IIE` (`0005`): Internal interrupt enable register
- `PID` (`0006`): Priority interrupt detect register
- `PIE` (`0007`): Priority interrupt enable register
- `CCL` (`0010`): Cache clear register
- `LCIL` (`0011`): Lower cache inhibit limit register
- `UCIL` (`0012`): Upper cache inhibit limit register
- `CILP` (`0013`): Cache inhibit page register
- `ECCR` (`0015`): Error correction control register
- `CS` (`0017`): Control Store
|
--------------------------------------------------------------------------------
### TSET
#### β‘ Quick Reference
| Property | Value |
|:---------|:-------|
| Format | `TSET` |
| Category | Memory Examine and Test Instructions |
| Privilege | Privileged |
| Mask | `1111_1111_1111_1111` |
#### π Description
Test and set
(T) points to the virtual memory word to be accessed
(A) β΅ memory word addressed by T
The address given by the T register is a logical memory address. It is normally translated into a physical address using page tables (if memory management is on). The contents of the location addressed by T are simultaneously loaded into the A register as the location is written to with all 1s. The memory system is dedicated to this task and no other memory access is allowed during the operation. This can be used for processor synchronization.
The old content of the memory address is always read from the memory and never from cache. The all 1s' data word is never written to cache.
#### π Format
TSET
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
TSETP
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
UPACK
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
VERSN
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
WAIT <wait_number>
β 15 14 13 12 11 10 9 8 β 7 6 5 4 3 2 1 0 β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ€
β opcode β wait_number β
βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
WAIT
WAIT 1
WGLOB
β 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β opcode β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ