diff options
Diffstat (limited to 'src/devices/bus/vme/vme_fccpu20.h')
-rw-r--r-- | src/devices/bus/vme/vme_fccpu20.h | 128 |
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 |