(mess) pc: mc1502 fdc reset fix [shattered]

This commit is contained in:
cracyc 2013-09-25 02:21:56 +00:00
parent 135bb5c22d
commit d4032d954c
2 changed files with 11 additions and 5 deletions

View File

@ -157,11 +157,17 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(mc1502_io, AS_IO, 8, pc_state )
AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
AM_RANGE(0x0028, 0x0028) AM_DEVREADWRITE("upd8251", i8251_device, data_r, data_w) // not working yet
AM_RANGE(0x0028, 0x0028) AM_DEVREADWRITE("upd8251", i8251_device, data_r, data_w) // not working yet
AM_RANGE(0x0029, 0x0029) AM_DEVREADWRITE("upd8251", i8251_device, status_r, control_w)
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
// BIOS 5.31, 5.33
AM_RANGE(0x004c, 0x004c) AM_READWRITE(mc1502_wd17xx_aux_r, mc1502_wd17xx_aux_w)
AM_RANGE(0x004d, 0x004d) AM_READ(mc1502_wd17xx_motor_r)
AM_RANGE(0x004e, 0x004e) AM_READ(mc1502_wd17xx_drq_r) // blocking read!
AM_RANGE(0x0048, 0x004b) AM_DEVREADWRITE("vg93", fd1793_t, read, write)
AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x0068, 0x006B) AM_DEVREADWRITE("ppi8255n2", i8255_device, read, write) // keyboard poll
// BIOS 5.0, 5.2
AM_RANGE(0x0100, 0x0100) AM_READWRITE(mc1502_wd17xx_aux_r, mc1502_wd17xx_aux_w)
AM_RANGE(0x0108, 0x0108) AM_READ(mc1502_wd17xx_drq_r) // blocking read!
AM_RANGE(0x010a, 0x010a) AM_READ(mc1502_wd17xx_motor_r)

View File

@ -977,8 +977,8 @@ READ8_MEMBER(pc_state::mc1502_kppi_portc_r)
data |= m_centronics->fault_r() << 4;
data |= m_centronics->pe_r() << 5;
data |= m_centronics->busy_r() << 6;
data |= m_centronics->ack_r() << 7;
data |= m_centronics->ack_r() << 6;
data |= m_centronics->busy_r() << 7;
return data;
}
@ -1141,7 +1141,7 @@ I8255_INTERFACE( mc1502_ppi8255_interface_2 )
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(pc_state,mc1502_kppi_portb_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(pc_state,mc1502_kppi_portc_r),
DEVCB_DRIVER_MEMBER(pc_state,mc1502_kppi_portc_w)
};
@ -1289,7 +1289,7 @@ WRITE8_MEMBER(pc_state::mc1502_wd17xx_aux_w)
fdc->set_floppy(floppy);
// master reset
if(data & 1)
if((data & 1) == 0)
fdc->reset();
// SIDE ONE