diff options
Diffstat (limited to 'src/mame/drivers/sun3x.cpp')
-rw-r--r-- | src/mame/drivers/sun3x.cpp | 88 |
1 files changed, 45 insertions, 43 deletions
diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp index 29c594bfc8a..95ed03e46fa 100644 --- a/src/mame/drivers/sun3x.cpp +++ b/src/mame/drivers/sun3x.cpp @@ -218,49 +218,51 @@ private: bool m_bInBusErr; }; -ADDRESS_MAP_START(sun3x_state::sun3_80_mem) - AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("p_ram") AM_WRITE(ramwrite_w) - AM_RANGE(0x40000000, 0x40000003) AM_READWRITE(cause_buserr_r, cause_buserr_w) - AM_RANGE(0x50300000, 0x50300003) AM_READ(p4id_r) - AM_RANGE(0x50400000, 0x504fffff) AM_RAM AM_SHARE("bw2_vram") - AM_RANGE(0x60000000, 0x60001fff) AM_READWRITE(iommu_r, iommu_w) - AM_RANGE(0x61000000, 0x61000003) AM_READWRITE(enable_r, enable_w) - AM_RANGE(0x61000400, 0x61000403) AM_READWRITE(buserr_r, buserr_w) - AM_RANGE(0x61000800, 0x61000803) AM_READWRITE(diag_r, diag_w) - AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w) - AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w) - AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w) - AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0) - AM_RANGE(0x64000000, 0x640007ff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0xffffffff) - AM_RANGE(0x66000000, 0x6600003f) AM_DEVREADWRITE8(ESP_TAG, ncr539x_device, read, write, 0xff000000) - AM_RANGE(0x6e000000, 0x6e000007) AM_DEVICE8(FDC_TAG, n82077aa_device, map, 0xffffffff) - AM_RANGE(0x6e000400, 0x6e000403) AM_READWRITE(fdc_control_r, fdc_control_w) - AM_RANGE(0x6f00003c, 0x6f00003f) AM_READWRITE(printer_r, printer_w) - AM_RANGE(0xfefe0000, 0xfefeffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sun3x_state::sun3_460_mem) - AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("p_ram") AM_WRITE(ramwrite_w) - AM_RANGE(0x09000000, 0x09000003) AM_READWRITE(cause_buserr_r, cause_buserr_w) - AM_RANGE(0x50300000, 0x50300003) AM_READ(p4id_r) - AM_RANGE(0x50400000, 0x504fffff) AM_RAM AM_SHARE("bw2_vram") - AM_RANGE(0x5c000f14, 0x5c000f17) AM_READ(fpa_r) - AM_RANGE(0x60000000, 0x60001fff) AM_READWRITE(iommu_r, iommu_w) - AM_RANGE(0x61000000, 0x61000003) AM_READWRITE(enable_r, enable_w) - AM_RANGE(0x61000400, 0x61000403) AM_READWRITE(buserr_r, buserr_w) - AM_RANGE(0x61000800, 0x61000803) AM_READWRITE(diag_r, diag_w) - AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w) - AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w) - AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w) - AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0) - - AM_RANGE(0x6f00003c, 0x6f00003f) AM_READWRITE(printer_r, printer_w) - AM_RANGE(0xfefe0000, 0xfefeffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END +void sun3x_state::sun3_80_mem(address_map &map) +{ + map(0x00000000, 0x03ffffff).ram().share("p_ram").w(this, FUNC(sun3x_state::ramwrite_w)); + map(0x40000000, 0x40000003).rw(this, FUNC(sun3x_state::cause_buserr_r), FUNC(sun3x_state::cause_buserr_w)); + map(0x50300000, 0x50300003).r(this, FUNC(sun3x_state::p4id_r)); + map(0x50400000, 0x504fffff).ram().share("bw2_vram"); + map(0x60000000, 0x60001fff).rw(this, FUNC(sun3x_state::iommu_r), FUNC(sun3x_state::iommu_w)); + map(0x61000000, 0x61000003).rw(this, FUNC(sun3x_state::enable_r), FUNC(sun3x_state::enable_w)); + map(0x61000400, 0x61000403).rw(this, FUNC(sun3x_state::buserr_r), FUNC(sun3x_state::buserr_w)); + map(0x61000800, 0x61000803).rw(this, FUNC(sun3x_state::diag_r), FUNC(sun3x_state::diag_w)); + map(0x61001000, 0x61001003).rw(this, FUNC(sun3x_state::memreg_r), FUNC(sun3x_state::memreg_w)); + map(0x61001004, 0x61001007).rw(this, FUNC(sun3x_state::memrerraddr_r), FUNC(sun3x_state::memrerraddr_w)); + map(0x61001400, 0x61001403).rw(this, FUNC(sun3x_state::irqctrl_r), FUNC(sun3x_state::irqctrl_w)); + map(0x62000000, 0x6200000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x62002000, 0x6200200f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x63000000, 0x6301ffff).rom().region("user1", 0); + map(0x64000000, 0x640007ff).rw(TIMEKEEPER_TAG, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); + map(0x66000000, 0x6600003f).rw(ESP_TAG, FUNC(ncr539x_device::read), FUNC(ncr539x_device::write)).umask32(0xff000000); + map(0x6e000000, 0x6e000007).m(m_fdc, FUNC(n82077aa_device::map)); + map(0x6e000400, 0x6e000403).rw(this, FUNC(sun3x_state::fdc_control_r), FUNC(sun3x_state::fdc_control_w)); + map(0x6f00003c, 0x6f00003f).rw(this, FUNC(sun3x_state::printer_r), FUNC(sun3x_state::printer_w)); + map(0xfefe0000, 0xfefeffff).rom().region("user1", 0); +} + +void sun3x_state::sun3_460_mem(address_map &map) +{ + map(0x00000000, 0x03ffffff).ram().share("p_ram").w(this, FUNC(sun3x_state::ramwrite_w)); + map(0x09000000, 0x09000003).rw(this, FUNC(sun3x_state::cause_buserr_r), FUNC(sun3x_state::cause_buserr_w)); + map(0x50300000, 0x50300003).r(this, FUNC(sun3x_state::p4id_r)); + map(0x50400000, 0x504fffff).ram().share("bw2_vram"); + map(0x5c000f14, 0x5c000f17).r(this, FUNC(sun3x_state::fpa_r)); + map(0x60000000, 0x60001fff).rw(this, FUNC(sun3x_state::iommu_r), FUNC(sun3x_state::iommu_w)); + map(0x61000000, 0x61000003).rw(this, FUNC(sun3x_state::enable_r), FUNC(sun3x_state::enable_w)); + map(0x61000400, 0x61000403).rw(this, FUNC(sun3x_state::buserr_r), FUNC(sun3x_state::buserr_w)); + map(0x61000800, 0x61000803).rw(this, FUNC(sun3x_state::diag_r), FUNC(sun3x_state::diag_w)); + map(0x61001000, 0x61001003).rw(this, FUNC(sun3x_state::memreg_r), FUNC(sun3x_state::memreg_w)); + map(0x61001004, 0x61001007).rw(this, FUNC(sun3x_state::memrerraddr_r), FUNC(sun3x_state::memrerraddr_w)); + map(0x61001400, 0x61001403).rw(this, FUNC(sun3x_state::irqctrl_r), FUNC(sun3x_state::irqctrl_w)); + map(0x62000000, 0x6200000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x62002000, 0x6200200f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x63000000, 0x6301ffff).rom().region("user1", 0); + + map(0x6f00003c, 0x6f00003f).rw(this, FUNC(sun3x_state::printer_r), FUNC(sun3x_state::printer_w)); + map(0xfefe0000, 0xfefeffff).rom().region("user1", 0); +} READ32_MEMBER( sun3x_state::p4id_r ) { |