diff options
-rw-r--r-- | scripts/src/machine.lua | 12 | ||||
-rw-r--r-- | src/devices/machine/psion_condor.cpp | 278 | ||||
-rw-r--r-- | src/devices/machine/psion_condor.h | 75 | ||||
-rw-r--r-- | src/mame/psion/psion3.cpp | 6 | ||||
-rw-r--r-- | src/mame/psion/psion3a.cpp | 43 | ||||
-rw-r--r-- | src/mame/psion/psionhc.cpp | 14 | ||||
-rw-r--r-- | src/mame/psion/siena.cpp | 28 | ||||
-rw-r--r-- | src/mame/psion/workabout.cpp | 12 |
8 files changed, 416 insertions, 52 deletions
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua index 53f71fad123..cae26f7e89f 100644 --- a/scripts/src/machine.lua +++ b/scripts/src/machine.lua @@ -2957,6 +2957,18 @@ end --------------------------------------------------- -- +--@src/devices/machine/psion_condor.h,MACHINES["PSION_CONDOR"] = true +--------------------------------------------------- + +if (MACHINES["PSION_CONDOR"]~=null) then + files { + MAME_DIR .. "src/devices/machine/psion_condor.cpp", + MAME_DIR .. "src/devices/machine/psion_condor.h", + } +end + +--------------------------------------------------- +-- --@src/devices/machine/psion_ssd.h,MACHINES["PSION_SSD"] = true --------------------------------------------------- diff --git a/src/devices/machine/psion_condor.cpp b/src/devices/machine/psion_condor.cpp new file mode 100644 index 00000000000..f9cc6d7d494 --- /dev/null +++ b/src/devices/machine/psion_condor.cpp @@ -0,0 +1,278 @@ +// license:BSD-3-Clause +// copyright-holders:Nigel Barnes +/****************************************************************************** + + Psion Condor + + The Condor chip was introduced with the Series 3c and Siena for serial + communications. The new chip enabled serial port speeds upto 57.6K baud on + the Series 3c (19.2K baud on the Siena) + + This is a 64 pin package and pinout is unknown, so everything needs verifying + if a datasheet/specification is ever found. + + TODO: + - everything, require datasheet/specification and 3c/Siena schematic for info. + +******************************************************************************/ + +#include "emu.h" +#include "psion_condor.h" + +#define VERBOSE 0 +//#define LOG_OUTPUT_FUNC osd_printf_info +#include "logmacro.h" + + +DEFINE_DEVICE_TYPE(PSION_CONDOR, psion_condor_device, "psion_condor", "Psion Condor") + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +psion_condor_device::psion_condor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, PSION_CONDOR, tag, owner, clock) + , device_serial_interface(mconfig, *this) + , m_txd_handler(*this) + , m_rxc_handler(*this) + , m_rts_handler(*this) + , m_dtr_handler(*this) + , m_int_handler(*this) + , m_cts(1) + , m_dsr(1) + , m_ri(1) + , m_dcd(1) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void psion_condor_device::device_start() +{ + save_item(NAME(m_cts)); + save_item(NAME(m_dsr)); + save_item(NAME(m_ri)); + save_item(NAME(m_dcd)); + save_item(NAME(m_uart_divisor)); + save_item(NAME(m_uart_line_control)); + save_item(NAME(m_int_mask)); + save_item(NAME(m_control1)); + save_item(NAME(m_parallel_ddr)); +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void psion_condor_device::device_reset() +{ + m_int_mask = 0x00; + m_control1 = 0x00; +} + + +//************************************************************************** +// READ/WRITE HANDLERS +//************************************************************************** + +uint8_t psion_condor_device::read(offs_t offset) +{ + uint8_t data = 0x00; + + switch (offset & 0x0f) + { + case 0x00: // UARTReceiveBufferRegister + //receive_register_extract(); + //data = get_received_char(); + LOG("%s read: UARTReceiveBufferRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x01: // UARTInterruptEnableRegister + LOG("%s read: UARTInterruptEnableRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x02: // UARTInterruptIdentificRegister + // b0 ERBF + // b1 ETBEI - Enable Transmit Interrupts + // b2 ELSI + // b3 EDSSI - Enable Modem Status Interrupts + LOG("%s read: UARTInterruptIdentificRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x05: // UARTLineStatusRegister + // b5 THRE + // b6 TEMT - Transmitter Empty + data |= is_transmit_register_empty() ? 0x40 : 0x00; + LOG("%s read: UARTLineStatusRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x06: // UARTModemStatusRegister + // b4 CTSLine + // b5 DSRLine + // b6 RILine + // b7 DCDLine + data |= m_cts << 4; + data |= m_dsr << 5; + data |= m_ri << 6; + data |= m_dcd << 7; + LOG("%s read: UARTModemStatusRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x08: // FifoDataRegister + data = m_rx_fifo.dequeue(); + LOG("%s read: FifoDataRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x0a: // ParallelDataRegister + // b7 HighPowerEnable + LOG("%s read: ParallelDataRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x0c: // InterruptStatusRegister + // b0 UINT + // b1 RHFINT - Receive Half Full + // b2 RTOINT + // b3 THEINT - Transmit Half Empty + // b4 MP1INT + // b5 MP2INT + LOG("%s read: InterruptStatusRegister => %02x\n", machine().describe_context(), data); + break; + + case 0x0e: // StatusRegister + // b0 RXFE - Receive FIFO Empty + // b1 TXFE - Transmit FIFO Empty + // b2 RFERR + // b3 RFE - Receive Framing Error + // b4 RPE - Receive Parity Error + // b5 FOVR + // b6 PLOCK - Phase Locked Loop Locked + data |= m_rx_fifo.empty() ? 0x01 : 0x00; + data |= m_tx_fifo.empty() ? 0x02 : 0x00; + data |= is_receive_framing_error() ? 0x08 : 0x00; + data |= is_receive_parity_error() ? 0x10 : 0x00; + //LOG("%s read: StatusRegister => %02x\n", machine().describe_context(), data); + break; + + default: + LOG("%s read: unknown register %02x => %02x\n", machine().describe_context(), offset, data); + break; + } + + return data; +} + + +void psion_condor_device::write(offs_t offset, uint8_t data) +{ + switch (offset & 0x0f) + { + case 0x00: // UARTTransmitterHoldingRegister / UARTDivisorLatchLSB + if (BIT(m_uart_line_control, 7)) + { + LOG("%s write: UARTDivisorLatchLSB <= %02x\n", machine().describe_context(), data); + m_uart_divisor = (m_uart_divisor & 0xff00) | data; + } + else + { + LOG("%s write: UARTTransmitterHoldingRegister <= %02x\n", machine().describe_context(), data); + //transmit_byte(data); + } + break; + + case 0x01: // UARTInterruptEnableRegister / UARTDivisorLatchMSB + if (BIT(m_uart_line_control, 7)) + { + LOG("%s write: UARTDivisorLatchMSB <= %02x\n", machine().describe_context(), data); + m_uart_divisor = (m_uart_divisor & 0x00ff) | (data << 8); + } + else + { + // b0 ERBF + // b1 ETBEI - Enable Transmit Interrupts + // b2 ELSI + // b3 EDSSI - Enable Modem Status Interrupts + LOG("%s write: UARTInterruptEnableRegister <= %02x\n", machine().describe_context(), data); + } + break; + + case 0x03: // UARTLineControlRegister + // b2 - Select Two Stop Bits + // b7 DLAB - Divisor Latch + LOG("%s write: UARTLineControlRegister <= %02x\n", machine().describe_context(), data); + m_uart_line_control = data; + set_data_frame(1, 8, PARITY_NONE, BIT(data, 2) ? STOP_BITS_2 : STOP_BITS_1); + break; + + case 0x04: // UARTModemControlRegister + // b0 DTRLine1 + // b1 RTSLine1 + // b2 DTRLine2 + // b3 RTSLine2 + // b4 LOOPBACK + m_dtr_handler(BIT(data, 0)); + m_rts_handler(BIT(data, 1)); + LOG("%s write: UARTModemControlRegister <= %02x\n", machine().describe_context(), data); + break; + + case 0x07: // UARTScratchRegister + LOG("%s write: UARTScratchRegister <= %02x\n", machine().describe_context(), data); + break; + + case 0x08: // FifoDataRegister + LOG("%s write: FifoDataRegister <= %02x\n", machine().describe_context(), data); + m_tx_fifo.enqueue(data); + break; + + case 0x09: // ControlRegister1 + // b0 TFCLR - Transmit FIFO Clear + // b1 RFCLR - Receive FIFO Clear + // b2 + // b3 IRSD + // b4 ESEL1 + // b5 ESEL2 + // b6 CLKEN + // b7 PSRST + LOG("%s write: ControlRegister1 <= %02x\n", machine().describe_context(), data); + m_control1 = data; + if (BIT(data, 0)) m_tx_fifo.clear(); + if (BIT(data, 1)) m_rx_fifo.clear(); + break; + + case 0x0a: // ParallelDataRegister + // b7 HighPowerEnable + LOG("%s write: ParallelDataRegister <= %02x\n", machine().describe_context(), data); + break; + + case 0x0b: // ParallelDataDirectionRegister + LOG("%s write: ParallelDataDirectionRegister <= %02x\n", machine().describe_context(), data); + m_parallel_ddr = data; + break; + + case 0x0d: // InterruptMaskAndMiscRegister + // b0 EUINT + // b1 ERHFINT + // b2 ERTOINT + // b3 ETHEINT + // b4 PLLBP + // b5 EMPINT + // b6 RS232PORT1 + // b7 RS232PORT2 + LOG("%s write: InterruptMaskAndMiscRegister <= %02x\n", machine().describe_context(), data); + m_int_mask = data; + break; + + case 0x0f: // ControlRegister2 + // b0 THECLR - Clear Transmit Interrupt + // b1 RHFCLR - Clear Receive Interrupt + LOG("%s write: ControlRegister2 <= %02x\n", machine().describe_context(), data); + break; + + default: + LOG("%s write: unknown register %02x <= %02x\n", machine().describe_context(), offset, data); + break; + } +} diff --git a/src/devices/machine/psion_condor.h b/src/devices/machine/psion_condor.h new file mode 100644 index 00000000000..f62ae91fa91 --- /dev/null +++ b/src/devices/machine/psion_condor.h @@ -0,0 +1,75 @@ +// license:BSD-3-Clause +// copyright-holders:Nigel Barnes +/****************************************************************************** + + Psion Condor + +******************************************************************************/ + +#ifndef MAME_MACHINE_PSION_CONDOR_H +#define MAME_MACHINE_PSION_CONDOR_H + +#pragma once + +#include "diserial.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> psion_condor_device + +class psion_condor_device : public device_t, public device_serial_interface +{ +public: + psion_condor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); + + static constexpr feature_type unemulated_features() { return feature::COMMS; } + + auto txd_handler() { return m_txd_handler.bind(); } + auto rxc_handler() { return m_rxc_handler.bind(); } + auto rts_handler() { return m_rts_handler.bind(); } + auto dtr_handler() { return m_dtr_handler.bind(); } + auto int_handler() { return m_int_handler.bind(); } + + void write_rxd(int state) { } + void write_cts(int state) { m_cts = state; } + void write_dsr(int state) { m_dsr = state; } + void write_dcd(int state) { m_dcd = state; } + + uint8_t read(offs_t offset); + void write(offs_t offset, uint8_t data); + +protected: + // device_t overrides + virtual void device_start() override; + virtual void device_reset() override; + +private: + devcb_write_line m_txd_handler; + devcb_write_line m_rxc_handler; + devcb_write_line m_rts_handler; + devcb_write_line m_dtr_handler; + devcb_write_line m_int_handler; + + util::fifo<uint8_t, 8> m_rx_fifo; + util::fifo<uint8_t, 8> m_tx_fifo; + + int m_cts; + int m_dsr; + int m_ri; + int m_dcd; + + uint16_t m_uart_divisor; + uint8_t m_uart_line_control; + uint8_t m_int_mask; + uint8_t m_control1; + uint8_t m_parallel_ddr; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(PSION_CONDOR, psion_condor_device) + +#endif // MAME_MACHINE_PSION_CONDOR_H diff --git a/src/mame/psion/psion3.cpp b/src/mame/psion/psion3.cpp index aecdcfafde9..00d9c1803bc 100644 --- a/src/mame/psion/psion3.cpp +++ b/src/mame/psion/psion3.cpp @@ -369,6 +369,6 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1991, psion3, 0, 0, psion3, psion3, psion3_state, empty_init, "Psion", "Series 3", MACHINE_IMPERFECT_SOUND ) -COMP( 1992, pocketbk, psion3, 0, psion3s, pocketbk, psion3_state, empty_init, "Acorn Computers", "Pocket Book", MACHINE_IMPERFECT_SOUND ) -COMP( 1994, psion3s, psion3, 0, psion3s, psion3s, psion3_state, empty_init, "Psion", "Series 3s", MACHINE_IMPERFECT_SOUND ) +COMP( 1991, psion3, 0, 0, psion3, psion3, psion3_state, empty_init, "Psion", "Series 3", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +COMP( 1992, pocketbk, psion3, 0, psion3s, pocketbk, psion3_state, empty_init, "Acorn Computers", "Pocket Book", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +COMP( 1994, psion3s, psion3, 0, psion3s, psion3s, psion3_state, empty_init, "Psion", "Series 3s", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/psion/psion3a.cpp b/src/mame/psion/psion3a.cpp index 3129deb527b..089c91d4854 100644 --- a/src/mame/psion/psion3a.cpp +++ b/src/mame/psion/psion3a.cpp @@ -8,13 +8,16 @@ - sound devices, replace fake Psion Codec device with M7542 and M7702-03 - serial ports - fix RAM detection for 3mx + - 3mx speed switch using CTRL+Diamond + - 3c/3mx backlight using Psion+Space + - 3c/3mx IrDA ******************************************************************************/ #include "emu.h" #include "machine/nvram.h" #include "machine/psion_asic9.h" -//#include "machine/psion_condor.h" +#include "machine/psion_condor.h" #include "machine/psion_ssd.h" #include "machine/ram.h" #include "sound/spkrdev.h" @@ -145,7 +148,7 @@ class psion3c_state : public psion3a_base_state public: psion3c_state(const machine_config &mconfig, device_type type, const char *tag) : psion3a_base_state(mconfig, type, tag) - //, m_condor(*this, "condor") + , m_condor(*this, "condor") , m_honda(*this, "honda") { } @@ -155,7 +158,7 @@ protected: virtual void machine_reset() override; private: - //required_device<psion_condor_device> m_condor; + required_device<psion_condor_device> m_condor; required_device<psion_honda_slot_device> m_honda; }; @@ -181,7 +184,7 @@ void psion3a_base_state::machine_start() void psion3c_state::machine_reset() { - //m_asic9->io_space().install_readwrite_handler(0x0100, 0x011f, read8sm_delegate(*m_condor, FUNC(psion_condor_device::read)), write8sm_delegate(*m_condor, FUNC(psion_condor_device::write)), 0x00ff); + m_asic9->io_space().install_readwrite_handler(0x0100, 0x011f, read8sm_delegate(*m_condor, FUNC(psion_condor_device::read)), write8sm_delegate(*m_condor, FUNC(psion_condor_device::write)), 0x00ff); } @@ -458,18 +461,18 @@ void psion3c_state::psion3c(machine_config &config) PSION_S3A_CODEC(config, m_codec).add_route(ALL_OUTPUTS, "mono", 1.00); // TODO: M7702-03 m_asic9->pcm_out().set(m_codec, FUNC(psion3a_codec_device::pcm_in)); - //PSION_CONDOR(config, m_condor); - //m_condor->txd_handler().set(m_honda, FUNC(psion_honda_slot_device::write_txd)); - //m_condor->rts_handler().set(m_honda, FUNC(psion_honda_slot_device::write_rts)); - //m_condor->dtr_handler().set(m_honda, FUNC(psion_honda_slot_device::write_dtr)); - //m_condor->int_handler().set(m_asic9, FUNC(psion_asic9_device::eint1_w)); + PSION_CONDOR(config, m_condor); + m_condor->txd_handler().set(m_honda, FUNC(psion_honda_slot_device::write_txd)); + m_condor->rts_handler().set(m_honda, FUNC(psion_honda_slot_device::write_rts)); + m_condor->dtr_handler().set(m_honda, FUNC(psion_honda_slot_device::write_dtr)); + m_condor->int_handler().set(m_asic9, FUNC(psion_asic9_device::eint1_w)); // Honda expansion port PSION_HONDA_SLOT(config, m_honda, psion_honda_devices, nullptr); - //m_honda->rxd_handler().set(m_condor, FUNC(psion_condor_device::write_rxd)); - //m_honda->dcd_handler().set(m_condor, FUNC(psion_condor_device::write_dcd)); - //m_honda->dsr_handler().set(m_condor, FUNC(psion_condor_device::write_dsr)); - //m_honda->cts_handler().set(m_condor, FUNC(psion_condor_device::write_cts)); + m_honda->rxd_handler().set(m_condor, FUNC(psion_condor_device::write_rxd)); + m_honda->dcd_handler().set(m_condor, FUNC(psion_condor_device::write_dcd)); + m_honda->dsr_handler().set(m_condor, FUNC(psion_condor_device::write_dsr)); + m_honda->cts_handler().set(m_condor, FUNC(psion_condor_device::write_cts)); m_honda->sdoe_handler().set(m_asic9, FUNC(psion_asic9_device::medchng_w)); // TODO: verify input line m_asic9->data_r<4>().set(m_honda, FUNC(psion_honda_slot_device::data_r)); m_asic9->data_w<4>().set(m_honda, FUNC(psion_honda_slot_device::data_w)); @@ -548,10 +551,10 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1993, psion3a, 0, 0, psion3a, psion3a, psion3a_state, empty_init, "Psion", "Series 3a", 0 ) -COMP( 1994, pocketbk2, psion3a, 0, psion3a, pocketbk2, psion3a_state, empty_init, "Acorn Computers", "Pocket Book II", 0 ) -COMP( 1995, psion3a2, psion3a, 0, psion3a2, psion3a, psion3a_state, empty_init, "Psion", "Series 3a (2M)", 0 ) -COMP( 1995, psion3a2_de, psion3a, 0, psion3a2, psion3a_de, psion3a_state, empty_init, "Psion", "Series 3a (2M) (German)", 0 ) -COMP( 1997, psion3a2_ru, psion3a, 0, psion3a2, psion3a, psion3a_state, empty_init, "Psion", "Series 3a (2M) (Russian)", 0 ) -COMP( 1996, psion3c, 0, 0, psion3c, psion3c, psion3c_state, empty_init, "Psion", "Series 3c", 0 ) -COMP( 1998, psion3mx, 0, 0, psion3mx, psion3c, psion3mx_state, empty_init, "Psion", "Series 3mx", 0 ) +COMP( 1993, psion3a, 0, 0, psion3a, psion3a, psion3a_state, empty_init, "Psion", "Series 3a", MACHINE_SUPPORTS_SAVE ) +COMP( 1994, pocketbk2, psion3a, 0, psion3a, pocketbk2, psion3a_state, empty_init, "Acorn Computers", "Pocket Book II", MACHINE_SUPPORTS_SAVE ) +COMP( 1995, psion3a2, psion3a, 0, psion3a2, psion3a, psion3a_state, empty_init, "Psion", "Series 3a (2M)", MACHINE_SUPPORTS_SAVE ) +COMP( 1995, psion3a2_de, psion3a, 0, psion3a2, psion3a_de, psion3a_state, empty_init, "Psion", "Series 3a (2M) (German)", MACHINE_SUPPORTS_SAVE ) +COMP( 1997, psion3a2_ru, psion3a, 0, psion3a2, psion3a, psion3a_state, empty_init, "Psion", "Series 3a (2M) (Russian)", MACHINE_SUPPORTS_SAVE ) +COMP( 1996, psion3c, 0, 0, psion3c, psion3c, psion3c_state, empty_init, "Psion", "Series 3c", MACHINE_SUPPORTS_SAVE ) +COMP( 1998, psion3mx, 0, 0, psion3mx, psion3c, psion3mx_state, empty_init, "Psion", "Series 3mx", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/psion/psionhc.cpp b/src/mame/psion/psionhc.cpp index a12be5724d9..a842b7f957d 100644 --- a/src/mame/psion/psionhc.cpp +++ b/src/mame/psion/psionhc.cpp @@ -68,7 +68,7 @@ private: required_ioport_array<8> m_keyboard; required_device<speaker_sound_device> m_speaker; required_device_array<psion_ssd_device, 2> m_ssd; - required_device_array<psion_module_slot_device, 3> m_exp; + required_device_array<psion_module_slot_device, 2> m_exp; void palette_init(palette_device &palette); @@ -343,8 +343,8 @@ void psionhc_state::psionhc100(machine_config &config) m_asic2->data_w<5>().set(m_exp[1], FUNC(psion_module_slot_device::data_w)); m_asic2->data_r<6>().set(m_exp[0], FUNC(psion_module_slot_device::data_r)); // Expansion port A m_asic2->data_w<6>().set(m_exp[0], FUNC(psion_module_slot_device::data_w)); - m_asic2->data_r<7>().set(m_exp[2], FUNC(psion_module_slot_device::data_r)); // Expansion port C - m_asic2->data_w<7>().set(m_exp[2], FUNC(psion_module_slot_device::data_w)); + //m_asic2->data_r<7>().set(m_exp[2], FUNC(psion_module_slot_device::data_r)); + //m_asic2->data_w<7>().set(m_exp[2], FUNC(psion_module_slot_device::data_w)); PSION_PSU_ASIC3(config, m_asic3); @@ -360,8 +360,6 @@ void psionhc_state::psionhc100(machine_config &config) m_exp[0]->intr_cb().set(m_asic1, FUNC(psion_asic1_device::eint2_w)); PSION_MODULE_SLOT(config, m_exp[1], psion_hcmodule_devices, nullptr); m_exp[1]->intr_cb().set(m_asic1, FUNC(psion_asic1_device::eint1_w)); - PSION_MODULE_SLOT(config, m_exp[2], psion_hcmodule_devices, nullptr); - m_exp[2]->intr_cb().set(m_asic1, FUNC(psion_asic1_device::eint3_w)); SOFTWARE_LIST(config, "ssd_list").set_original("psion_ssd").set_filter("HC"); } @@ -403,6 +401,6 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1991, psionhc100, psionhc120, 0, psionhc100, psionhc_uk, psionhc_state, empty_init, "Psion", "HC 100", 0 ) -COMP( 1991, psionhc110, psionhc120, 0, psionhc110, psionhc_uk, psionhc_state, empty_init, "Psion", "HC 110", 0 ) -COMP( 1991, psionhc120, 0, 0, psionhc120, psionhc_uk, psionhc_state, empty_init, "Psion", "HC 120", 0 ) +COMP( 1991, psionhc100, psionhc120, 0, psionhc100, psionhc_uk, psionhc_state, empty_init, "Psion", "HC 100", MACHINE_SUPPORTS_SAVE ) +COMP( 1991, psionhc110, psionhc120, 0, psionhc110, psionhc_uk, psionhc_state, empty_init, "Psion", "HC 110", MACHINE_SUPPORTS_SAVE ) +COMP( 1991, psionhc120, 0, 0, psionhc120, psionhc_uk, psionhc_state, empty_init, "Psion", "HC 120", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/psion/siena.cpp b/src/mame/psion/siena.cpp index ebc6d2a3afb..668309f35f4 100644 --- a/src/mame/psion/siena.cpp +++ b/src/mame/psion/siena.cpp @@ -9,7 +9,7 @@ #include "emu.h" #include "machine/nvram.h" #include "machine/psion_asic9.h" -//#include "machine/psion_condor.h" +#include "machine/psion_condor.h" #include "machine/ram.h" #include "sound/spkrdev.h" #include "bus/psion/honda/slot.h" @@ -34,7 +34,7 @@ public: , m_palette(*this, "palette") , m_keyboard(*this, "COL%u", 0U) , m_speaker(*this, "speaker") - //, m_condor(*this, "condor") + , m_condor(*this, "condor") , m_honda(*this, "honda") { } @@ -53,7 +53,7 @@ private: required_device<palette_device> m_palette; required_ioport_array<8> m_keyboard; required_device<speaker_sound_device> m_speaker; - //required_device<psion_condor_device> m_condor; + required_device<psion_condor_device> m_condor; required_device<psion_honda_slot_device> m_honda; void palette_init(palette_device &palette); @@ -71,7 +71,7 @@ void siena_state::machine_start() void siena_state::machine_reset() { - //m_asic9->io_space().install_readwrite_handler(0x0100, 0x011f, read8sm_delegate(*m_condor, FUNC(psion_condor_device::read)), write8sm_delegate(*m_condor, FUNC(psion_condor_device::write)), 0x00ff); + m_asic9->io_space().install_readwrite_handler(0x0100, 0x011f, read8sm_delegate(*m_condor, FUNC(psion_condor_device::read)), write8sm_delegate(*m_condor, FUNC(psion_condor_device::write)), 0x00ff); } @@ -225,18 +225,18 @@ void siena_state::siena(machine_config &config) RAM(config, m_ram).set_default_size("512K").set_extra_options("1M"); NVRAM(config, "nvram", nvram_device::DEFAULT_NONE); - //PSION_CONDOR(config, m_condor); - //m_condor->txd_handler().set(m_honda, FUNC(psion_honda_slot_device::write_txd)); - //m_condor->rts_handler().set(m_honda, FUNC(psion_honda_slot_device::write_rts)); - //m_condor->dtr_handler().set(m_honda, FUNC(psion_honda_slot_device::write_dtr)); - //m_condor->int_handler().set(m_asic9, FUNC(psion_asic9_device::eint1_w)); + PSION_CONDOR(config, m_condor); + m_condor->txd_handler().set(m_honda, FUNC(psion_honda_slot_device::write_txd)); + m_condor->rts_handler().set(m_honda, FUNC(psion_honda_slot_device::write_rts)); + m_condor->dtr_handler().set(m_honda, FUNC(psion_honda_slot_device::write_dtr)); + m_condor->int_handler().set(m_asic9, FUNC(psion_asic9_device::eint1_w)); // Honda expansion port PSION_HONDA_SLOT(config, m_honda, psion_honda_devices, "ssd"); - //m_honda->rxd_handler().set(m_condor, FUNC(psion_condor_device::write_rxd)); - //m_honda->dcd_handler().set(m_condor, FUNC(psion_condor_device::write_dcd)); - //m_honda->dsr_handler().set(m_condor, FUNC(psion_condor_device::write_dsr)); - //m_honda->cts_handler().set(m_condor, FUNC(psion_condor_device::write_cts)); + m_honda->rxd_handler().set(m_condor, FUNC(psion_condor_device::write_rxd)); + m_honda->dcd_handler().set(m_condor, FUNC(psion_condor_device::write_dcd)); + m_honda->dsr_handler().set(m_condor, FUNC(psion_condor_device::write_dsr)); + m_honda->cts_handler().set(m_condor, FUNC(psion_condor_device::write_cts)); m_honda->sdoe_handler().set(m_asic9, FUNC(psion_asic9_device::medchng_w)); m_asic9->data_r<4>().set(m_honda, FUNC(psion_honda_slot_device::data_r)); m_asic9->data_w<4>().set(m_honda, FUNC(psion_honda_slot_device::data_w)); @@ -255,4 +255,4 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1996, siena, 0, 0, siena, siena, siena_state, empty_init, "Psion", "Siena", 0 ) +COMP( 1996, siena, 0, 0, siena, siena, siena_state, empty_init, "Psion", "Siena", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/psion/workabout.cpp b/src/mame/psion/workabout.cpp index 902829cbe10..e949320876d 100644 --- a/src/mame/psion/workabout.cpp +++ b/src/mame/psion/workabout.cpp @@ -38,7 +38,7 @@ public: , m_keyboard(*this, "COL%u", 0U) , m_speaker(*this, "speaker") , m_ssd(*this, "ssd%u", 1U) - //, m_exp(*this, "exp%u", 1U) + //, m_exp(*this, "exp") { } void workabout(machine_config &config); @@ -59,7 +59,7 @@ private: required_ioport_array<8> m_keyboard; required_device<speaker_sound_device> m_speaker; required_device_array<psion_ssd_device, 2> m_ssd; - //required_device_array<psion_exp_slot_device, 3> m_exp; + //required_device<psion_exp_slot_device> m_exp; void palette_init(palette_device &palette); @@ -229,9 +229,7 @@ void workabout_state::workabout(machine_config &config) PSION_SSD(config, m_ssd[1]); m_ssd[1]->door_cb().set(m_asic9, FUNC(psion_asic9_device::medchng_w)); - //PSION_EXP_SLOT(config, m_exp[0], psion_exp_devices, nullptr); - //PSION_EXP_SLOT(config, m_exp[1], psion_exp_devices, nullptr); - //PSION_EXP_SLOT(config, m_exp[2], psion_exp_devices, nullptr); + //PSION_EXP_SLOT(config, m_exp, psion_exp_devices, nullptr); SOFTWARE_LIST(config, "ssd_list").set_original("psion_ssd").set_filter("WA"); } @@ -275,5 +273,5 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1995, psionwa, 0, 0, psionwa, workabout, workabout_state, empty_init, "Psion", "Workabout", 0 ) -COMP( 1998, psionwamx, 0, 0, psionwamx, workabout, workabout_state, empty_init, "Psion", "Workabout mx", 0 ) +COMP( 1995, psionwa, 0, 0, psionwa, workabout, workabout_state, empty_init, "Psion", "Workabout", MACHINE_SUPPORTS_SAVE ) +COMP( 1998, psionwamx, 0, 0, psionwamx, workabout, workabout_state, empty_init, "Psion", "Workabout mx", MACHINE_SUPPORTS_SAVE ) |