(docs) architecture - Update & reformat "Instruction set" section

This commit is contained in:
n loewen 2023-09-25 08:17:15 -07:00
parent 93aebd2314
commit deae1be027
1 changed files with 23 additions and 21 deletions

View File

@ -31,32 +31,34 @@ These are all addressed by number:*
- Instructions are two bytes long:
one byte for the opcode, one for the operand
<mark>TODO: revise this based on note dated 2023-09-24</mark>
- Opcode format is ```GGMM OOOO``` — **G**roup, **M**ode, **O**peration
```GGMM IIII``` - **G**roup, **M**ode, **I**nstruction
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | 8 | 9 | A | B | C | D | E | F |
|-------|-----------|-----------|-----------|---------|---------|---------|---------|---------|---|-----------|-----------|-----------|-----------|-----------|-----------|----------|-----------|
| **0** | NOP | HLT | | | | | | | | | | | | | | | |
| **5** | LDA # | STO # | ADD # | SUB # | JMP # | JEQ # | JFL # | FTG # | | _MUL #_ | _DIV #_ | _JLT #_ | _JGT #_ | _NOT #_ | _AND #_ | _OR #_ | _XOR #_ |
| **6** | LDA ind | STO ind | ADD ind | SUB ind | JMP ind | JEQ ind | JFL ind | FTG ind | | _MUL ind_ | _DIV ind_ | _JLT ind_ | _JGT ind_ | _NOT ind_ | _AND ind_ | _OR ind_ | _XOR ind_ |
| **9** | _DEV #_ | _INP #_ | _OUT #_ | _FED_ | | | | | | | | | | | | | |
| **A** | _DEV ind_ | _INP ind_ | _OUT ind_ | _FED_ | | | | | | | | | | | | | |
| **F** | _RSL A_ | _RSR A_ | _ASL A_ | _ASR A_ | | | | | | | | | | | | | |
| lo ↓ / hi → | 0 (G0, M0) | 5 (G1, M1) | 6 (G1, M2) | 9 (G2, M1) | A (G2, M2) | F (G3, M3) |
|-------------|------------|------------|------------|------------|------------|------------|
| **0** | END | LDA # | LDA ind | DEV # | DEV ind | |
| **1** | NOP | STO # | STO ind | INP # | INP ind | |
| **2** | | ADD # | ADD ind | OUT # | OUT ind | |
| **3** | | SUB # | SUB ind | FED | FED | |
| **4** | | JMP # | JMP ind | | | |
| **5** | | JEQ # | JEQ ind | | | |
| **6** | | JFL # | JFL ind | | | |
| **7** | | FTG # | FTG ind | | | |
| | | | | | | |
| **8** | | MUL # | MUL ind | | | RSL A |
| **9** | | DIV # | DIV ind | | | RSR A |
| **A** | | JLT # | JLT # | | | ASL A |
| **B** | | JGT # | JGT # | | | ASR A |
| **C** | | NOT # | NOT # | | | |
| **D** | | AND # | AND # | | | |
| **E** | | OR # | OR # | | | |
| **F** | | XOR # | XOR # | | | |
Operations in italics are extensions to the core set of operations.
High byte reference:
| g, m | bin | hex |
|------|------|-----|
| 0, 0 | 0000 | 0 |
| 1, 1 | 0101 | 5 |
| 1, 2 | 0110 | 6 |
| 2, 1 | 1001 | 9 |
| 2, 2 | 1010 | A |
| 3, 3 | 1111 | F |
TODO: assess JMPs vs. HOPs
Brief legend for mnemonics:
- RSL/RSR: Ring Shift Left/Right
- JLT/JGT: Jump Less/Greater Than
- DEV: select IO device