mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-26 23:52:26 +00:00
Makes some further random swings at tracking the startup procedure.
This commit is contained in:
parent
651fd9c4a5
commit
6c588a1510
@ -8,7 +8,7 @@
|
||||
|
||||
#include "IWM.hpp"
|
||||
|
||||
#define NDEBUG
|
||||
//#define NDEBUG
|
||||
#include "../../Outputs/Log.hpp"
|
||||
|
||||
using namespace Apple;
|
||||
@ -66,7 +66,7 @@ uint8_t IWM::read(int address) {
|
||||
// printf("\n\nIWM:%02x\n\n", data_register_);
|
||||
data_register_ = 0;
|
||||
}
|
||||
LOG("Reading data register: " << PADHEX(2) << int(result));
|
||||
// LOG("Reading data register: " << PADHEX(2) << int(result));
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -92,16 +92,16 @@ uint8_t IWM::read(int address) {
|
||||
LOG("unknown)");
|
||||
break;
|
||||
|
||||
// 4 = step finished (0 = done)
|
||||
// Possible other meanings:
|
||||
// B = ready (0 = ready)
|
||||
// 8 = motor on
|
||||
//
|
||||
// {CA1,CA0,SEL,CA2}
|
||||
|
||||
// case 0: // Head step direction.
|
||||
case 0: // Head step direction.
|
||||
// (0 = inward)
|
||||
// printf("head step direction)\n");
|
||||
// break;
|
||||
LOG("head step direction)");
|
||||
sense = (step_direction_ > 0) ? 0 : 1;
|
||||
break;
|
||||
|
||||
case SEL: // Disk in place.
|
||||
// (0 = disk present)
|
||||
|
@ -25,6 +25,7 @@ void SonyDrive::did_step(Storage::Disk::HeadPosition to_position) {
|
||||
/*
|
||||
Numbers below cribbed from the Kryoflux forums.
|
||||
*/
|
||||
printf("Head moved to %d\n", to_position.as_int());
|
||||
const int zone = to_position.as_int() >> 4;
|
||||
switch(zone) {
|
||||
case 0: set_rotation_speed(393.3807f); break;
|
||||
|
@ -69,7 +69,7 @@
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Release"
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
enableASanStackUseAfterReturn = "YES"
|
||||
|
@ -297,8 +297,10 @@ template <class T, bool dtack_is_implicit, bool signal_will_perform> void Proces
|
||||
#ifdef LOG_TRACE
|
||||
const uint32_t fetched_pc = (program_counter_.full - 4)&0xffffff;
|
||||
|
||||
should_log |= fetched_pc == 0x4012A2;
|
||||
should_log &= fetched_pc != 0x4012AE;
|
||||
// should_log |= fetched_pc == 0x6d9c;
|
||||
should_log = fetched_pc < 0x400000;// || (fetched_pc >= 0x401A42 && fetched_pc <= 0x401A82);
|
||||
// should_log |= fetched_pc == 0x4012A2;
|
||||
// should_log &= fetched_pc != 0x4012AE;
|
||||
|
||||
// should_log = (fetched_pc >= 0x408D66) && (fetched_pc <= 0x408D84);
|
||||
#endif
|
||||
@ -329,9 +331,15 @@ template <class T, bool dtack_is_implicit, bool signal_will_perform> void Proces
|
||||
// The vector used depends on whether this is a vanilla unrecognised instruction,
|
||||
// or one on the A or F lines.
|
||||
switch(decoded_instruction_.full >> 12) {
|
||||
default: populate_trap_steps(4, get_status()); break;
|
||||
case 0xa: populate_trap_steps(10, get_status()); break;
|
||||
case 0xf: populate_trap_steps(11, get_status()); break;
|
||||
default:
|
||||
populate_trap_steps(4, get_status());
|
||||
break;
|
||||
case 0xa:
|
||||
populate_trap_steps(10, get_status());
|
||||
break;
|
||||
case 0xf:
|
||||
populate_trap_steps(11, get_status());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user