mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
r9751: Fix race condition in PDC device. Multi disk load now possible.
This commit is contained in:
parent
1243bb8d96
commit
e1c13a3f5e
@ -449,6 +449,8 @@ WRITE8_MEMBER(pdc_device::p0_7_w)
|
|||||||
case 4: /* Port 4: FDD command completion status low byte [0x5FF030B0] */
|
case 4: /* Port 4: FDD command completion status low byte [0x5FF030B0] */
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: Port 0x04 WRITE: %02X\n", data);
|
if(TRACE_PDC_FDC) logerror("PDC: Port 0x04 WRITE: %02X\n", data);
|
||||||
reg_p4 = data;
|
reg_p4 = data;
|
||||||
|
if(TRACE_PDC_FDC) logerror("PDC: Resetting 0x38 bit 1. This causes the PDC to stop looking for a command.\n");
|
||||||
|
reg_p38 &= ~2; // Clear bit 1
|
||||||
break;
|
break;
|
||||||
case 5: /* Port 5: FDD command completion status high byte [0x5FF030B0] */
|
case 5: /* Port 5: FDD command completion status high byte [0x5FF030B0] */
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: Port 0x05 WRITE: %02X\n", data);
|
if(TRACE_PDC_FDC) logerror("PDC: Port 0x05 WRITE: %02X\n", data);
|
||||||
@ -477,8 +479,8 @@ WRITE8_MEMBER(pdc_device::fdd_68k_w)
|
|||||||
{
|
{
|
||||||
case 0x21: /* Port 21: ?? */
|
case 0x21: /* Port 21: ?? */
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: Port 0x21 WRITE: %02X\n", data);
|
if(TRACE_PDC_FDC) logerror("PDC: Port 0x21 WRITE: %02X\n", data);
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: Resetting 0x38 bit 1\n");
|
//if(TRACE_PDC_FDC) logerror("PDC: Resetting 0x38 bit 1\n");
|
||||||
reg_p38 &= ~2; // Clear bit 1
|
//reg_p38 &= ~2; // Clear bit 1
|
||||||
reg_p21 = data;
|
reg_p21 = data;
|
||||||
break;
|
break;
|
||||||
case 0x23: /* Port 23: FDD 68k DMA high byte */
|
case 0x23: /* Port 23: FDD 68k DMA high byte */
|
||||||
@ -547,15 +549,15 @@ WRITE8_MEMBER(pdc_device::p50_5f_w)
|
|||||||
switch(data)
|
switch(data)
|
||||||
{
|
{
|
||||||
case 0x00:
|
case 0x00:
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: FDD (all) Motor off.\n");
|
if(TRACE_PDC_FDC) logerror("PDC: FDD (all) Motor off. PC: %X\n", space.device().safe_pc());
|
||||||
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(1);
|
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(1);
|
||||||
break;
|
break;
|
||||||
case 0x80:
|
case 0x80:
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: FDD (all) Motor on.\n");
|
if(TRACE_PDC_FDC) logerror("PDC: FDD (all) Motor on. PC: %X\n", space.device().safe_pc());
|
||||||
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(0);
|
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: Port 0x52 WRITE: %x\n", data);
|
if(TRACE_PDC_FDC) logerror("PDC: Port 0x52 WRITE: %x\n PC: %X\n", data, space.device().safe_pc());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x53: /* Probably set_rate here */
|
case 0x53: /* Probably set_rate here */
|
||||||
@ -565,7 +567,7 @@ WRITE8_MEMBER(pdc_device::p50_5f_w)
|
|||||||
switch(data)
|
switch(data)
|
||||||
{
|
{
|
||||||
case 0x00:
|
case 0x00:
|
||||||
if(TRACE_PDC_FDC) logerror("PDC: FDD 1 Motor off.\n");
|
if(TRACE_PDC_FDC) logerror("PDC: FDD 1 Motor off. PC: %X\n", space.device().safe_pc());
|
||||||
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(1);
|
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(1);
|
||||||
break;
|
break;
|
||||||
case 0x80:
|
case 0x80:
|
||||||
|
Loading…
Reference in New Issue
Block a user