1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-03 11:30:02 +00:00

Corrects detection of terminal micro-ops.

This commit is contained in:
Thomas Harte 2019-03-16 22:50:26 -04:00
parent 937b3ca81d
commit cf6fa98433

View File

@ -23,6 +23,8 @@ template <class T, bool dtack_is_implicit> void Processor<T, dtack_is_implicit>:
// TODO: synchronous bus.
// TODO: check for bus error.
// Perform the microcycle.
bus_handler_.perform_bus_operation(active_step_->microcycle, is_supervisor_);
@ -32,9 +34,11 @@ template <class T, bool dtack_is_implicit> void Processor<T, dtack_is_implicit>:
// Consider advancing a micro-operation.
if(active_step_->is_terminal()) {
// If there are any more micro-operations available, just move onwards.
if(active_micro_op_ && !active_micro_op_->is_terminal()) {
if(active_micro_op_) {
++active_micro_op_;
} else {
}
if(!active_micro_op_ || active_micro_op_->is_terminal()) {
// Either the micro-operations for this instruction have been exhausted, or
// no instruction was ongoing. Either way, do a standard instruction operation.
@ -135,7 +139,6 @@ template <class T, bool dtack_is_implicit> void Processor<T, dtack_is_implicit>:
active_program_->destination->full -= 4;
break;
}
} else {
switch(active_step_->action) {
default: