From 2298fa1c3492d66f7b0f80ab1d4dd04a031a4539 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 10 Jan 2025 16:17:37 +0700 Subject: Revert "wip" This reverts commit d731222aac57049354191bed35917206a25460db. --- src/devices/bus/nscsi/hd.cpp | 2 +- src/devices/bus/vme/mvme327a.cpp | 26 +++--------------- src/devices/bus/vme/mvme327a.h | 2 -- src/devices/bus/vme/tp880v.cpp | 56 +++++---------------------------------- src/devices/bus/vme/tp880v.h | 5 +--- src/devices/bus/vme/vme.cpp | 2 +- src/devices/cpu/mips/mips1.cpp | 2 +- src/devices/machine/hd63450.cpp | 12 +++++---- src/devices/machine/ncr53c90.cpp | 2 +- src/devices/machine/nscsi_bus.cpp | 4 +-- src/mame/vme.flt | 18 ------------- 11 files changed, 25 insertions(+), 106 deletions(-) delete mode 100644 src/mame/vme.flt diff --git a/src/devices/bus/nscsi/hd.cpp b/src/devices/bus/nscsi/hd.cpp index 4eab64ccb8c..fe5fc45127b 100644 --- a/src/devices/bus/nscsi/hd.cpp +++ b/src/devices/bus/nscsi/hd.cpp @@ -10,7 +10,7 @@ #define LOG_DATA (1U << 2) #define LOG_UNSUPPORTED (1U << 3) -#define VERBOSE (LOG_GENERAL) +#define VERBOSE 0 #include "logmacro.h" diff --git a/src/devices/bus/vme/mvme327a.cpp b/src/devices/bus/vme/mvme327a.cpp index a6a1eaf6960..dc64a89f85f 100644 --- a/src/devices/bus/vme/mvme327a.cpp +++ b/src/devices/bus/vme/mvme327a.cpp @@ -9,7 +9,6 @@ * * TODO: * - skeleton only - * - wip failures due to pit outputs, interrupts? */ #include "emu.h" @@ -21,12 +20,6 @@ #define VERBOSE 0 #include "logmacro.h" -enum int_mask : u8 -{ - INT_SCSI = 0x04, - INT_PIT = 0xe1, // 0x1110'0001 -}; - DEFINE_DEVICE_TYPE(VME_MVME327A, vme_mvme327a_device, "mvme327a", "Motorola MVME327A") vme_mvme327a_device::vme_mvme327a_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) @@ -97,19 +90,12 @@ void vme_mvme327a_device::device_add_mconfig(machine_config &config) NSCSI_CONNECTOR(config, "scsi:5", scsi_devices, nullptr, false); NSCSI_CONNECTOR(config, "scsi:6", scsi_devices, nullptr, false); NSCSI_CONNECTOR(config, "scsi:7").option_set("wd33c93a", WD33C93A).machine_config( - [this] (device_t *device) + [] (device_t *device) { wd33c9x_base_device &wd33c93(downcast(*device)); wd33c93.set_clock(10000000); - wd33c93.irq_cb().set( - [this](int state) - { - if (state) - m_int |= INT_SCSI; - else - m_int &= ~INT_SCSI; - }); + //wd33c93.irq_cb().set(*this, ...); //wd33c93.drq_cb().set(*this, ...); }); } @@ -120,12 +106,8 @@ void vme_mvme327a_device::cpu_mem(address_map &map) m_boot[0](0x00'0000, 0x01'ffff).rom().region("eprom", 0); m_boot[1](0x00'0000, 0x01'ffff).ram(); - map(0x03'0001, 0x03'0001).lr8([this]() { return m_int; }, "int_r"); // interrupt register? - map(0x04'0000, 0x04'0003).rw(m_scsi, FUNC(wd33c93a_device::indir_r), FUNC(wd33c93a_device::indir_w)).umask16(0x00ff); - map(0x07'0000, 0x07'0003).m(m_fdc, FUNC(wd37c65c_device::map)).umask16(0x00ff); - // 0x07'0005 w - // 0x07'0007 r/w - //map(0x09'0000, 0x09'0003); // ??? + //map(0x04'0000, 0x04'0001).rw(m_scsi, FUNC(wd33c93a_device)) + //map(0x07'0000, 0x07'0003).m(m_fdc, &wd37c65c_device::map).umask16(0x00ff); map(0x0b'0000, 0x0b'003f).rw(m_pit, FUNC(pit68230_device::read), FUNC(pit68230_device::write)).mirror(0xffc0).umask16(0x00ff); map(0x0c'0000, 0x0c'000f).rw(m_bim, FUNC(bim68153_device::read), FUNC(bim68153_device::write)).mirror(0xfff0).umask16(0x00ff); diff --git a/src/devices/bus/vme/mvme327a.h b/src/devices/bus/vme/mvme327a.h index 89bb61f4c00..b84b863c770 100644 --- a/src/devices/bus/vme/mvme327a.h +++ b/src/devices/bus/vme/mvme327a.h @@ -41,8 +41,6 @@ private: required_device m_scsi; memory_view m_boot; - - u8 m_int; }; DECLARE_DEVICE_TYPE(VME_MVME327A, vme_mvme327a_device) diff --git a/src/devices/bus/vme/tp880v.cpp b/src/devices/bus/vme/tp880v.cpp index 10cf643e332..a3a2e12b0f6 100644 --- a/src/devices/bus/vme/tp880v.cpp +++ b/src/devices/bus/vme/tp880v.cpp @@ -37,7 +37,7 @@ vme_tp880v_card_device::vme_tp880v_card_device(machine_config const &mconfig, ch , m_scsi(*this, "scsi:7:ncr53c90") , m_duart(*this, "duart") , m_serial(*this, "serial%u", 0U) - , m_ram_88k(*this, "ram") + , m_ram(*this, "ram") , m_ram_68k(nullptr) { } @@ -63,8 +63,7 @@ ioport_constructor vme_tp880v_card_device::device_input_ports() const void vme_tp880v_card_device::device_start() { - m_ram_68k = util::big_endian_cast(m_ram_88k.target()); - m_pb = 0; + m_ram_68k = util::big_endian_cast(m_ram.target()); } void vme_tp880v_card_device::device_reset() @@ -90,36 +89,19 @@ void vme_tp880v_card_device::device_add_mconfig(machine_config &config) M68000(config, m_ios, 10'000'000); m_ios->set_addrmap(AS_PROGRAM, &vme_tp880v_card_device::ios_mem); - m_ios->set_addrmap(m68000_base_device::AS_CPU_SPACE, &vme_tp880v_card_device::ios_ack); Z8036(config, m_cio[0], 4'000'000); // Z0803606VSC - m_cio[0]->pb_rd_cb().set([this]() { return ~m_pb; }); - m_cio[0]->pa_wr_cb().set( - [this](u8 data) - { - logerror("pa 0x%02x (%s)\n", data, machine().describe_context()); - m_cpu->set_input_line(INPUT_LINE_IRQ0, BIT(data, 4)); - m_ios->set_input_line(INPUT_LINE_IRQ4, !BIT(data, 3)); - }); - // pb0..2 are outputs - m_cio[0]->pb_wr_cb().set( - [this](u8 data) - { - // 0x0d 1101 - // 0x01 0001 on host 1 test - logerror("pb 0x%02x (%s)\n", data, machine().describe_context()); - if (!BIT(data, 2)) - m_ios->set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE); - }); + m_cio[0]->irq_wr_cb().set_inputline(m_ios, INPUT_LINE_IRQ4); // ? Z8036(config, m_cio[1], 4'000'000); // Z0803606VSC + m_cio[0]->irq_wr_cb().set_inputline(m_ios, INPUT_LINE_IRQ1); // ? // TODO: MC68440 is function and pin compatible with MC68450/HD63450, but // has only two DMA channels instead of four. HD63450(config, m_dma, 10'000'000); // MC68440FN10 m_dma->set_cpu_tag(m_ios); m_dma->irq_callback().set_inputline(m_ios, INPUT_LINE_IRQ3); - //m_dma->dma_read<0>().set(m_scsi, FUNC(ncr53c90_device::dma_r)); - //m_dma->dma_write<0>().set(m_scsi, FUNC(ncr53c90_device::dma_w)); + m_dma->dma_read<0>().set(m_scsi, FUNC(ncr53c90_device::dma_r)); + m_dma->dma_write<0>().set(m_scsi, FUNC(ncr53c90_device::dma_w)); M48T02(config, m_rtc, 0); // MK40T02B-25 @@ -143,19 +125,7 @@ void vme_tp880v_card_device::device_add_mconfig(machine_config &config) SCN2681(config, m_duart, 3.6864_MHz_XTAL); m_duart->irq_cb().set_inputline(m_ios, INPUT_LINE_IRQ6); - m_duart->outport_cb().set( - [this](u8 data) - { - logerror("op 0x%02x (%s)\n", data, machine().describe_context()); - if (!BIT(data, 3)) - m_pb |= 0x40; - else - m_pb &= ~0x40; - m_cpu->set_input_line(INPUT_LINE_IRQ0, BIT(data, 3)); - if (!BIT(data, 4)) - m_ios->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE); - m_cpu->set_input_line(INPUT_LINE_RESET, BIT(data, 5)); - }); + m_duart->outport_cb().set([this](int state) { m_cpu->set_input_line(INPUT_LINE_RESET, state); }).bit(5); RS232_PORT(config, m_serial[0], default_rs232_devices, "terminal"); RS232_PORT(config, m_serial[1], default_rs232_devices, nullptr); @@ -196,15 +166,3 @@ void vme_tp880v_card_device::ios_mem(address_map &map) [this](offs_t offset, u16 mem_mask) { return m_ram_68k[offset]; }, "ram_68k_r", [this](offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_ram_68k[offset]); }, "ram_68k_w"); } - -void vme_tp880v_card_device::ios_ack(address_map &map) -{ - map(0xff'fff3, 0xff'fff3).lr8(NAME([]() { return m68000_base_device::autovector(1); })); - map(0xff'fff5, 0xff'fff5).lr8(NAME([]() { return m68000_base_device::autovector(2); })); - //map(0xff'fff7, 0xff'fff7).lr8(NAME([this]() { return m_dma->iack(); })); - map(0xff'fff7, 0xff'fff7).lr8(NAME([]() { return m68000_base_device::autovector(3); })); - map(0xff'fff9, 0xff'fff9).lr8(NAME([]() { return m68000_base_device::autovector(4); })); - map(0xff'fffb, 0xff'fffb).lr8(NAME([]() { return m68000_base_device::autovector(5); })); - map(0xff'fffd, 0xff'fffd).lr8(NAME([]() { return m68000_base_device::autovector(6); })); - map(0xff'ffff, 0xff'ffff).lr8(NAME([]() { return m68000_base_device::autovector(7); })); -} diff --git a/src/devices/bus/vme/tp880v.h b/src/devices/bus/vme/tp880v.h index 0cbfee32c5e..d2f60273550 100644 --- a/src/devices/bus/vme/tp880v.h +++ b/src/devices/bus/vme/tp880v.h @@ -35,7 +35,6 @@ protected: private: void cpu_mem(address_map &map) ATTR_COLD; void ios_mem(address_map &map) ATTR_COLD; - void ios_ack(address_map &map) ATTR_COLD; required_device m_cpu; required_device_array m_mmu; @@ -49,10 +48,8 @@ private: required_device_array m_serial; - required_shared_ptr m_ram_88k; + required_shared_ptr m_ram; util::endian_cast m_ram_68k; - - u8 m_pb; }; DECLARE_DEVICE_TYPE(VME_TP880V, vme_tp880v_card_device) diff --git a/src/devices/bus/vme/vme.cpp b/src/devices/bus/vme/vme.cpp index c54f1e5a9ff..c1ad72e17a4 100644 --- a/src/devices/bus/vme/vme.cpp +++ b/src/devices/bus/vme/vme.cpp @@ -78,7 +78,7 @@ #include "emu.h" #include "vme.h" -#define VERBOSE (LOG_GENERAL) +#define VERBOSE 0 #include "logmacro.h" DEFINE_DEVICE_TYPE(VME, vme_bus_device, "vme", "VME bus") diff --git a/src/devices/cpu/mips/mips1.cpp b/src/devices/cpu/mips/mips1.cpp index 72e433a9105..8ba1509b9d3 100644 --- a/src/devices/cpu/mips/mips1.cpp +++ b/src/devices/cpu/mips/mips1.cpp @@ -178,7 +178,7 @@ enum cp1_fcr31_mask : u32 FCR31_CV = 0x00010000, // invalid operation cause FCR31_CE = 0x00020000, // unimplemented operation cause - FCR31_C = 0x00800000, // condition + FCR31_C = 0x00800000, // condition FCR31_FM = 0x0000007c, // flag mask FCR31_EM = 0x00000f80, // enable mask diff --git a/src/devices/machine/hd63450.cpp b/src/devices/machine/hd63450.cpp index ae8fac929ad..e0b5e3cdd2f 100644 --- a/src/devices/machine/hd63450.cpp +++ b/src/devices/machine/hd63450.cpp @@ -9,7 +9,7 @@ #include "emu.h" #include "hd63450.h" -#define VERBOSE 1 +//#define VERBOSE 1 #include "logmacro.h" DEFINE_DEVICE_TYPE(HD63450, hd63450_device, "hd63450", "Hitachi HD63450 DMAC") @@ -306,7 +306,7 @@ void hd63450_device::dma_transfer_start(int channel) else if ((m_reg[channel].ocr & 3) == 2) m_timer[channel]->adjust(attotime::never, channel, attotime::never); - m_transfer_size[channel] = m_reg[channel].mtc * 2; + m_transfer_size[channel] = m_reg[channel].mtc; LOG("DMA: Transfer begins: size=0x%08x\n",m_transfer_size[channel]); } @@ -366,6 +366,8 @@ void hd63450_device::single_transfer(int x) if (!m_dma_read[x].isunset()) { data = m_dma_read[x](m_reg[x].mar); + if (data == -1) + return; // not ready to receive data space.write_byte(m_reg[x].mar,data); datasize = 1; } @@ -445,8 +447,8 @@ void hd63450_device::single_transfer(int x) } // decrease memory transfer counter - if (m_transfer_size[x] > 0) - m_transfer_size[x] -= datasize; + if (m_reg[x].mtc > 0) + m_reg[x].mtc--; // handle change of memory and device addresses if ((m_reg[x].scr & 0x03) == 0x01) @@ -459,7 +461,7 @@ void hd63450_device::single_transfer(int x) else if ((m_reg[x].scr & 0x0c) == 0x08) m_reg[x].mar-=datasize; - if (m_transfer_size[x] <= 0) + if (m_reg[x].mtc <= 0) { // End of transfer LOG("DMA#%i: End of transfer\n",x); diff --git a/src/devices/machine/ncr53c90.cpp b/src/devices/machine/ncr53c90.cpp index 0049b95183d..605f096fd97 100644 --- a/src/devices/machine/ncr53c90.cpp +++ b/src/devices/machine/ncr53c90.cpp @@ -14,7 +14,7 @@ #define LOG_FIFO (1U << 2) #define LOG_COMMAND (1U << 3) -#define VERBOSE (LOG_GENERAL|LOG_COMMAND|LOG_FIFO) +#define VERBOSE (0) #include "logmacro.h" #define DELAY_HACK diff --git a/src/devices/machine/nscsi_bus.cpp b/src/devices/machine/nscsi_bus.cpp index 9c43dcab73b..9b68dec2101 100644 --- a/src/devices/machine/nscsi_bus.cpp +++ b/src/devices/machine/nscsi_bus.cpp @@ -14,8 +14,8 @@ #define LOG_DATA (1U << 4) #define LOG_DATA_SENT (1U << 5) -//#define VERBOSE (LOG_GENERAL | LOG_STATE | LOG_CONTROL | LOG_DATA) -#define VERBOSE (LOG_GENERAL|LOG_UNSUPPORTED) +#define VERBOSE (LOG_UNSUPPORTED) +//#define LOG_OUTPUT_FUNC osd_printf_info #include "logmacro.h" diff --git a/src/mame/vme.flt b/src/mame/vme.flt deleted file mode 100644 index 6aaad854af1..00000000000 --- a/src/mame/vme.flt +++ /dev/null @@ -1,18 +0,0 @@ -// drivers which are actually vme cards: -// ffcpu30: sys68k/cpu-30 card -// force68k: card -> done -> working -// hk68v10: card -> done -> working -// mzr8105: card -> done -> no serial? -// mvme147: card -> done -// clxvme186: card (not vme yet) -// -// ffcpu20: driver for fccpu2* cards - should be deleted? -// miniforce: vme backplane (fccpu21) -// m8120: computer (mvme187) -// sys1121: backplane -// -force/miniforce.cpp -motorola/m8120.cpp -motorola/sys1121.cpp -sgi/tt.cpp -skeleton/clxvme186.cpp -- cgit v1.2.3