Previous 15994 Revisions Next

r15481 Tuesday 19th June, 2012 at 13:17:54 UTC by Miodrag Milanović
Enabled ISA and keyboard slot to be referenced relative to owner (no whatsnew)
[src/mess/machine]isa.c isa.h pc_kbdc.c pc_kbdc.h southbridge.c

src/mess/machine/pc_kbdc.c
r15480r15481
3636}
3737
3838
39void pc_kbdc_slot_device::static_set_pc_kbdc_slot(device_t &device, const char *tag)
39void pc_kbdc_slot_device::static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device)
4040{
4141   pc_kbdc_slot_device &pc_kbdc = dynamic_cast<pc_kbdc_slot_device &>(device);
42   pc_kbdc.m_pc_kbdc_tag = tag;
42   pc_kbdc.m_kbdc_device = kbdc_device;
4343}
4444
4545//-------------------------------------------------
r15480r15481
5252
5353   if (pc_kbd)
5454   {
55      device_pc_kbd_interface::static_set_pc_kbdc_tag( *pc_kbd, m_pc_kbdc_tag );
55      device_pc_kbd_interface::static_set_pc_kbdc( *pc_kbd, m_kbdc_device );
5656   }
5757}
5858
r15480r15481
235235}
236236
237237
238void device_pc_kbd_interface::static_set_pc_kbdc_tag(device_t &device, const char *tag)
238void device_pc_kbd_interface::static_set_pc_kbdc(device_t &device, device_t *kbdc_device)
239239{
240240   device_pc_kbd_interface &pc_kbd = dynamic_cast<device_pc_kbd_interface &>(device);
241   pc_kbd.m_pc_kbdc_tag = tag;
241   pc_kbd.m_pc_kbdc = dynamic_cast<pc_kbdc_device *>(kbdc_device);
242242}
243243
244244
245245void device_pc_kbd_interface::set_pc_kbdc_device()
246246{
247   m_pc_kbdc = dynamic_cast<pc_kbdc_device *>(device().machine().device(m_pc_kbdc_tag));
248
249247   if ( m_pc_kbdc )
250248   {
251249      m_pc_kbdc->set_keyboard( this );
src/mess/machine/pc_kbdc.h
r15480r15481
2626#define MCFG_PC_KBDC_SLOT_ADD(_kbdc_tag, _tag, _slot_intf, _def_slot, _def_inp ) \
2727   MCFG_DEVICE_ADD(_tag, PC_KBDC_SLOT, 0 ) \
2828   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false) \
29   pc_kbdc_slot_device::static_set_pc_kbdc_slot(*device, _kbdc_tag ); \
29   pc_kbdc_slot_device::static_set_pc_kbdc_slot(*device, owner->subdevice(_kbdc_tag) ); \
3030
3131
3232//**************************************************************************
r15480r15481
4545   virtual void device_start();
4646
4747   // inline configuration
48   static void static_set_pc_kbdc_slot(device_t &device, const char *tag);
48   static void static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device);
4949protected:
5050   // configuration
51   const char *m_pc_kbdc_tag;
51   device_t *m_kbdc_device;
5252};
5353
5454
r15480r15481
134134   virtual DECLARE_WRITE_LINE_MEMBER( data_write );
135135
136136   // inline configuration
137   static void static_set_pc_kbdc_tag(device_t &device, const char *tag);
137   static void static_set_pc_kbdc(device_t &device, device_t *kbdc_device);
138138
139139   pc_kbdc_device         *m_pc_kbdc;
140140   const char            *m_pc_kbdc_tag;
src/mess/machine/isa.c
r15480r15481
3434{
3535}
3636
37void isa8_slot_device::static_set_isa8_slot(device_t &device, const char *tag)
37void isa8_slot_device::static_set_isa8_slot(device_t &device, device_t *isa_device)
3838{
3939   isa8_slot_device &isa_card = dynamic_cast<isa8_slot_device &>(device);
40   isa_card.m_isa_tag = tag;
40   isa_card.m_isa = isa_device;
4141}
4242
4343//-------------------------------------------------
r15480r15481
5151   if (get_card_device()->interface(intf))
5252      fatalerror("Error ISA16 device in ISA8 slot\n");
5353
54   if (dev) device_isa8_card_interface::static_set_isabus_tag(*dev,m_isa_tag);
54   if (dev) device_isa8_card_interface::static_set_isabus(*dev,m_isa);
5555}
5656
5757
r15480r15481
7474{
7575}
7676
77void isa16_slot_device::static_set_isa16_slot(device_t &device, const char *tag)
77void isa16_slot_device::static_set_isa16_slot(device_t &device, device_t *isa_device)
7878{
7979   isa16_slot_device &isa_card = dynamic_cast<isa16_slot_device &>(device);
80   isa_card.m_isa_tag = tag;
80   isa_card.m_isa = isa_device;
8181}
8282
8383//-------------------------------------------------
r15480r15481
8787void isa16_slot_device::device_start()
8888{
8989   device_isa8_card_interface *dev = dynamic_cast<device_isa8_card_interface *>(get_card_device());
90   if (dev) device_isa8_card_interface::static_set_isabus_tag(*dev,m_isa_tag);
90   if (dev) device_isa8_card_interface::static_set_isabus(*dev,m_isa);
9191}
9292
9393
r15480r15481
422422
423423device_isa8_card_interface::device_isa8_card_interface(const machine_config &mconfig, device_t &device)
424424   : device_slot_card_interface(mconfig, device),
425     m_isa(NULL),
426     m_isa_tag(NULL)
425     m_isa(NULL)
427426{
428427}
429428
r15480r15481
447446{
448447}
449448
450void device_isa8_card_interface::static_set_isabus_tag(device_t &device, const char *tag)
449void device_isa8_card_interface::static_set_isabus(device_t &device, device_t *isa_device)
451450{
452451   device_isa8_card_interface &isa_card = dynamic_cast<device_isa8_card_interface &>(device);
453   isa_card.m_isa_tag = tag;
452   isa_card.m_isa_dev = isa_device;
454453}
455454
456455void device_isa8_card_interface::set_isa_device()
457456{
458   m_isa = dynamic_cast<isa8_device *>(device().machine().device(m_isa_tag));
457   m_isa = dynamic_cast<isa8_device *>(m_isa_dev);
459458}
460459
461460
r15480r15481
631630
632631void device_isa16_card_interface::set_isa_device()
633632{
634   m_isa = dynamic_cast<isa16_device *>(device().machine().device(m_isa_tag));
633   m_isa = dynamic_cast<isa16_device *>(m_isa_dev);
635634}
src/mess/machine/isa.h
r15480r15481
8080#define MCFG_ISA8_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _def_inp, _fixed) \
8181    MCFG_DEVICE_ADD(_tag, ISA8_SLOT, 0) \
8282   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, _fixed) \
83   isa8_slot_device::static_set_isa8_slot(*device, _isatag); \
83   isa8_slot_device::static_set_isa8_slot(*device, owner->subdevice(_isatag)); \
8484
8585#define MCFG_ISA16_BUS_ADD(_tag, _cputag, _config) \
8686    MCFG_DEVICE_ADD(_tag, ISA16, 0) \
r15480r15481
9090#define MCFG_ISA16_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _def_inp, _fixed) \
9191    MCFG_DEVICE_ADD(_tag, ISA16_SLOT, 0) \
9292   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, _fixed) \
93   isa16_slot_device::static_set_isa16_slot(*device, _isatag); \
93   isa16_slot_device::static_set_isa16_slot(*device, owner->subdevice(_isatag)); \
9494
9595//**************************************************************************
9696//  TYPE DEFINITIONS
r15480r15481
110110   virtual void device_start();
111111
112112    // inline configuration
113    static void static_set_isa8_slot(device_t &device, const char *tag);
113    static void static_set_isa8_slot(device_t &device, device_t *isa_device);
114114protected:
115115   // configuration
116   const char *m_isa_tag;
116   device_t *m_isa;
117117};
118118
119119// device type definition
r15480r15481
232232   virtual void eop_w(int state);
233233
234234    // inline configuration
235    static void static_set_isabus_tag(device_t &device, const char *tag);
235    static void static_set_isabus(device_t &device, device_t *isa_device);
236236public:
237237   isa8_device  *m_isa;
238   const char *m_isa_tag;
238   device_t     *m_isa_dev;
239239   device_isa8_card_interface *m_next;
240240};
241241
r15480r15481
276276   virtual void device_start();
277277
278278    // inline configuration
279    static void static_set_isa16_slot(device_t &device, const char *tag);
279    static void static_set_isa16_slot(device_t &device, device_t *isa_device);
280280};
281281
282282
src/mess/machine/southbridge.c
r15480r15481
155155
156156   MCFG_AT_KEYBOARD_CONTROLLER_ADD("keybc", XTAL_12MHz, keyboard_controller_intf)
157157   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
158   MCFG_PC_KBDC_SLOT_ADD(":sb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL, NULL)
158   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL, NULL)
159159
160160   MCFG_MC146818_IRQ_ADD( "rtc", MC146818_STANDARD, at_mc146818_config )
161161
r15480r15481
166166
167167   MCFG_ISA16_BUS_ADD("isabus", ":maincpu", isabus_intf)
168168   // on board devices
169   MCFG_ISA16_SLOT_ADD(":sb:isabus","board1", pc_isa16_cards, "fdcsmc", NULL, true)
170   MCFG_ISA16_SLOT_ADD(":sb:isabus","board2", pc_isa16_cards, "comat", NULL, true)
171   MCFG_ISA16_SLOT_ADD(":sb:isabus","board3", pc_isa16_cards, "ide", NULL, true)
172   MCFG_ISA16_SLOT_ADD(":sb:isabus","board4", pc_isa16_cards, "lpt", NULL, true)
169   MCFG_ISA16_SLOT_ADD("isabus","board1", pc_isa16_cards, "fdcsmc", NULL, true)
170   MCFG_ISA16_SLOT_ADD("isabus","board2", pc_isa16_cards, "comat", NULL, true)
171   MCFG_ISA16_SLOT_ADD("isabus","board3", pc_isa16_cards, "ide", NULL, true)
172   MCFG_ISA16_SLOT_ADD("isabus","board4", pc_isa16_cards, "lpt", NULL, true)
173173MACHINE_CONFIG_END
174174
175175

Previous 15994 Revisions Next


© 1998-2018 The MESS Team