From 1238759bb9548351c6b826955268f3fcef52030e Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 25 Apr 2023 17:42:35 +0700 Subject: Systems promoted to working MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Omron Luna 88k² --- src/mame/omron/luna_88k.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/mame/omron/luna_88k.cpp b/src/mame/omron/luna_88k.cpp index 2f6411eab4b..9b6507a7092 100644 --- a/src/mame/omron/luna_88k.cpp +++ b/src/mame/omron/luna_88k.cpp @@ -9,9 +9,7 @@ * - OpenBSD source code * * TODO: - * - scsi controller * - xp i/o controller - * - lance memory * - crt controller * - slotify graphics * - expansion slots @@ -19,7 +17,8 @@ * - multi-cpu configurations * * WIP: - * - scsi probe/boot hangs + * - UniOS working + * - scsi issues with OpenBSD */ /* @@ -165,8 +164,8 @@ private: void irq_check(); - u16 net_r(offs_t offset) { return m_nram[offset >> 1]; } - void net_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_nram[offset >> 1]); } + u16 net_r(offs_t offset) { return m_nram[u16(offset >> 1)]; } + void net_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_nram[u16(offset >> 1)]); } required_device m_cpu; required_device_array m_cmmu; @@ -221,6 +220,16 @@ void luna_88k_state::init() void luna_88k_state::machine_start() { + save_item(NAME(m_plane_active)); + save_item(NAME(m_plane_func)); + save_item(NAME(m_plane_mask)); + + save_item(NAME(m_irq_state)); + save_item(NAME(m_irq_active)); + save_item(NAME(m_irq_mask)); + + save_item(NAME(m_fzrom_addr)); + m_nram = util::big_endian_cast(m_3port_ram.target()); } @@ -271,6 +280,7 @@ void luna_88k_state::cpu_map(address_map &map) [this](offs_t offset, u32 data) { irq(offset, 1, 1); }, "softint_set"); map(0x6b00'0000, 0x6b00'000f).lr32([this](offs_t offset) { irq(offset, 1, 0); return 0xffffffff; }, "softint_clr"); // 0x6d00'0000 reset cpu 0-3, all + map(0x6d00'0010, 0x6d00'0013).lw32([this](u32 data) { machine().schedule_soft_reset(); }, "reset"); map(0x7100'0000, 0x7101'ffff).ram().share("3port_ram"); @@ -278,11 +288,8 @@ void luna_88k_state::cpu_map(address_map &map) // 0x8300'0000 ext board B // 0x9000'0000 pc-98 ext board // 0x9100'0000 pc-9801 irq 4 - //map(0x8000'0000, 0x9fff'ffff).noprw(); map(0x8000'0000, 0x9fff'ffff).lr32([this]() { m_cmmu[1]->bus_error_w(1); return 0; }, "bus_error"); - // 0xa100'0000 mask rom 0x400000 - //map(0xb100'0000, 0xb100'ffff); // rfcnt (pad,vert_loc,pad,horiz_loc) map(0xb104'0000, 0xb104'ffff).lw8([this](u8 data) { LOG("plane_active 0x%02x\n", data); m_plane_active = data; }, "plane_active"); map(0xb108'0000, 0xb10b'ffff).w(FUNC(luna_88k_state::plane_common_w)); @@ -367,6 +374,7 @@ void luna_88k_state::luna88k2(machine_config &config) sys_clk.signal_handler().set([this](int state) { if (state) irq(0, 6, 1); }); DS1397(config, m_rtc, 32'768); + m_rtc->set_epoch(1990); HD647180X(config, m_iop, 12'288'000); m_iop->set_addrmap(AS_PROGRAM, &luna_88k_state::iop_map_mem); @@ -503,7 +511,7 @@ void luna_88k_state::luna88k2(machine_config &config) // TODO: crt timing control by HD6445CP4 screen_device &crt(SCREEN(config, "crt", SCREEN_TYPE_RASTER)); - crt.set_raw(108'992'000, 2048, 0, 2048, 1024, 0, 1024); + crt.set_raw(108'992'000, 2048, 0, 1280, 1024, 0, 1024); crt.set_screen_update(FUNC(luna_88k_state::screen_update)); BT458(config, m_ramdac, 108'992'000); @@ -680,9 +688,9 @@ void luna_88k_state::irq_check() static INPUT_PORTS_START(luna88k) PORT_START("SW1") - PORT_DIPNAME(0x80, 0x00, "Start") PORT_DIPLOCATION("SW1:!1") - PORT_DIPSETTING(0x00, "Autoboot") - PORT_DIPSETTING(0x80, "Monitor") + PORT_DIPNAME(0x80, 0x80, "Start") PORT_DIPLOCATION("SW1:!1") + PORT_DIPSETTING(0x00, "Monitor") // single-user + PORT_DIPSETTING(0x80, "Autoboot") // multi-user PORT_DIPNAME(0x40, 0x40, "Console") PORT_DIPLOCATION("SW1:!2") PORT_DIPSETTING(0x00, "Serial") PORT_DIPSETTING(0x40, "Graphics") @@ -778,4 +786,4 @@ ROM_END } // anonymous namespace /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP(1992?, luna88k2, 0, 0, luna88k2, luna88k, luna_88k_state, init, "Omron", u8"Luna 88K²", MACHINE_NOT_WORKING) +COMP(1992?, luna88k2, 0, 0, luna88k2, luna88k, luna_88k_state, init, "Omron", u8"Luna 88K²", 0) -- cgit v1.2.3