hp-saturn/opcodes/0x.v

75 lines
1.3 KiB
Coq
Raw Normal View History

2019-02-07 22:54:06 +01:00
/******************************************************************************
* 0X
*
*
*/
2019-02-08 00:02:55 +01:00
`DEC_0X: begin
2019-02-09 12:03:43 +01:00
//generic RTN suff
2019-02-09 19:18:58 +01:00
case (nb_in)
2019-02-09 12:03:43 +01:00
4'h0, 4'h1, 4'h2, 4'h3: begin
2019-02-09 11:53:45 +01:00
new_PC <= RSTK[rstk_ptr];
RSTK[rstk_ptr] <= 0;
rstk_ptr <= rstk_ptr - 1;
next_cycle <= `BUSCMD_LOAD_PC;
decstate <= `DEC_START;
2019-02-09 12:03:43 +01:00
end
default: begin end
endcase
// things specific to the
2019-02-09 19:18:58 +01:00
case (nb_in)
2019-02-09 12:03:43 +01:00
4'h0: begin
HST[0] <= 1;
`ifdef SIM
2019-02-09 11:53:45 +01:00
$display("%05h RTNSXM", inst_start_PC);
2019-02-09 12:03:43 +01:00
`endif
end
4'h1: begin
`ifdef SIM
$display("%05h RTN", inst_start_PC);
`endif
end
4'h2: begin
Carry <= 1;
`ifdef SIM
$display("%05h RTNSC", inst_start_PC);
`endif
end
4'h3: begin
Carry <= 0;
`ifdef SIM
$display("%05h RTNCC", inst_start_PC);
`endif
end
4'h4: begin
hex_dec <= `MODE_HEX;
decstate <= `DEC_START;
`ifdef SIM
$display("%05h SETHEX", inst_start_PC);
`endif
end
4'h5: begin
hex_dec <= `MODE_DEC;
decstate <= `DEC_START;
`ifdef SIM
$display("%05h SETDEC", inst_start_PC);
`endif
2019-02-09 11:53:45 +01:00
end
2019-02-10 13:57:30 +01:00
4'h6: begin
rstk_ptr <= rstk_ptr + 1;
RSTK[rstk_ptr + 1] <= C[19:0];
decstate <= `DEC_START;
`ifdef SIM
$display("%05h RSTK=C", inst_start_PC);
`endif
end
2019-02-08 00:02:55 +01:00
default: begin
$display("ERROR : DEC_0X");
decode_error <= 1;
end
endcase
end