From be20c4149da8af929bbdc26f32c17bfcd0981cd9 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 22 Jan 2026 19:53:08 +0100 Subject: Implement JMP and get rid of arbitrary run limitation. --- eater_cpu/eater_decoder.sv | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'eater_cpu/eater_decoder.sv') diff --git a/eater_cpu/eater_decoder.sv b/eater_cpu/eater_decoder.sv index 20e3e0b..f6a73e6 100644 --- a/eater_cpu/eater_decoder.sv +++ b/eater_cpu/eater_decoder.sv @@ -31,6 +31,7 @@ function CpuState insdep_state; SUB: insdep_state = SUB_INS_to_MAR; STA: insdep_state = STA_INS_to_MAR; LDI: insdep_state = LDI_INS_to_A; + JMP: insdep_state = JMP_INS_to_PC; OUT: insdep_state = OUT_A_to_OUT; HALT_op: insdep_state = HALT_st; @@ -68,6 +69,9 @@ always @(posedge clk_i) begin LDI_INS_to_A: next_state = PC_to_MAR; + JMP_INS_to_PC: next_state = JMP_NOP; + JMP_NOP: next_state = PC_to_MAR; + OUT_A_to_OUT: next_state = PC_to_MAR; HALT_st: next_state = HALT_st; @@ -161,6 +165,14 @@ always_comb begin internal_flags.A_in = 1; end + JMP_INS_to_PC: begin + internal_flags.INS_out = 1; + internal_flags.PC_in = 1; + end + + JMP_NOP: begin + end + OUT_A_to_OUT: begin internal_flags.A_out = 1; internal_flags.OUT_in = 1; -- cgit v1.2.3