mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
sun4: Changed sun4c to use an 82077 FDC and fixed hookup. Fixes FDC timeout warning in SunOS 4.1.4. [Ryan Holtz]
This commit is contained in:
parent
049f9190b6
commit
2b775adcc2
@ -673,7 +673,7 @@ private:
|
||||
required_device<z80scc_device> m_scc1;
|
||||
required_device<z80scc_device> m_scc2;
|
||||
|
||||
required_device<i82072_device> m_fdc;
|
||||
required_device<upd765_family_device> m_fdc;
|
||||
required_device<floppy_connector> m_floppy;
|
||||
required_device<am79c90_device> m_lance;
|
||||
required_device<nscsi_bus_device> m_scsibus;
|
||||
@ -1145,7 +1145,7 @@ void sun4_state::type1space_map(address_map &map)
|
||||
map(0x03000000, 0x0300000f).rw(FUNC(sun4_state::timer_r), FUNC(sun4_state::timer_w)).mirror(0xfffff0);
|
||||
map(0x05000000, 0x05000003).rw(FUNC(sun4_state::irq_r), FUNC(sun4_state::irq_w));
|
||||
map(0x06000000, 0x0607ffff).rom().region("user1", 0);
|
||||
map(0x07200000, 0x07200003).rw(FUNC(sun4_state::fdc_r), FUNC(sun4_state::fdc_w));
|
||||
map(0x07200000, 0x07200007).rw(FUNC(sun4_state::fdc_r), FUNC(sun4_state::fdc_w));
|
||||
map(0x07400003, 0x07400003).rw(FUNC(sun4_state::auxio_r), FUNC(sun4_state::auxio_w));
|
||||
map(0x08000000, 0x08000003).r(FUNC(sun4_state::ss1_sl0_id)); // slot 0 contains SCSI/DMA/Ethernet
|
||||
map(0x08400000, 0x0840000f).rw(FUNC(sun4_state::dma_r), FUNC(sun4_state::dma_w));
|
||||
@ -1300,12 +1300,22 @@ READ8_MEMBER( sun4_state::fdc_r )
|
||||
|
||||
switch(offset)
|
||||
{
|
||||
case 0: // Main Status (R)
|
||||
case 0: // Main Status (R, 82072)
|
||||
return m_fdc->msr_r(space, 0, 0xff);
|
||||
|
||||
case 1: // FIFO Data Port (R)
|
||||
case 1: // FIFO Data Port (R, 82072)
|
||||
case 5: // FIFO Data Port (R, 82077)
|
||||
return m_fdc->fifo_r(space, 0, 0xff);
|
||||
|
||||
case 2: // Digital Output Register (R, 82077)
|
||||
return m_fdc->dor_r(space, 0, 0xff);
|
||||
|
||||
case 4: // Main Status Register (R, 82077)
|
||||
return m_fdc->msr_r(space, 0, 0xff);
|
||||
|
||||
case 7:// Digital Input Register (R, 82077)
|
||||
return m_fdc->dir_r(space, 0, 0xff);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1317,14 +1327,20 @@ WRITE8_MEMBER( sun4_state::fdc_w )
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 0: // Data Rate Select Register (W)
|
||||
case 0: // Data Rate Select Register (W, 82072)
|
||||
case 4: // Data Rate Select Register (W, 82077)
|
||||
m_fdc->dsr_w(space, 0, data, 0xff);
|
||||
break;
|
||||
|
||||
case 1: // FIFO Data Port (W)
|
||||
case 1: // FIFO Data Port (W, 82072)
|
||||
case 5: // FIFO Data Port (W, 82077)
|
||||
m_fdc->fifo_w(space, 0, data, 0xff);
|
||||
break;
|
||||
|
||||
case 7: // Configuration Control REgister (W, 82077)
|
||||
m_fdc->ccr_w(space, 0, data, 0xff);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1541,7 +1557,6 @@ void sun4_state::dma_check_interrupts()
|
||||
if (old_irq != m_dma_irq)
|
||||
{
|
||||
//logerror("m_dma_irq %d because irq_or_err_pending:%d and irq_enabled:%d\n", m_dma_irq ? 1 : 0, irq_or_err_pending, irq_enabled);
|
||||
logerror("dma\n");
|
||||
m_maincpu->set_input_line(SPARC_IRQ3, m_dma_irq ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
}
|
||||
@ -1890,7 +1905,7 @@ MACHINE_CONFIG_START(sun4_state::sun4c)
|
||||
|
||||
M48T02(config, TIMEKEEPER_TAG, 0);
|
||||
|
||||
I82072(config, m_fdc, 24_MHz_XTAL);
|
||||
N82077AA(config, m_fdc, 24_MHz_XTAL);
|
||||
m_fdc->set_ready_line_connected(false);
|
||||
m_fdc->intrq_wr_callback().set(FUNC(sun4_state::fdc_irq));
|
||||
FLOPPY_CONNECTOR(config, m_floppy, sun_floppies, "35hd", sun4_state::floppy_formats);
|
||||
|
Loading…
Reference in New Issue
Block a user