summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/vme/vme_fccpu20.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/vme/vme_fccpu20.h')
-rw-r--r--src/devices/bus/vme/vme_fccpu20.h128
1 files changed, 75 insertions, 53 deletions
diff --git a/src/devices/bus/vme/vme_fccpu20.h b/src/devices/bus/vme/vme_fccpu20.h
index fe92435a5a6..8bc9cbb2c4b 100644
--- a/src/devices/bus/vme/vme_fccpu20.h
+++ b/src/devices/bus/vme/vme_fccpu20.h
@@ -1,37 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef VME_FCCPU20_H
-#define VME_FCCPU20_H
-#pragma once
+#ifndef MAME_BUS_VME_VME_FCCPU20_H
+#define MAME_BUS_VME_VME_FCCPU20_H
+#pragma once
+#include "bus/vme/vme.h"
#include "machine/68561mpcc.h"
#include "machine/68230pit.h"
#include "machine/68153bim.h"
-#include "bus/vme/vme.h"
-extern const device_type VME_FCCPU20;
-extern const device_type VME_FCCPU21S;
-extern const device_type VME_FCCPU21;
-extern const device_type VME_FCCPU21A;
-extern const device_type VME_FCCPU21YA;
-extern const device_type VME_FCCPU21B;
-extern const device_type VME_FCCPU21YB;
-
-// PIT port C Board ID bits
-#define CPU20 0x40
-#define CPU21 0x00
-
-/* Board types */
-enum fc_board_t {
- cpu20,
- cpu21,
- cpu21a,
- cpu21ya,
- cpu21b,
- cpu21yb,
- cpu21s
-};
+DECLARE_DEVICE_TYPE(VME_FCCPU20, vme_fccpu20_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21S, vme_fccpu21s_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21, vme_fccpu21_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21A, vme_fccpu21a_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21YA, vme_fccpu21ya_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21B, vme_fccpu21b_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21YB, vme_fccpu21yb_card_device)
//**************************************************************************
// Base Device declaration
@@ -39,26 +24,48 @@ enum fc_board_t {
class vme_fccpu20_device : public device_t, public device_vme_card_interface
{
public:
- vme_fccpu20_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, fc_board_t board_id);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_start() override;
// Below are duplicated declarations from src/mame/drivers/fccpu20.cpp
DECLARE_READ32_MEMBER (bootvect_r);
DECLARE_WRITE32_MEMBER (bootvect_w);
DECLARE_WRITE_LINE_MEMBER(bim_irq_callback);
- uint8_t bim_irq_state;
- int bim_irq_level;
/* PIT callbacks */
DECLARE_READ8_MEMBER (pita_r);
DECLARE_READ8_MEMBER (pitb_r);
DECLARE_READ8_MEMBER (pitc_r);
+protected:
+ // PIT port C Board ID bits
+ static constexpr unsigned CPU20 = 0x40;
+ static constexpr unsigned CPU21 = 0x00;
+
+ /* Board types */
+ enum fc_board_t {
+ cpu20,
+ cpu21,
+ cpu21a,
+ cpu21ya,
+ cpu21b,
+ cpu21yb,
+ cpu21s
+ };
+
+ vme_fccpu20_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, fc_board_t board_id);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ uint8_t bim_irq_state;
+ int bim_irq_level;
+
+ emu_timer *m_arbiter_start; // Need a startup delay because it is hooked up to the sense inputs of the PIT
+
private:
required_device<cpu_device> m_maincpu;
required_device<pit68230_device> m_pit;
@@ -71,13 +78,7 @@ private:
uint32_t *m_sysrom;
uint32_t m_sysram[2];
void update_irq_to_maincpu();
- fc_board_t m_board_id;
-
- // Below replaces machine_start and machine_reset from src/mame/drivers/fccpu20.cpp
-protected:
- virtual void device_reset() override;
- virtual void device_timer (emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- emu_timer *m_arbiter_start; // Need a startup delay because it is hooked up to the sense inputs of the PIT
+ const fc_board_t m_board_id;
};
//**************************************************************************
@@ -88,57 +89,78 @@ class vme_fccpu20_card_device : public vme_fccpu20_device
{
public :
vme_fccpu20_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu20_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu20) { }
+
+protected:
+ vme_fccpu20_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu20)
+ { }
};
class vme_fccpu21s_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21s_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21s_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21s) { }
+
+protected:
+ vme_fccpu21s_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21s)
+ { }
};
class vme_fccpu21_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21) { }
+
+protected:
+ vme_fccpu21_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21)
+ { }
};
class vme_fccpu21a_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21a_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21a_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21a) { }
+
+protected:
+ vme_fccpu21a_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21a)
+ { }
};
class vme_fccpu21ya_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21ya_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21ya_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21ya) { }
+
+protected:
+ vme_fccpu21ya_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21ya)
+ { }
};
class vme_fccpu21b_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21b_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21b_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21b) { }
+
+protected:
+ vme_fccpu21b_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21b)
+ { }
};
class vme_fccpu21yb_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21yb_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21yb_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21yb) { }
+
+protected:
+ vme_fccpu21yb_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21yb)
+ { }
};
-#endif // VME_FCCPU20_H
+#endif // MAME_BUS_VME_VME_FCCPU20_H