summaryrefslogtreecommitdiff
path: root/eater_cpu
diff options
context:
space:
mode:
authoruvok2026-01-21 20:20:39 +0100
committeruvok2026-01-21 20:20:39 +0100
commite89a2aff9a91804a72866e4c458037d4d8e1f276 (patch)
tree1abedd8be5b446301736fca6883991a1d00a048c /eater_cpu
parenta7cb46cac7575875dd38e7d3135fd54d78598523 (diff)
eater: Use correct opcodes
I was off-by-one?
Diffstat (limited to 'eater_cpu')
-rw-r--r--eater_cpu/cpp/Veater_computer__main.cpp8
-rw-r--r--eater_cpu/eater_decoder.sv1
-rw-r--r--eater_cpu/eater_types.sv5
-rw-r--r--eater_cpu/readme.txt5
4 files changed, 12 insertions, 7 deletions
diff --git a/eater_cpu/cpp/Veater_computer__main.cpp b/eater_cpu/cpp/Veater_computer__main.cpp
index 7afa4d0..b986029 100644
--- a/eater_cpu/cpp/Veater_computer__main.cpp
+++ b/eater_cpu/cpp/Veater_computer__main.cpp
@@ -15,13 +15,15 @@
void load_program(const std::unique_ptr<Veater_computer> &topp) {
// LDA 14
- topp->eater_computer->RAM->r_datastore[0] = 0x0e;
+ topp->eater_computer->RAM->r_datastore[0] = 0x1e;
// ADD 15
- topp->eater_computer->RAM->r_datastore[1] = 0x1f;
+ topp->eater_computer->RAM->r_datastore[1] = 0x2f;
// OUT
topp->eater_computer->RAM->r_datastore[2] = 0xe0;
+ // NOP
+ topp->eater_computer->RAM->r_datastore[3] = 0x00;
// HALT
- topp->eater_computer->RAM->r_datastore[3] = 0xf0;
+ topp->eater_computer->RAM->r_datastore[4] = 0xf0;
// Data @ 14
topp->eater_computer->RAM->r_datastore[14] = 14;
// Data @ 15
diff --git a/eater_cpu/eater_decoder.sv b/eater_cpu/eater_decoder.sv
index ba7cf16..5bb8feb 100644
--- a/eater_cpu/eater_decoder.sv
+++ b/eater_cpu/eater_decoder.sv
@@ -25,6 +25,7 @@ end
function CpuState insdep_state;
case (actual_instruction)
+ NOP: insdep_state = PC_to_MAR;
LDA: insdep_state = LDA_INS_to_MAR;
ADD: insdep_state = ADD_INS_to_MAR;
OUT: insdep_state = OUT_A_to_OUT;
diff --git a/eater_cpu/eater_types.sv b/eater_cpu/eater_types.sv
index 9c8945c..256f6ca 100644
--- a/eater_cpu/eater_types.sv
+++ b/eater_cpu/eater_types.sv
@@ -40,8 +40,9 @@ typedef enum logic[7:0] {
} CpuState;
typedef enum logic[3:0] {
- LDA = 'b0000,
- ADD = 'b0001,
+ NOP = 'b0000,
+ LDA = 'b0001,
+ ADD = 'b0010,
OUT = 'b1110,
HALT_op = 'b1111
} eater_instruction;
diff --git a/eater_cpu/readme.txt b/eater_cpu/readme.txt
index 44fe1b1..a003415 100644
--- a/eater_cpu/readme.txt
+++ b/eater_cpu/readme.txt
@@ -28,8 +28,9 @@
instruction set
-LDA <memaddress> 0b_0000_<memaddress> Load memory > A
-ADD <memaddress> 0b_0001_<memaddress> "Add memory" + A -> A
+NOP ____________ 0b_0000_xxxx No-op
+LDA <memaddress> 0b_0001_<memaddress> Load memory > A
+ADD <memaddress> 0b_0010_<memaddress> "Add memory" + A -> A
OUT ____________ 0b_1110_xxxx Output A -> OUT
HLT ____________ 0b_1111_xxxx Sets halt flag
---