1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-09-29 16:55:59 +00:00

Correct scan status scaling; rearrange FDC marginally.

This commit is contained in:
Thomas Harte 2023-12-04 21:46:03 -05:00
parent b0d1dedb65
commit 9f65587a1d

View File

@ -181,14 +181,6 @@ class FloppyController {
pic_.apply_edge<6>(true); pic_.apply_edge<6>(true);
} break; } break;
case Command::Seek:
printf("FDC: Seek %d:%d to %d\n", decoder_.target().drive, decoder_.target().head, decoder_.seek_target());
drives_[decoder_.target().drive].track = decoder_.seek_target();
drives_[decoder_.target().drive].raised_interrupt = true;
drives_[decoder_.target().drive].status = decoder_.drive_head() | uint8_t(Intel::i8272::Status0::SeekEnded);
pic_.apply_edge<6>(true);
break;
case Command::Recalibrate: case Command::Recalibrate:
printf("FDC: Recalibrate\n"); printf("FDC: Recalibrate\n");
drives_[decoder_.target().drive].track = 0; drives_[decoder_.target().drive].track = 0;
@ -197,6 +189,14 @@ class FloppyController {
drives_[decoder_.target().drive].status = decoder_.target().drive | uint8_t(Intel::i8272::Status0::SeekEnded); drives_[decoder_.target().drive].status = decoder_.target().drive | uint8_t(Intel::i8272::Status0::SeekEnded);
pic_.apply_edge<6>(true); pic_.apply_edge<6>(true);
break; break;
case Command::Seek:
printf("FDC: Seek %d:%d to %d\n", decoder_.target().drive, decoder_.target().head, decoder_.seek_target());
drives_[decoder_.target().drive].track = decoder_.seek_target();
drives_[decoder_.target().drive].raised_interrupt = true;
drives_[decoder_.target().drive].status = decoder_.drive_head() | uint8_t(Intel::i8272::Status0::SeekEnded);
pic_.apply_edge<6>(true);
break;
case Command::SenseInterruptStatus: { case Command::SenseInterruptStatus: {
printf("FDC: SenseInterruptStatus\n"); printf("FDC: SenseInterruptStatus\n");
@ -215,7 +215,7 @@ class FloppyController {
any_remaining_interrupts |= drives_[c].raised_interrupt; any_remaining_interrupts |= drives_[c].raised_interrupt;
} }
if(!any_remaining_interrupts) { if(!any_remaining_interrupts) {
pic_.apply_edge<6>(any_remaining_interrupts); pic_.apply_edge<6>(false);
} }
} break; } break;
case Command::Specify: case Command::Specify:
@ -504,7 +504,7 @@ class MDA {
} }
Outputs::Display::ScanStatus get_scaled_scan_status() const { Outputs::Display::ScanStatus get_scaled_scan_status() const {
return outputter_.crt.get_scaled_scan_status() / 4.0f; return outputter_.crt.get_scaled_scan_status() * 9.0f / 14.0f;
} }
private: private: