hp-saturn/opcodes/xx_RTNYES_GOYES.v
2019-02-10 09:02:24 +01:00

42 lines
No EOL
1.2 KiB
Verilog

/******************************************************************************
* xx
* RTNYES or GOYES
*
*/
`include "decstates.v"
`DEC_TEST_GO: begin
jump_base <= PC;
jump_offset <= {{16{1'b0}},nb_in};
decstate <= `DEC_TEST_GO_1;
end
`DEC_TEST_GO_1: begin
$display("DEC_TEST_GO_1 opcode %h | base %h | offset %h",
{nb_in, jump_offset[3:0]}, jump_base,
{{12{nb_in[3]}},nb_in,jump_offset[3:0]});
if (Carry) begin
case ({nb_in, jump_offset[3:0]})
8'h00: begin // RTNYES
new_PC <= RSTK[rstk_ptr];
RSTK[rstk_ptr] <= 0;
rstk_ptr <= rstk_ptr - 1;
next_cycle <= `BUSCMD_LOAD_PC;
end
default: begin // GOYES
new_PC <= jump_base + {{12{nb_in[3]}},nb_in,jump_offset[3:0]};
next_cycle <= `BUSCMD_LOAD_PC;
end
endcase
end
`ifdef SIM
$write("%5h ", jump_base);
case ({nb_in, jump_offset[3:0]})
8'h00: $display("RTNYES");
default: $display ("GOYES\t%2h\t=> %5h", {nb_in, jump_offset[3:0]},
jump_base + {{12{nb_in[3]}},nb_in,jump_offset[3:0]});
endcase
`endif
decstate <= `DEC_START;
end