Also, the table immediately following shows flags affected by instructions. I forgot to add it to the "main" table. An X indicates the instruction modifies the the flag. A zero or one indicates the flag is set or reset when this instruction is executed.
| Fairchild F8 instruction set flag status list | ||||
|---|---|---|---|---|
| Mnemonic | Flags | |||
| C | Z | S | O | |
| AS r | X | X | X | X |
| ASD r | X | X | X | X |
| NS r | 0 | X | X | 0 |
| XS r | 0 | X | X | 0 |
| DS r | X | X | X | X |
| AM | X | X | X | X |
| AMD | X | X | X | X |
| NM | 0 | X | X | 0 |
| OM | 0 | X | X | 0 |
| XM | 0 | X | X | 0 |
| CM | X | X | X | X |
| AI DATA8 | X | X | X | X |
| NI DATA8 | 0 | X | X | 0 |
| OI DATA8 | 0 | X | X | 0 |
| XI DATA8 | 0 | X | X | 0 |
| CI DATA8 | X | X | X | X |
| ADC | 0 | X | 1 | 0 |
| SR 4 | 0 | X | 1 | 0 |
| SL 1 | 0 | X | X | 0 |
| SL 4 | 0 | X | X | 0 |
| COM | 0 | X | X | 0 |
| LNK | X | X | X | X |
| INC | X | X | X | X |
| Fairchild F8 opcode/mnemonic detail | ||||||
|---|---|---|---|---|---|---|
| Mnemonic | Operand | Machine
cycles |
Operation | Op Code | ||
| F8 I/O opcodes | ||||||
| INS | P4 | 4 | Input to Accumulator from I/O port | 1010eeee | ||
| IN | P8 | 2 | Input to Accumulator from I/O port | 26 | SS | |
| OUTS | P4 | 4 | Output to I/O port from Accumulator | 1011eeee | ||
| OUT | P8 | 4 | Output to I/O port from Accumulator | 27 | SS | |
| F8 Primary memory reference opcodes | ||||||
| LM | 2.5 | Load Accumulator via DC0 and auto-increment DC0 | 16 | |||
| ST | 2.5 | Store Accumulator via DC0 and auto-increment DC0 | 17 | |||
| LR | A,r | 1 | Load the contents of the specified register SR into Accumulator. increment or decrement ISAR if specified by r | 0100aaaa | ||
| LR | A,DPCHR | 1 | Load Accumulator with the contents of the specified DPCHR | 000000cc | ||
| LR | r,A | 1 | Load the contents of the Accumulator into the specified register. increment or decrement ISAR if specified by r | 0101aaaa | ||
| LR | DPCHR,A | 1 | Load contents of Accumulator into the specified DPCHR | 000001cc | ||
| LR | H,DC0 | 4 | Load contents of Scratchpad registers 10 and 11 into DC0 | 11 | ||
| LR | Q,DC0 | 4 | Load contents of Scratchpad registers 14 and 15 into DC0 | 0E | ||
| LR | DC0,H | 4 | Load contents of DC0 into Scratchpad registers 10 and 11 | 10 | ||
| LR | DC0,Q | 4 | Load contents of DC0 into Scratchpad registers 14 and 15 | 0F | ||
| LR | K,PC1 | 4 | Load contents of Register K into the Stack register | 08 | ||
| LR | PC1,K | 4 | Load contents of the Stack register into Register K | 09 | ||
| LR | PC0,Q | 4 | Load contents of Register Q into the Program Counter | 0D | ||
| PK | 4 | Save contents of the Program Counter in the Stack register, then load the contents of Register Q into the Program Counter | 0C | |||
| F8 Secondary memory reference (scratchpad) opcodes | ||||||
| AS | r | 1 | Add contents of specified register to contents of Accumulator. increment or decrement ISAR if specified by r | 1100aaaa | ||
| ASD | r | 2 | Add as BCD contents of specified register to contents of Accumulator. increment or decrement ISAR if specified by r | 1101aaaa | ||
| NS | r | 1 | Logical AND contents of specified register to contents of Accumulator. increment or decrement ISAR if specified by r | 1111aaaa | ||
| XS | r | 1 | Logical XOR contents of specified register to contents of Accumulator. increment or decrement ISAR if specified by r | 1110aaaa | ||
| DS | r | 1.5 | Decrement (by one) specified register. increment or decrement ISAR if specified by r | 0011aaaa | ||
| AM | 2.5 | Add Accumulator contents to the contents of the memory location addressed by DC0. Increment DC0 | 88 | |||
| AMD | 2.5 | Decimal (BCD) add Accumulator contents to the contents of the memory location addressed by DC0. Increment DC0 | 89 | |||
| NM | 2.5 | Logical AND Accumulator contents with the contents of the memory location addressed by DC0. Increment DC0 | 8A | |||
| OM | 2.5 | Logical OR Accumulator contents with the contents of the memory location addressed by DC0. Increment DC0 | 8B | |||
| XM | 2.5 | Logical XOR Accumulator contents with the contents of the memory location addressed by DC0. Increment DC0 | 8C | |||
| CM | 2.5 | Subtract the contents of Accumulator from contents of memory location addressed by DC0. Only the status flags are affected. Increment DC0. | 8D | |||
| F8 Immediate opcodes | ||||||
| LISU | DATA3 | 1 | Load immediate into the upper 3 bits of ISAR | 01100ddd | ||
| LISL | DATA3 | 1 | Load immediate into the lower 3 bits of ISAR | 01101ddd | ||
| DCI | ADDR | 6 | Load immediate data into the DC0 | 2A | QQQQ | |
| LIS | DATA4 | 1 | Load immediate data into the lower four bits of Accumulator and clear upper four Accumulator bits | 0111dddd | ||
| LI | DATA8 | 2.5 | Load immediate data into Accumulator | 20 | YY | |
| AI | DATA8 | 2.5 | Add immediate to Accumulator | 24 | YY | |
| NI | DATA8 | 2.5 | Logical AND immediate to Accumulator | 21 | YY | |
| OI | DATA8 | 2.5 | Logical OR immediate to Accumulator | 22 | YY | |
| XI | DATA8 | 2.5 | Logical XOR immediate to Accumulator | 23 | YY | |
| CI | DATA8 | 2.5 | Compare Immediate. subtract Accumulator contents from immediate data. Only the status flags are affected. | 25 | YY | |
| F8 jump opcodes | ||||||
| PI | ADDR | 6.5 | Save Program Counter in Stack register. Load immediate address into Program Counter | 28 | QQQQ | |
| BR | DISP | 3.5 | Add immediate displacement to contents of Program Counter | 90 | RR | |
| JMP | ADDR | 5.5 | Load immediate address into Program Counter. Load high order byte of address into Accumulator | 29 | QQQQ | |
| F8 conditional branch opcode | ||||||
| BT | DATA3,DISP | 3 | 3.5 | Logical OR 3 immediate bits with current TMASK. If any bit=0, add displacement to PC0 | 10000ddd | RR |
| BF | DATA4,DISP | 3 | 3.5 | If 4 immediate bits=FMASK, add displacement to PC0 | 1001dddd | RR |
| BP | DISP | 3 | 3.5 | Branch relative if sign bit = 1. | 81 | RR |
| BC | DISP | 3 | 3.5 | Branch relative if carry bit = 1. | 82 | RR |
| BZ | DISP | 3 | 3.5 | Branch relative if zero bit = 1. | 84 | RR |
| BM | DISP | 3 | 3.5 | Branch relative if sign bit = 0. | 91 | RR |
| BNC | DISP | 3 | 3.5 | Branch relative if carry bit = 0. | 92 | RR |
| BNZ | DISP | 3 | 3.5 | Branch relative if zero bit = 0. | 94 | RR |
| BNO | DISP | 3 | 3.5 | Branch relative if overflow bit = 0. | 98 | RR |
| BR7 | DISP | 3 | 3.5 | Branch relative if three low bits of ISAR not = 111. | 8F | RR |
| F8 register to register move opcodes | ||||||
| XDC | 2 | Exchange the contents of DC0 and DC1 | 2C | |||
| LR | A,IS | 1 | Load the contents of ISAR into the Accumulator | 0A | ||
| LR | IS,A | 1 | Load the contents of the Accumulator into ISAR | 0B | ||
| POP | 2 | Load contents of stack register into the Program Counter | 1C | |||
| F8 register to register operate opcode | ||||||
| ADC | 2.5 | Add contents of DC0 to Accumulator, which is treated as a signed binary number. Store the result in DC0 | 8E | |||
| F8 register operate opcode | ||||||
| SR | 1 | 1 | Accumulator shift right. most significant bit is 0 | 12 | ||
| SR | 4 | 1 | Accumulator shift right by 4 bits. most significant 4 bits = 0000 | 14 | ||
| SL | 1 | 1 | Accumulator shift left. least significant bit is 0 | 13 | ||
| SL | 4 | 1 | Accumulator shift left by 4 bits. least significant 4 bits = 0000 | 15 | ||
| COM | 1 | Complement Accumulator contents. | 18 | |||
| LNK | 1 | Add the carry to the contents of Accumulator. | 19 | |||
| INC | 1 | Increment the contents of Accumulator. | 1F | |||
| CLR | 1 | Clear the contents of Accumulator. | 70 | |||
| F8 interrupt opcodes | ||||||
| DI | 2 | Set interrupt enable bit in the Status register, W = 0 | 1A | |||
| EI | 2 | Set interrupt enable bit in the Status register, W = 1 | 1B | |||
| F8 status register opcodes | ||||||
| LR | W,J | 2 | Move the contents of Scratchpad register 9 into the status register W. | 1D | ||
| LR | J,W | 1 | Move the contents of status register W into the Scratchpad register 9. | 1E | ||
| F8 misc opcode | ||||||
| NOP | 1 | No Operation - A.K.A cycle waster | 2B | |||
last modified 08JUL02
this home page is maintained by Lowell
O. Turner.
Please email lowell.turner@ieee.org
with comments and corrections.