trunk/src/mess/drivers/c128.c
| r24626 | r24627 | |
| 1498 | 1498 | //------------------------------------------------- |
| 1499 | 1499 | |
| 1500 | 1500 | static MACHINE_CONFIG_DERIVED( c128dcr, ntsc ) |
| 1501 | | MCFG_CBM_IEC_SLOT_ADD("iec", c128dcr_iec_devices, "c1571") // TODO c1571cr |
| 1502 | | MCFG_CBM_IEC_BUS_ADD() |
| 1501 | MCFG_CBM_IEC_ADD("c1571") // TODO c1571cr |
| 1503 | 1502 | MCFG_CBM_IEC_BUS_SRQ_CALLBACK(WRITELINE(c128_state, iec_srq_w)) |
| 1504 | 1503 | MCFG_CBM_IEC_BUS_DATA_CALLBACK(WRITELINE(c128_state, iec_data_w)) |
| 1505 | 1504 | MACHINE_CONFIG_END |
| r24626 | r24627 | |
| 1510 | 1509 | //------------------------------------------------- |
| 1511 | 1510 | |
| 1512 | 1511 | static MACHINE_CONFIG_DERIVED( c128d81, ntsc ) |
| 1513 | | MCFG_CBM_IEC_SLOT_ADD("iec", c128d81_iec_devices, "c1563") |
| 1514 | | MCFG_CBM_IEC_BUS_ADD() |
| 1512 | MCFG_CBM_IEC_ADD(NULL) |
| 1515 | 1513 | MCFG_CBM_IEC_BUS_SRQ_CALLBACK(WRITELINE(c128_state, iec_srq_w)) |
| 1516 | 1514 | MCFG_CBM_IEC_BUS_DATA_CALLBACK(WRITELINE(c128_state, iec_data_w)) |
| 1515 | |
| 1516 | MCFG_DEVICE_MODIFY("iec8") |
| 1517 | MCFG_DEVICE_SLOT_INTERFACE(c128d81_iec_devices, "c1563", false) |
| 1517 | 1518 | MACHINE_CONFIG_END |
| 1518 | 1519 | |
| 1519 | 1520 | |
| r24626 | r24627 | |
| 1613 | 1614 | //------------------------------------------------- |
| 1614 | 1615 | |
| 1615 | 1616 | static MACHINE_CONFIG_DERIVED( c128dcrp, pal ) |
| 1616 | | MCFG_CBM_IEC_SLOT_ADD("iec", c128dcr_iec_devices, "c1571") // TODO c1571cr |
| 1617 | | MCFG_CBM_IEC_BUS_ADD() |
| 1617 | MCFG_CBM_IEC_ADD("c1571") // TODO c1571cr |
| 1618 | 1618 | MCFG_CBM_IEC_BUS_SRQ_CALLBACK(WRITELINE(c128_state, iec_srq_w)) |
| 1619 | 1619 | MCFG_CBM_IEC_BUS_DATA_CALLBACK(WRITELINE(c128_state, iec_data_w)) |
| 1620 | 1620 | MACHINE_CONFIG_END |
trunk/src/mess/drivers/c64.c
| r24626 | r24627 | |
| 1130 | 1130 | MCFG_M6510_PORT_PULLS(0x07, 0xc0) |
| 1131 | 1131 | |
| 1132 | 1132 | // devices |
| 1133 | | MCFG_DEVICE_REMOVE("iec") |
| 1134 | | MCFG_CBM_IEC_SLOT_ADD("iec", sx1541_iec_devices, "sx1541") |
| 1133 | MCFG_DEVICE_MODIFY("iec8") |
| 1134 | MCFG_DEVICE_SLOT_INTERFACE(sx1541_iec_devices, "sx1541", false) |
| 1135 | 1135 | MACHINE_CONFIG_END |
| 1136 | 1136 | |
| 1137 | 1137 | |
| r24626 | r24627 | |
| 1143 | 1143 | MCFG_FRAGMENT_ADD(ntsc_sx) |
| 1144 | 1144 | |
| 1145 | 1145 | // devices |
| 1146 | | //MCFG_CBM_IEC_SLOT_ADD("iec", sx1541_iec_devices, "sx1541") |
| 1146 | MCFG_DEVICE_MODIFY("iec9") |
| 1147 | MCFG_DEVICE_SLOT_INTERFACE(sx1541_iec_devices, "sx1541", false) |
| 1147 | 1148 | MACHINE_CONFIG_END |
| 1148 | 1149 | |
| 1149 | 1150 | |
| r24626 | r24627 | |
| 1233 | 1234 | MCFG_M6510_PORT_PULLS(0x07, 0xc0) |
| 1234 | 1235 | |
| 1235 | 1236 | // devices |
| 1236 | | MCFG_DEVICE_REMOVE("iec") |
| 1237 | | MCFG_CBM_IEC_SLOT_ADD("iec", sx1541_iec_devices, "sx1541") |
| 1237 | MCFG_DEVICE_MODIFY("iec8") |
| 1238 | MCFG_DEVICE_SLOT_INTERFACE(sx1541_iec_devices, "sx1541", false) |
| 1238 | 1239 | MACHINE_CONFIG_END |
| 1239 | 1240 | |
| 1240 | 1241 | |
trunk/src/mess/machine/fd2000.c
| r24626 | r24627 | |
| 244 | 244 | MCFG_DP8473_ADD(DP8473V_TAG) |
| 245 | 245 | |
| 246 | 246 | MCFG_FLOPPY_DRIVE_ADD(DP8473V_TAG":0", fd2000_floppies, "35hd", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) |
| 247 | | |
| 248 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 249 | 247 | MACHINE_CONFIG_END |
| 250 | 248 | |
| 251 | 249 | |
| r24626 | r24627 | |
| 261 | 259 | MCFG_PC8477A_ADD(PC8477AV1_TAG) |
| 262 | 260 | |
| 263 | 261 | MCFG_FLOPPY_DRIVE_ADD(PC8477AV1_TAG":0", fd4000_floppies, "35ed", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) |
| 264 | | |
| 265 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 266 | 262 | MACHINE_CONFIG_END |
| 267 | 263 | |
| 268 | 264 | |
trunk/src/mess/machine/c1541.c
| r24626 | r24627 | |
| 555 | 555 | data |= !m_bus->clk_r() << 2; |
| 556 | 556 | |
| 557 | 557 | // serial bus address |
| 558 | | data |= (m_address->read() & 0x03) << 5; |
| 558 | data |= ((m_slot->get_address() - 8) & 0x03) << 5; |
| 559 | 559 | |
| 560 | 560 | // attention in |
| 561 | 561 | data |= !m_bus->atn_r() << 7; |
| r24626 | r24627 | |
| 884 | 884 | |
| 885 | 885 | MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface) |
| 886 | 886 | MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) |
| 887 | | |
| 888 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 889 | 887 | MACHINE_CONFIG_END |
| 890 | 888 | |
| 891 | 889 | |
trunk/src/mess/machine/c1571.c
| r24626 | r24627 | |
| 319 | 319 | data |= !m_bus->clk_r() << 2; |
| 320 | 320 | |
| 321 | 321 | // serial bus address |
| 322 | | data |= (m_address->read() & 0x03) << 5; |
| 322 | data |= ((m_slot->get_address() - 8) & 0x03) << 5; |
| 323 | 323 | |
| 324 | 324 | // attention in |
| 325 | 325 | data |= !m_bus->atn_r() << 7; |
| r24626 | r24627 | |
| 753 | 753 | MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1570_floppy_interface) |
| 754 | 754 | //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1570_floppies, "525ssdd", 0, c1571_device::floppy_formats) |
| 755 | 755 | MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) |
| 756 | | |
| 757 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 758 | 756 | MACHINE_CONFIG_END |
| 759 | 757 | |
| 760 | 758 | |
| r24626 | r24627 | |
| 788 | 786 | MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface) |
| 789 | 787 | //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1571_floppies, "525dd", 0, c1571_device::floppy_formats) |
| 790 | 788 | MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) |
| 791 | | |
| 792 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 793 | 789 | MACHINE_CONFIG_END |
| 794 | 790 | |
| 795 | 791 | |
| r24626 | r24627 | |
| 823 | 819 | MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface) |
| 824 | 820 | //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1571_floppies, "525dd", 0, c1571_device::floppy_formats) |
| 825 | 821 | MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) |
| 826 | | |
| 827 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 828 | 822 | MACHINE_CONFIG_END |
| 829 | 823 | |
| 830 | 824 | |
| r24626 | r24627 | |
| 861 | 855 | |
| 862 | 856 | MCFG_ISA8_BUS_ADD(ISA_BUS_TAG, M6502_TAG, isabus_intf) |
| 863 | 857 | MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa1", mini_chief_isa8_cards, "wd1002a_wx1", false) |
| 864 | | |
| 865 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 866 | 858 | MACHINE_CONFIG_END |
| 867 | 859 | |
| 868 | 860 | |
trunk/src/mess/machine/c1581.c
| r24626 | r24627 | |
| 140 | 140 | //data |= !m_floppy->ready_r() << 1; |
| 141 | 141 | |
| 142 | 142 | // device number |
| 143 | | data |= (m_address->read() & 0x03) << 3; |
| 143 | data |= ((m_slot->get_address() - 8) & 0x03) << 3; |
| 144 | 144 | |
| 145 | 145 | // disk change |
| 146 | 146 | data |= m_floppy->dskchg_r() << 7; |
| r24626 | r24627 | |
| 278 | 278 | |
| 279 | 279 | MCFG_WD1772x_ADD(WD1772_TAG, XTAL_16MHz/2) |
| 280 | 280 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", c1581_floppies, "35dd", c1581_device::floppy_formats) |
| 281 | | |
| 282 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL) |
| 283 | 281 | MACHINE_CONFIG_END |
| 284 | 282 | |
| 285 | 283 | |
trunk/src/mess/machine/cbmiec.c
| r24626 | r24627 | |
| 259 | 259 | |
| 260 | 260 | void cbm_iec_slot_device::device_start() |
| 261 | 261 | { |
| 262 | | m_bus = machine().device<cbm_iec_device>(CBM_IEC_TAG); |
| 262 | cbm_iec_device* bus = NULL; |
| 263 | |
| 264 | for (device_t *device = owner(); device != NULL; device = device->owner()) |
| 265 | { |
| 266 | bus = device->subdevice<cbm_iec_device>(CBM_IEC_TAG); |
| 267 | if (bus != NULL) break; |
| 268 | } |
| 269 | |
| 270 | assert(bus); |
| 271 | |
| 263 | 272 | device_cbm_iec_interface *dev = dynamic_cast<device_cbm_iec_interface *>(get_card_device()); |
| 264 | | if (dev) m_bus->add_device(get_card_device()); |
| 273 | if (dev) bus->add_device(this, get_card_device()); |
| 265 | 274 | } |
| 266 | 275 | |
| 267 | 276 | |
| r24626 | r24627 | |
| 329 | 338 | // add_device - |
| 330 | 339 | //------------------------------------------------- |
| 331 | 340 | |
| 332 | | void cbm_iec_device::add_device(device_t *target) |
| 341 | void cbm_iec_device::add_device(cbm_iec_slot_device *slot, device_t *target) |
| 333 | 342 | { |
| 334 | 343 | daisy_entry *entry = auto_alloc(machine(), daisy_entry(target)); |
| 335 | 344 | |
| 345 | entry->m_interface->m_slot = slot; |
| 336 | 346 | entry->m_interface->m_bus = this; |
| 337 | 347 | |
| 338 | 348 | m_device_list.append(*entry); |
trunk/src/mess/machine/cbmiec.h
| r24626 | r24627 | |
| 48 | 48 | downcast<cbm_iec_device *>(device)->set_reset_callback(DEVCB2_##_write); |
| 49 | 49 | |
| 50 | 50 | |
| 51 | | #define MCFG_CBM_IEC_SLOT_ADD(_tag, _slot_intf, _def_slot) \ |
| 51 | #define MCFG_CBM_IEC_SLOT_ADD(_tag, _address, _slot_intf, _def_slot) \ |
| 52 | 52 | MCFG_DEVICE_ADD(_tag, CBM_IEC_SLOT, 0) \ |
| 53 | | MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) |
| 53 | MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ |
| 54 | downcast<cbm_iec_slot_device *>(device)->set_address(_address); |
| 54 | 55 | |
| 55 | 56 | |
| 56 | 57 | |
| r24626 | r24627 | |
| 60 | 61 | |
| 61 | 62 | // ======================> cbm_iec_device |
| 62 | 63 | |
| 64 | class cbm_iec_slot_device; |
| 63 | 65 | class device_cbm_iec_interface; |
| 64 | 66 | |
| 65 | 67 | class cbm_iec_device : public device_t |
| r24626 | r24627 | |
| 74 | 76 | template<class _write> void set_data_callback(_write wr) { m_write_data.set_callback(wr); } |
| 75 | 77 | template<class _write> void set_reset_callback(_write wr) { m_write_reset.set_callback(wr); } |
| 76 | 78 | |
| 77 | | void add_device(device_t *target); |
| 79 | void add_device(cbm_iec_slot_device *slot, device_t *target); |
| 78 | 80 | |
| 79 | 81 | // reads for both host and peripherals |
| 80 | 82 | DECLARE_READ_LINE_MEMBER( srq_r ) { return get_signal(SRQ); } |
| r24626 | r24627 | |
| 151 | 153 | // construction/destruction |
| 152 | 154 | cbm_iec_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 153 | 155 | |
| 156 | void set_address(int address) { m_address = address; } |
| 157 | int get_address() { return m_address; } |
| 158 | |
| 154 | 159 | // device-level overrides |
| 155 | 160 | virtual void device_start(); |
| 156 | 161 | |
| 157 | | private: |
| 158 | | // configuration |
| 159 | | cbm_iec_device *m_bus; |
| 162 | protected: |
| 163 | int m_address; |
| 160 | 164 | }; |
| 161 | 165 | |
| 162 | 166 | |
| r24626 | r24627 | |
| 181 | 185 | virtual void cbm_iec_data(int state) { }; |
| 182 | 186 | virtual void cbm_iec_reset(int state) { }; |
| 183 | 187 | |
| 184 | | cbm_iec_device *m_bus; |
| 188 | cbm_iec_device *m_bus; |
| 189 | cbm_iec_slot_device *m_slot; |
| 185 | 190 | }; |
| 186 | 191 | |
| 187 | 192 | |
trunk/src/mess/machine/cbmipt.h
| r24626 | r24627 | |
| 110 | 110 | |
| 111 | 111 | |
| 112 | 112 | #define MCFG_CBM_IEC_ADD(_default_drive) \ |
| 113 | | MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, _default_drive) \ |
| 113 | MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL) \ |
| 114 | MCFG_CBM_IEC_SLOT_ADD("iec8", 8, cbm_iec_devices, _default_drive) \ |
| 115 | MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL) \ |
| 116 | MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL) \ |
| 117 | MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL) \ |
| 114 | 118 | MCFG_CBM_IEC_BUS_ADD() |
| 115 | 119 | |
| 116 | 120 | |