Merge pull request #1105 from MooglyGuy/master

Initial FDC hookup in sun4.cpp [Ryan Holtz]
This commit is contained in:
Vas Crabb 2016-07-15 22:39:01 +10:00 committed by GitHub
commit ef11069ee4

View File

@ -500,6 +500,7 @@ public:
, m_maincpu(*this, "maincpu")
, m_scc1(*this, SCC1_TAG)
, m_scc2(*this, SCC2_TAG)
, m_fdc(*this, FDC_TAG)
, m_type0space(*this, "type0")
, m_type1space(*this, "type1")
, m_ram(*this, RAM_TAG)
@ -528,7 +529,8 @@ public:
DECLARE_WRITE32_MEMBER( timer_w );
DECLARE_READ8_MEMBER( irq_r );
DECLARE_WRITE8_MEMBER( irq_w );
DECLARE_READ8_MEMBER( fake_fdc_r );
DECLARE_READ8_MEMBER( fdc_r );
DECLARE_WRITE8_MEMBER( fdc_w );
DECLARE_DRIVER_INIT(sun4);
DECLARE_DRIVER_INIT(sun4c);
@ -540,6 +542,7 @@ protected:
required_device<mb86901_device> m_maincpu;
required_device<z80scc_device> m_scc1;
required_device<z80scc_device> m_scc2;
required_device<n82077aa_device> m_fdc;
optional_device<address_map_bank_device> m_type0space, m_type1space;
required_device<ram_device> m_ram;
required_memory_region m_rom;
@ -1284,7 +1287,7 @@ static ADDRESS_MAP_START(type1space_map, AS_PROGRAM, 32, sun4_state)
AM_RANGE(0x05000000, 0x05000003) AM_READWRITE8(irq_r, irq_w, 0xffffffff)
AM_RANGE(0x06000000, 0x0607ffff) AM_ROM AM_REGION("user1", 0)
// AM_RANGE(0x07200000, 0x07200007) AM_DEVICE8(FDC_TAG, n82077aa_device, map, 0xffffffff)
AM_RANGE(0x07200000, 0x07200003) AM_READ8(fake_fdc_r, 0xffffffff)
AM_RANGE(0x07200000, 0x07200003) AM_READWRITE8(fdc_r, fdc_w, 0xffffffff)
AM_RANGE(0x08000000, 0x08000003) AM_READ(ss1_sl0_id) // slot 0 contains SCSI/DMA/Ethernet
AM_RANGE(0x0e000000, 0x0e000003) AM_READ(ss1_sl3_id) // slot 3 contains video board
ADDRESS_MAP_END
@ -1294,9 +1297,43 @@ static ADDRESS_MAP_START(type1space_s4_map, AS_PROGRAM, 32, sun4_state)
AM_RANGE(0x01000000, 0x0100000f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
ADDRESS_MAP_END
READ8_MEMBER( sun4_state::fake_fdc_r )
READ8_MEMBER( sun4_state::fdc_r )
{
return 0x80; // always ready
if (space.debugger_access())
return 0;
switch(offset)
{
case 0: // Main Status (R)
return m_fdc->msr_r(space, 0, 0xff);
break;
case 1: // FIFO Data Port (R)
return m_fdc->fifo_r(space, 0, 0xff);
break;
default:
break;
}
return 0;
}
WRITE8_MEMBER( sun4_state::fdc_w )
{
switch(offset)
{
case 0: // Data Rate Select Register (W)
m_fdc->dsr_w(space, 0, data, 0xff);
break;
case 1: // FIFO Data Port (W)
m_fdc->fifo_w(space, 0, data, 0xff);
break;
default:
break;
}
}
READ8_MEMBER( sun4_state::irq_r )