mirror of
https://github.com/holub/mame
synced 2025-06-06 12:53:46 +03:00
Add FDC Write Protect Delay (#10538)
This commit is contained in:
parent
1b0163f8d2
commit
0ec162cb1b
@ -98,6 +98,8 @@ static const char *const states[] =
|
||||
"SPINUP_DONE",
|
||||
"SETTLE_WAIT",
|
||||
"SETTLE_DONE",
|
||||
"WRITE_PROTECT_WAIT",
|
||||
"WRITE_PROTECT_DONE",
|
||||
"DATA_LOAD_WAIT",
|
||||
"DATA_LOAD_WAIT_DONE",
|
||||
"SEEK_MOVE",
|
||||
@ -871,8 +873,8 @@ void wd_fdc_device_base::write_track_continue()
|
||||
LOGSTATE("SETTLE_DONE\n");
|
||||
if (floppy && floppy->wpt_r()) {
|
||||
LOGSTATE("WRITE_PROT\n");
|
||||
status |= S_WP;
|
||||
command_end();
|
||||
sub_state = WRITE_PROTECT_WAIT;
|
||||
delay_cycles(t_gen, 218);
|
||||
return;
|
||||
}
|
||||
set_drq();
|
||||
@ -880,6 +882,16 @@ void wd_fdc_device_base::write_track_continue()
|
||||
delay_cycles(t_gen, 192);
|
||||
return;
|
||||
|
||||
case WRITE_PROTECT_WAIT:
|
||||
LOGSTATE("WRITE_PROTECT_WAIT\n");
|
||||
return;
|
||||
|
||||
case WRITE_PROTECT_DONE:
|
||||
LOGSTATE("WRITE_PROTECT_DONE\n");
|
||||
status |= S_WP;
|
||||
command_end();
|
||||
return;
|
||||
|
||||
case DATA_LOAD_WAIT:
|
||||
LOGSTATE("DATA_LOAD_WAIT\n");
|
||||
return;
|
||||
@ -983,8 +995,8 @@ void wd_fdc_device_base::write_sector_continue()
|
||||
LOGSTATE("SETTLE_DONE\n");
|
||||
if (floppy && floppy->wpt_r()) {
|
||||
LOGSTATE("WRITE_PROT\n");
|
||||
status |= S_WP;
|
||||
command_end();
|
||||
sub_state = WRITE_PROTECT_WAIT;
|
||||
delay_cycles(t_gen, 218);
|
||||
return;
|
||||
}
|
||||
sub_state = SCAN_ID;
|
||||
@ -992,6 +1004,16 @@ void wd_fdc_device_base::write_sector_continue()
|
||||
live_start(SEARCH_ADDRESS_MARK_HEADER);
|
||||
return;
|
||||
|
||||
case WRITE_PROTECT_WAIT:
|
||||
LOGSTATE("WRITE_PROTECT_WAIT\n");
|
||||
return;
|
||||
|
||||
case WRITE_PROTECT_DONE:
|
||||
LOGSTATE("WRITE_PROTECT_DONE\n");
|
||||
status |= S_WP;
|
||||
command_end();
|
||||
return;
|
||||
|
||||
case SCAN_ID:
|
||||
LOGSTATE("SCAN_ID\n");
|
||||
if(!sector_matches()) {
|
||||
@ -1141,6 +1163,10 @@ void wd_fdc_device_base::do_generic()
|
||||
sub_state = SETTLE_DONE;
|
||||
break;
|
||||
|
||||
case WRITE_PROTECT_WAIT:
|
||||
sub_state = WRITE_PROTECT_DONE;
|
||||
break;
|
||||
|
||||
case SEEK_WAIT_STEP_TIME:
|
||||
sub_state = SEEK_WAIT_STEP_TIME_DONE;
|
||||
break;
|
||||
@ -1518,6 +1544,8 @@ void wd_fdc_device_base::index_callback(floppy_image_device *floppy, int state)
|
||||
case SPINUP_DONE:
|
||||
case SETTLE_WAIT:
|
||||
case SETTLE_DONE:
|
||||
case WRITE_PROTECT_WAIT:
|
||||
case WRITE_PROTECT_DONE:
|
||||
case DATA_LOAD_WAIT:
|
||||
case DATA_LOAD_WAIT_DONE:
|
||||
case SEEK_MOVE:
|
||||
|
@ -200,6 +200,9 @@ private:
|
||||
SETTLE_WAIT,
|
||||
SETTLE_DONE,
|
||||
|
||||
WRITE_PROTECT_WAIT,
|
||||
WRITE_PROTECT_DONE,
|
||||
|
||||
DATA_LOAD_WAIT,
|
||||
DATA_LOAD_WAIT_DONE,
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user