]> Joshua Wise's Git repositories - fpgaboy.git/blobdiff - insn_alu_a.v
Split out more insns
[fpgaboy.git] / insn_alu_a.v
diff --git a/insn_alu_a.v b/insn_alu_a.v
new file mode 100644 (file)
index 0000000..fe3315a
--- /dev/null
@@ -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
+                       registers[`REG_A] <= {registers[`REG_A][6:0],registers[`REG_A][7]};
+                       registers[`REG_F] <= {registers[`REG_F][7:5],registers[`REG_A][7],registers[`REG_F][3:0]};
+               end
+               `INSN_alu_RRCA: begin
+                       registers[`REG_A] <= {registers[`REG_A][0],registers[`REG_A][7:1]};
+                       registers[`REG_F] <= {registers[`REG_F][7:5],registers[`REG_A][0],registers[`REG_F][3:0]};
+               end
+               `INSN_alu_RLA: begin
+                       registers[`REG_A] <= {registers[`REG_A][6:0],registers[`REG_F][4]};
+                       registers[`REG_F] <= {registers[`REG_F][7:5],registers[`REG_A][7],registers[`REG_F][3:0]};
+               end
+               `INSN_alu_RRA: begin
+                       registers[`REG_A] <= {registers[`REG_A][4],registers[`REG_A][7:1]};
+                       registers[`REG_F] <= {registers[`REG_F][7:5],registers[`REG_A][0],registers[`REG_F][3:0]};
+               end
+               `INSN_alu_CPL: begin
+                       registers[`REG_A] <= ~registers[`REG_A];
+                       registers[`REG_F] <= {registers[`REG_F][7],1'b1,1'b1,registers[`REG_F][4:0]};
+               end
+               `INSN_alu_SCF: begin
+                       registers[`REG_F] <= {registers[`REG_F][7:5],1'b1,registers[`REG_F][3:0]};
+               end
+               `INSN_alu_CCF: begin
+                       registers[`REG_F] <= {registers[`REG_F][7:5],~registers[`REG_F][4],registers[`REG_F][3:0]};
+               end
+               endcase
+       end
+`endif
This page took 0.024373 seconds and 4 git commands to generate.