Previous 199869 Revisions Next

r28722 Wednesday 19th March, 2014 at 14:19:50 UTC by Curt Coder
(MESS) ep64: Cleaned up devcb2. (nw)
[src/emu/bus/ep64]exp.c exp.h
[src/mess/audio]dave.h
[src/mess/drivers]ep64.c
[src/mess/video]nick.h

trunk/src/emu/bus/ep64/exp.h
r28721r28722
6767//  INTERFACE CONFIGURATION MACROS
6868//**************************************************************************
6969
70#define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _dave_tag, _def_slot) \
70#define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _def_slot) \
7171   MCFG_DEVICE_ADD(_tag, EP64_EXPANSION_BUS_SLOT, 0) \
7272   MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false) \
73   downcast<ep64_expansion_bus_slot_device *>(device)->set_dave_tag(_dave_tag);
7473
75#define MCFG_EP64_EXPANSION_BUS_CALLBACKS(_irq, _nmi, _wait) \
76   downcast<ep64_expansion_bus_slot_device *>(device)->set_irq_callback(DEVCB2_##_irq); \
77   downcast<ep64_expansion_bus_slot_device *>(device)->set_nmi_callback(DEVCB2_##_nmi); \
78   downcast<ep64_expansion_bus_slot_device *>(device)->set_wait_callback(DEVCB2_##_wait);
7974
75#define MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(_tag) \
76   ep64_expansion_bus_slot_device::static_set_dave_tag(*device, "^"_tag);
8077
78#define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \
79   devcb = &ep64_expansion_bus_slot_device::set_irq_wr_callback(*device, DEVCB2_##_write);
8180
81#define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \
82   devcb = &ep64_expansion_bus_slot_device::set_nmi_wr_callback(*device, DEVCB2_##_write);
83
84#define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \
85   devcb = &ep64_expansion_bus_slot_device::set_wait_wr_callback(*device, DEVCB2_##_write);
86
87
88
8289//**************************************************************************
8390//  TYPE DEFINITIONS
8491//**************************************************************************
r28721r28722
8895class device_ep64_expansion_bus_card_interface;
8996
9097class ep64_expansion_bus_slot_device : public device_t,
91                              public device_slot_interface
98                              public device_slot_interface
9299{
93100   friend class device_ep64_expansion_bus_card_interface;
94101
r28721r28722
96103   // construction/destruction
97104   ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
98105
99   void set_dave_tag(const char* dave_tag) { m_dave_tag = dave_tag; }
100   template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
101   template<class _nmi> void set_nmi_callback(_nmi nmi) { m_write_nmi.set_callback(nmi); }
102   template<class _wait> void set_wait_callback(_wait wait) { m_write_wait.set_callback(wait); }
106   static void static_set_dave_tag(device_t &device, const char* tag) { downcast<ep64_expansion_bus_slot_device &>(device).m_dave.set_tag(tag); }
107   template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_irq.set_callback(object); }
108   template<class _Object> static devcb2_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_nmi.set_callback(object); }
109   template<class _Object> static devcb2_base &set_wait_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_wait.set_callback(object); }
103110
104111   DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); }
105112   DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); }
r28721r28722
118125   devcb2_write_line m_write_nmi;
119126   devcb2_write_line m_write_wait;
120127
121   const char *m_dave_tag;
122   dave_device *m_dave;
128   required_device<dave_device> m_dave;
123129
124130   device_ep64_expansion_bus_card_interface *m_card;
125131};
trunk/src/emu/bus/ep64/exp.c
r28721r28722
5050   device_slot_interface(mconfig, *this),
5151   m_write_irq(*this),
5252   m_write_nmi(*this),
53   m_write_wait(*this)
53   m_write_wait(*this),
54   m_dave(*this)
5455{
5556}
5657
r28721r28722
6162
6263void ep64_expansion_bus_slot_device::device_start()
6364{
64   m_dave = dynamic_cast<dave_device *>(m_owner->subdevice(m_dave_tag));
6565   m_card = dynamic_cast<device_ep64_expansion_bus_card_interface *>(get_card_device());
6666
6767   // resolve callbacks
trunk/src/mess/drivers/ep64.c
r28721r28722
525525   MCFG_CPU_IO_MAP(ep64_io)
526526
527527   // video hardware
528   MCFG_NICK_ADD(NICK_TAG, SCREEN_TAG, XTAL_8MHz, DEVWRITELINE(DAVE_TAG, dave_device, int1_w))
528   MCFG_NICK_ADD(NICK_TAG, SCREEN_TAG, XTAL_8MHz)
529   MCFG_NICK_VIRQ_CALLBACK(DEVWRITELINE(DAVE_TAG, dave_device, int1_w))
529530
530531   // sound hardware
531   MCFG_DAVE_ADD(DAVE_TAG, XTAL_8MHz, INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), dave_64k_mem, dave_io)
532   MCFG_DAVE_ADD(DAVE_TAG, XTAL_8MHz, dave_64k_mem, dave_io)
533   MCFG_DAVE_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
532534
533535   // devices
534   MCFG_EP64_EXPANSION_BUS_SLOT_ADD(EP64_EXPANSION_BUS_TAG, DAVE_TAG, NULL)
535   MCFG_EP64_EXPANSION_BUS_CALLBACKS(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), INPUTLINE(Z80_TAG, INPUT_LINE_NMI), INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT))
536   MCFG_EP64_EXPANSION_BUS_SLOT_ADD(EP64_EXPANSION_BUS_TAG, NULL)
537   MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(DAVE_TAG)
538   MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
539   MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_NMI))
540   MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT))
536541
537542   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "image")
538543   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(ep64_state, write_centronics_busy))
539
540544   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
541545
542546   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
trunk/src/mess/audio/dave.h
r28721r28722
2626//  INTERFACE CONFIGURATION MACROS
2727///*************************************************************************
2828
29#define MCFG_DAVE_ADD(_tag, _clock, _irq, _program_map, _io_map) \
29#define MCFG_DAVE_ADD(_tag, _clock, _program_map, _io_map) \
3030   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") \
3131   MCFG_SOUND_ADD(_tag, DAVE, _clock) \
3232   MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) \
3333   MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) \
3434   MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, _program_map) \
35   MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map) \
36   downcast<dave_device *>(device)->set_irq_callback(DEVCB2_##_irq);
35   MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map)
3736
3837
38#define MCFG_DAVE_IRQ_CALLBACK(_write) \
39   devcb = &dave_device::set_irq_wr_callback(*device, DEVCB2_##_write);
3940
41#define MCFG_DAVE_LH_CALLBACK(_write) \
42   devcb = &dave_device::set_lh_wr_callback(*device, DEVCB2_##_write);
43
44#define MCFG_DAVE_RH_CALLBACK(_write) \
45   devcb = &dave_device::set_rh_wr_callback(*device, DEVCB2_##_write);
46
47
48
4049///*************************************************************************
4150//  TYPE DEFINITIONS
4251///*************************************************************************
r28721r28722
5059public:
5160   dave_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
5261
53   template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
54   template<class _lh, class _rh> void set_dac_callbacks(_lh lh, _rh rh) {
55      m_write_lh.set_callback(lh);
56      m_write_rh.set_callback(rh);
57   }
62   template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_irq.set_callback(object); }
63   template<class _Object> static devcb2_base &set_lh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_lh.set_callback(object); }
64   template<class _Object> static devcb2_base &set_rh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_rh.set_callback(object); }
5865
5966   virtual DECLARE_ADDRESS_MAP(z80_program_map, 8);
6067   virtual DECLARE_ADDRESS_MAP(z80_io_map, 8);
trunk/src/mess/video/nick.h
r28721r28722
2222//  INTERFACE CONFIGURATION MACROS
2323///*************************************************************************
2424
25#define MCFG_NICK_ADD(_tag, _screen_tag, _clock, _virq) \
25#define MCFG_NICK_ADD(_tag, _screen_tag, _clock) \
2626   MCFG_SCREEN_ADD(_screen_tag, RASTER) \
2727   MCFG_SCREEN_REFRESH_RATE(50) \
2828   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
r28721r28722
3030   MCFG_SCREEN_VISIBLE_AREA(0, ENTERPRISE_SCREEN_WIDTH-1, 0, ENTERPRISE_SCREEN_HEIGHT-1) \
3131   MCFG_SCREEN_UPDATE_DEVICE(_tag, nick_device, screen_update) \
3232   MCFG_DEVICE_ADD(_tag, NICK, _clock) \
33   MCFG_VIDEO_SET_SCREEN(_screen_tag) \
34   downcast<nick_device *>(device)->set_virq_callback(DEVCB2_##_virq);
33   MCFG_VIDEO_SET_SCREEN(_screen_tag)
3534
3635
36#define MCFG_NICK_VIRQ_CALLBACK(_write) \
37   devcb = &nick_device::set_virq_wr_callback(*device, DEVCB2_##_write);
38
39
3740/* there are 64us per line, although in reality
3841 about 50 are visible. */
3942#define ENTERPRISE_SCREEN_WIDTH (50*16)
r28721r28722
7376   // construction/destruction
7477   nick_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
7578
76   template<class _virq> void set_virq_callback(_virq virq) { m_write_virq.set_callback(virq); }
79   template<class _Object> static devcb2_base &set_virq_wr_callback(device_t &device, _Object object) { return downcast<nick_device &>(device).m_write_virq.set_callback(object); }
7780
7881   virtual DECLARE_ADDRESS_MAP(vram_map, 8);
7982   virtual DECLARE_ADDRESS_MAP(vio_map, 8);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team