The operate instructions allow a program to manipulate or test the data located in AC and the L flag. Many different instructions are possible with one operation code because the operand bits are not needed to specify an address as they are in a MRI and can be used to specify different instructions. Combining more than one operation in an OPR instruction by setting more than one operation bit is called Microprogramming. The instructions that can be combined in one OPR — called Microoperations — are executed in a defined order: they have a Sequence Number between one and four, and they are executed in the order of their sequence numbers. The operate instructions are separated in two groups: Group 1, which contains manipulation instructions, and Group 2, which is primarily concerned with testing operations.
Bit assignments of the group 1 microinstructions:
Opcode 111 | CLA | CLL | CMA | CML | RAR | RAL | IAC | |||||
Bits | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Group Bit: 0: Group 1 1: Group 2 |
BSW or Rotate Count: 0: Rotate once 1: Rotate twice |
Mnemonic | Seq. | Description |
---|---|---|
CLA | 1 | Clear the accumulator. If bit 4 is one, the instruction sets the accumulator to all zeros. |
CLL | 1 | Clear the link flag. If bit 5 is one, the link flag is set to zero. |
CMA | 2 | Complement the accumulator. If bit 6 is one, the accumulator is set to the one’s complement of its original value. |
CML | 2 | Complement the link flag. If bit 7 is one, the state of the link flag is reversed by the instruction. |
RAR | 4 | Rotate the accumulator and the link flag right. If bit 8 is one and bit 10 is zero, the instruction treats AC and L as a closed loop and shifts all bits in the loop one position to the right. |
RTR | 4 | Rotate the accumulator and the link flag twice right. If bit 8 is one and bit 10 is also one, a circular shift of two places to the right is executed. |
RAL | 4 | Rotate the accumulator and the link flag left. If bit 9 is one and bit 10 is zero, the instruction treats AC and L as a closed loop and shifts all bits in the loop one position to the left. |
RTL | 4 | Rotate the accumulator and the link flag twice left. If bit 9 is one and bit 10 is also one, a circular shift of two places to the left is executed. |
BSW | 4 | Swap the bytes in the accumulator. If bit 10 is one and bits 8 and 9 are zero, the instruction swaps the two 6-bit bytes in AC(0–5) and AC(6–11). |
IAC | 3 | Increment the accumulator. When bit 11 is one, the content of AC is incremented by one. |
NOP | − | No operation. If bits 4 through 11 contain zeros, no operation is performed and program control is transferred to the next instruction of the program. |
Bit assignments of the group 2 microinstructions:
Opcode 111 |
CLA |
SMA SPA |
SZA SNA |
SNL SZL |
OSR |
HLT |
0 |
|||||
Bits | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Group Bit: 0: Group 1 1: Group 2 |
Reverse Sensing Bit: 0: SMA, SZA, SNL 1: SPA, SNA, SZL |
Mnemonic | Seq. | Description |
---|---|---|
CLA | 2 | Clear the accumulator. If bit 4 is one, the instruction sets the accumulator to all zeros. |
SMA | 1 | Skip on minus accumulator. If bit 5 is one and bit 8 is zero, the next instruction is skipped if the accumulator is less than zero. |
SPA | 1 | Skip on positive accumulator. If bit 5 is one and bit 8 is also one, the next instruction is skipped if the accumulator is greater than or equal to zero. |
SZA | 1 | Skip on zero accumulator. If bit 6 is one and bit 8 is zero, the next instruction is skipped if the accumulator is zero. |
SNA | 1 | Skip on nonzero accumulator. If bit 6 is one and bit 8 is also one, the next instruction is skipped if the accumulator is not zero. |
SNL | 1 | Skip on nonzero link. If bit 7 is one and bit 8 is zero, the next instruction is skipped when the link flag is one. |
SZL | 1 | Skip on zero link. If bit 7 is one and bit 8 is also one, the next instruction is skipped when the link flag is zero. |
SKP | 1 | Unconditional skip. If bit 8 is one and bits 5 to 7 are all zeros, the next instruction is skipped. |
OSR | 3 | Logical OR of the switch register and AC. If bit 9 is one, a logical OR operation is performed between the content of the accumulator and the console switch register SR. The result is left in AC. |
HLT | 3 | Halt. If bit 10 is one, the computer will stop at the conclusion of the current machine cycle. |
NOP | − | No operation. If bits 4 through 11 contain zeros, no operation is performed and the program control is transferred to the next instruction of the program. |
Some usefull microoperation combinations have special mnemonics recognized by PDP-8 assemblers. They and the basic OPR instructions are listed in the following table. Note that the CPU window disassembles combined microoperations as a sequence of basic microoperations in the order of their sequence numbers, i. e. execution order.
Mnemonic | Octal | Seq. | Description | |
---|---|---|---|---|
NOP | 7000 | − | No operation. | Group 1 |
IAC | 7001 | 3 | Increment AC. | |
RAL | 7004 | 4 | Rotate AC and L circular left. | |
RTL | 7006 | 4 | Rotate AC and L twice circular left. | |
RAR | 7010 | 4 | Rotate AC and L curcular right. | |
RTR | 7012 | 4 | Rotate AC and L twice circular right. | |
CML | 7020 | 2 | Complement L. | |
CMA | 7040 | 2 | Complement AC. | |
CIA | 7041 | 2,3 | Complement and increment AC, i. e. built the two’s complement of AC. | |
CLL | 7100 | 1 | Clear L. | |
CLL RAL | 7104 | 1,4 | Shift positive number one left. | |
CLL RTL | 7106 | 1,4 | Clear L, rotate two left. | |
CLL RAR | 7110 | 1,4 | Shift positive number one right. | |
CLL RTR | 7112 | 1,4 | Clear L, rotate two right. | |
STL | 7120 | 1,2 | Set L = 1. | |
CLA | 7200 | 1 | Clear AC. | |
CLA IAC | 7201 | 1,3 | Set AC = 1. | |
GLK | 7204 | 1,4 | Get link. Transfer L into AC(11). | |
CLA CLL | 7300 | 1 | Clear AC and L. | |
STA | 7240 | 2 | Set AC = −1. | |
BSW | 7002 | 4 | Byte swap of AC(0–5) and AC(6–11). | |
HLT | 7402 | 3 | Halt the computer. | Group 2 |
OSR | 7404 | 3 | Logical OR AC with SR. | |
SKP | 7410 | 1 | Skip unconditionally. | |
SNL | 7420 | 1 | Skip if L ≠ 0. | |
SZL | 7430 | 1 | Skip if L = 0. | |
SZA | 7440 | 1 | Skip if AC = 0. | |
SNA | 7450 | 1 | Skip if AC ≠ 0. | |
SZA SNL | 7460 | 1 | Skip if AC = 0 or L = 1. | |
SNA SZL | 7470 | 1 | Skip if AC ≠ 0 and L = 0. | |
SMA | 7500 | 1 | Skip if AC < 0. | |
SPA | 7510 | 1 | Skip if AC ≥ 0. | |
SMA SNL | 7520 | 1 | Skip if AC < 0 or L = 1. | |
SPA SZL | 7530 | 1 | Skip if AC ≥ 0 and L = 0. | |
SMA SZA | 7540 | 1 | Skip if AC ≤ 0. | |
SPA SNA | 7550 | 1 | Skip if AC > 0. | |
CLA | 7600 | 2 | Clear AC. | |
LAS | 7604 | 2,3 | Load AC with SR. | |
SZA CLA | 7640 | 1,2 | Skip if AC = 0, then clear AC. | |
SNA CLA | 7650 | 1,2 | Skip if AC ≠ 0, then clear AC. | |
SMA CLA | 7700 | 1,2 | Skip if AC < 0, then clear AC. | |
SPA CLA | 7710 | 1,2 | Skip if AC ≥ 0, then clear AC. |