`_F <= { /* Z */ `_F[7],
/* N */ 1'b0,
/* H */ (({`_HL} + {tmp,tmp2}) & 16'h1000) ? 1'b1 : 1'b0,
- /* C */ (({1'b0,`_HL} + {1'b0,tmp,tmp2}) >> 16 == 1) ? 1'b1 : 1'b0,
+ /* C */ (({1'b0,`_HL} + {1'b0,tmp,tmp2}) & 17'h10000) ? 1'b1 : 1'b0,
`_F[3:0]
};
`_HL <= {tmp, tmp2};
end
`INSN_alu_AND: begin
`_A <= `_A & tmp;
- `_F <= { /* Z */ ((`_A & tmp) == 0) ? 1'b1 : 1'b0,
+ `_F <= { /* Z */ ((`_A & tmp) == 8'b0) ? 1'b1 : 1'b0,
3'b010,
`_F[3:0]
};
end
`INSN_alu_OR: begin
`_A <= `_A | tmp;
- `_F <= { /* Z */ ((`_A | tmp) == 0) ? 1'b1 : 1'b0,
+ `_F <= { /* Z */ ((`_A | tmp) == 8'b0) ? 1'b1 : 1'b0,
3'b000,
`_F[3:0]
};
end
`INSN_alu_XOR: begin
`_A <= `_A ^ tmp;
- `_F <= { /* Z */ ((`_A ^ tmp) == 0) ? 1'b1 : 1'b0,
+ `_F <= { /* Z */ ((`_A ^ tmp) == 8'b0) ? 1'b1 : 1'b0,
3'b000,
`_F[3:0]
};
`_F <= {`_F[7:5],`_A[7],`_F[3:0]};
end
`INSN_alu_RRA: begin
- `_A <= {`_A[4],`_A[7:1]};
+ `_A <= {`_F[4],`_A[7:1]};
`_F <= {`_F[7:5],`_A[0],`_F[3:0]};
end
`INSN_alu_CPL: begin