summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/mc10/pak.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/mc10/pak.cpp')
-rw-r--r--src/devices/bus/mc10/pak.cpp35
1 files changed, 30 insertions, 5 deletions
diff --git a/src/devices/bus/mc10/pak.cpp b/src/devices/bus/mc10/pak.cpp
index e6de96a7995..aa41f9079b2 100644
--- a/src/devices/bus/mc10/pak.cpp
+++ b/src/devices/bus/mc10/pak.cpp
@@ -11,11 +11,33 @@
#include "emu.h"
#include "pak.h"
+
+namespace {
+
//**************************************************************************
-// GLOBAL VARIABLES
+// TYPE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(MC10_PAK, mc10_pak_device, "mc10pak", "MC-10 Program PAK")
+// ======================> mc10_pak_device
+
+class mc10_pak_device :
+ public device_t,
+ public device_mc10cart_interface
+{
+public:
+ // construction/destruction
+ mc10_pak_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual int max_rom_length() const override;
+
+ virtual std::pair<std::error_condition, std::string> load() override;
+
+protected:
+ mc10_pak_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ // device_t implementation
+ virtual void device_start() override ATTR_COLD;
+};
//**************************************************************************
// LIVE DEVICE
@@ -36,7 +58,7 @@ mc10_pak_device::mc10_pak_device(const machine_config &mconfig, const char *tag,
}
//-------------------------------------------------
-// max_rom_length - device-specific startup
+// rom constraints
//-------------------------------------------------
int mc10_pak_device::max_rom_length() const
@@ -59,11 +81,14 @@ void mc10_pak_device::device_start()
std::pair<std::error_condition, std::string> mc10_pak_device::load()
{
memory_region *const romregion(memregion("^rom"));
- if (!romregion)
- return std::make_pair(image_error::BADSOFTWARE, "Software item lacks 'rom' data area");
+ assert(romregion != nullptr);
// if the host has supplied a ROM space, install it
owning_slot().memspace().install_rom(0x5000, 0x5000 + romregion->bytes(), romregion->base());
return std::make_pair(std::error_condition(), std::string());
}
+
+} // anonymous namespace
+
+DEFINE_DEVICE_TYPE_PRIVATE(MC10_PAK, device_mc10cart_interface, mc10_pak_device, "mc10pak", "MC-10 Program PAK")