summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/fidel_as12.cpp
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2019-07-02 15:02:54 +0200
committer hap <happppp@users.noreply.github.com>2019-07-02 15:02:54 +0200
commit248ba3ebd45128b94e6de688c590d7dbd3fa42ae (patch)
tree731832624f0291a4cb01c585ea5724dfe9d7fb6b /src/mame/drivers/fidel_as12.cpp
parent11782b47bd8fcc670ad259d7fe08de86a97f5eb5 (diff)
fidelbase: remove interrupt and cartridge handlers (nw)
Diffstat (limited to 'src/mame/drivers/fidel_as12.cpp')
-rw-r--r--src/mame/drivers/fidel_as12.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/mame/drivers/fidel_as12.cpp b/src/mame/drivers/fidel_as12.cpp
index 9230a46b792..45a66a11982 100644
--- a/src/mame/drivers/fidel_as12.cpp
+++ b/src/mame/drivers/fidel_as12.cpp
@@ -21,7 +21,11 @@ magnetic chess board sensors. See fidel_sc12.cpp for a more technical descriptio
#include "includes/fidelbase.h"
#include "cpu/m6502/r65c02.h"
+#include "machine/timer.h"
#include "sound/volt_reg.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+#include "softlist.h"
#include "speaker.h"
// internal artwork
@@ -34,16 +38,28 @@ class as12_state : public fidelbase_state
{
public:
as12_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
+ fidelbase_state(mconfig, type, tag),
+ m_irq_on(*this, "irq_on"),
+ m_cart(*this, "cartslot")
{ }
// machine drivers
void as12(machine_config &config);
private:
+ // devices/pointers
+ required_device<timer_device> m_irq_on;
+ required_device<generic_slot_device> m_cart;
+
// address maps
void main_map(address_map &map);
+ // periodic interrupts
+ template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
+ template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
+
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
+
// I/O handlers
void update_display();
DECLARE_WRITE8_MEMBER(control_w);
@@ -56,6 +72,18 @@ private:
Devices, I/O
******************************************************************************/
+// cartridge
+
+DEVICE_IMAGE_LOAD_MEMBER(as12_state::cart_load)
+{
+ u32 size = m_cart->common_get_size("rom");
+ m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
+ return image_init_result::PASS;
+}
+
+
// TTL/generic
void as12_state::update_display()
@@ -104,7 +132,7 @@ void as12_state::main_map(address_map &map)
map.unmap_value_high();
map(0x0000, 0x0fff).ram();
map(0x1800, 0x1807).w(FUNC(as12_state::led_w)).nopr();
- map(0x2000, 0x5fff).r(FUNC(as12_state::cartridge_r));
+ map(0x2000, 0x5fff).r("cartslot", FUNC(generic_slot_device::read_rom));
map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(as12_state::control_w));
map(0x8000, 0x9fff).rom();
map(0xa000, 0xa007).mirror(0x1ff8).r(FUNC(as12_state::input_r));