From 61742dfb4c17bc3944f36176b433a85bf6e01ebf Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 3 Jun 2014 12:54:19 +0000 Subject: [PATCH] (MESS) ql: Expansions WIP. (nw) --- src/emu/bus/ql/exp.c | 1 + src/emu/bus/ql/sandy_superdisk.c | 5 ++- src/emu/bus/ql/sandy_superqboard.c | 59 +++++++++++++++++++++++++++++- src/emu/bus/ql/sandy_superqboard.h | 15 +++++++- src/emu/bus/ql/trumpcard.c | 23 +++++++++--- src/mess/machine/qimi.c | 13 +------ src/mess/machine/qimi.h | 1 - 7 files changed, 96 insertions(+), 21 deletions(-) diff --git a/src/emu/bus/ql/exp.c b/src/emu/bus/ql/exp.c index dd986d47473..6bcd4ece585 100644 --- a/src/emu/bus/ql/exp.c +++ b/src/emu/bus/ql/exp.c @@ -85,6 +85,7 @@ void ql_expansion_slot_t::device_start() SLOT_INTERFACE_START( ql_expansion_cards ) SLOT_INTERFACE("sdisk", SANDY_SUPER_DISK) SLOT_INTERFACE("sqboard", SANDY_SUPERQBOARD) + SLOT_INTERFACE("sqboard512k", SANDY_SUPERQBOARD_512K) SLOT_INTERFACE("trump", QL_TRUMP_CARD) SLOT_INTERFACE("trump256k", QL_TRUMP_CARD_256K) SLOT_INTERFACE("trump512k", QL_TRUMP_CARD_512K) diff --git a/src/emu/bus/ql/sandy_superdisk.c b/src/emu/bus/ql/sandy_superdisk.c index b3c30735fa0..d1a1b04d1d2 100644 --- a/src/emu/bus/ql/sandy_superdisk.c +++ b/src/emu/bus/ql/sandy_superdisk.c @@ -115,7 +115,7 @@ machine_config_constructor sandy_super_disk_t::device_mconfig_additions() const //------------------------------------------------- sandy_super_disk_t::sandy_super_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, SANDY_SUPER_DISK, "Sandy Super Disk", tag, owner, clock, "sandy_super_disk", __FILE__), + device_t(mconfig, SANDY_SUPER_DISK, "Sandy Super Disk", tag, owner, clock, "ql_sdisk", __FILE__), device_ql_expansion_card_interface(mconfig, *this), m_fdc(*this, WD1772_TAG), m_floppy0(*this, WD1772_TAG":0"), @@ -134,6 +134,9 @@ sandy_super_disk_t::sandy_super_disk_t(const machine_config &mconfig, const char void sandy_super_disk_t::device_start() { + // state saving + save_item(NAME(m_busy)); + save_item(NAME(m_fd6)); } diff --git a/src/emu/bus/ql/sandy_superqboard.c b/src/emu/bus/ql/sandy_superqboard.c index f986bc5f7cf..9d0563a9bbc 100644 --- a/src/emu/bus/ql/sandy_superqboard.c +++ b/src/emu/bus/ql/sandy_superqboard.c @@ -9,6 +9,14 @@ **********************************************************************/ +/* + + TODO: + + - mouse + +*/ + #include "sandy_superqboard.h" @@ -28,6 +36,7 @@ //************************************************************************** const device_type SANDY_SUPERQBOARD = &device_creator; +const device_type SANDY_SUPERQBOARD_512K = &device_creator; //------------------------------------------------- @@ -125,7 +134,7 @@ machine_config_constructor sandy_superqboard_t::device_mconfig_additions() const //------------------------------------------------- sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, SANDY_SUPERQBOARD, "Sandy SuperQBoard", tag, owner, clock, "sandy_superqboard", __FILE__), + device_t(mconfig, SANDY_SUPERQBOARD, "Sandy SuperQBoard 256K", tag, owner, clock, "ql_sqboard", __FILE__), device_ql_expansion_card_interface(mconfig, *this), m_fdc(*this, WD1772_TAG), m_floppy0(*this, WD1772_TAG":0"), @@ -134,6 +143,7 @@ sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, const ch m_latch(*this, TTL74273_TAG), m_rom(*this, "rom"), m_ram(*this, "ram"), + m_ram_size(256*1024), m_busy(1), m_int2(0), m_int3(0), @@ -142,6 +152,28 @@ sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, const ch { } +sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int ram_size) : + device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), + device_ql_expansion_card_interface(mconfig, *this), + m_fdc(*this, WD1772_TAG), + m_floppy0(*this, WD1772_TAG":0"), + m_floppy1(*this, WD1772_TAG":1"), + m_centronics(*this, CENTRONICS_TAG), + m_latch(*this, TTL74273_TAG), + m_rom(*this, "rom"), + m_ram(*this, "ram"), + m_ram_size(ram_size), + m_busy(1), + m_int2(0), + m_int3(0), + m_fd6(0), + m_fd7(0) +{ +} + +sandy_superqboard_512k_t::sandy_superqboard_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : sandy_superqboard_t(mconfig, SANDY_SUPERQBOARD_512K, "Sandy SuperQBoard 512K", tag, owner, clock, "ql_sqboard", __FILE__, 512*1024) { } + //------------------------------------------------- // device_start - device-specific startup @@ -149,6 +181,15 @@ sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, const ch void sandy_superqboard_t::device_start() { + // allocate memory + m_ram.allocate(m_ram_size); + + // state saving + save_item(NAME(m_busy)); + save_item(NAME(m_int2)); + save_item(NAME(m_int3)); + save_item(NAME(m_fd6)); + save_item(NAME(m_fd7)); } @@ -216,6 +257,14 @@ UINT8 sandy_superqboard_t::read(address_space &space, offs_t offset, UINT8 data) } } + if (offset >= 0x60000 && offset < 0xc0000) + { + if ((offset - 0x60000) < m_ram_size) + { + data = m_ram[offset - 0x60000]; + } + } + return data; } @@ -298,6 +347,14 @@ void sandy_superqboard_t::write(address_space &space, offs_t offset, UINT8 data) } } } + + if (offset >= 0x60000 && offset < 0xc0000) + { + if ((offset - 0x60000) < m_ram_size) + { + m_ram[offset - 0x60000] = data; + } + } } void sandy_superqboard_t::check_interrupt() diff --git a/src/emu/bus/ql/sandy_superqboard.h b/src/emu/bus/ql/sandy_superqboard.h index d58ead49db4..c4f31b213c5 100644 --- a/src/emu/bus/ql/sandy_superqboard.h +++ b/src/emu/bus/ql/sandy_superqboard.h @@ -25,7 +25,7 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> sandy_superqboard_device +// ======================> sandy_superqboard_t class sandy_superqboard_t : public device_t, public device_ql_expansion_card_interface @@ -33,6 +33,7 @@ class sandy_superqboard_t : public device_t, public: // construction/destruction sandy_superqboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + sandy_superqboard_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int ram_size); // optional information overrides virtual const rom_entry *device_rom_region() const; @@ -62,6 +63,7 @@ private: required_memory_region m_rom; optional_shared_ptr m_ram; + int m_ram_size; int m_busy; int m_int2; int m_int3; @@ -70,8 +72,19 @@ private: }; +// ======================> sandy_superqboard_512k_t + +class sandy_superqboard_512k_t : public sandy_superqboard_t +{ +public: + // construction/destruction + sandy_superqboard_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); +}; + + // device type definition extern const device_type SANDY_SUPERQBOARD; +extern const device_type SANDY_SUPERQBOARD_512K; #endif diff --git a/src/emu/bus/ql/trumpcard.c b/src/emu/bus/ql/trumpcard.c index b8340376380..4f75e36e040 100644 --- a/src/emu/bus/ql/trumpcard.c +++ b/src/emu/bus/ql/trumpcard.c @@ -9,6 +9,14 @@ **********************************************************************/ +/* + + TODO: + + - RAM always 128KB on boot screen + +*/ + #include "trumpcard.h" @@ -115,7 +123,7 @@ machine_config_constructor ql_trump_card_t::device_mconfig_additions() const //------------------------------------------------- ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, QL_TRUMP_CARD, "QL Trump Card", tag, owner, clock, "trump", __FILE__), + device_t(mconfig, QL_TRUMP_CARD, "QL Trump Card", tag, owner, clock, "ql_trump", __FILE__), device_ql_expansion_card_interface(mconfig, *this), m_fdc(*this, WD1772_TAG), m_floppy0(*this, WD1772_TAG":0"), @@ -127,7 +135,7 @@ ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, const char *tag, } ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int ram_size) : - device_t(mconfig, QL_TRUMP_CARD, "QL Trump Card", tag, owner, clock, "trump", __FILE__), + device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), device_ql_expansion_card_interface(mconfig, *this), m_fdc(*this, WD1772_TAG), m_floppy0(*this, WD1772_TAG":0"), @@ -139,13 +147,13 @@ ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, device_type type } ql_trump_card_256k_t::ql_trump_card_256k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : ql_trump_card_t(mconfig, QL_TRUMP_CARD_256K, "QL Trump Card 256K", tag, owner, clock, "trump256k", __FILE__, 256*1024) { } + : ql_trump_card_t(mconfig, QL_TRUMP_CARD_256K, "QL Trump Card 256K", tag, owner, clock, "ql_trump", __FILE__, 256*1024) { } ql_trump_card_512k_t::ql_trump_card_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : ql_trump_card_t(mconfig, QL_TRUMP_CARD_512K, "QL Trump Card 512K", tag, owner, clock, "trump512k", __FILE__, 512*1024) { } + : ql_trump_card_t(mconfig, QL_TRUMP_CARD_512K, "QL Trump Card 512K", tag, owner, clock, "ql_trump", __FILE__, 512*1024) { } ql_trump_card_768k_t::ql_trump_card_768k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : ql_trump_card_t(mconfig, QL_TRUMP_CARD_768K, "QL Trump Card 768K", tag, owner, clock, "trump768k", __FILE__, 768*1024) { } + : ql_trump_card_t(mconfig, QL_TRUMP_CARD_768K, "QL Trump Card 768K", tag, owner, clock, "ql_trump", __FILE__, 768*1024) { } //------------------------------------------------- @@ -154,7 +162,12 @@ ql_trump_card_768k_t::ql_trump_card_768k_t(const machine_config &mconfig, const void ql_trump_card_t::device_start() { + // allocate memory m_ram.allocate(m_ram_size); + + // state saving + save_item(NAME(m_rom_en)); + save_item(NAME(m_ram_en)); } diff --git a/src/mess/machine/qimi.c b/src/mess/machine/qimi.c index a99b0b2f514..0b77afb9766 100644 --- a/src/mess/machine/qimi.c +++ b/src/mess/machine/qimi.c @@ -17,11 +17,6 @@ // MACROS / CONSTANTS //************************************************************************** -#define QL_CONFIG_PORT "config" -#define QIMI_PORT_MASK 0x01 -#define QIMI_NONE 0x00 -#define QIMI_MOUSE 0x01 - #define MOUSEX_TAG "MOUSEX" #define MOUSEY_TAG "MOUSEY" #define MOUSEB_TAG "MOUSEB" @@ -58,11 +53,6 @@ const device_type QIMI = &device_creator; //------------------------------------------------- INPUT_PORTS_START( qimi ) - PORT_START(QL_CONFIG_PORT) - PORT_CONFNAME( QIMI_PORT_MASK, QIMI_NONE, "QIMI enabled") - PORT_CONFSETTING( QIMI_NONE, "No" ) - PORT_CONFSETTING( QIMI_MOUSE, "Yes" ) - PORT_START(MOUSEX_TAG) PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) @@ -100,8 +90,7 @@ qimi_t::qimi_t(const machine_config &mconfig, const char *tag, device_t *owner, m_write_extint(*this), m_mousex(*this, MOUSEX_TAG), m_mousey(*this, MOUSEY_TAG), - m_mouseb(*this, MOUSEB_TAG), - m_config(*this, QL_CONFIG_PORT) + m_mouseb(*this, MOUSEB_TAG) { } diff --git a/src/mess/machine/qimi.h b/src/mess/machine/qimi.h index 410c214f1de..73c08714935 100644 --- a/src/mess/machine/qimi.h +++ b/src/mess/machine/qimi.h @@ -68,7 +68,6 @@ private: required_ioport m_mousex; required_ioport m_mousey; required_ioport m_mouseb; - required_ioport m_config; UINT8 m_mouse_int;