mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
upd765: revert data_completion change and clear data_irq in fifo_r/w. Also disable clearing data_irq in msr_r.
This commit is contained in:
parent
69916dcec0
commit
760e392bdd
1 changed files with 8 additions and 13 deletions
|
@ -521,11 +521,6 @@ uint8_t upd765_family_device::msr_r()
|
||||||
}
|
}
|
||||||
msr |= get_drive_busy();
|
msr |= get_drive_busy();
|
||||||
|
|
||||||
if(data_irq && !machine().side_effects_disabled()) {
|
|
||||||
data_irq = false;
|
|
||||||
check_irq();
|
|
||||||
}
|
|
||||||
|
|
||||||
return msr;
|
return msr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -546,6 +541,8 @@ void upd765_family_device::set_rate(int rate)
|
||||||
uint8_t upd765_family_device::fifo_r()
|
uint8_t upd765_family_device::fifo_r()
|
||||||
{
|
{
|
||||||
uint8_t r = 0xff;
|
uint8_t r = 0xff;
|
||||||
|
if(!machine().side_effects_disabled())
|
||||||
|
data_irq = false;
|
||||||
switch(main_phase) {
|
switch(main_phase) {
|
||||||
case PHASE_CMD:
|
case PHASE_CMD:
|
||||||
if(machine().side_effects_disabled())
|
if(machine().side_effects_disabled())
|
||||||
|
@ -591,6 +588,7 @@ void upd765_family_device::fifo_w(uint8_t data)
|
||||||
if(!BIT(dor, 2))
|
if(!BIT(dor, 2))
|
||||||
LOGWARN("%s: fifo_w(%02x) in reset\n", machine().describe_context(), data);
|
LOGWARN("%s: fifo_w(%02x) in reset\n", machine().describe_context(), data);
|
||||||
|
|
||||||
|
data_irq = false;
|
||||||
switch(main_phase) {
|
switch(main_phase) {
|
||||||
case PHASE_CMD: {
|
case PHASE_CMD: {
|
||||||
command[command_pos++] = data;
|
command[command_pos++] = data;
|
||||||
|
@ -1982,10 +1980,7 @@ void upd765_family_device::read_data_continue(floppy_info &fi)
|
||||||
result[5] = command[4];
|
result[5] = command[4];
|
||||||
result[6] = command[5];
|
result[6] = command[5];
|
||||||
result_pos = 7;
|
result_pos = 7;
|
||||||
// PC80S31K i/f is fussy on this:
|
command_end(fi, true);
|
||||||
// wants data_completion = false for anything that throws a scan_id failed,
|
|
||||||
// otherwise it will try to terminal count something that doesn't have data in the first place.
|
|
||||||
command_end(fi, (fi.st0 & 0xc0) == 0x00);
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -2136,7 +2131,7 @@ void upd765_family_device::write_data_continue(floppy_info &fi)
|
||||||
result[5] = command[4];
|
result[5] = command[4];
|
||||||
result[6] = command[5];
|
result[6] = command[5];
|
||||||
result_pos = 7;
|
result_pos = 7;
|
||||||
command_end(fi, (fi.st0 & 0xc0) == 0x00);
|
command_end(fi, true);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -2322,7 +2317,7 @@ void upd765_family_device::read_track_continue(floppy_info &fi)
|
||||||
result[5] = command[4];
|
result[5] = command[4];
|
||||||
result[6] = command[5];
|
result[6] = command[5];
|
||||||
result_pos = 7;
|
result_pos = 7;
|
||||||
command_end(fi, (fi.st0 & 0xc0) == 0x00);
|
command_end(fi, true);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -2412,7 +2407,7 @@ void upd765_family_device::format_track_continue(floppy_info &fi)
|
||||||
result[5] = 0;
|
result[5] = 0;
|
||||||
result[6] = command[2];
|
result[6] = command[2];
|
||||||
result_pos = 7;
|
result_pos = 7;
|
||||||
command_end(fi, (fi.st0 & 0xc0) == 0x00);
|
command_end(fi, true);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -2504,7 +2499,7 @@ void upd765_family_device::read_id_continue(floppy_info &fi)
|
||||||
result[5] = cur_live.idbuf[2];
|
result[5] = cur_live.idbuf[2];
|
||||||
result[6] = cur_live.idbuf[3];
|
result[6] = cur_live.idbuf[3];
|
||||||
result_pos = 7;
|
result_pos = 7;
|
||||||
command_end(fi, (fi.st0 & 0xc0) == 0x00);
|
command_end(fi, true);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue