mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
bml3: Partial bus modernization (nw)
This commit is contained in:
parent
07f0725d44
commit
6af25d6ca5
@ -102,13 +102,13 @@ bml3bus_device::bml3bus_device(const machine_config &mconfig, const char *tag, d
|
||||
|
||||
bml3bus_device::bml3bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, type, tag, owner, clock),
|
||||
m_maincpu(*this, finder_base::DUMMY_TAG),
|
||||
m_space(*this, finder_base::DUMMY_TAG, -1, 8),
|
||||
m_out_nmi_cb(*this),
|
||||
m_out_irq_cb(*this),
|
||||
m_out_firq_cb(*this),
|
||||
m_cputag(nullptr)
|
||||
m_out_firq_cb(*this)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
@ -20,18 +20,6 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_BML3BUS_CPU(_cputag) \
|
||||
downcast<bml3bus_device &>(*device).set_cputag(_cputag);
|
||||
|
||||
#define MCFG_BML3BUS_OUT_NMI_CB(_devcb) \
|
||||
downcast<bml3bus_device &>(*device).set_out_nmi_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_BML3BUS_OUT_IRQ_CB(_devcb) \
|
||||
downcast<bml3bus_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_BML3BUS_OUT_FIRQ_CB(_devcb) \
|
||||
downcast<bml3bus_device &>(*device).set_out_firq_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_BML3BUS_SLOT_ADD(_nbtag, _tag, _slot_intf, _def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, BML3BUS_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
|
||||
@ -83,10 +71,10 @@ public:
|
||||
bml3bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// inline configuration
|
||||
void set_cputag(const char *tag) { m_maincpu.set_tag(tag); }
|
||||
template <class Object> devcb_base &set_out_nmi_callback(Object &&cb) { return m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_out_firq_callback(Object &&cb) { return m_out_firq_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> void set_space(Object &&tag, int spacenum) { m_space.set_tag(std::forward<Object>(tag), spacenum); }
|
||||
auto nmi_callback() { return m_out_nmi_cb.bind(); }
|
||||
auto irq_callback() { return m_out_irq_cb.bind(); }
|
||||
auto firq_callback() { return m_out_firq_cb.bind(); }
|
||||
|
||||
void add_bml3bus_card(int slot, device_bml3bus_card_interface *card);
|
||||
device_bml3bus_card_interface *get_bml3bus_card(int slot);
|
||||
@ -99,7 +87,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( irq_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( firq_w );
|
||||
|
||||
address_space &space() const { return m_maincpu->space(AS_PROGRAM); }
|
||||
address_space &space() const { return *m_space; }
|
||||
|
||||
protected:
|
||||
bml3bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||
@ -109,14 +97,13 @@ protected:
|
||||
virtual void device_reset() override;
|
||||
|
||||
// internal state
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_address_space m_space;
|
||||
|
||||
devcb_write_line m_out_nmi_cb;
|
||||
devcb_write_line m_out_irq_cb;
|
||||
devcb_write_line m_out_firq_cb;
|
||||
|
||||
device_bml3bus_card_interface *m_device_list[BML3BUS_MAX_SLOTS];
|
||||
const char *m_cputag;
|
||||
};
|
||||
|
||||
|
||||
|
@ -107,9 +107,6 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(bml3_firq_mask_w);
|
||||
DECLARE_READ8_MEMBER(bml3_firq_status_r);
|
||||
DECLARE_WRITE8_MEMBER(relay_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bml3bus_nmi_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bml3bus_irq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bml3bus_firq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bml3_acia_tx_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bml3_acia_rts_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bml3_acia_irq_w);
|
||||
@ -386,21 +383,6 @@ READ8_MEMBER( bml3_state::bml3_firq_status_r )
|
||||
return res;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bml3_state::bml3bus_nmi_w)
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bml3_state::bml3bus_irq_w)
|
||||
{
|
||||
m_maincpu->set_input_line(M6809_IRQ_LINE, state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bml3_state::bml3bus_firq_w)
|
||||
{
|
||||
m_maincpu->set_input_line(M6809_FIRQ_LINE, state);
|
||||
}
|
||||
|
||||
|
||||
void bml3_state::bml3_mem(address_map &map)
|
||||
{
|
||||
@ -959,7 +941,7 @@ static void bml3_cards(device_slot_interface &device)
|
||||
|
||||
MACHINE_CONFIG_START(bml3_state::bml3_common)
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu",M6809, CPU_CLOCK)
|
||||
MCFG_DEVICE_ADD(m_maincpu, MC6809, CPU_EXT_CLOCK)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bml3_state, bml3_timer_firq)
|
||||
// MCFG_DEVICE_PERIODIC_INT_DRIVER(bml3_state, bml3_firq, 45)
|
||||
|
||||
@ -1008,11 +990,11 @@ MACHINE_CONFIG_START(bml3_state::bml3_common)
|
||||
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
|
||||
/* slot devices */
|
||||
MCFG_DEVICE_ADD("bml3bus", BML3BUS, 0)
|
||||
MCFG_BML3BUS_CPU("maincpu")
|
||||
MCFG_BML3BUS_OUT_NMI_CB(WRITELINE(*this, bml3_state, bml3bus_nmi_w))
|
||||
MCFG_BML3BUS_OUT_IRQ_CB(WRITELINE(*this, bml3_state, bml3bus_irq_w))
|
||||
MCFG_BML3BUS_OUT_FIRQ_CB(WRITELINE(*this, bml3_state, bml3bus_firq_w))
|
||||
bml3bus_device &bus(BML3BUS(config, "bml3bus", 0));
|
||||
bus.set_space(m_maincpu, AS_PROGRAM);
|
||||
bus.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
bus.irq_callback().set_inputline(m_maincpu, M6809_IRQ_LINE);
|
||||
bus.firq_callback().set_inputline(m_maincpu, M6809_FIRQ_LINE);
|
||||
/* Default to MP-1805 disk (3" or 5.25" SS/SD), as our MB-6892 ROM dump includes
|
||||
the MP-1805 ROM.
|
||||
User may want to switch this to MP-1802 (5.25" DS/DD).
|
||||
|
Loading…
Reference in New Issue
Block a user