diff options
Diffstat (limited to 'src/mame/drivers/sun3.cpp')
-rw-r--r-- | src/mame/drivers/sun3.cpp | 149 |
1 files changed, 76 insertions, 73 deletions
diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp index 68a5c9863f1..cda7adcc082 100644 --- a/src/mame/drivers/sun3.cpp +++ b/src/mame/drivers/sun3.cpp @@ -319,8 +319,8 @@ void sun3_state::ncr5380(device_t *device) { devcb_base *devcb; (void)devcb; - MCFG_DEVICE_CLOCK(10000000) -// MCFG_NCR5380N_DRQ_HANDLER(WRITELINE(*this, sun3_state, drq_w)) + downcast<ncr5380n_device &>(*device).set_clock(10000000); +// downcast<ncr5380n_device &>(*device).drq_handler().set(FUNC(sun3_state::drq_w)); } static void scsi_devices(device_slot_interface &device) @@ -543,7 +543,7 @@ READ32_MEMBER( sun3_state::tl_mmu_r ) switch ((m_pagemap[entry] >> 26) & 3) { case 0: // type 0 space - return m_type0space->read32(space, tmp, mem_mask); + return m_type0space->read32(tmp, mem_mask); case 1: // type 1 space // magic ROM bypass @@ -551,13 +551,13 @@ READ32_MEMBER( sun3_state::tl_mmu_r ) { return m_rom_ptr[offset & 0x3fff]; } - return m_type1space->read32(space, tmp, mem_mask); + return m_type1space->read32(tmp, mem_mask); case 2: // type 2 space - return m_type2space->read32(space, tmp, mem_mask); + return m_type2space->read32(tmp, mem_mask); case 3: // type 3 space - return m_type3space->read32(space, tmp, mem_mask); + return m_type3space->read32(tmp, mem_mask); } } else @@ -693,20 +693,20 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w ) switch ((m_pagemap[entry] >> 26) & 3) { case 0: // type 0 - m_type0space->write32(space, tmp, data, mem_mask); + m_type0space->write32(tmp, data, mem_mask); return; case 1: // type 1 //printf("write device space @ %x\n", tmp<<1); - m_type1space->write32(space, tmp, data, mem_mask); + m_type1space->write32(tmp, data, mem_mask); return; case 2: // type 2 - m_type2space->write32(space, tmp, data, mem_mask); + m_type2space->write32(tmp, data, mem_mask); return; case 3: // type 3 - m_type3space->write32(space, tmp, data, mem_mask); + m_type3space->write32(tmp, data, mem_mask); return; } } @@ -1008,16 +1008,17 @@ void sun3_state::machine_reset() } // The base Sun 3004 CPU board -MACHINE_CONFIG_START(sun3_state::sun3) +void sun3_state::sun3(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68020, 16670000) - MCFG_DEVICE_PROGRAM_MAP(sun3_mem) + M68020(config, m_maincpu, 16670000); + m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem); - MCFG_SCREEN_ADD("bwtwo", RASTER) - MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_update) - MCFG_SCREEN_SIZE(1600,1100) - MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 900-1) - MCFG_SCREEN_REFRESH_RATE(72) + screen_device &bwtwo(SCREEN(config, "bwtwo", SCREEN_TYPE_RASTER)); + bwtwo.set_screen_update(FUNC(sun3_state::bw2_update)); + bwtwo.set_size(1600,1100); + bwtwo.set_visarea(0, 1152-1, 0, 900-1); + bwtwo.set_refresh_hz(72); RAM(config, m_ram).set_default_size("4M").set_extra_options("6M,8M,12M,16M,20M,24M,28M,32M").set_default_value(0x00); @@ -1035,7 +1036,7 @@ MACHINE_CONFIG_START(sun3_state::sun3) // MMU Type 3 device space ADDRESS_MAP_BANK(config, "type3").set_map(&sun3_state::vmetype3space_map).set_options(ENDIANNESS_BIG, 32, 32, 0x80000000); - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3_state, sun3_timer, attotime::from_hz(100)) + TIMER(config, "timer").configure_periodic(FUNC(sun3_state::sun3_timer), attotime::from_hz(100)); SCC8530N(config, m_scc1, 4.9152_MHz_XTAL); m_scc1->out_txda_callback().set(KEYBOARD_TAG, FUNC(sun_keyboard_port_device::write_txd)); @@ -1061,70 +1062,73 @@ MACHINE_CONFIG_START(sun3_state::sun3) AM79C90(config, m_lance, 10'000'000); // clock is a guess - MCFG_NSCSI_BUS_ADD("scsibus") - MCFG_NSCSI_ADD("scsibus:0", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:1", scsi_devices, "harddisk", false) - MCFG_NSCSI_ADD("scsibus:2", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:3", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:4", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:5", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:6", scsi_devices, "cdrom", false) - MCFG_NSCSI_ADD("scsibus:7", scsi_devices, "ncr5380", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5380", [this] (device_t *device) { ncr5380(device); }) -MACHINE_CONFIG_END + NSCSI_BUS(config, "scsibus"); + NSCSI_CONNECTOR(config, "scsibus:0", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk"); + NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom"); + NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, "ncr5380", true).set_option_machine_config("ncr5380", [this] (device_t *device) { ncr5380(device); }); +} // Sun 3/60 -MACHINE_CONFIG_START(sun3_state::sun3_60) +void sun3_state::sun3_60(machine_config &config) +{ sun3(config); - MCFG_DEVICE_REPLACE("maincpu", M68020, 20000000) - MCFG_DEVICE_PROGRAM_MAP(sun3_mem) - - MCFG_SCREEN_MODIFY("bwtwo") - MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_16x11_update) - MCFG_SCREEN_SIZE(1600,1100) - MCFG_SCREEN_VISIBLE_AREA(0, 1600-1, 0, 1100-1) - MCFG_SCREEN_REFRESH_RATE(72) -MACHINE_CONFIG_END + M68020(config.replace(), m_maincpu, 20000000); + m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem); + + screen_device &bwtwo(*subdevice<screen_device>("bwtwo")); + bwtwo.set_screen_update(FUNC(sun3_state::bw2_16x11_update)); + bwtwo.set_size(1600,1100); + bwtwo.set_visarea(0, 1600-1, 0, 1100-1); + bwtwo.set_refresh_hz(72); +} // Sun 3/E -MACHINE_CONFIG_START(sun3_state::sun3e) +void sun3_state::sun3e(machine_config &config) +{ sun3(config); - MCFG_DEVICE_REPLACE("maincpu", M68020, 20000000) - MCFG_DEVICE_PROGRAM_MAP(sun3_mem) -MACHINE_CONFIG_END + M68020(config.replace(), m_maincpu, 20000000); + m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem); +} // 3/260 and 3/280 (the Sun 3200 board) -MACHINE_CONFIG_START(sun3_state::sun3200) +void sun3_state::sun3200(machine_config &config) +{ sun3(config); - MCFG_DEVICE_REPLACE("maincpu", M68020, 25000000) - MCFG_DEVICE_PROGRAM_MAP(sun3_mem) + M68020(config.replace(), m_maincpu, 25000000); + m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem); - MCFG_SCREEN_MODIFY("bwtwo") - MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_16x11_update) - MCFG_SCREEN_SIZE(1600,1100) - MCFG_SCREEN_VISIBLE_AREA(0, 1600-1, 0, 1100-1) - MCFG_SCREEN_REFRESH_RATE(72) + screen_device &bwtwo(*subdevice<screen_device>("bwtwo")); + bwtwo.set_screen_update(FUNC(sun3_state::bw2_16x11_update)); + bwtwo.set_size(1600,1100); + bwtwo.set_visarea(0, 1600-1, 0, 1100-1); + bwtwo.set_refresh_hz(72); m_ram->set_default_size("32M").set_extra_options("64M,96M,128M"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(sun3_state::sun3_50) +void sun3_state::sun3_50(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68020, 15700000) - MCFG_DEVICE_PROGRAM_MAP(sun3_mem) + M68020(config, m_maincpu, 15700000); + m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem); AM79C90(config, m_lance, 10'000'000); // clock is a guess - MCFG_SCREEN_ADD("bwtwo", RASTER) - MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_350_update) - MCFG_SCREEN_SIZE(1600,1100) - MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 900-1) - MCFG_SCREEN_REFRESH_RATE(72) + screen_device &bwtwo(SCREEN(config, "bwtwo", SCREEN_TYPE_RASTER)); + bwtwo.set_screen_update(FUNC(sun3_state::bw2_350_update)); + bwtwo.set_size(1600,1100); + bwtwo.set_visarea(0, 1152-1, 0, 900-1); + bwtwo.set_refresh_hz(72); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3_state, sun3_timer, attotime::from_hz(100)) + TIMER(config, "timer").configure_periodic(FUNC(sun3_state::sun3_timer), attotime::from_hz(100)); RAM(config, m_ram).set_default_size("4M").set_default_value(0x00); @@ -1162,17 +1166,16 @@ MACHINE_CONFIG_START(sun3_state::sun3_50) rs232b.dcd_handler().set(m_scc2, FUNC(z80scc_device::dcdb_w)); rs232b.cts_handler().set(m_scc2, FUNC(z80scc_device::ctsb_w)); - MCFG_NSCSI_BUS_ADD("scsibus") - MCFG_NSCSI_ADD("scsibus:0", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:1", scsi_devices, "harddisk", false) - MCFG_NSCSI_ADD("scsibus:2", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:3", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:4", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:5", scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:6", scsi_devices, "cdrom", false) - MCFG_NSCSI_ADD("scsibus:7", scsi_devices, "ncr5380", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5380", [this] (device_t *device) { ncr5380(device); }) -MACHINE_CONFIG_END + NSCSI_BUS(config, "scsibus"); + NSCSI_CONNECTOR(config, "scsibus:0", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk"); + NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom"); + NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, "ncr5380", true).set_option_machine_config("ncr5380", [this] (device_t *device) { ncr5380(device); }); +} /* ROM definition */ |