src/mess/machine/pc_kbdc.c
| r15480 | r15481 | |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | |
| 39 | | void pc_kbdc_slot_device::static_set_pc_kbdc_slot(device_t &device, const char *tag) |
| 39 | void pc_kbdc_slot_device::static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device) |
| 40 | 40 | { |
| 41 | 41 | 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; |
| 43 | 43 | } |
| 44 | 44 | |
| 45 | 45 | //------------------------------------------------- |
| r15480 | r15481 | |
| 52 | 52 | |
| 53 | 53 | if (pc_kbd) |
| 54 | 54 | { |
| 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 ); |
| 56 | 56 | } |
| 57 | 57 | } |
| 58 | 58 | |
| r15480 | r15481 | |
| 235 | 235 | } |
| 236 | 236 | |
| 237 | 237 | |
| 238 | | void device_pc_kbd_interface::static_set_pc_kbdc_tag(device_t &device, const char *tag) |
| 238 | void device_pc_kbd_interface::static_set_pc_kbdc(device_t &device, device_t *kbdc_device) |
| 239 | 239 | { |
| 240 | 240 | 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); |
| 242 | 242 | } |
| 243 | 243 | |
| 244 | 244 | |
| 245 | 245 | void device_pc_kbd_interface::set_pc_kbdc_device() |
| 246 | 246 | { |
| 247 | | m_pc_kbdc = dynamic_cast<pc_kbdc_device *>(device().machine().device(m_pc_kbdc_tag)); |
| 248 | | |
| 249 | 247 | if ( m_pc_kbdc ) |
| 250 | 248 | { |
| 251 | 249 | m_pc_kbdc->set_keyboard( this ); |
src/mess/machine/pc_kbdc.h
| r15480 | r15481 | |
| 26 | 26 | #define MCFG_PC_KBDC_SLOT_ADD(_kbdc_tag, _tag, _slot_intf, _def_slot, _def_inp ) \ |
| 27 | 27 | MCFG_DEVICE_ADD(_tag, PC_KBDC_SLOT, 0 ) \ |
| 28 | 28 | 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) ); \ |
| 30 | 30 | |
| 31 | 31 | |
| 32 | 32 | //************************************************************************** |
| r15480 | r15481 | |
| 45 | 45 | virtual void device_start(); |
| 46 | 46 | |
| 47 | 47 | // 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); |
| 49 | 49 | protected: |
| 50 | 50 | // configuration |
| 51 | | const char *m_pc_kbdc_tag; |
| 51 | device_t *m_kbdc_device; |
| 52 | 52 | }; |
| 53 | 53 | |
| 54 | 54 | |
| r15480 | r15481 | |
| 134 | 134 | virtual DECLARE_WRITE_LINE_MEMBER( data_write ); |
| 135 | 135 | |
| 136 | 136 | // 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); |
| 138 | 138 | |
| 139 | 139 | pc_kbdc_device *m_pc_kbdc; |
| 140 | 140 | const char *m_pc_kbdc_tag; |
src/mess/machine/isa.c
| r15480 | r15481 | |
| 34 | 34 | { |
| 35 | 35 | } |
| 36 | 36 | |
| 37 | | void isa8_slot_device::static_set_isa8_slot(device_t &device, const char *tag) |
| 37 | void isa8_slot_device::static_set_isa8_slot(device_t &device, device_t *isa_device) |
| 38 | 38 | { |
| 39 | 39 | 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; |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | //------------------------------------------------- |
| r15480 | r15481 | |
| 51 | 51 | if (get_card_device()->interface(intf)) |
| 52 | 52 | fatalerror("Error ISA16 device in ISA8 slot\n"); |
| 53 | 53 | |
| 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); |
| 55 | 55 | } |
| 56 | 56 | |
| 57 | 57 | |
| r15480 | r15481 | |
| 74 | 74 | { |
| 75 | 75 | } |
| 76 | 76 | |
| 77 | | void isa16_slot_device::static_set_isa16_slot(device_t &device, const char *tag) |
| 77 | void isa16_slot_device::static_set_isa16_slot(device_t &device, device_t *isa_device) |
| 78 | 78 | { |
| 79 | 79 | 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; |
| 81 | 81 | } |
| 82 | 82 | |
| 83 | 83 | //------------------------------------------------- |
| r15480 | r15481 | |
| 87 | 87 | void isa16_slot_device::device_start() |
| 88 | 88 | { |
| 89 | 89 | 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); |
| 91 | 91 | } |
| 92 | 92 | |
| 93 | 93 | |
| r15480 | r15481 | |
| 422 | 422 | |
| 423 | 423 | device_isa8_card_interface::device_isa8_card_interface(const machine_config &mconfig, device_t &device) |
| 424 | 424 | : device_slot_card_interface(mconfig, device), |
| 425 | | m_isa(NULL), |
| 426 | | m_isa_tag(NULL) |
| 425 | m_isa(NULL) |
| 427 | 426 | { |
| 428 | 427 | } |
| 429 | 428 | |
| r15480 | r15481 | |
| 447 | 446 | { |
| 448 | 447 | } |
| 449 | 448 | |
| 450 | | void device_isa8_card_interface::static_set_isabus_tag(device_t &device, const char *tag) |
| 449 | void device_isa8_card_interface::static_set_isabus(device_t &device, device_t *isa_device) |
| 451 | 450 | { |
| 452 | 451 | 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; |
| 454 | 453 | } |
| 455 | 454 | |
| 456 | 455 | void device_isa8_card_interface::set_isa_device() |
| 457 | 456 | { |
| 458 | | m_isa = dynamic_cast<isa8_device *>(device().machine().device(m_isa_tag)); |
| 457 | m_isa = dynamic_cast<isa8_device *>(m_isa_dev); |
| 459 | 458 | } |
| 460 | 459 | |
| 461 | 460 | |
| r15480 | r15481 | |
| 631 | 630 | |
| 632 | 631 | void device_isa16_card_interface::set_isa_device() |
| 633 | 632 | { |
| 634 | | m_isa = dynamic_cast<isa16_device *>(device().machine().device(m_isa_tag)); |
| 633 | m_isa = dynamic_cast<isa16_device *>(m_isa_dev); |
| 635 | 634 | } |
src/mess/machine/isa.h
| r15480 | r15481 | |
| 80 | 80 | #define MCFG_ISA8_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _def_inp, _fixed) \ |
| 81 | 81 | MCFG_DEVICE_ADD(_tag, ISA8_SLOT, 0) \ |
| 82 | 82 | 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)); \ |
| 84 | 84 | |
| 85 | 85 | #define MCFG_ISA16_BUS_ADD(_tag, _cputag, _config) \ |
| 86 | 86 | MCFG_DEVICE_ADD(_tag, ISA16, 0) \ |
| r15480 | r15481 | |
| 90 | 90 | #define MCFG_ISA16_SLOT_ADD(_isatag, _tag, _slot_intf, _def_slot, _def_inp, _fixed) \ |
| 91 | 91 | MCFG_DEVICE_ADD(_tag, ISA16_SLOT, 0) \ |
| 92 | 92 | 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)); \ |
| 94 | 94 | |
| 95 | 95 | //************************************************************************** |
| 96 | 96 | // TYPE DEFINITIONS |
| r15480 | r15481 | |
| 110 | 110 | virtual void device_start(); |
| 111 | 111 | |
| 112 | 112 | // 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); |
| 114 | 114 | protected: |
| 115 | 115 | // configuration |
| 116 | | const char *m_isa_tag; |
| 116 | device_t *m_isa; |
| 117 | 117 | }; |
| 118 | 118 | |
| 119 | 119 | // device type definition |
| r15480 | r15481 | |
| 232 | 232 | virtual void eop_w(int state); |
| 233 | 233 | |
| 234 | 234 | // 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); |
| 236 | 236 | public: |
| 237 | 237 | isa8_device *m_isa; |
| 238 | | const char *m_isa_tag; |
| 238 | device_t *m_isa_dev; |
| 239 | 239 | device_isa8_card_interface *m_next; |
| 240 | 240 | }; |
| 241 | 241 | |
| r15480 | r15481 | |
| 276 | 276 | virtual void device_start(); |
| 277 | 277 | |
| 278 | 278 | // 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); |
| 280 | 280 | }; |
| 281 | 281 | |
| 282 | 282 | |
src/mess/machine/southbridge.c
| r15480 | r15481 | |
| 155 | 155 | |
| 156 | 156 | MCFG_AT_KEYBOARD_CONTROLLER_ADD("keybc", XTAL_12MHz, keyboard_controller_intf) |
| 157 | 157 | 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) |
| 159 | 159 | |
| 160 | 160 | MCFG_MC146818_IRQ_ADD( "rtc", MC146818_STANDARD, at_mc146818_config ) |
| 161 | 161 | |
| r15480 | r15481 | |
| 166 | 166 | |
| 167 | 167 | MCFG_ISA16_BUS_ADD("isabus", ":maincpu", isabus_intf) |
| 168 | 168 | // 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) |
| 173 | 173 | MACHINE_CONFIG_END |
| 174 | 174 | |
| 175 | 175 | |