summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2021-10-05 07:26:46 +1100
committer Vas Crabb <vas@vastheman.com>2021-10-05 07:26:46 +1100
commitc2c3d685f0229e31be4348d18c8b4fd22d890417 (patch)
tree3c96cdb42514f4563002aabe202e6ebba5a63e3c
parent973952141c15958e71b11e8c6e77a8d220b8f3d7 (diff)
More low-effort cleanup.
* Got more slot card classes out of headers. * Changed most of the Apple II cards still looking up ROM regions manually to use required_region_ptr. * Removed an unreferenced function leftover from copy-pasting another device from the Videx Uniprint device.
-rw-r--r--src/devices/bus/a1bus/a1bus.cpp4
-rw-r--r--src/devices/bus/a1bus/a1cassette.cpp57
-rw-r--r--src/devices/bus/a1bus/a1cassette.h39
-rw-r--r--src/devices/bus/a1bus/a1cffa.cpp52
-rw-r--r--src/devices/bus/a1bus/a1cffa.h39
-rw-r--r--src/devices/bus/a2bus/4play.cpp35
-rw-r--r--src/devices/bus/a2bus/4play.h27
-rw-r--r--src/devices/bus/a2bus/a2alfam2.cpp129
-rw-r--r--src/devices/bus/a2bus/a2alfam2.h55
-rw-r--r--src/devices/bus/a2bus/a2applicard.cpp86
-rw-r--r--src/devices/bus/a2bus/a2applicard.h47
-rw-r--r--src/devices/bus/a2bus/a2cffa.cpp89
-rw-r--r--src/devices/bus/a2bus/a2cffa.h67
-rw-r--r--src/devices/bus/a2bus/a2dx1.cpp45
-rw-r--r--src/devices/bus/a2bus/a2dx1.h32
-rw-r--r--src/devices/bus/a2bus/a2memexp.cpp75
-rw-r--r--src/devices/bus/a2bus/a2memexp.h53
-rw-r--r--src/devices/bus/a2bus/a2midi.cpp51
-rw-r--r--src/devices/bus/a2bus/a2midi.h37
-rw-r--r--src/devices/bus/a2bus/a2sam.cpp73
-rw-r--r--src/devices/bus/a2bus/a2sam.h31
-rw-r--r--src/devices/bus/a2bus/a2ssc.cpp76
-rw-r--r--src/devices/bus/a2bus/a2ssc.h62
-rw-r--r--src/devices/bus/a2bus/a2swyft.cpp55
-rw-r--r--src/devices/bus/a2bus/a2swyft.h35
-rw-r--r--src/devices/bus/a2bus/a2thunderclock.cpp61
-rw-r--r--src/devices/bus/a2bus/a2thunderclock.h38
-rw-r--r--src/devices/bus/a2bus/a2ultraterm.cpp90
-rw-r--r--src/devices/bus/a2bus/a2ultraterm.h61
-rw-r--r--src/devices/bus/a2bus/a2videoterm.cpp122
-rw-r--r--src/devices/bus/a2bus/a2videoterm.h99
-rw-r--r--src/devices/bus/a2bus/a2vulcan.cpp89
-rw-r--r--src/devices/bus/a2bus/a2vulcan.h78
-rw-r--r--src/devices/bus/a2bus/a2zipdrive.cpp71
-rw-r--r--src/devices/bus/a2bus/a2zipdrive.h60
-rw-r--r--src/devices/bus/a2bus/booti.cpp56
-rw-r--r--src/devices/bus/a2bus/booti.h39
-rw-r--r--src/devices/bus/a2bus/byte8251.cpp39
-rw-r--r--src/devices/bus/a2bus/byte8251.h36
-rw-r--r--src/devices/bus/a2bus/suprterminal.cpp57
-rw-r--r--src/devices/bus/a2bus/suprterminal.h47
-rw-r--r--src/devices/bus/a2bus/timemasterho.cpp70
-rw-r--r--src/devices/bus/a2bus/timemasterho.h49
-rw-r--r--src/devices/bus/a2bus/uniprint.cpp65
-rw-r--r--src/devices/bus/a2bus/uniprint.h45
-rw-r--r--src/devices/bus/rs232/keyboard.h2
-rw-r--r--src/devices/bus/rs232/terminal.cpp38
-rw-r--r--src/devices/bus/rs232/terminal.h33
-rw-r--r--src/lib/util/delegate.cpp16
-rw-r--r--src/mame/machine/octo_kbd.h3
-rw-r--r--src/mame/machine/x68k_kbd.h6
51 files changed, 1386 insertions, 1335 deletions
diff --git a/src/devices/bus/a1bus/a1bus.cpp b/src/devices/bus/a1bus/a1bus.cpp
index 43a05b892ab..21549f5a171 100644
--- a/src/devices/bus/a1bus/a1bus.cpp
+++ b/src/devices/bus/a1bus/a1bus.cpp
@@ -16,6 +16,10 @@
DEFINE_DEVICE_TYPE(A1BUS_SLOT, a1bus_slot_device, "a1bus_slot", "Apple I Slot")
+template class device_finder<device_a1bus_card_interface, false>;
+template class device_finder<device_a1bus_card_interface, true>;
+
+
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
diff --git a/src/devices/bus/a1bus/a1cassette.cpp b/src/devices/bus/a1bus/a1cassette.cpp
index f486105c6e5..56cd198bac8 100644
--- a/src/devices/bus/a1bus/a1cassette.cpp
+++ b/src/devices/bus/a1bus/a1cassette.cpp
@@ -10,27 +10,61 @@
#include "emu.h"
#include "a1cassette.h"
+
+#include "imagedev/cassette.h"
+
#include "speaker.h"
+
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
#define CASSETTE_ROM_REGION "casrom"
-DEFINE_DEVICE_TYPE(A1BUS_CASSETTE, a1bus_cassette_device, "a1cass", "Apple I cassette board")
-
ROM_START( cassette )
- /* 256-byte cassette interface ROM, in two 82s129 or mmi6301 256x4 proms at locations 3 and 4 on the cassette interface daughtercard (they are labeled "MMI 6301-IJ // 7623L // APPLE-A3" and "MMI 6301-IJ // 7623L // APPLE-A4") */
+ // 256-byte cassette interface ROM, in two 82s129 or mmi6301 256x4 proms at locations 3 and 4 on the cassette interface daughtercard (they are labeled "MMI 6301-IJ // 7623L // APPLE-A3" and "MMI 6301-IJ // 7623L // APPLE-A4")
ROM_REGION(0x100, CASSETTE_ROM_REGION, 0)
ROM_LOAD_NIB_HIGH( "apple-a3.3", 0x0000, 0x0100, CRC(6eae8f52) SHA1(71906932727ef70952ef6afe6b08708df15cd67d) )
ROM_LOAD_NIB_LOW( "apple-a4.4", 0x0000, 0x0100, CRC(94efa977) SHA1(851f3bd6863859a1a6909179a5e5bf744b3d807e) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a1bus_cassette_device:
+ public device_t,
+ public device_a1bus_card_interface
+{
+public:
+ // construction/destruction
+ a1bus_cassette_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ uint8_t cassette_r(offs_t offset);
+ void cassette_w(offs_t offset, uint8_t data);
+
+protected:
+ a1bus_cassette_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ // optional information overrides
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+
+ void cassette_toggle_output();
+
+ optional_device<cassette_image_device> m_cassette;
+
+private:
+ required_region_ptr<uint8_t> m_rom;
+ int m_cassette_output_flipflop;
+};
+
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
@@ -195,3 +229,12 @@ void a1bus_cassette_device::cassette_w(offs_t offset, uint8_t data)
cassette_toggle_output();
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A1BUS_CASSETTE, device_a1bus_card_interface, a1bus_cassette_device, "a1cass", "Apple I cassette board")
diff --git a/src/devices/bus/a1bus/a1cassette.h b/src/devices/bus/a1bus/a1cassette.h
index e188e9ef4cd..fb0ca1b679b 100644
--- a/src/devices/bus/a1bus/a1cassette.h
+++ b/src/devices/bus/a1bus/a1cassette.h
@@ -14,43 +14,8 @@
#pragma once
#include "a1bus.h"
-#include "imagedev/cassette.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a1bus_cassette_device:
- public device_t,
- public device_a1bus_card_interface
-{
-public:
- // construction/destruction
- a1bus_cassette_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- uint8_t cassette_r(offs_t offset);
- void cassette_w(offs_t offset, uint8_t data);
-
-protected:
- a1bus_cassette_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- // optional information overrides
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
-
- void cassette_toggle_output();
-
- optional_device<cassette_image_device> m_cassette;
-
-private:
- required_region_ptr<uint8_t> m_rom;
- int m_cassette_output_flipflop;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A1BUS_CASSETTE, a1bus_cassette_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A1BUS_CASSETTE, device_a1bus_card_interface)
#endif // MAME_BUS_A1BUS_A1CASSETTE_H
diff --git a/src/devices/bus/a1bus/a1cffa.cpp b/src/devices/bus/a1bus/a1cffa.cpp
index 5656509a62d..9818caf9fc6 100644
--- a/src/devices/bus/a1bus/a1cffa.cpp
+++ b/src/devices/bus/a1bus/a1cffa.cpp
@@ -11,24 +11,55 @@
#include "emu.h"
#include "a1cffa.h"
+#include "bus/ata/ataintf.h"
+
+
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
#define CFFA_ROM_REGION "cffa_rom"
#define CFFA_ATA_TAG "cffa_ata"
-DEFINE_DEVICE_TYPE(A1BUS_CFFA, a1bus_cffa_device, "cffa1", "CFFA Compact Flash for Apple I")
-
ROM_START( cffa )
ROM_REGION(0x2000, CFFA_ROM_REGION, 0)
ROM_LOAD ("cffaromv1.1.bin", 0x0000, 0x1fe0, CRC(bf6b55ad) SHA1(6a290be18485a06f243a3561c4e01be5aafa4bfe) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a1bus_cffa_device:
+ public device_t,
+ public device_a1bus_card_interface
+{
+public:
+ // construction/destruction
+ a1bus_cffa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ uint8_t cffa_r(offs_t offset);
+ void cffa_w(offs_t offset, uint8_t data);
+
+protected:
+ a1bus_cffa_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ // optional information overrides
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ required_device<ata_interface_device> m_ata;
+
+private:
+ required_region_ptr<uint8_t> m_rom;
+ uint16_t m_lastdata;
+ bool m_writeprotect;
+};
+
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
@@ -147,3 +178,12 @@ void a1bus_cffa_device::cffa_w(offs_t offset, uint8_t data)
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A1BUS_CFFA, device_a1bus_card_interface, a1bus_cffa_device, "cffa1", "CFFA Compact Flash for Apple I")
diff --git a/src/devices/bus/a1bus/a1cffa.h b/src/devices/bus/a1bus/a1cffa.h
index 5d9deb7c160..f82a300e349 100644
--- a/src/devices/bus/a1bus/a1cffa.h
+++ b/src/devices/bus/a1bus/a1cffa.h
@@ -14,41 +14,8 @@
#pragma once
#include "a1bus.h"
-#include "bus/ata/ataintf.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a1bus_cffa_device:
- public device_t,
- public device_a1bus_card_interface
-{
-public:
- // construction/destruction
- a1bus_cffa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- uint8_t cffa_r(offs_t offset);
- void cffa_w(offs_t offset, uint8_t data);
-
-protected:
- a1bus_cffa_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- // optional information overrides
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- required_device<ata_interface_device> m_ata;
-
-private:
- required_region_ptr<uint8_t> m_rom;
- uint16_t m_lastdata;
- bool m_writeprotect;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A1BUS_CFFA, a1bus_cffa_device)
+
+// device type declaration
+DECLARE_DEVICE_TYPE(A1BUS_CFFA, device_a1bus_card_interface)
#endif // MAME_BUS_A1BUS_A1CFFA_H
diff --git a/src/devices/bus/a2bus/4play.cpp b/src/devices/bus/a2bus/4play.cpp
index eab126e5a6d..c51ef306cff 100644
--- a/src/devices/bus/a2bus/4play.cpp
+++ b/src/devices/bus/a2bus/4play.cpp
@@ -12,15 +12,31 @@
#include "emu.h"
#include "4play.h"
-/***************************************************************************
- PARAMETERS
-***************************************************************************/
+
+namespace {
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_4PLAY, a2bus_4play_device, "a24play", "4play Joystick Card (rev. B)")
+class a2bus_4play_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_4play_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ a2bus_4play_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual ioport_constructor device_input_ports() const override;
+
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+
+ required_ioport m_p1, m_p2, m_p3, m_p4;
+};
static INPUT_PORTS_START( a24play )
PORT_START("p1")
@@ -123,3 +139,12 @@ uint8_t a2bus_4play_device::read_c0nx(uint8_t offset)
return 0;
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_4PLAY, device_a2bus_card_interface, a2bus_4play_device, "a24play", "4play Joystick Card (rev. B)")
diff --git a/src/devices/bus/a2bus/4play.h b/src/devices/bus/a2bus/4play.h
index 96c407d315e..69a5a2b86a1 100644
--- a/src/devices/bus/a2bus/4play.h
+++ b/src/devices/bus/a2bus/4play.h
@@ -14,32 +14,7 @@
#include "a2bus.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_4play_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_4play_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- a2bus_4play_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual ioport_constructor device_input_ports() const override;
-
- virtual uint8_t read_c0nx(uint8_t offset) override;
-
- required_ioport m_p1, m_p2, m_p3, m_p4;
-
-private:
-};
-
// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_4PLAY, a2bus_4play_device)
+DECLARE_DEVICE_TYPE(A2BUS_4PLAY, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_4PLAY_H
diff --git a/src/devices/bus/a2bus/a2alfam2.cpp b/src/devices/bus/a2bus/a2alfam2.cpp
index e97722708da..72815dcce53 100644
--- a/src/devices/bus/a2bus/a2alfam2.cpp
+++ b/src/devices/bus/a2bus/a2alfam2.cpp
@@ -11,19 +11,67 @@
#include "emu.h"
#include "a2alfam2.h"
+
#include "sound/sn76496.h"
+
#include "speaker.h"
-/***************************************************************************
- PARAMETERS
-***************************************************************************/
+#include <algorithm>
+
+
+namespace {
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_ALFAM2, a2bus_alfam2_device, "a2alfam2", "ALF MC1 / Apple Music II")
-DEFINE_DEVICE_TYPE(A2BUS_AESMS, a2bus_aesms_device, "a2aesms", "Applied Engineering Super Music Synthesizer")
+class a2bus_alfam2_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ a2bus_alfam2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ a2bus_alfam2_device(mconfig, A2BUS_ALFAM2, tag, owner, clock)
+ {
+ }
+
+protected:
+ // construction/destruction
+ a2bus_alfam2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual bool take_c800() override { return false; }
+
+ required_device<sn76489_device> m_sn1;
+ required_device<sn76489_device> m_sn2;
+ required_device<sn76489_device> m_sn3;
+ optional_device<sn76489_device> m_sn4;
+
+private:
+ uint8_t m_latch[4];
+};
+
+class a2bus_aesms_device : public a2bus_alfam2_device
+{
+public:
+ a2bus_aesms_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ a2bus_alfam2_device(mconfig, A2BUS_AESMS, tag, owner, clock)
+ {
+ }
+
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+};
+
+/***************************************************************************
+ PARAMETERS
+***************************************************************************/
#define SN1_TAG "sn76489_1" // left
#define SN2_TAG "sn76489_2" // center
@@ -39,16 +87,18 @@ DEFINE_DEVICE_TYPE(A2BUS_AESMS, a2bus_aesms_device, "a2aesms", "Applied Engin
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void a2bus_sn76489_device::device_add_mconfig(machine_config &config)
+void a2bus_alfam2_device::device_add_mconfig(machine_config &config)
{
SPEAKER(config, "alf_l").front_left();
SPEAKER(config, "alf_r").front_right();
SN76489(config, m_sn1, 1020484);
m_sn1->add_route(ALL_OUTPUTS, "alf_l", 0.50);
+
SN76489(config, m_sn2, 1020484);
m_sn2->add_route(ALL_OUTPUTS, "alf_l", 0.50);
m_sn2->add_route(ALL_OUTPUTS, "alf_r", 0.50);
+
SN76489(config, m_sn3, 1020484);
m_sn3->add_route(ALL_OUTPUTS, "alf_r", 0.50);
}
@@ -77,98 +127,81 @@ void a2bus_aesms_device::device_add_mconfig(machine_config &config)
// LIVE DEVICE
//**************************************************************************
-a2bus_sn76489_device::a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+a2bus_alfam2_device::a2bus_alfam2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_sn1(*this, SN1_TAG),
m_sn2(*this, SN2_TAG),
m_sn3(*this, SN3_TAG),
- m_sn4(*this, SN4_TAG), m_latch0(0), m_latch1(0), m_latch2(0), m_latch3(0), m_has4thsn(false)
+ m_sn4(*this, SN4_TAG),
+ m_latch{ 0, 0, 0, 0 }
{
}
-a2bus_alfam2_device::a2bus_alfam2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_sn76489_device(mconfig, A2BUS_ALFAM2, tag, owner, clock)
-{
- m_has4thsn = false;
-}
-
-a2bus_aesms_device::a2bus_aesms_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_sn76489_device(mconfig, A2BUS_AESMS, tag, owner, clock)
-{
- m_has4thsn = true;
-}
-
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void a2bus_sn76489_device::device_start()
+void a2bus_alfam2_device::device_start()
{
- m_latch0 = m_latch1 = m_latch2 = m_latch3 = 0;
-
- save_item(NAME(m_latch0));
- save_item(NAME(m_latch1));
- save_item(NAME(m_latch2));
- save_item(NAME(m_latch3));
+ save_item(NAME(m_latch));
}
-void a2bus_sn76489_device::device_reset()
+void a2bus_alfam2_device::device_reset()
{
- m_latch0 = m_latch1 = m_latch2 = m_latch3 = 0;
+ std::fill(std::begin(m_latch), std::end(m_latch), 0);
}
-uint8_t a2bus_sn76489_device::read_c0nx(uint8_t offset)
+uint8_t a2bus_alfam2_device::read_c0nx(uint8_t offset)
{
// SN76489 can't be read, it appears from the schematics this is what happens
switch (offset)
{
case 0:
- return m_latch0;
-
case 1:
- return m_latch1;
-
case 2:
- return m_latch2;
-
case 3:
- return m_latch3;
+ return m_latch[offset];
}
return 0xff;
}
-void a2bus_sn76489_device::write_c0nx(uint8_t offset, uint8_t data)
+void a2bus_alfam2_device::write_c0nx(uint8_t offset, uint8_t data)
{
switch (offset)
{
case 0:
m_sn1->write(data);
- m_latch0 = data;
+ m_latch[0] = data;
break;
case 1:
m_sn2->write(data);
- m_latch1 = data;
+ m_latch[1] = data;
break;
case 2:
m_sn3->write(data);
- m_latch2 = data;
+ m_latch[2] = data;
break;
case 3:
- if (m_has4thsn)
+ if (m_sn4)
{
m_sn4->write(data);
- m_latch3 = data;
+ m_latch[3] = data;
}
break;
}
}
-bool a2bus_sn76489_device::take_c800()
-{
- return false;
-}
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_ALFAM2, device_a2bus_card_interface, a2bus_alfam2_device, "a2alfam2", "ALF MC1 / Apple Music II")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_AESMS, device_a2bus_card_interface, a2bus_aesms_device, "a2aesms", "Applied Engineering Super Music Synthesizer")
diff --git a/src/devices/bus/a2bus/a2alfam2.h b/src/devices/bus/a2bus/a2alfam2.h
index 48088cdffd6..ee29faf6622 100644
--- a/src/devices/bus/a2bus/a2alfam2.h
+++ b/src/devices/bus/a2bus/a2alfam2.h
@@ -14,58 +14,9 @@
#pragma once
#include "a2bus.h"
-#include "sound/sn76496.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_sn76489_device:
- public device_t,
- public device_a2bus_card_interface
-{
-protected:
- // construction/destruction
- a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual bool take_c800() override;
-
- required_device<sn76489_device> m_sn1;
- required_device<sn76489_device> m_sn2;
- required_device<sn76489_device> m_sn3;
- optional_device<sn76489_device> m_sn4;
-
-private:
- uint8_t m_latch0, m_latch1, m_latch2, m_latch3;
-
-protected:
- bool m_has4thsn;
-};
-
-class a2bus_alfam2_device : public a2bus_sn76489_device
-{
-public:
- a2bus_alfam2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-};
-
-class a2bus_aesms_device : public a2bus_sn76489_device
-{
-public:
- a2bus_aesms_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_add_mconfig(machine_config &config) override;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_ALFAM2, a2bus_alfam2_device)
-DECLARE_DEVICE_TYPE(A2BUS_AESMS, a2bus_aesms_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_ALFAM2, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_AESMS, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2ALFAM2_H
diff --git a/src/devices/bus/a2bus/a2applicard.cpp b/src/devices/bus/a2bus/a2applicard.cpp
index d9cbb00e42d..5395295a207 100644
--- a/src/devices/bus/a2bus/a2applicard.cpp
+++ b/src/devices/bus/a2bus/a2applicard.cpp
@@ -16,18 +16,68 @@
#include "cpu/z80/z80.h"
#include "machine/z80ctc.h"
+
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
+#define Z80_TAG "z80"
+#define Z80_ROM_REGION "z80_rom"
+
+ROM_START( a2applicard )
+ ROM_REGION(0x800, Z80_ROM_REGION, 0)
+ ROM_LOAD( "applicard-v9.bin", 0x000000, 0x000800, CRC(1d461000) SHA1(71d633be864b6084362e85108a4e600cbe6e44fe) )
+ROM_END
+
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_APPLICARD, a2bus_applicard_device, "a2aplcrd", "PCPI Applicard")
+class a2bus_applicard_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_applicard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-#define Z80_TAG "z80"
-#define Z80_ROM_REGION "z80_rom"
+ uint8_t z80_io_r(offs_t offset);
+ void z80_io_w(offs_t offset, uint8_t data);
+
+protected:
+ a2bus_applicard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual bool take_c800() override { return false; }
+
+private:
+ required_device<cpu_device> m_z80;
+ required_region_ptr<uint8_t> m_z80rom;
+
+ bool m_bROMAtZ80Zero;
+ bool m_z80stat, m_6502stat;
+ uint8_t m_toz80, m_to6502;
+ uint8_t m_z80ram[64*1024];
+
+ uint8_t dma_r(offs_t offset);
+ void dma_w(offs_t offset, uint8_t data);
+
+ void z80_io(address_map &map);
+ void z80_mem(address_map &map);
+};
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
void a2bus_applicard_device::z80_mem(address_map &map)
{
@@ -39,15 +89,6 @@ void a2bus_applicard_device::z80_io(address_map &map)
map(0x00, 0x60).mirror(0xff00).rw(FUNC(a2bus_applicard_device::z80_io_r), FUNC(a2bus_applicard_device::z80_io_w));
}
-ROM_START( a2applicard )
- ROM_REGION(0x800, Z80_ROM_REGION, 0)
- ROM_LOAD( "applicard-v9.bin", 0x000000, 0x000800, CRC(1d461000) SHA1(71d633be864b6084362e85108a4e600cbe6e44fe) )
-ROM_END
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
@@ -75,7 +116,9 @@ const tiny_rom_entry *a2bus_applicard_device::device_rom_region() const
a2bus_applicard_device::a2bus_applicard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
- m_z80(*this, Z80_TAG), m_bROMAtZ80Zero(false), m_z80stat(false), m_6502stat(false), m_toz80(0), m_to6502(0), m_z80rom(nullptr)
+ m_z80(*this, Z80_TAG),
+ m_z80rom(*this, Z80_ROM_REGION),
+ m_bROMAtZ80Zero(false), m_z80stat(false), m_6502stat(false), m_toz80(0), m_to6502(0)
{
}
@@ -90,9 +133,6 @@ a2bus_applicard_device::a2bus_applicard_device(const machine_config &mconfig, co
void a2bus_applicard_device::device_start()
{
- // locate Z80 ROM
- m_z80rom = device().machine().root_device().memregion(this->subtag(Z80_ROM_REGION).c_str())->base();
-
save_item(NAME(m_bROMAtZ80Zero));
save_item(NAME(m_z80stat));
save_item(NAME(m_6502stat));
@@ -272,7 +312,11 @@ void a2bus_applicard_device::dma_w(offs_t offset, uint8_t data)
}
}
-bool a2bus_applicard_device::take_c800()
-{
- return false;
-}
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_APPLICARD, device_a2bus_card_interface, a2bus_applicard_device, "a2aplcrd", "PCPI Applicard")
diff --git a/src/devices/bus/a2bus/a2applicard.h b/src/devices/bus/a2bus/a2applicard.h
index bfa43375efe..51f39bb3a11 100644
--- a/src/devices/bus/a2bus/a2applicard.h
+++ b/src/devices/bus/a2bus/a2applicard.h
@@ -15,50 +15,7 @@
#include "a2bus.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_applicard_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_applicard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- uint8_t z80_io_r(offs_t offset);
- void z80_io_w(offs_t offset, uint8_t data);
-
-protected:
- a2bus_applicard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual bool take_c800() override;
-
-private:
- required_device<cpu_device> m_z80;
- bool m_bROMAtZ80Zero;
- bool m_z80stat, m_6502stat;
- uint8_t m_toz80, m_to6502;
- uint8_t m_z80ram[64*1024];
- uint8_t *m_z80rom;
-
- uint8_t dma_r(offs_t offset);
- void dma_w(offs_t offset, uint8_t data);
-
- void z80_io(address_map &map);
- void z80_mem(address_map &map);
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_APPLICARD, a2bus_applicard_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_APPLICARD, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2APPLICARD_H
diff --git a/src/devices/bus/a2bus/a2cffa.cpp b/src/devices/bus/a2bus/a2cffa.cpp
index d08ac21f017..8942e05558d 100644
--- a/src/devices/bus/a2bus/a2cffa.cpp
+++ b/src/devices/bus/a2bus/a2cffa.cpp
@@ -13,15 +13,14 @@
#include "emu.h"
#include "a2cffa.h"
+
#include "imagedev/harddriv.h"
+#include "bus/ata/ataintf.h"
+
#include "softlist.h"
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_CFFA2, a2bus_cffa2_device, "a2cffa2", "CFFA 2.0 Compact Flash (65C02 firmware, www.dreher.net)")
-DEFINE_DEVICE_TYPE(A2BUS_CFFA2_6502, a2bus_cffa2_6502_device, "a2cffa02", "CFFA 2.0 Compact Flash (6502 firmware, www.dreher.net)")
+namespace {
#define CFFA2_ROM_REGION "cffa2_rom"
#define CFFA2_ATA_TAG "cffa2_ata"
@@ -36,6 +35,66 @@ ROM_START( cffa2_6502 )
ROM_LOAD( "cffa20ee02.bin", 0x000000, 0x001000, CRC(3ecafce5) SHA1(d600692ed9626668233a22a48236af639410cb7b) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_cffa2000_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+protected:
+ // construction/destruction
+ a2bus_cffa2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+ virtual void write_c800(uint16_t offset, uint8_t data) override;
+
+ required_device<ata_interface_device> m_ata;
+ required_region_ptr<uint8_t> m_rom;
+
+ uint8_t m_eeprom[0x1000];
+
+private:
+ uint16_t m_lastdata, m_lastreaddata;
+ bool m_writeprotect;
+ bool m_inwritecycle;
+};
+
+class a2bus_cffa2_device : public a2bus_cffa2000_device, public device_nvram_interface
+{
+public:
+ a2bus_cffa2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ // device_config_nvram_interface overrides
+ virtual void nvram_default() override;
+ virtual void nvram_read(emu_file &file) override;
+ virtual void nvram_write(emu_file &file) override;
+};
+
+class a2bus_cffa2_6502_device : public a2bus_cffa2000_device, public device_nvram_interface
+{
+public:
+ a2bus_cffa2_6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+protected:
+ // device_config_nvram_interface overrides
+ virtual void nvram_default() override;
+ virtual void nvram_read(emu_file &file) override;
+ virtual void nvram_write(emu_file &file) override;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -74,7 +133,9 @@ const tiny_rom_entry *a2bus_cffa2_6502_device::device_rom_region() const
a2bus_cffa2000_device::a2bus_cffa2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
- m_ata(*this, CFFA2_ATA_TAG), m_rom(nullptr), m_lastdata(0), m_lastreaddata(0), m_writeprotect(false), m_inwritecycle(false)
+ m_ata(*this, CFFA2_ATA_TAG),
+ m_rom(*this, CFFA2_ROM_REGION),
+ m_lastdata(0), m_lastreaddata(0), m_writeprotect(false), m_inwritecycle(false)
{
}
@@ -96,8 +157,6 @@ a2bus_cffa2_6502_device::a2bus_cffa2_6502_device(const machine_config &mconfig,
void a2bus_cffa2000_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(CFFA2_ROM_REGION).c_str())->base();
-
// patch default setting so slave device is enabled and up to 13 devices on both connectors
m_rom[0x800] = 13;
m_rom[0x801] = 13;
@@ -125,7 +184,7 @@ uint8_t a2bus_cffa2000_device::read_c0nx(uint8_t offset)
switch (offset)
{
case 0:
- return m_lastreaddata>>8;
+ return m_lastreaddata >> 8;
case 3:
m_writeprotect = false;
@@ -150,7 +209,7 @@ uint8_t a2bus_cffa2000_device::read_c0nx(uint8_t offset)
case 0xd:
case 0xe:
case 0xf:
- return m_ata->cs0_r(offset-8, 0xff);
+ return m_ata->cs0_r(offset - 8, 0xff);
}
return 0xff;
@@ -260,3 +319,13 @@ void a2bus_cffa2_6502_device::nvram_write(emu_file &file)
{
file.write(m_eeprom, 0x1000);
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_CFFA2, device_a2bus_card_interface, a2bus_cffa2_device, "a2cffa2", "CFFA 2.0 Compact Flash (65C02 firmware, www.dreher.net)")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_CFFA2_6502, device_a2bus_card_interface, a2bus_cffa2_6502_device, "a2cffa02", "CFFA 2.0 Compact Flash (6502 firmware, www.dreher.net)")
diff --git a/src/devices/bus/a2bus/a2cffa.h b/src/devices/bus/a2bus/a2cffa.h
index d36d8470e8a..f1b7111197f 100644
--- a/src/devices/bus/a2bus/a2cffa.h
+++ b/src/devices/bus/a2bus/a2cffa.h
@@ -15,70 +15,9 @@
#pragma once
#include "a2bus.h"
-#include "bus/ata/ataintf.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_cffa2000_device:
- public device_t,
- public device_a2bus_card_interface
-{
-protected:
- // construction/destruction
- a2bus_cffa2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual uint8_t read_c800(uint16_t offset) override;
- virtual void write_c800(uint16_t offset, uint8_t data) override;
-
- required_device<ata_interface_device> m_ata;
-
- uint8_t *m_rom;
- uint8_t m_eeprom[0x1000];
-
-private:
- uint16_t m_lastdata, m_lastreaddata;
- bool m_writeprotect;
- bool m_inwritecycle;
-};
-
-class a2bus_cffa2_device : public a2bus_cffa2000_device, public device_nvram_interface
-{
-public:
- a2bus_cffa2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- // device_config_nvram_interface overrides
- virtual void nvram_default() override;
- virtual void nvram_read(emu_file &file) override;
- virtual void nvram_write(emu_file &file) override;
-};
-
-class a2bus_cffa2_6502_device : public a2bus_cffa2000_device, public device_nvram_interface
-{
-public:
- a2bus_cffa2_6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- // device_config_nvram_interface overrides
- virtual void nvram_default() override;
- virtual void nvram_read(emu_file &file) override;
- virtual void nvram_write(emu_file &file) override;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_CFFA2, a2bus_cffa2_device)
-DECLARE_DEVICE_TYPE(A2BUS_CFFA2_6502, a2bus_cffa2_6502_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_CFFA2, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_CFFA2_6502, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2CFFA_H
diff --git a/src/devices/bus/a2bus/a2dx1.cpp b/src/devices/bus/a2bus/a2dx1.cpp
index 994be433e35..ae8f80091b1 100644
--- a/src/devices/bus/a2bus/a2dx1.cpp
+++ b/src/devices/bus/a2bus/a2dx1.cpp
@@ -10,17 +10,40 @@
#include "emu.h"
#include "a2dx1.h"
+
+#include "sound/dac.h"
+
#include "speaker.h"
-/***************************************************************************
- PARAMETERS
-***************************************************************************/
+
+namespace {
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_DX1, a2bus_dx1_device, "a2dx1", "Decillonix DX-1")
+class a2bus_dx1_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_dx1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ a2bus_dx1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual bool take_c800() override { return false; }
+
+ required_device<dac_byte_interface> m_dac;
+ required_device<dac_byte_interface> m_dacvol;
+};
/***************************************************************************
FUNCTION PROTOTYPES
@@ -96,7 +119,11 @@ void a2bus_dx1_device::write_c0nx(uint8_t offset, uint8_t data)
}
}
-bool a2bus_dx1_device::take_c800()
-{
- return false;
-}
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_DX1, device_a2bus_card_interface, a2bus_dx1_device, "a2dx1", "Decillonix DX-1")
diff --git a/src/devices/bus/a2bus/a2dx1.h b/src/devices/bus/a2bus/a2dx1.h
index c4ea9f561e0..74557cf78d3 100644
--- a/src/devices/bus/a2bus/a2dx1.h
+++ b/src/devices/bus/a2bus/a2dx1.h
@@ -14,36 +14,8 @@
#pragma once
#include "a2bus.h"
-#include "sound/dac.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_dx1_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_dx1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- a2bus_dx1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual bool take_c800() override;
-
- required_device<dac_byte_interface> m_dac;
- required_device<dac_byte_interface> m_dacvol;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_DX1, a2bus_dx1_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_DX1, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2DX1_H
diff --git a/src/devices/bus/a2bus/a2memexp.cpp b/src/devices/bus/a2bus/a2memexp.cpp
index 6b088a1ea12..4c10de81848 100644
--- a/src/devices/bus/a2bus/a2memexp.cpp
+++ b/src/devices/bus/a2bus/a2memexp.cpp
@@ -12,17 +12,12 @@
#include "a2memexp.h"
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_MEMEXP, a2bus_memexpapple_device, "a2memexp", "Apple II Memory Expansion Card")
-DEFINE_DEVICE_TYPE(A2BUS_RAMFACTOR, a2bus_ramfactor_device, "a2ramfac", "Applied Engineering RamFactor")
-
#define MEMEXP_ROM_REGION "memexp_rom"
ROM_START( memexp )
@@ -38,6 +33,56 @@ ROM_START( ramfactor )
ROM_LOAD( "ae ramfactor rom v1.0.bin", 0x6000, 0x2000, CRC(39c2162a) SHA1(9286d35907939aadb1fffd3e1d75603fe3e846ad) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_memexp_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ bool m_isramfactor;
+ uint8_t m_bankhior;
+ int m_addrmask;
+
+protected:
+ // construction/destruction
+ a2bus_memexp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+
+private:
+ required_region_ptr<uint8_t> m_rom;
+ uint8_t m_regs[0x10];
+ uint8_t m_ram[8*1024*1024];
+ int m_wptr, m_liveptr;
+};
+
+class a2bus_memexpapple_device : public a2bus_memexp_device
+{
+public:
+ a2bus_memexpapple_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+};
+
+class a2bus_ramfactor_device : public a2bus_memexp_device
+{
+public:
+ a2bus_ramfactor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -70,7 +115,9 @@ const tiny_rom_entry *a2bus_ramfactor_device::device_rom_region() const
a2bus_memexp_device::a2bus_memexp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
- device_a2bus_card_interface(mconfig, *this), m_isramfactor(false), m_bankhior(0), m_addrmask(0), m_rom(nullptr), m_wptr(0), m_liveptr(0)
+ device_a2bus_card_interface(mconfig, *this), m_isramfactor(false), m_bankhior(0), m_addrmask(0),
+ m_rom(*this, MEMEXP_ROM_REGION),
+ m_wptr(0), m_liveptr(0)
{
}
@@ -96,8 +143,6 @@ a2bus_ramfactor_device::a2bus_ramfactor_device(const machine_config &mconfig, co
void a2bus_memexp_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(MEMEXP_ROM_REGION).c_str())->base();
-
memset(m_ram, 0xff, 1024*1024*sizeof(uint8_t));
save_item(NAME(m_regs));
@@ -212,3 +257,13 @@ uint8_t a2bus_memexp_device::read_c800(uint16_t offset)
else
return m_rom[offset+0x800];
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_MEMEXP, device_a2bus_card_interface, a2bus_memexpapple_device, "a2memexp", "Apple II Memory Expansion Card")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_RAMFACTOR, device_a2bus_card_interface, a2bus_ramfactor_device, "a2ramfac", "Applied Engineering RamFactor")
diff --git a/src/devices/bus/a2bus/a2memexp.h b/src/devices/bus/a2bus/a2memexp.h
index 2eeb3e157ae..0823ce27b9a 100644
--- a/src/devices/bus/a2bus/a2memexp.h
+++ b/src/devices/bus/a2bus/a2memexp.h
@@ -15,57 +15,8 @@
#include "a2bus.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_memexp_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- bool m_isramfactor;
- uint8_t m_bankhior;
- int m_addrmask;
-
-protected:
- // construction/destruction
- a2bus_memexp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual uint8_t read_c800(uint16_t offset) override;
-
-private:
- uint8_t *m_rom;
- uint8_t m_regs[0x10];
- uint8_t m_ram[8*1024*1024];
- int m_wptr, m_liveptr;
-};
-
-class a2bus_memexpapple_device : public a2bus_memexp_device
-{
-public:
- a2bus_memexpapple_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-};
-
-class a2bus_ramfactor_device : public a2bus_memexp_device
-{
-public:
- a2bus_ramfactor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_MEMEXP, a2bus_memexpapple_device)
-DECLARE_DEVICE_TYPE(A2BUS_RAMFACTOR, a2bus_ramfactor_device)
+DECLARE_DEVICE_TYPE(A2BUS_MEMEXP, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_RAMFACTOR, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2MEMEXP_H
diff --git a/src/devices/bus/a2bus/a2midi.cpp b/src/devices/bus/a2bus/a2midi.cpp
index dfd6ce71694..f1cc7ecb2a6 100644
--- a/src/devices/bus/a2bus/a2midi.cpp
+++ b/src/devices/bus/a2bus/a2midi.cpp
@@ -10,23 +10,55 @@
#include "emu.h"
#include "a2midi.h"
-#include "machine/clock.h"
+
#include "bus/midi/midi.h"
+#include "machine/6840ptm.h"
+#include "machine/6850acia.h"
+#include "machine/clock.h"
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
+#define MIDI_PTM_TAG "midi_ptm"
+#define MIDI_ACIA_TAG "midi_acia"
+
+
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_MIDI, a2bus_midi_device, "a2midi", "6850 MIDI card")
+class a2bus_midi_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_midi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-#define MIDI_PTM_TAG "midi_ptm"
-#define MIDI_ACIA_TAG "midi_acia"
+protected:
+ a2bus_midi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+
+ required_device<ptm6840_device> m_ptm;
+ required_device<acia6850_device> m_acia;
+
+private:
+ DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
+ DECLARE_WRITE_LINE_MEMBER( ptm_irq_w );
+ DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
+
+ bool m_acia_irq, m_ptm_irq;
+};
//-------------------------------------------------
// device_add_mconfig - add device configuration
@@ -150,3 +182,12 @@ WRITE_LINE_MEMBER( a2bus_midi_device::write_acia_clock )
m_acia->write_txc(state);
m_acia->write_rxc(state);
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_MIDI, device_a2bus_card_interface, a2bus_midi_device, "a2midi", "6850 MIDI card")
diff --git a/src/devices/bus/a2bus/a2midi.h b/src/devices/bus/a2bus/a2midi.h
index 67da46ee89f..c4f6b1462ee 100644
--- a/src/devices/bus/a2bus/a2midi.h
+++ b/src/devices/bus/a2bus/a2midi.h
@@ -14,43 +14,8 @@
#pragma once
#include "a2bus.h"
-#include "machine/6840ptm.h"
-#include "machine/6850acia.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_midi_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_midi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- a2bus_midi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
-
- required_device<ptm6840_device> m_ptm;
- required_device<acia6850_device> m_acia;
-
-private:
- DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
- DECLARE_WRITE_LINE_MEMBER( ptm_irq_w );
- DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
-
- bool m_acia_irq, m_ptm_irq;
-};
// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_MIDI, a2bus_midi_device)
+DECLARE_DEVICE_TYPE(A2BUS_MIDI, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2MIDI_H
diff --git a/src/devices/bus/a2bus/a2sam.cpp b/src/devices/bus/a2bus/a2sam.cpp
index b796b3008d3..ecedc1eaa61 100644
--- a/src/devices/bus/a2bus/a2sam.cpp
+++ b/src/devices/bus/a2bus/a2sam.cpp
@@ -10,21 +10,42 @@
#include "emu.h"
#include "a2sam.h"
+
+#include "sound/dac.h"
+
#include "speaker.h"
-/***************************************************************************
- PARAMETERS
-***************************************************************************/
+
+namespace {
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_SAM, a2bus_sam_device, "a2sam", "Don't Ask Software S.A.M.")
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
+class a2bus_sam_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_sam_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, A2BUS_SAM, tag, owner, clock),
+ device_a2bus_card_interface(mconfig, *this),
+ m_dac(*this, "dac")
+ {
+ }
+
+protected:
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // overrides of standard a2bus slot functions
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override { m_dac->write(data); }
+ virtual bool take_c800() override { return false; }
+
+ required_device<dac_byte_interface> m_dac;
+};
//-------------------------------------------------
// device_add_mconfig - add device configuration
@@ -36,35 +57,11 @@ void a2bus_sam_device::device_add_mconfig(machine_config &config)
DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
}
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
-a2bus_sam_device::a2bus_sam_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_SAM, tag, owner, clock),
- device_a2bus_card_interface(mconfig, *this),
- m_dac(*this, "dac")
-{
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void a2bus_sam_device::device_start()
-{
-}
+} // anonymous namespace
-void a2bus_sam_device::device_reset()
-{
-}
-void a2bus_sam_device::write_c0nx(uint8_t offset, uint8_t data)
-{
- m_dac->write(data);
-}
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
-bool a2bus_sam_device::take_c800()
-{
- return false;
-}
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_SAM, device_a2bus_card_interface, a2bus_sam_device, "a2sam", "Don't Ask Software S.A.M.")
diff --git a/src/devices/bus/a2bus/a2sam.h b/src/devices/bus/a2bus/a2sam.h
index 20957e47e19..87066e6cd6e 100644
--- a/src/devices/bus/a2bus/a2sam.h
+++ b/src/devices/bus/a2bus/a2sam.h
@@ -14,33 +14,8 @@
#pragma once
#include "a2bus.h"
-#include "sound/dac.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_sam_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_sam_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // overrides of standard a2bus slot functions
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual bool take_c800() override;
-
- required_device<dac_byte_interface> m_dac;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_SAM, a2bus_sam_device)
+
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_SAM, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2SAM_H
diff --git a/src/devices/bus/a2bus/a2ssc.cpp b/src/devices/bus/a2bus/a2ssc.cpp
index b9e531696b6..61ab1efc30b 100644
--- a/src/devices/bus/a2bus/a2ssc.cpp
+++ b/src/devices/bus/a2bus/a2ssc.cpp
@@ -15,19 +15,73 @@
#include "emu.h"
#include "a2ssc.h"
+
#include "bus/rs232/rs232.h"
+#include "machine/mos6551.h"
-/***************************************************************************
- PARAMETERS
-***************************************************************************/
+namespace {
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_SSC, a2bus_ssc_device, "a2ssc", "Apple Super Serial Card")
-DEFINE_DEVICE_TYPE(APRICORN_SSI, apricorn_ssi_device, "aprissi", "Apricorn Super Serial Imager")
+class a2bus_ssc_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_ssc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ a2bus_ssc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
+
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+
+ required_ioport m_dsw1, m_dsw2;
+ required_ioport m_dswx;
+
+ required_device<mos6551_device> m_acia;
+
+ required_region_ptr<uint8_t> m_rom;
+
+private:
+ DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
+};
+
+class apricorn_ssi_device : public a2bus_ssc_device
+{
+public:
+ // construction/destruction
+ apricorn_ssi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual void device_start() override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
+
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual void write_cnxx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+
+private:
+ bool m_alt_bank;
+};
+
+/***************************************************************************
+ PARAMETERS
+***************************************************************************/
ROM_START( ssc )
ROM_REGION(0x800, "program", 0)
@@ -382,3 +436,13 @@ WRITE_LINE_MEMBER( a2bus_ssc_device::acia_irq_w )
}
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_SSC, device_a2bus_card_interface, a2bus_ssc_device, "a2ssc", "Apple Super Serial Card")
+DEFINE_DEVICE_TYPE_PRIVATE(APRICORN_SSI, device_a2bus_card_interface, apricorn_ssi_device, "aprissi", "Apricorn Super Serial Imager")
diff --git a/src/devices/bus/a2bus/a2ssc.h b/src/devices/bus/a2bus/a2ssc.h
index 2e2bc8edc16..9cc41e53970 100644
--- a/src/devices/bus/a2bus/a2ssc.h
+++ b/src/devices/bus/a2bus/a2ssc.h
@@ -12,67 +12,9 @@
#define MAME_BUS_A2BUS_A2SSC_H
#include "a2bus.h"
-#include "machine/mos6551.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_ssc_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_ssc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- a2bus_ssc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual ioport_constructor device_input_ports() const override;
-
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual uint8_t read_c800(uint16_t offset) override;
-
- required_ioport m_dsw1, m_dsw2;
- required_ioport m_dswx;
-
- required_device<mos6551_device> m_acia;
-
- required_region_ptr<uint8_t> m_rom;
-
-private:
- DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
-};
-
-class apricorn_ssi_device : public a2bus_ssc_device
-{
-public:
- // construction/destruction
- apricorn_ssi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_start() override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual ioport_constructor device_input_ports() const override;
-
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual void write_cnxx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_c800(uint16_t offset) override;
-
-private:
- bool m_alt_bank;
-};
// device type declarations
-DECLARE_DEVICE_TYPE(A2BUS_SSC, a2bus_ssc_device)
-DECLARE_DEVICE_TYPE(APRICORN_SSI, apricorn_ssi_device)
+DECLARE_DEVICE_TYPE(A2BUS_SSC, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(APRICORN_SSI, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2SSC_H
diff --git a/src/devices/bus/a2bus/a2swyft.cpp b/src/devices/bus/a2bus/a2swyft.cpp
index ba4cb8ec46e..6d9701d3a04 100644
--- a/src/devices/bus/a2bus/a2swyft.cpp
+++ b/src/devices/bus/a2bus/a2swyft.cpp
@@ -12,16 +12,12 @@
#include "a2swyft.h"
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_SWYFT, a2bus_swyft_device, "a2swyft", "IAI SwyftCard")
-
#define SWYFT_ROM_REGION "swyft_rom"
ROM_START( swyft )
@@ -31,6 +27,39 @@ ROM_START( swyft )
ROM_LOAD( "swyft_pal16r4.jed", 0x0000, 0x08EF, CRC(462a6938) SHA1(38be885539cf91423a246378c411ac8b2f150ec6) ) // swyft3.pal derived by D. Elvey, works as a replacement pal (original is protected?)
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_swyft_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_swyft_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+protected:
+ a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_inh_rom(uint16_t offset) override;
+ virtual uint16_t inh_start() override { return 0xd000; }
+ virtual uint16_t inh_end() override { return 0xffff; }
+ virtual int inh_type() override;
+
+private:
+ required_region_ptr<uint8_t> m_rom;
+ int m_rombank = 0;
+ int m_inh_state = 0;
+};
+
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
@@ -51,7 +80,8 @@ a2bus_swyft_device::a2bus_swyft_device(const machine_config &mconfig, const char
a2bus_swyft_device::a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
- device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_rombank(0), m_inh_state(0)
+ device_a2bus_card_interface(mconfig, *this),
+ m_rom(*this, SWYFT_ROM_REGION)
{
}
@@ -61,8 +91,6 @@ a2bus_swyft_device::a2bus_swyft_device(const machine_config &mconfig, device_typ
void a2bus_swyft_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(SWYFT_ROM_REGION).c_str())->base();
-
save_item(NAME(m_rombank));
}
@@ -142,3 +170,12 @@ int a2bus_swyft_device::inh_type()
{
return m_inh_state;
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_SWYFT, device_a2bus_card_interface, a2bus_swyft_device, "a2swyft", "IAI SwyftCard")
diff --git a/src/devices/bus/a2bus/a2swyft.h b/src/devices/bus/a2bus/a2swyft.h
index d160fb77a4c..dbf3c02827a 100644
--- a/src/devices/bus/a2bus/a2swyft.h
+++ b/src/devices/bus/a2bus/a2swyft.h
@@ -15,40 +15,7 @@
#include "a2bus.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_swyft_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_swyft_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
-
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_inh_rom(uint16_t offset) override;
- virtual uint16_t inh_start() override { return 0xd000; }
- virtual uint16_t inh_end() override { return 0xffff; }
- virtual int inh_type() override;
-
-private:
- uint8_t *m_rom;
- int m_rombank;
- int m_inh_state;
-};
-
// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_SWYFT, a2bus_swyft_device)
+DECLARE_DEVICE_TYPE(A2BUS_SWYFT, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2SWYFT_H
diff --git a/src/devices/bus/a2bus/a2thunderclock.cpp b/src/devices/bus/a2bus/a2thunderclock.cpp
index a948a465f5d..c109be5c276 100644
--- a/src/devices/bus/a2bus/a2thunderclock.cpp
+++ b/src/devices/bus/a2bus/a2thunderclock.cpp
@@ -28,16 +28,15 @@
#include "emu.h"
#include "a2thunderclock.h"
+#include "machine/upd1990a.h"
+
+
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_THUNDERCLOCK, a2bus_thunderclock_device, "a2thunpl", "ThunderWare ThunderClock Plus")
-
#define THUNDERCLOCK_ROM_REGION "thunclk_rom"
#define THUNDERCLOCK_UPD1990_TAG "thunclk_upd"
@@ -46,6 +45,41 @@ ROM_START( thunderclock )
ROM_LOAD( "thunderclock plus rom.bin", 0x0000, 0x0800, CRC(1b99c4e3) SHA1(60f434f5325899d7ea257a6e56e6f53eae65146a) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_thunderclock_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_thunderclock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ a2bus_thunderclock_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+
+ required_device<upd1990a_device> m_upd1990ac;
+ required_region_ptr<uint8_t> m_rom;
+
+private:
+ DECLARE_WRITE_LINE_MEMBER( upd_dataout_w );
+
+ int m_dataout;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -76,7 +110,9 @@ const tiny_rom_entry *a2bus_thunderclock_device::device_rom_region() const
a2bus_thunderclock_device::a2bus_thunderclock_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
- m_upd1990ac(*this, THUNDERCLOCK_UPD1990_TAG), m_rom(nullptr), m_dataout(0)
+ m_upd1990ac(*this, THUNDERCLOCK_UPD1990_TAG),
+ m_rom(*this, THUNDERCLOCK_ROM_REGION),
+ m_dataout(0)
{
}
@@ -91,8 +127,6 @@ a2bus_thunderclock_device::a2bus_thunderclock_device(const machine_config &mconf
void a2bus_thunderclock_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(THUNDERCLOCK_ROM_REGION).c_str())->base();
-
save_item(NAME(m_dataout));
}
@@ -169,3 +203,12 @@ WRITE_LINE_MEMBER( a2bus_thunderclock_device::upd_dataout_w )
m_dataout = 0;
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_THUNDERCLOCK, device_a2bus_card_interface, a2bus_thunderclock_device, "a2thunpl", "ThunderWare ThunderClock Plus")
diff --git a/src/devices/bus/a2bus/a2thunderclock.h b/src/devices/bus/a2bus/a2thunderclock.h
index 2f1e908a1cd..6c5025f0789 100644
--- a/src/devices/bus/a2bus/a2thunderclock.h
+++ b/src/devices/bus/a2bus/a2thunderclock.h
@@ -14,44 +14,8 @@
#pragma once
#include "a2bus.h"
-#include "machine/upd1990a.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_thunderclock_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_thunderclock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- a2bus_thunderclock_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual uint8_t read_c800(uint16_t offset) override;
-
- required_device<upd1990a_device> m_upd1990ac;
-
-private:
- DECLARE_WRITE_LINE_MEMBER( upd_dataout_w );
-
- uint8_t *m_rom;
- int m_dataout;
-};
// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_THUNDERCLOCK, a2bus_thunderclock_device)
+DECLARE_DEVICE_TYPE(A2BUS_THUNDERCLOCK, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2THUNDERCLOCK_H
diff --git a/src/devices/bus/a2bus/a2ultraterm.cpp b/src/devices/bus/a2bus/a2ultraterm.cpp
index e8d5972e4ec..468c7402c46 100644
--- a/src/devices/bus/a2bus/a2ultraterm.cpp
+++ b/src/devices/bus/a2bus/a2ultraterm.cpp
@@ -29,20 +29,18 @@
#include "emu.h"
#include "a2ultraterm.h"
+
+#include "video/mc6845.h"
+
#include "screen.h"
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_ULTRATERM, a2bus_ultraterm_device, "a2ulttrm", "Videx UltraTerm (original)")
-DEFINE_DEVICE_TYPE(A2BUS_ULTRATERMENH, a2bus_ultratermenh_device, "a2ultrme", "Videx UltraTerm (enhanced //e)")
-
#define ULTRATERM_ROM_REGION "uterm_rom"
#define ULTRATERM_GFX_REGION "uterm_gfx"
#define ULTRATERM_SCREEN_NAME "uterm_screen"
@@ -65,7 +63,7 @@ DEFINE_DEVICE_TYPE(A2BUS_ULTRATERMENH, a2bus_ultratermenh_device, "a2ultrme", "V
#define CT2_HLBIT7L (0x01)
-static const rgb_t ultraterm_palette[4] =
+const rgb_t ultraterm_palette[4] =
{
rgb_t(0x00,0x00,0x00),
rgb_t(0x55,0x55,0x55),
@@ -96,6 +94,60 @@ ROM_START( a2ultratermenh )
ROM_LOAD( "ult_251c.jed", 0x000000, 0x000305, CRC(12fabb0d) SHA1(d4a36837cb98bb65f7ddef7455eb5a7f8e648a82) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_videx160_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+protected:
+ // construction/destruction
+ a2bus_videx160_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual void write_cnxx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+ virtual void write_c800(uint16_t offset, uint8_t data) override;
+
+ uint8_t m_ram[256*16];
+ int m_framecnt;
+ uint8_t m_ctrl1, m_ctrl2;
+
+ required_device<mc6845_device> m_crtc;
+ required_region_ptr<uint8_t> m_rom, m_chrrom;
+
+private:
+ DECLARE_WRITE_LINE_MEMBER(vsync_changed);
+ MC6845_UPDATE_ROW(crtc_update_row);
+
+ int m_rambank;
+};
+
+class a2bus_ultraterm_device : public a2bus_videx160_device
+{
+public:
+ a2bus_ultraterm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
+class a2bus_ultratermenh_device : public a2bus_videx160_device
+{
+public:
+ a2bus_ultratermenh_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -138,8 +190,12 @@ const tiny_rom_entry *a2bus_ultratermenh_device::device_rom_region() const
a2bus_videx160_device::a2bus_videx160_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
- device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_chrrom(nullptr), m_framecnt(0), m_ctrl1(0), m_ctrl2(0),
- m_crtc(*this, ULTRATERM_MC6845_NAME), m_rambank(0)
+ device_a2bus_card_interface(mconfig, *this),
+ m_framecnt(0), m_ctrl1(0), m_ctrl2(0),
+ m_crtc(*this, ULTRATERM_MC6845_NAME),
+ m_rom(*this, ULTRATERM_ROM_REGION),
+ m_chrrom(*this, ULTRATERM_GFX_REGION),
+ m_rambank(0)
{
}
@@ -159,10 +215,6 @@ a2bus_ultratermenh_device::a2bus_ultratermenh_device(const machine_config &mconf
void a2bus_videx160_device::device_start()
{
- m_rom = machine().root_device().memregion(this->subtag(ULTRATERM_ROM_REGION).c_str())->base();
-
- m_chrrom = machine().root_device().memregion(this->subtag(ULTRATERM_GFX_REGION).c_str())->base();
-
memset(m_ram, 0, 256*16);
save_item(NAME(m_ram));
@@ -391,3 +443,13 @@ WRITE_LINE_MEMBER( a2bus_videx160_device::vsync_changed )
m_framecnt++;
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_ULTRATERM, device_a2bus_card_interface, a2bus_ultraterm_device, "a2ulttrm", "Videx UltraTerm (original)")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_ULTRATERMENH, device_a2bus_card_interface, a2bus_ultratermenh_device, "a2ultrme", "Videx UltraTerm (enhanced //e)")
diff --git a/src/devices/bus/a2bus/a2ultraterm.h b/src/devices/bus/a2bus/a2ultraterm.h
index b7dd4c9d3f5..2197ea9f446 100644
--- a/src/devices/bus/a2bus/a2ultraterm.h
+++ b/src/devices/bus/a2bus/a2ultraterm.h
@@ -14,64 +14,9 @@
#pragma once
#include "a2bus.h"
-#include "video/mc6845.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_videx160_device:
- public device_t,
- public device_a2bus_card_interface
-{
-protected:
- // construction/destruction
- a2bus_videx160_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual void write_cnxx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_c800(uint16_t offset) override;
- virtual void write_c800(uint16_t offset, uint8_t data) override;
-
- uint8_t *m_rom, *m_chrrom;
- uint8_t m_ram[256*16];
- int m_framecnt;
- uint8_t m_ctrl1, m_ctrl2;
-
- required_device<mc6845_device> m_crtc;
-
-private:
- DECLARE_WRITE_LINE_MEMBER(vsync_changed);
- MC6845_UPDATE_ROW(crtc_update_row);
-
- int m_rambank;
-};
-
-class a2bus_ultraterm_device : public a2bus_videx160_device
-{
-public:
- a2bus_ultraterm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-class a2bus_ultratermenh_device : public a2bus_videx160_device
-{
-public:
- a2bus_ultratermenh_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_ULTRATERM, a2bus_ultraterm_device)
-DECLARE_DEVICE_TYPE(A2BUS_ULTRATERMENH, a2bus_ultratermenh_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_ULTRATERM, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_ULTRATERMENH, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2ULTRATERM_H
diff --git a/src/devices/bus/a2bus/a2videoterm.cpp b/src/devices/bus/a2bus/a2videoterm.cpp
index 839fa19e74a..c5c75fc3323 100644
--- a/src/devices/bus/a2bus/a2videoterm.cpp
+++ b/src/devices/bus/a2bus/a2videoterm.cpp
@@ -24,23 +24,18 @@
#include "emu.h"
#include "a2videoterm.h"
+
+#include "video/mc6845.h"
+
#include "screen.h"
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_VIDEOTERM, a2bus_videoterm_device, "a2vidtrm", "Videx Videoterm 80 Column Display")
-DEFINE_DEVICE_TYPE(A2BUS_IBSAP16, a2bus_ap16_device, "a2ap16", "IBS AP-16 80 column card")
-DEFINE_DEVICE_TYPE(A2BUS_IBSAP16ALT, a2bus_ap16alt_device, "a2ap16a", "IBS AP-16 80 column card (alt. version)")
-DEFINE_DEVICE_TYPE(A2BUS_VTC1, a2bus_vtc1_device, "a2vtc1", "unknown Videoterm clone")
-DEFINE_DEVICE_TYPE(A2BUS_AEVIEWMASTER80, a2bus_aevm80_device, "a2aevm80", "Applied Engineering Viewmaster 80")
-
#define VIDEOTERM_ROM_REGION "vterm_rom"
#define VIDEOTERM_GFX_REGION "vterm_gfx"
#define VIDEOTERM_SCREEN_NAME "vterm_screen"
@@ -101,6 +96,92 @@ ROM_START( a2aevm80 )
ROM_LOAD( "ae viewmaster 80 video rom.bin", 0x000000, 0x000800, CRC(4801ab90) SHA1(f90658ffee7740f3cb30ecef2e151f7dc6098833) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_videx80_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+protected:
+ // construction/destruction
+ a2bus_videx80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual void write_cnxx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+ virtual void write_c800(uint16_t offset, uint8_t data) override;
+
+ uint8_t m_ram[512*4];
+
+ required_device<mc6845_device> m_crtc;
+ required_region_ptr<uint8_t> m_rom, m_chrrom;
+
+ MC6845_UPDATE_ROW(crtc_update_row);
+
+ int m_rambank;
+ uint8_t m_char_width;
+};
+
+class a2bus_videoterm_device : public a2bus_videx80_device
+{
+public:
+ a2bus_videoterm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
+class a2bus_ap16_device : public a2bus_videx80_device
+{
+public:
+ a2bus_ap16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+protected:
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+};
+
+
+class a2bus_ap16alt_device : public a2bus_videx80_device
+{
+public:
+ a2bus_ap16alt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+protected:
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+};
+
+class a2bus_vtc1_device : public a2bus_videx80_device
+{
+public:
+ a2bus_vtc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
+class a2bus_aevm80_device : public a2bus_videx80_device
+{
+public:
+ a2bus_aevm80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -196,8 +277,10 @@ const tiny_rom_entry *a2bus_aevm80_device::device_rom_region() const
a2bus_videx80_device::a2bus_videx80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
- device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_chrrom(nullptr),
+ device_a2bus_card_interface(mconfig, *this),
m_crtc(*this, VIDEOTERM_MC6845_NAME),
+ m_rom(*this, VIDEOTERM_ROM_REGION),
+ m_chrrom(*this, VIDEOTERM_GFX_REGION),
m_rambank(0),
m_char_width(9)
{
@@ -236,10 +319,6 @@ a2bus_aevm80_device::a2bus_aevm80_device(const machine_config &mconfig, const ch
void a2bus_videx80_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(VIDEOTERM_ROM_REGION).c_str())->base();
-
- m_chrrom = device().machine().root_device().memregion(this->subtag(VIDEOTERM_GFX_REGION).c_str())->base();
-
memset(m_ram, 0, 4*512);
save_item(NAME(m_ram));
@@ -368,3 +447,16 @@ MC6845_UPDATE_ROW( a2bus_videx80_device::crtc_update_row )
}
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_VIDEOTERM, device_a2bus_card_interface, a2bus_videoterm_device, "a2vidtrm", "Videx Videoterm 80 Column Display")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_IBSAP16, device_a2bus_card_interface, a2bus_ap16_device, "a2ap16", "IBS AP-16 80 column card")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_IBSAP16ALT, device_a2bus_card_interface, a2bus_ap16alt_device, "a2ap16a", "IBS AP-16 80 column card (alt. version)")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_VTC1, device_a2bus_card_interface, a2bus_vtc1_device, "a2vtc1", "unknown Videoterm clone")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_AEVIEWMASTER80, device_a2bus_card_interface, a2bus_aevm80_device, "a2aevm80", "Applied Engineering Viewmaster 80")
diff --git a/src/devices/bus/a2bus/a2videoterm.h b/src/devices/bus/a2bus/a2videoterm.h
index 589a1331a40..17d6c550df0 100644
--- a/src/devices/bus/a2bus/a2videoterm.h
+++ b/src/devices/bus/a2bus/a2videoterm.h
@@ -14,99 +14,12 @@
#pragma once
#include "a2bus.h"
-#include "video/mc6845.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_videx80_device:
- public device_t,
- public device_a2bus_card_interface
-{
-protected:
- // construction/destruction
- a2bus_videx80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual void write_cnxx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_c800(uint16_t offset) override;
- virtual void write_c800(uint16_t offset, uint8_t data) override;
-
- uint8_t *m_rom, *m_chrrom;
- uint8_t m_ram[512*4];
-
- required_device<mc6845_device> m_crtc;
-
- MC6845_UPDATE_ROW(crtc_update_row);
-
- int m_rambank;
- uint8_t m_char_width;
-};
-
-class a2bus_videoterm_device : public a2bus_videx80_device
-{
-public:
- a2bus_videoterm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-class a2bus_ap16_device : public a2bus_videx80_device
-{
-public:
- a2bus_ap16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- virtual uint8_t read_cnxx(uint8_t offset) override;
-};
-
-
-class a2bus_ap16alt_device : public a2bus_videx80_device
-{
-public:
- a2bus_ap16alt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- virtual uint8_t read_cnxx(uint8_t offset) override;
-};
-
-class a2bus_vtc1_device : public a2bus_videx80_device
-{
-public:
- a2bus_vtc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-class a2bus_aevm80_device : public a2bus_videx80_device
-{
-public:
- a2bus_aevm80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_VIDEOTERM, a2bus_videoterm_device)
-DECLARE_DEVICE_TYPE(A2BUS_IBSAP16, a2bus_ap16_device)
-DECLARE_DEVICE_TYPE(A2BUS_IBSAP16ALT, a2bus_ap16alt_device)
-DECLARE_DEVICE_TYPE(A2BUS_VTC1, a2bus_vtc1_device)
-DECLARE_DEVICE_TYPE(A2BUS_AEVIEWMASTER80, a2bus_aevm80_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_VIDEOTERM, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_IBSAP16, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_IBSAP16ALT, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_VTC1, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_AEVIEWMASTER80, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_A2VIDEOTERM_H
diff --git a/src/devices/bus/a2bus/a2vulcan.cpp b/src/devices/bus/a2bus/a2vulcan.cpp
index dcc8e454a73..889e7df5de3 100644
--- a/src/devices/bus/a2bus/a2vulcan.cpp
+++ b/src/devices/bus/a2bus/a2vulcan.cpp
@@ -55,15 +55,12 @@
#include "emu.h"
#include "a2vulcan.h"
+
+#include "bus/ata/ataintf.h"
#include "imagedev/harddriv.h"
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_VULCAN, a2bus_vulcan_device, "a2vulcan", "Applied Engineering Vulcan IDE controller (IIgs version)")
-DEFINE_DEVICE_TYPE(A2BUS_VULCANIIE, a2bus_vulcaniie_device, "a2vuliie", "Applied Engineering Vulcan IDE controller (//e version)")
-DEFINE_DEVICE_TYPE(A2BUS_VULCANGOLD, a2bus_vulcangold_device, "a2vulgld", "Applied Engineering Vulcan Gold IDE controller (IIgs version)")
+namespace {
#define VULCAN_ROM_REGION "vulcan_rom"
#define VULCAN_ATA_TAG "vulcan_ata"
@@ -83,6 +80,69 @@ ROM_START( vulcangold )
ROM_LOAD( "ae vulcan gold rom v2.0.bin", 0x000000, 0x004000, CRC(19bc3958) SHA1(96a22c2540fa603648a4e638e176eee76523b4e1) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_vulcanbase_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+protected:
+ // construction/destruction
+ a2bus_vulcanbase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+ virtual void write_c800(uint16_t offset, uint8_t data) override;
+
+ required_device<ata_interface_device> m_ata;
+ required_region_ptr<uint8_t> m_rom;
+
+ uint8_t m_ram[8*1024];
+
+private:
+ uint16_t m_lastdata;
+ int m_rombank, m_rambank;
+ bool m_last_read_was_0;
+};
+
+class a2bus_vulcan_device : public a2bus_vulcanbase_device
+{
+public:
+ a2bus_vulcan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual void device_start() override;
+};
+
+class a2bus_vulcaniie_device : public a2bus_vulcanbase_device
+{
+public:
+ a2bus_vulcaniie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual void device_start() override;
+};
+
+class a2bus_vulcangold_device : public a2bus_vulcanbase_device
+{
+public:
+ a2bus_vulcangold_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -122,7 +182,9 @@ const tiny_rom_entry *a2bus_vulcangold_device::device_rom_region() const
a2bus_vulcanbase_device::a2bus_vulcanbase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
- m_ata(*this, VULCAN_ATA_TAG), m_rom(nullptr), m_lastdata(0), m_rombank(0), m_rambank(0), m_last_read_was_0(false)
+ m_ata(*this, VULCAN_ATA_TAG),
+ m_rom(*this, VULCAN_ROM_REGION),
+ m_lastdata(0), m_rombank(0), m_rambank(0), m_last_read_was_0(false)
{
}
@@ -147,8 +209,6 @@ a2bus_vulcangold_device::a2bus_vulcangold_device(const machine_config &mconfig,
void a2bus_vulcanbase_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(VULCAN_ROM_REGION).c_str())->base();
-
save_item(NAME(m_lastdata));
save_item(NAME(m_ram));
save_item(NAME(m_rombank));
@@ -317,3 +377,14 @@ void a2bus_vulcanbase_device::write_c800(uint16_t offset, uint8_t data)
m_ram[offset + m_rambank] = data;
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_VULCAN, device_a2bus_card_interface, a2bus_vulcan_device, "a2vulcan", "Applied Engineering Vulcan IDE controller (IIgs version)")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_VULCANIIE, device_a2bus_card_interface, a2bus_vulcaniie_device, "a2vuliie", "Applied Engineering Vulcan IDE controller (//e version)")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_VULCANGOLD, device_a2bus_card_interface, a2bus_vulcangold_device, "a2vulgld", "Applied Engineering Vulcan Gold IDE controller (IIgs version)")
diff --git a/src/devices/bus/a2bus/a2vulcan.h b/src/devices/bus/a2bus/a2vulcan.h
index 0eddf59ecd9..50931b4166c 100644
--- a/src/devices/bus/a2bus/a2vulcan.h
+++ b/src/devices/bus/a2bus/a2vulcan.h
@@ -8,80 +8,16 @@
*********************************************************************/
-#ifndef MAME_BUS_A2BUS_VULCAN_H
-#define MAME_BUS_A2BUS_VULCAN_H
+#ifndef MAME_BUS_A2BUS_A2VULCAN_H
+#define MAME_BUS_A2BUS_A2VULCAN_H
#pragma once
#include "a2bus.h"
-#include "bus/ata/ataintf.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_VULCAN, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_VULCANIIE, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_VULCANGOLD, device_a2bus_card_interface)
-class a2bus_vulcanbase_device:
- public device_t,
- public device_a2bus_card_interface
-{
-protected:
- // construction/destruction
- a2bus_vulcanbase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual uint8_t read_c800(uint16_t offset) override;
- virtual void write_c800(uint16_t offset, uint8_t data) override;
-
- required_device<ata_interface_device> m_ata;
-
- uint8_t *m_rom;
- uint8_t m_ram[8*1024];
-
-private:
- uint16_t m_lastdata;
- int m_rombank, m_rambank;
- bool m_last_read_was_0;
-};
-
-class a2bus_vulcan_device : public a2bus_vulcanbase_device
-{
-public:
- a2bus_vulcan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- virtual void device_start() override;
-
-protected:
-};
-
-class a2bus_vulcaniie_device : public a2bus_vulcanbase_device
-{
-public:
- a2bus_vulcaniie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- virtual void device_start() override;
-};
-
-class a2bus_vulcangold_device : public a2bus_vulcanbase_device
-{
-public:
- a2bus_vulcangold_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_VULCAN, a2bus_vulcan_device)
-DECLARE_DEVICE_TYPE(A2BUS_VULCANIIE, a2bus_vulcaniie_device)
-DECLARE_DEVICE_TYPE(A2BUS_VULCANGOLD, a2bus_vulcangold_device)
-
-#endif // MAME_BUS_A2BUS_VULCAN_H
+#endif // MAME_BUS_A2BUS_A2VULCAN_H
diff --git a/src/devices/bus/a2bus/a2zipdrive.cpp b/src/devices/bus/a2bus/a2zipdrive.cpp
index fc06cb2a737..9a59af1a431 100644
--- a/src/devices/bus/a2bus/a2zipdrive.cpp
+++ b/src/devices/bus/a2bus/a2zipdrive.cpp
@@ -68,14 +68,12 @@
#include "emu.h"
#include "a2zipdrive.h"
+
+#include "bus/ata/ataintf.h"
#include "imagedev/harddriv.h"
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_ZIPDRIVE, a2bus_zipdrive_device, "a2zipdrv", "Zip Technologies ZipDrive")
-DEFINE_DEVICE_TYPE(A2BUS_FOCUSDRIVE, a2bus_focusdrive_device, "a2focdrv", "Parsons Engineering Focus Drive")
+namespace {
#define ZIPDRIVE_ROM_REGION "zipdrive_rom"
#define ZIPDRIVE_ATA_TAG "zipdrive_ata"
@@ -90,6 +88,53 @@ ROM_START( focusdrive )
ROM_LOAD( "focusrom.bin", 0x001000, 0x001000, CRC(0fd0ba25) SHA1(acf414aa145fcfa1c12aca0269f1f7ada82f1c04) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_zipdrivebase_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+protected:
+ // construction/destruction
+ a2bus_zipdrivebase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+
+ required_device<ata_interface_device> m_ata;
+ required_region_ptr<uint8_t> m_rom;
+
+ uint16_t m_lastdata;
+};
+
+class a2bus_zipdrive_device : public a2bus_zipdrivebase_device
+{
+public:
+ a2bus_zipdrive_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+};
+
+class a2bus_focusdrive_device : public a2bus_zipdrivebase_device
+{
+public:
+ a2bus_focusdrive_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual void device_reset() override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -124,7 +169,9 @@ const tiny_rom_entry *a2bus_focusdrive_device::device_rom_region() const
a2bus_zipdrivebase_device::a2bus_zipdrivebase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
- m_ata(*this, ZIPDRIVE_ATA_TAG), m_rom(nullptr), m_lastdata(0)
+ m_ata(*this, ZIPDRIVE_ATA_TAG),
+ m_rom(*this, ZIPDRIVE_ROM_REGION),
+ m_lastdata(0)
{
}
@@ -144,8 +191,6 @@ a2bus_focusdrive_device::a2bus_focusdrive_device(const machine_config &mconfig,
void a2bus_zipdrivebase_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(ZIPDRIVE_ROM_REGION).c_str())->base();
-
save_item(NAME(m_lastdata));
}
@@ -325,3 +370,13 @@ uint8_t a2bus_zipdrivebase_device::read_c800(uint16_t offset)
return m_rom[offset+0x1800];
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_ZIPDRIVE, device_a2bus_card_interface, a2bus_zipdrive_device, "a2zipdrv", "Zip Technologies ZipDrive")
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_FOCUSDRIVE, device_a2bus_card_interface, a2bus_focusdrive_device, "a2focdrv", "Parsons Engineering Focus Drive")
diff --git a/src/devices/bus/a2bus/a2zipdrive.h b/src/devices/bus/a2bus/a2zipdrive.h
index e9b90f06ed7..691c18457d0 100644
--- a/src/devices/bus/a2bus/a2zipdrive.h
+++ b/src/devices/bus/a2bus/a2zipdrive.h
@@ -11,63 +11,15 @@
*********************************************************************/
-#ifndef MAME_BUS_A2BUS_ZIPDRIVE_H
-#define MAME_BUS_A2BUS_ZIPDRIVE_H
+#ifndef MAME_BUS_A2BUS_A2ZIPDRIVE_H
+#define MAME_BUS_A2BUS_A2ZIPDRIVE_H
#pragma once
#include "a2bus.h"
-#include "bus/ata/ataintf.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_ZIPDRIVE, device_a2bus_card_interface)
+DECLARE_DEVICE_TYPE(A2BUS_FOCUSDRIVE, device_a2bus_card_interface)
-class a2bus_zipdrivebase_device:
- public device_t,
- public device_a2bus_card_interface
-{
-protected:
- // construction/destruction
- a2bus_zipdrivebase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual uint8_t read_c800(uint16_t offset) override;
-
- required_device<ata_interface_device> m_ata;
-
- uint8_t *m_rom;
- uint16_t m_lastdata;
-};
-
-class a2bus_zipdrive_device : public a2bus_zipdrivebase_device
-{
-public:
- a2bus_zipdrive_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-};
-
-class a2bus_focusdrive_device : public a2bus_zipdrivebase_device
-{
-public:
- a2bus_focusdrive_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_reset() override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_ZIPDRIVE, a2bus_zipdrive_device)
-DECLARE_DEVICE_TYPE(A2BUS_FOCUSDRIVE, a2bus_focusdrive_device)
-
-#endif // MAME_BUS_A2BUS_ZIPDRIVE_H
+#endif // MAME_BUS_A2BUS_A2ZIPDRIVE_H
diff --git a/src/devices/bus/a2bus/booti.cpp b/src/devices/bus/a2bus/booti.cpp
index 54e7720642f..39c6b1055ba 100644
--- a/src/devices/bus/a2bus/booti.cpp
+++ b/src/devices/bus/a2bus/booti.cpp
@@ -20,21 +20,56 @@
#include "emu.h"
#include "booti.h"
+#include "machine/at28c64b.h"
+#include "machine/ch376.h"
+
+
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_BOOTI, a2bus_booti_device, "a2booti", "Booti Card")
-
ROM_START( booti )
ROM_REGION(0x2000, "flash", 0)
ROM_LOAD( "bootifw09l.bin", 0x000000, 0x002000, CRC(be3f21ff) SHA1(f505ad4685cd44e4cce5b8d6d27b9c4fea159f11) )
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_booti_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_booti_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ a2bus_booti_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual void write_cnxx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+ virtual void write_c800(uint16_t offset, uint8_t data) override;
+
+private:
+ required_device<at28c64b_device> m_flash;
+ required_device<ch376_device> m_ch376;
+
+ int m_rombank;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -169,3 +204,12 @@ void a2bus_booti_device::write_c800(uint16_t offset, uint8_t data)
m_flash->write(offset + m_rombank, data);
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_BOOTI, device_a2bus_card_interface, a2bus_booti_device, "a2booti", "Booti Card")
diff --git a/src/devices/bus/a2bus/booti.h b/src/devices/bus/a2bus/booti.h
index 571aa799e90..324a08c7c14 100644
--- a/src/devices/bus/a2bus/booti.h
+++ b/src/devices/bus/a2bus/booti.h
@@ -14,45 +14,8 @@
#pragma once
#include "a2bus.h"
-#include "machine/at28c64b.h"
-#include "machine/ch376.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_booti_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_booti_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- a2bus_booti_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual void write_cnxx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_c800(uint16_t offset) override;
- virtual void write_c800(uint16_t offset, uint8_t data) override;
-
-private:
- required_device<at28c64b_device> m_flash;
- required_device<ch376_device> m_ch376;
-
- int m_rombank;
-};
// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_BOOTI, a2bus_booti_device)
+DECLARE_DEVICE_TYPE(A2BUS_BOOTI, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_BOOTI_H
diff --git a/src/devices/bus/a2bus/byte8251.cpp b/src/devices/bus/a2bus/byte8251.cpp
index cd948de4ea8..ffe6c6325c0 100644
--- a/src/devices/bus/a2bus/byte8251.cpp
+++ b/src/devices/bus/a2bus/byte8251.cpp
@@ -35,9 +35,38 @@
#include "byte8251.h"
#include "bus/rs232/rs232.h"
+#include "machine/i8251.h"
+#include "machine/mm5307.h"
-// device type definition
-DEFINE_DEVICE_TYPE(A2BUS_BYTE8251, a2bus_byte8251_device, "a2bus_byte8251", "BYTE Serial Interface (8251 based)")
+
+namespace {
+
+class a2bus_byte8251_device : public device_t, public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_byte8251_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ DECLARE_INPUT_CHANGED_MEMBER(rate_changed);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual ioport_constructor device_input_ports() const override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // device_a2bus_card_interface overrides
+ virtual u8 read_c0nx(u8 offset) override;
+ virtual void write_c0nx(u8 offset, u8 data) override;
+ virtual bool take_c800() override { return false; }
+
+private:
+ // object finders
+ required_device<i8251_device> m_usart;
+ required_device<mm5307_device> m_brg;
+ required_ioport m_switches;
+};
a2bus_byte8251_device::a2bus_byte8251_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, A2BUS_BYTE8251, tag, owner, clock)
@@ -112,3 +141,9 @@ void a2bus_byte8251_device::device_add_mconfig(machine_config &config)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_usart, FUNC(i8251_device::write_rxd));
}
+
+} // aonymous namespace
+
+
+// device type definition
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_BYTE8251, device_a2bus_card_interface, a2bus_byte8251_device, "a2bus_byte8251", "BYTE Serial Interface (8251 based)")
diff --git a/src/devices/bus/a2bus/byte8251.h b/src/devices/bus/a2bus/byte8251.h
index 557e714cda1..829bd968649 100644
--- a/src/devices/bus/a2bus/byte8251.h
+++ b/src/devices/bus/a2bus/byte8251.h
@@ -1,41 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:AJR
-
#ifndef MAME_BUS_A2BUS_BYTE8251_H
#define MAME_BUS_A2BUS_BYTE8251_H
-#include "a2bus.h"
-#include "machine/i8251.h"
-#include "machine/mm5307.h"
-
-class a2bus_byte8251_device : public device_t, public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_byte8251_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
-
- DECLARE_INPUT_CHANGED_MEMBER(rate_changed);
+#pragma once
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual ioport_constructor device_input_ports() const override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- // device_a2bus_card_interface overrides
- virtual u8 read_c0nx(u8 offset) override;
- virtual void write_c0nx(u8 offset, u8 data) override;
- virtual bool take_c800() override { return false; }
-
-private:
- // object finders
- required_device<i8251_device> m_usart;
- required_device<mm5307_device> m_brg;
- required_ioport m_switches;
-};
+#include "a2bus.h"
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_BYTE8251, a2bus_byte8251_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_BYTE8251, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_BYTE8251_H
diff --git a/src/devices/bus/a2bus/suprterminal.cpp b/src/devices/bus/a2bus/suprterminal.cpp
index aa3d31d96d8..796937bebcb 100644
--- a/src/devices/bus/a2bus/suprterminal.cpp
+++ b/src/devices/bus/a2bus/suprterminal.cpp
@@ -24,19 +24,59 @@
#include "emu.h"
#include "suprterminal.h"
+
+#include "video/mc6845.h"
+
#include "screen.h"
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-DEFINE_DEVICE_TYPE(A2BUS_SUPRTERMINAL, a2bus_suprterminal_device, "a2suprterm", "M&R Enterprises SUP'R'TERMINAL")
+namespace {
ROM_START(a2suprterm)
ROM_REGION(0x800, "s3firmware", ROMREGION_ERASEFF)
ROM_LOAD("suprterminal.bin", 0x000000, 0x000800, CRC(4c49b0f5) SHA1(66a7411c46c04a8089a7ddfb5ffd9809dd08a21f))
ROM_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_suprterminal_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_suprterminal_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ a2bus_suprterminal_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ // overrides of standard a2bus slot functions
+ virtual u8 read_cnxx(u8 offset) override;
+ virtual u8 read_c0nx(u8 offset) override;
+ virtual void write_c0nx(u8 offset, u8 data) override;
+ virtual u8 read_c800(u16 offset) override;
+ virtual void write_c800(u16 offset, u8 data) override;
+ virtual bool take_c800() override { return true; }
+
+private:
+ required_device<mc6845_device> m_crtc;
+ required_region_ptr<u8> m_rom;
+
+ MC6845_UPDATE_ROW(crtc_update_row);
+
+ std::unique_ptr<u8[]> m_vram;
+ std::unique_ptr<u8[]> m_fontram;
+// u8 m_fontram[0x400];
+ bool m_bRasterRAM, m_bCharBank1, m_bC800IsRAM;
+};
+
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
@@ -213,3 +253,12 @@ MC6845_UPDATE_ROW(a2bus_suprterminal_device::crtc_update_row)
}
}
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_SUPRTERMINAL, device_a2bus_card_interface, a2bus_suprterminal_device, "a2suprterm", "M&R Enterprises SUP'R'TERMINAL")
diff --git a/src/devices/bus/a2bus/suprterminal.h b/src/devices/bus/a2bus/suprterminal.h
index f1aa9c2b4f0..3bc754c5d24 100644
--- a/src/devices/bus/a2bus/suprterminal.h
+++ b/src/devices/bus/a2bus/suprterminal.h
@@ -14,49 +14,8 @@
#pragma once
#include "a2bus.h"
-#include "video/mc6845.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_suprterminal_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_suprterminal_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
-
-protected:
- a2bus_suprterminal_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- // overrides of standard a2bus slot functions
- virtual u8 read_cnxx(u8 offset) override;
- virtual u8 read_c0nx(u8 offset) override;
- virtual void write_c0nx(u8 offset, u8 data) override;
- virtual u8 read_c800(u16 offset) override;
- virtual void write_c800(u16 offset, u8 data) override;
- virtual bool take_c800() override { return true; }
-
-private:
- required_device<mc6845_device> m_crtc;
- required_region_ptr<u8> m_rom;
-
- MC6845_UPDATE_ROW(crtc_update_row);
-
- std::unique_ptr<u8[]> m_vram;
- std::unique_ptr<u8[]> m_fontram;
-// u8 m_fontram[0x400];
- bool m_bRasterRAM, m_bCharBank1, m_bC800IsRAM;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_SUPRTERMINAL, a2bus_suprterminal_device)
+
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_SUPRTERMINAL, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_SUPRTERMINAL_H
diff --git a/src/devices/bus/a2bus/timemasterho.cpp b/src/devices/bus/a2bus/timemasterho.cpp
index abf1b2e8695..8dbef3a5a37 100644
--- a/src/devices/bus/a2bus/timemasterho.cpp
+++ b/src/devices/bus/a2bus/timemasterho.cpp
@@ -38,16 +38,16 @@
#include "emu.h"
#include "timemasterho.h"
+#include "machine/6821pia.h"
+#include "machine/msm5832.h"
+
+
+namespace {
+
/***************************************************************************
PARAMETERS
***************************************************************************/
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_TIMEMASTERHO, a2bus_timemasterho_device, "a2tmstho", "Applied Engineering TimeMaster H.O.")
-
#define TIMEMASTER_ROM_REGION "timemst_rom"
#define TIMEMASTER_PIA_TAG "timemst_pia"
#define TIMEMASTER_M5832_TAG "timemst_msm"
@@ -76,6 +76,49 @@ static INPUT_PORTS_START( tmho )
PORT_DIPSETTING( 0x08, DEF_STR(On))
INPUT_PORTS_END
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class a2bus_timemasterho_device:
+ public device_t,
+ public device_a2bus_card_interface
+{
+public:
+ // construction/destruction
+ a2bus_timemasterho_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ a2bus_timemasterho_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
+
+ // overrides of standard a2bus slot functions
+ virtual uint8_t read_c0nx(uint8_t offset) override;
+ virtual void write_c0nx(uint8_t offset, uint8_t data) override;
+ virtual uint8_t read_cnxx(uint8_t offset) override;
+ virtual uint8_t read_c800(uint16_t offset) override;
+
+ required_device<pia6821_device> m_pia;
+ required_device<msm5832_device> m_msm5832;
+ required_region_ptr<uint8_t> m_rom;
+ required_ioport m_dsw1;
+
+private:
+ void update_irqs();
+ void pia_out_a(uint8_t data);
+ void pia_out_b(uint8_t data);
+ DECLARE_WRITE_LINE_MEMBER(pia_irqa_w);
+ DECLARE_WRITE_LINE_MEMBER(pia_irqb_w);
+
+ bool m_irqa = false, m_irqb = false;
+ bool m_started = false;
+};
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -122,15 +165,14 @@ a2bus_timemasterho_device::a2bus_timemasterho_device(const machine_config &mconf
device_a2bus_card_interface(mconfig, *this),
m_pia(*this, TIMEMASTER_PIA_TAG),
m_msm5832(*this, TIMEMASTER_M5832_TAG),
- m_dsw1(*this, "DSW1"), m_rom(nullptr), m_irqa(false), m_irqb(false)
+ m_rom(*this, TIMEMASTER_ROM_REGION),
+ m_dsw1(*this, "DSW1")
{
- m_started = false;
}
a2bus_timemasterho_device::a2bus_timemasterho_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
a2bus_timemasterho_device(mconfig, A2BUS_TIMEMASTERHO, tag, owner, clock)
{
- m_started = false;
}
//-------------------------------------------------
@@ -139,7 +181,6 @@ a2bus_timemasterho_device::a2bus_timemasterho_device(const machine_config &mconf
void a2bus_timemasterho_device::device_start()
{
- m_rom = device().machine().root_device().memregion(this->subtag(TIMEMASTER_ROM_REGION).c_str())->base();
}
void a2bus_timemasterho_device::device_reset()
@@ -267,3 +308,12 @@ WRITE_LINE_MEMBER(a2bus_timemasterho_device::pia_irqb_w)
m_irqb = state;
update_irqs();
}
+
+} // anonymous namespace
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_TIMEMASTERHO, device_a2bus_card_interface, a2bus_timemasterho_device, "a2tmstho", "Applied Engineering TimeMaster H.O.")
diff --git a/src/devices/bus/a2bus/timemasterho.h b/src/devices/bus/a2bus/timemasterho.h
index 47f5ba84ae7..f7bda98ce43 100644
--- a/src/devices/bus/a2bus/timemasterho.h
+++ b/src/devices/bus/a2bus/timemasterho.h
@@ -14,53 +14,8 @@
#pragma once
#include "a2bus.h"
-#include "machine/6821pia.h"
-#include "machine/msm5832.h"
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_timemasterho_device:
- public device_t,
- public device_a2bus_card_interface
-{
-public:
- // construction/destruction
- a2bus_timemasterho_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- a2bus_timemasterho_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual ioport_constructor device_input_ports() const override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
- virtual uint8_t read_c800(uint16_t offset) override;
-
- required_device<pia6821_device> m_pia;
- required_device<msm5832_device> m_msm5832;
- required_ioport m_dsw1;
-
-private:
- void update_irqs();
- void pia_out_a(uint8_t data);
- void pia_out_b(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER(pia_irqa_w);
- DECLARE_WRITE_LINE_MEMBER(pia_irqb_w);
-
- uint8_t *m_rom;
- bool m_irqa, m_irqb;
- bool m_started;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_TIMEMASTERHO, a2bus_timemasterho_device)
+// device type declaration
+DECLARE_DEVICE_TYPE(A2BUS_TIMEMASTERHO, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_TIMEMASTERHO_H
diff --git a/src/devices/bus/a2bus/uniprint.cpp b/src/devices/bus/a2bus/uniprint.cpp
index f98e2a44a45..99b90223a42 100644
--- a/src/devices/bus/a2bus/uniprint.cpp
+++ b/src/devices/bus/a2bus/uniprint.cpp
@@ -3,12 +3,54 @@
#include "emu.h"
#include "uniprint.h"
+#include "bus/centronics/ctronics.h"
+
//#define VERBOSE 1
//#define LOG_OUTPUT_FUNC osd_printf_info
#include "logmacro.h"
+
namespace {
+class a2bus_uniprint_device : public device_t, public device_a2bus_card_interface
+{
+public:
+ a2bus_uniprint_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+
+ // device_a2bus_card_interface implementation
+ virtual u8 read_c0nx(u8 offset) override;
+ virtual void write_c0nx(u8 offset, u8 data) override;
+ virtual u8 read_cnxx(u8 offset) override;
+ virtual u8 read_c800(u16 offset) override;
+
+protected:
+ // device_t implementation
+ virtual tiny_rom_entry const *device_rom_region() const override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual ioport_constructor device_input_ports() const override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // timer handlers
+ TIMER_CALLBACK_MEMBER(update_strobe);
+
+private:
+ // printer status inputs
+ DECLARE_WRITE_LINE_MEMBER(ack_w);
+
+ required_device<centronics_device> m_printer_conn;
+ required_device<output_latch_device> m_printer_out;
+ required_ioport m_s1, m_s2;
+ required_region_ptr<u8> m_rom;
+ emu_timer * m_strobe_timer;
+
+ u8 m_data_latch; // U6
+ u8 m_ack_latch; // U2 (pin 9)
+ u8 m_next_strobe; // U4 (pin 5)
+ u8 m_ack_in; // printer connector pin 10
+};
+
+
ROM_START(uniprint)
ROM_REGION(0x1000, "rom", 0)
ROM_LOAD("videx_uniprint_2732a.bin", 0x000000, 0x001000, CRC(e8423ef6) SHA1(0a2789ec2cb28f10a2836a91feabc24ceca8f142))
@@ -45,11 +87,6 @@ INPUT_PORTS_START(uniprint)
PORT_DIPSETTING( 0x02, "Negative")
INPUT_PORTS_END
-} // anonymous namespace
-
-
-
-DEFINE_DEVICE_TYPE(A2BUS_UNIPRINT, a2bus_uniprint_device, "a2uniprint", "Videx Uniprint Printer Interface")
a2bus_uniprint_device::a2bus_uniprint_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) :
device_t(mconfig, A2BUS_UNIPRINT, tag, owner, clock),
@@ -70,18 +107,6 @@ a2bus_uniprint_device::a2bus_uniprint_device(machine_config const &mconfig, char
//----------------------------------------------
-// DIP switch handlers
-//----------------------------------------------
-
-INPUT_CHANGED_MEMBER(a2bus_uniprint_device::sw_msb)
-{
- if (BIT(m_data_latch, 7))
- m_printer_out->write(m_data_latch & (BIT(m_s1->read(), 3) ? 0xffU : 0x7fU));
-}
-
-
-
-//----------------------------------------------
// device_a2bus_card_interface implementation
//----------------------------------------------
@@ -217,3 +242,9 @@ TIMER_CALLBACK_MEMBER(a2bus_uniprint_device::update_strobe)
m_strobe_timer->adjust(attotime::from_ticks(1, clock()));
}
}
+
+} // anonymous namespace
+
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_UNIPRINT, device_a2bus_card_interface, a2bus_uniprint_device, "a2uniprint", "Videx Uniprint Printer Interface")
diff --git a/src/devices/bus/a2bus/uniprint.h b/src/devices/bus/a2bus/uniprint.h
index 416ad6e8f54..57d6999b01e 100644
--- a/src/devices/bus/a2bus/uniprint.h
+++ b/src/devices/bus/a2bus/uniprint.h
@@ -26,50 +26,7 @@
#pragma once
#include "a2bus.h"
-#include "bus/centronics/ctronics.h"
-class a2bus_uniprint_device : public device_t, public device_a2bus_card_interface
-{
-public:
- a2bus_uniprint_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
-
- // DIP switch handlers
- DECLARE_INPUT_CHANGED_MEMBER(sw_msb);
-
- // device_a2bus_card_interface implementation
- virtual u8 read_c0nx(u8 offset) override;
- virtual void write_c0nx(u8 offset, u8 data) override;
- virtual u8 read_cnxx(u8 offset) override;
- virtual u8 read_c800(u16 offset) override;
-
-protected:
- // device_t implementation
- virtual tiny_rom_entry const *device_rom_region() const override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual ioport_constructor device_input_ports() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
-
- // timer handlers
- TIMER_CALLBACK_MEMBER(update_strobe);
-
-private:
- // printer status inputs
- DECLARE_WRITE_LINE_MEMBER(ack_w);
-
- required_device<centronics_device> m_printer_conn;
- required_device<output_latch_device> m_printer_out;
- required_ioport m_s1, m_s2;
- required_region_ptr<u8> m_rom;
- emu_timer * m_strobe_timer;
-
- u8 m_data_latch; // U6
- u8 m_ack_latch; // U2 (pin 9)
- u8 m_next_strobe; // U4 (pin 5)
- u8 m_ack_in; // printer connector pin 10
-};
-
-
-DECLARE_DEVICE_TYPE(A2BUS_UNIPRINT, a2bus_uniprint_device)
+DECLARE_DEVICE_TYPE(A2BUS_UNIPRINT, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_UNIPRINT_H
diff --git a/src/devices/bus/rs232/keyboard.h b/src/devices/bus/rs232/keyboard.h
index 55e7e9d10fc..190a33a49e4 100644
--- a/src/devices/bus/rs232/keyboard.h
+++ b/src/devices/bus/rs232/keyboard.h
@@ -5,8 +5,6 @@
#pragma once
-#pragma once
-
#include "rs232.h"
#include "machine/keyboard.h"
diff --git a/src/devices/bus/rs232/terminal.cpp b/src/devices/bus/rs232/terminal.cpp
index 1c753996ec1..24c37f5a0e2 100644
--- a/src/devices/bus/rs232/terminal.cpp
+++ b/src/devices/bus/rs232/terminal.cpp
@@ -3,6 +3,39 @@
#include "emu.h"
#include "terminal.h"
+#include "machine/terminal.h"
+
+
+namespace {
+
+class serial_terminal_device : public generic_terminal_device,
+ public device_buffered_serial_interface<16U>,
+ public device_rs232_port_interface
+{
+public:
+ serial_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) override { device_buffered_serial_interface::rx_w(state); }
+
+ DECLARE_WRITE_LINE_MEMBER(update_serial);
+
+protected:
+ virtual ioport_constructor device_input_ports() const override;
+ virtual void device_reset() override;
+
+ virtual void tra_callback() override;
+ virtual void send_key(uint8_t code) override;
+
+private:
+ virtual void received_byte(uint8_t byte) override;
+
+ required_ioport m_rs232_txbaud;
+ required_ioport m_rs232_rxbaud;
+ required_ioport m_rs232_databits;
+ required_ioport m_rs232_parity;
+ required_ioport m_rs232_stopbits;
+};
+
serial_terminal_device::serial_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: generic_terminal_device(mconfig, SERIAL_TERMINAL, tag, owner, clock, TERMINAL_WIDTH, TERMINAL_HEIGHT)
, device_buffered_serial_interface(mconfig, *this)
@@ -79,4 +112,7 @@ void serial_terminal_device::received_byte(uint8_t byte)
term_write(byte);
}
-DEFINE_DEVICE_TYPE(SERIAL_TERMINAL, serial_terminal_device, "serial_terminal", "Serial Terminal")
+} // anonymous namespace
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(SERIAL_TERMINAL, device_rs232_port_interface, serial_terminal_device, "serial_terminal", "Serial Terminal")
diff --git a/src/devices/bus/rs232/terminal.h b/src/devices/bus/rs232/terminal.h
index 32073efec4d..d1dd528bcf1 100644
--- a/src/devices/bus/rs232/terminal.h
+++ b/src/devices/bus/rs232/terminal.h
@@ -3,38 +3,11 @@
#ifndef MAME_BUS_RS232_TERMINAL_H
#define MAME_BUS_RS232_TERMINAL_H
-#include "rs232.h"
-#include "machine/terminal.h"
-
-
-class serial_terminal_device : public generic_terminal_device,
- public device_buffered_serial_interface<16U>,
- public device_rs232_port_interface
-{
-public:
- serial_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) override { device_buffered_serial_interface::rx_w(state); }
+#pragma once
- DECLARE_WRITE_LINE_MEMBER(update_serial);
-
-protected:
- virtual ioport_constructor device_input_ports() const override;
- virtual void device_reset() override;
-
- virtual void tra_callback() override;
- virtual void send_key(uint8_t code) override;
-
-private:
- virtual void received_byte(uint8_t byte) override;
+#include "rs232.h"
- required_ioport m_rs232_txbaud;
- required_ioport m_rs232_rxbaud;
- required_ioport m_rs232_databits;
- required_ioport m_rs232_parity;
- required_ioport m_rs232_stopbits;
-};
-DECLARE_DEVICE_TYPE(SERIAL_TERMINAL, serial_terminal_device)
+DECLARE_DEVICE_TYPE(SERIAL_TERMINAL, device_rs232_port_interface)
#endif // MAME_BUS_RS232_TERMINAL_H
diff --git a/src/lib/util/delegate.cpp b/src/lib/util/delegate.cpp
index 880df3bc505..8949f90f146 100644
--- a/src/lib/util/delegate.cpp
+++ b/src/lib/util/delegate.cpp
@@ -24,20 +24,6 @@
#define LOG(...) do { if (false) printf(__VA_ARGS__); } while (false)
#endif
-// on some architectures, function pointers point to descriptors
-// usually this is a global pointer value along with the branch target
-// other platforms using this convention include:
-// * AIX, Classic MacOS and WinNT on 32-bit POWER/PowerPC
-// * pretty much anything on Itanium
-// separately, on some architectures, function descriptors are stored in
-// vtables directly
-#if defined(__ia64__)
- #define MAME_DELEGATE_VT_DESCRIPTOR 1
-#endif
-#ifndef MAME_DELEGATE_VT_DESCRIPTOR
- #define MAME_DELEGATE_VT_DESCRIPTOR 0
-#endif
-
//**************************************************************************
@@ -102,7 +88,7 @@ delegate_generic_function delegate_mfp_itanium::convert_to_generic(delegate_gene
// byte index into the vtable to the function
std::uint8_t const *const vtable_ptr = *reinterpret_cast<std::uint8_t const *const *>(object) + m_function - ((MAME_ABI_CXX_ITANIUM_MFP_TYPE == MAME_ABI_CXX_ITANIUM_MFP_ARM) ? 0 : 1);
delegate_generic_function result;
- if (MAME_DELEGATE_VT_DESCRIPTOR)
+ if (MAME_ABI_CXX_VTABLE_FNDESC)
result = reinterpret_cast<delegate_generic_function>(uintptr_t(vtable_ptr));
else
result = *reinterpret_cast<delegate_generic_function const *>(vtable_ptr);
diff --git a/src/mame/machine/octo_kbd.h b/src/mame/machine/octo_kbd.h
index f6d4dd49f23..430167cc597 100644
--- a/src/mame/machine/octo_kbd.h
+++ b/src/mame/machine/octo_kbd.h
@@ -5,7 +5,8 @@
#pragma once
-#include "bus/rs232/keyboard.h"
+#include "bus/rs232/rs232.h"
+#include "machine/keyboard.h"
class octopus_keyboard_device : public buffered_rs232_device<16U>, protected device_matrix_keyboard_interface<16U>
{
diff --git a/src/mame/machine/x68k_kbd.h b/src/mame/machine/x68k_kbd.h
index e0c610462c0..58f6c57afa3 100644
--- a/src/mame/machine/x68k_kbd.h
+++ b/src/mame/machine/x68k_kbd.h
@@ -3,7 +3,11 @@
#ifndef MAME_MACHINE_X68K_KBD_H
#define MAME_MACHINE_X68K_KBD_H
-#include "bus/rs232/keyboard.h"
+#pragma once
+
+#include "bus/rs232/rs232.h"
+#include "machine/keyboard.h"
+
class x68k_keyboard_device : public buffered_rs232_device<16U>, protected device_matrix_keyboard_interface<15U>
{