diff --git a/zx_disk.cpp b/zx_disk.cpp index fe589c6..005f254 100644 --- a/zx_disk.cpp +++ b/zx_disk.cpp @@ -74,12 +74,14 @@ namespace zx_disk uint8_t ST0() { - return current_drive | (current_head<<2) | (seeking ? 0x20 : 0x00) | (fdd0busy ? 0x00 : 0x40); + return current_drive | (current_head<<2) | (seeking ? 0x20 : 0x00) | (fdd0busy ? 0x00 : 0x80); } uint8_t ST3() { - return current_drive | (current_head<<2) | 0x38; // ST3 + const bool ready = (current_head==0) && (current_drive==0); + return current_drive | (current_head<<2) | ((current_track==0)?0x10:0) | + (ready?0x20:0) | 0x08; // TS } void start_command(uint8_t command); @@ -224,6 +226,7 @@ namespace zx_disk current_drive = command & 0x3; call_count = 0; current_track = 0; + seeking = true; process_current_command = nullptr; mode = ZX_FDC_MODE_IDLE; break;