From deae1be027249b98e8a96731bb7cf4833f62f40f Mon Sep 17 00:00:00 2001 From: n loewen Date: Mon, 25 Sep 2023 08:17:15 -0700 Subject: [PATCH] (docs) architecture - Update & reformat "Instruction set" section --- docs/architecture-specification.md | 44 ++++++++++++++++-------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/docs/architecture-specification.md b/docs/architecture-specification.md index 89b2631..831da62 100644 --- a/docs/architecture-specification.md +++ b/docs/architecture-specification.md @@ -31,32 +31,34 @@ These are all addressed by number:* - Instructions are two bytes long: one byte for the opcode, one for the operand -TODO: revise this based on note dated 2023-09-24 +- 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