1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-26 08:49:37 +00:00

Implement LEA.

This commit is contained in:
Thomas Harte 2022-05-22 08:29:12 -04:00
parent 3c1c4f89e9
commit 4279ce87ea

View File

@ -163,6 +163,7 @@ enum ExecutionState: int {
DIVU_DIVS, DIVU_DIVS,
MULU_MULS, MULU_MULS,
LEA,
}; };
// MARK: - The state machine. // MARK: - The state machine.
@ -701,6 +702,12 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
StdCASE(MULU, perform_state_ = MULU_MULS); StdCASE(MULU, perform_state_ = MULU_MULS);
StdCASE(MULS, perform_state_ = MULU_MULS); StdCASE(MULS, perform_state_ = MULU_MULS);
StdCASE(LEA, {
post_ea_state_ = LEA;
next_operand_ = 0;
MoveToStateSpecific(CalcEffectiveAddress);
});
default: default:
assert(false); assert(false);
} }
@ -1875,6 +1882,14 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
MoveToStateSpecific(Decode); MoveToStateSpecific(Decode);
//
// LEA
//
BeginState(LEA):
registers_[8 + instruction_.reg(1)].l = effective_address_[0];
Prefetch();
MoveToStateSpecific(Decode);
// //
// Various states TODO. // Various states TODO.
// //