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

Resolved an unpredictable conditional and temporarily disabled the Zexalltest as part of the default suite, since it takes so long to run.

This commit is contained in:
Thomas Harte 2017-05-30 21:03:02 -04:00
parent 01f7394f7f
commit 7bddd294c9
2 changed files with 10 additions and 5 deletions

View File

@ -38,6 +38,11 @@
BlueprintName = "Clock SignalTests" BlueprintName = "Clock SignalTests"
ReferencedContainer = "container:Clock Signal.xcodeproj"> ReferencedContainer = "container:Clock Signal.xcodeproj">
</BuildableReference> </BuildableReference>
<SkippedTests>
<Test
Identifier = "ZexallTests">
</Test>
</SkippedTests>
</TestableReference> </TestableReference>
<TestableReference <TestableReference
skipped = "YES"> skipped = "YES">

View File

@ -190,9 +190,9 @@ template <class T> class Processor: public MicroOpScheduler<MicroOp> {
std::vector<MicroOp *> instructions; std::vector<MicroOp *> instructions;
std::vector<MicroOp> all_operations; std::vector<MicroOp> all_operations;
std::vector<MicroOp> fetch_decode_execute; std::vector<MicroOp> fetch_decode_execute;
bool increments_r; uint8_t r_step_;
InstructionPage() : increments_r(true) {} InstructionPage() : r_step_(1) {}
}; };
InstructionPage *current_instruction_page_; InstructionPage *current_instruction_page_;
@ -648,8 +648,8 @@ template <class T> class Processor: public MicroOpScheduler<MicroOp> {
assemble_base_page(fd_page_, iy_, true, fdcb_page_); assemble_base_page(fd_page_, iy_, true, fdcb_page_);
assemble_ed_page(ed_page_); assemble_ed_page(ed_page_);
fdcb_page_.increments_r = false; fdcb_page_.r_step_ = 0;
ddcb_page_.increments_r = false; ddcb_page_.r_step_ = 0;
assemble_fetch_decode_execute(base_page_, 4); assemble_fetch_decode_execute(base_page_, 4);
assemble_fetch_decode_execute(dd_page_, 4); assemble_fetch_decode_execute(dd_page_, 4);
@ -702,7 +702,7 @@ template <class T> class Processor: public MicroOpScheduler<MicroOp> {
checkSchedule(); checkSchedule();
break; break;
case MicroOp::DecodeOperation: case MicroOp::DecodeOperation:
if(current_instruction_page_->increments_r) r_ = (r_ & 0x80) | ((r_ + 1) & 0x7f); r_ = (r_ & 0x80) | ((r_ + current_instruction_page_->r_step_) & 0x7f);
pc_.full++; pc_.full++;
decode_operation(is_halted_ ? 0x00 : operation_); decode_operation(is_halted_ ? 0x00 : operation_);
break; break;