X-Git-Url: http://git.joshuawise.com/fpgaboy.git/blobdiff_plain/77ab69d7bb0902e6ebf0994159ed2205f8413e34..b057a5d6e6db6db06ae33703ca72cd235eec91d6:/core/insn_alu_a.v diff --git a/core/insn_alu_a.v b/core/insn_alu_a.v new file mode 100644 index 0000000..57a74fc --- /dev/null +++ b/core/insn_alu_a.v @@ -0,0 +1,39 @@ +`ifdef EXECUTE + `INSN_ALU_A: begin + `EXEC_NEWCYCLE + `EXEC_INC_PC + end +`endif + +`ifdef WRITEBACK + `INSN_ALU_A: begin + case(opcode[5:3]) + `INSN_alu_RLCA: begin + `_A <= {`_A[6:0],`_A[7]}; + `_F <= {`_F[7:5],`_A[7],`_F[3:0]}; + end + `INSN_alu_RRCA: begin + `_A <= {`_A[0],`_A[7:1]}; + `_F <= {`_F[7:5],`_A[0],`_F[3:0]}; + end + `INSN_alu_RLA: begin + `_A <= {`_A[6:0],`_F[4]}; + `_F <= {`_F[7:5],`_A[7],`_F[3:0]}; + end + `INSN_alu_RRA: begin + `_A <= {`_A[4],`_A[7:1]}; + `_F <= {`_F[7:5],`_A[0],`_F[3:0]}; + end + `INSN_alu_CPL: begin + `_A <= ~`_A; + `_F <= {`_F[7],1'b1,1'b1,`_F[4:0]}; + end + `INSN_alu_SCF: begin + `_F <= {`_F[7:5],1'b1,`_F[3:0]}; + end + `INSN_alu_CCF: begin + `_F <= {`_F[7:5],~`_F[4],`_F[3:0]}; + end + endcase + end +`endif