summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2020-03-31 21:34:35 +0700
committer Patrick Mackinlay <pmackinlay@hotmail.com>2020-03-31 21:34:35 +0700
commitec049a8cc10c083f0f5d19d5bb5765ad3bd36cfd (patch)
tree86075fbe2e71b418940b367f961c24f0e7d0fc63 /src/mame
parentd1022589dc5feadbe90da4a26d154adf16cacf13 (diff)
news_r3k: wip (nw)
* handle NetBSD and NEWS-OS probing properly * remove CD-ROM by default so NEWS-OS doesn't choke
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/news_r3k.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/mame/drivers/news_r3k.cpp b/src/mame/drivers/news_r3k.cpp
index 2aed75a44d2..04d7e723ce3 100644
--- a/src/mame/drivers/news_r3k.cpp
+++ b/src/mame/drivers/news_r3k.cpp
@@ -193,10 +193,7 @@ void news_r3k_state::init_common()
void news_r3k_state::cpu_map(address_map &map)
{
- // prevent netbsd detecting invalid devices
- map(0x18c30000, 0x18c30003).r(FUNC(news_r3k_state::bus_error));
- map(0x18ff0000, 0x18ff0003).r(FUNC(news_r3k_state::bus_error));
- map(0x18fe0000, 0x18fe0003).r(FUNC(news_r3k_state::bus_error));
+ map(0x08000000, 0x080fffff).ram().share("vram");
// FIXME: silence a lot of unhandled graphics addresses
map(0x187702b0, 0x187702b3).nopw().umask32(0xffff);
@@ -206,17 +203,23 @@ void news_r3k_state::cpu_map(address_map &map)
map(0x18fc0000, 0x18fc0003).nopw(); // palette?
map(0x18fe0000, 0x18fe0003).nopw(); // lcdc?
- map(0x08000000, 0x080fffff).ram().share("vram");
+ // respond to absent hardware probes
+ // 0x18500000 lcdc?
+ map(0x18600000, 0x186fffff).r(FUNC(news_r3k_state::bus_error)); // ??
+ map(0x18780000, 0x18780003).r(FUNC(news_r3k_state::bus_error)); // nwb-225
+ map(0x18c30000, 0x18c30003).r(FUNC(news_r3k_state::bus_error)); // second lance
+ map(0x18c40000, 0x18c40003).r(FUNC(news_r3k_state::bus_error)); // second scc
+ map(0x18c40004, 0x18c40007).r(FUNC(news_r3k_state::bus_error)); // third scc
+ map(0x18c70000, 0x18c70003).r(FUNC(news_r3k_state::bus_error)); // third lance
+ map(0x18e00000, 0x18e00003).r(FUNC(news_r3k_state::bus_error)); // nwb-252/nwb-253 crt
+ map(0x18ff0000, 0x18ff0003).r(FUNC(news_r3k_state::bus_error)); // nwb-252/nwb-253 ctrl
map(0x1fc00000, 0x1fc1ffff).rom().region("eprom", 0);
-
//map(0x1fc40004, 0x1fc40004).w().umask32(0xff); ??
-
map(0x1fc80000, 0x1fc80001).rw(FUNC(news_r3k_state::inten_r), FUNC(news_r3k_state::inten_w));
map(0x1fc80002, 0x1fc80003).r(FUNC(news_r3k_state::intst_r));
map(0x1fc80004, 0x1fc80005).w(FUNC(news_r3k_state::intclr_w));
map(0x1fc80006, 0x1fc80006).w(FUNC(news_r3k_state::itimer_w));
-
map(0x1fcc0003, 0x1fcc0003).rw(FUNC(news_r3k_state::debug_r), FUNC(news_r3k_state::debug_w));
map(0x1fd00000, 0x1fd00000).r(m_kbd, FUNC(news_hle_kbd_device::data_r));
@@ -227,16 +230,15 @@ void news_r3k_state::cpu_map(address_map &map)
map(0x1fe00000, 0x1fe0000f).m(m_dma, FUNC(dmac_0448_device::map));
map(0x1fe00100, 0x1fe0010f).m(m_scsi, FUNC(cxd1185_device::map));
map(0x1fe00200, 0x1fe00203).m(m_fdc, FUNC(upd72067_device::map));
+ map(0x1fe00300, 0x1fe00300).lr8([this]() { return 0xff; }, "sound_r"); // HACK: disable sound
//map(0x1fe00300, 0x1fe00307); // sound
-
map(0x1fe40000, 0x1fe40003).portr("SW2");
map(0x1fe80000, 0x1fe800ff).rom().region("idrom", 0).mirror(0x0003ff00);
-
map(0x1fec0000, 0x1fec0003).rw(m_scc, FUNC(z80scc_device::ab_dc_r), FUNC(z80scc_device::ab_dc_w));
map(0x1ff40000, 0x1ff407ff).rw(m_rtc, FUNC(m48t02_device::read), FUNC(m48t02_device::write));
+ map(0x1ff50000, 0x1ff50003).r(FUNC(news_r3k_state::bus_error)); // lfbm?
map(0x1ff80000, 0x1ff80003).rw(m_net, FUNC(am7990_device::regs_r), FUNC(am7990_device::regs_w));
-
map(0x1ffc0000, 0x1ffc3fff).lrw16(
[this](offs_t offset) { return m_net_ram[offset]; }, "net_ram_r",
[this](offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_net_ram[offset]); }, "net_ram_w");
@@ -445,7 +447,7 @@ void news_r3k_state::common(machine_config &config)
NSCSI_CONNECTOR(config, "scsi:3", news_scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsi:4", news_scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsi:5", news_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:6", news_scsi_devices, "cdrom");
+ NSCSI_CONNECTOR(config, "scsi:6", news_scsi_devices, nullptr);
// scsi host adapter
NSCSI_CONNECTOR(config, "scsi:7").option_set("cxd1185", CXD1185).clock(16_MHz_XTAL).machine_config(
@@ -470,8 +472,9 @@ void news_r3k_state::common(machine_config &config)
* LCD, with an HD64646FS LCD controller. The boot prom is happy if we just
* ignore the LCDC and pretend the screen is 1024 pixels wide.
*/
+ // apparently 1024x768?
SCREEN(config, m_lcd, SCREEN_TYPE_LCD);
- m_lcd->set_raw(47923200, 1024, 0, 1023, 780, 0, 779);
+ m_lcd->set_raw(47185920, 1024, 0, 1024, 768, 0, 768);
m_lcd->set_screen_update(FUNC(news_r3k_state::screen_update));
NEWS_HLE_KBD(config, m_kbd);