X-Git-Url: http://git.joshuawise.com/fpgaboy.git/blobdiff_plain/5f7913a508f18ca9664223dde5ae16608595a08b..81358c71b258a72a2777bba0a0b4a82a7cae298a:/insn_pop_reg.v diff --git a/insn_pop_reg.v b/insn_pop_reg.v new file mode 100644 index 0000000..9d4acbd --- /dev/null +++ b/insn_pop_reg.v @@ -0,0 +1,44 @@ +`ifdef EXECUTE + `INSN_POP_reg: begin /* POP is 12 cycles! */ + case (cycle) + 0: begin + rd <= 1; + address <= {registers[`REG_SPH],registers[`REG_SPL]}; + end + 1: begin + rd <= 1; + address <= {registers[`REG_SPH],registers[`REG_SPL]} + 1; + end + 2: begin + `EXEC_NEWCYCLE; + `EXEC_INC_PC; + end + endcase + end +`endif + +`ifdef WRITEBACK + `INSN_POP_reg: begin /* POP is 12 cycles! */ + case (cycle) + 0: begin end + 1: begin + case (opcode[5:4]) + `INSN_stack_AF: registers[`REG_F] <= rdata; + `INSN_stack_BC: registers[`REG_C] <= rdata; + `INSN_stack_DE: registers[`REG_E] <= rdata; + `INSN_stack_HL: registers[`REG_L] <= rdata; + endcase + end + 2: begin + case (opcode[5:4]) + `INSN_stack_AF: registers[`REG_A] <= rdata; + `INSN_stack_BC: registers[`REG_B] <= rdata; + `INSN_stack_DE: registers[`REG_D] <= rdata; + `INSN_stack_HL: registers[`REG_H] <= rdata; + endcase + {registers[`REG_SPH],registers[`REG_SPL]} <= + {registers[`REG_SPH],registers[`REG_SPL]} + 2; + end + endcase + end +`endif