trunk/src/mess/drivers/pet.c
r24604 | r24605 | |
1827 | 1827 | MCFG_DEVICE_MODIFY(MC6845_TAG) |
1828 | 1828 | MCFG_DEVICE_CONFIG(cbm8296_crtc_intf) |
1829 | 1829 | |
1830 | | MCFG_DEVICE_REMOVE("ieee") |
1831 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, "c8250") |
| 1830 | MCFG_DEVICE_MODIFY("ieee8") |
| 1831 | MCFG_DEVICE_SLOT_INTERFACE(cbm_ieee488_devices, "c8250", false) |
1832 | 1832 | |
1833 | 1833 | MCFG_RAM_ADD(RAM_TAG) |
1834 | 1834 | MCFG_RAM_DEFAULT_SIZE("128K") |
r24604 | r24605 | |
1842 | 1842 | //------------------------------------------------- |
1843 | 1843 | |
1844 | 1844 | static MACHINE_CONFIG_DERIVED( cbm8296d, cbm8296 ) |
1845 | | MCFG_DEVICE_REMOVE("ieee") |
1846 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm8296d_ieee488_devices, "c8250lp") |
| 1845 | MCFG_DEVICE_MODIFY("ieee8") |
| 1846 | MCFG_DEVICE_SLOT_INTERFACE(cbm8296d_ieee488_devices, "c8250lp", false) |
1847 | 1847 | MACHINE_CONFIG_END |
1848 | 1848 | |
1849 | 1849 | |
trunk/src/mess/machine/hardbox.c
r24604 | r24605 | |
19 | 19 | Start the pet8032 emulator with the HardBox attached as device 9, |
20 | 20 | with the new CHD and the utilities floppy mounted: |
21 | 21 | |
22 | | $ mess pet8032 -ieee:c8050:ieee hardbox \ |
| 22 | $ mess pet8032 -ieee9 hardbox \ |
23 | 23 | -hard1 /path/to/corvus20mb.chd \ |
24 | 24 | -flop1 /path/to/hardbox-utils.d80 |
25 | 25 | |
r24604 | r24605 | |
132 | 132 | m_bus->dio_w(this, data ^ 0xff); |
133 | 133 | } |
134 | 134 | |
| 135 | READ8_MEMBER( hardbox_device::ppi0_pc_r ) |
| 136 | { |
| 137 | UINT8 data = ioport("SW1")->read(); |
| 138 | |
| 139 | /* DIP switches on PC1,PC2,PC3 configure the IEEE-488 primary address. |
| 140 | We get the address from m_address instead. */ |
| 141 | data |= ((m_slot->get_address() - 8) << 1) ^ 0xff; |
| 142 | |
| 143 | return data; |
| 144 | } |
| 145 | |
135 | 146 | static I8255A_INTERFACE( ppi0_intf ) |
136 | 147 | { |
137 | 148 | DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, hardbox_device, ppi0_pa_r), |
138 | 149 | DEVCB_NULL, // Port A write |
139 | 150 | DEVCB_NULL, // Port B read |
140 | 151 | DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, hardbox_device, ppi0_pb_w), |
141 | | DEVCB_INPUT_PORT("SW1"), // Port C read |
| 152 | DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, hardbox_device, ppi0_pc_r), |
142 | 153 | DEVCB_NULL // Port C write |
143 | 154 | }; |
144 | 155 | |
r24604 | r24605 | |
283 | 294 | MCFG_HARDDISK_ADD("harddisk2") |
284 | 295 | MCFG_HARDDISK_ADD("harddisk3") |
285 | 296 | MCFG_HARDDISK_ADD("harddisk4") |
286 | | |
287 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
288 | 297 | MACHINE_CONFIG_END |
289 | 298 | |
290 | 299 | |
trunk/src/mess/machine/c2031.c
r24604 | r24605 | |
358 | 358 | |
359 | 359 | MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface) |
360 | 360 | MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) |
361 | | |
362 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
363 | 361 | MACHINE_CONFIG_END |
364 | 362 | |
365 | 363 | |
r24604 | r24605 | |
411 | 409 | { |
412 | 410 | int state = 1; |
413 | 411 | |
414 | | switch (m_address->read() & 0x03) |
| 412 | switch ((m_slot->get_address() - 8) & 0x03) |
415 | 413 | { |
416 | 414 | case 0: state = (m_atna && m_nrfd_out); break; |
417 | 415 | case 1: state = m_nrfd_out; break; |
trunk/src/mess/machine/c2040.c
r24604 | r24605 | |
516 | 516 | UINT8 data = 0; |
517 | 517 | |
518 | 518 | // device number selection |
519 | | data |= m_address->read() & 0x07; |
| 519 | data |= m_slot->get_address() - 8; |
520 | 520 | |
521 | 521 | // data accepted in |
522 | 522 | data |= m_bus->ndac_r() << 6; |
r24604 | r24605 | |
1099 | 1099 | MCFG_MOS6530_ADD(M6530_TAG, XTAL_16MHz/16, miot_intf) |
1100 | 1100 | |
1101 | 1101 | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c2040_floppy_interface) |
1102 | | |
1103 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
1104 | 1102 | MACHINE_CONFIG_END |
1105 | 1103 | |
1106 | 1104 | |
r24604 | r24605 | |
1135 | 1133 | MCFG_MOS6530_ADD(M6530_TAG, XTAL_16MHz/16, miot_intf) |
1136 | 1134 | |
1137 | 1135 | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c4040_floppy_interface) |
1138 | | |
1139 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
1140 | 1136 | MACHINE_CONFIG_END |
1141 | 1137 | |
1142 | 1138 | |
r24604 | r24605 | |
1171 | 1167 | MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) |
1172 | 1168 | |
1173 | 1169 | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8050_floppy_interface) |
1174 | | |
1175 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
1176 | 1170 | MACHINE_CONFIG_END |
1177 | 1171 | |
1178 | 1172 | |
r24604 | r24605 | |
1207 | 1201 | MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) |
1208 | 1202 | |
1209 | 1203 | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8250_floppy_interface) |
1210 | | |
1211 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
1212 | 1204 | MACHINE_CONFIG_END |
1213 | 1205 | |
1214 | 1206 | |
r24604 | r24605 | |
1243 | 1235 | MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) |
1244 | 1236 | |
1245 | 1237 | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8250_floppy_interface) |
1246 | | |
1247 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
1248 | 1238 | MACHINE_CONFIG_END |
1249 | 1239 | |
1250 | 1240 | |
r24604 | r24605 | |
1279 | 1269 | MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) |
1280 | 1270 | |
1281 | 1271 | MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c8250_floppy_interface) |
1282 | | |
1283 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
1284 | 1272 | MACHINE_CONFIG_END |
1285 | 1273 | |
1286 | 1274 | |
trunk/src/mess/machine/cbmipt.h
r24604 | r24605 | |
115 | 115 | |
116 | 116 | |
117 | 117 | #define MCFG_CBM_IEEE488_ADD(_default_drive) \ |
118 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, _default_drive) \ |
| 118 | MCFG_IEEE488_SLOT_ADD("ieee4", 4, cbm_ieee488_devices, NULL) \ |
| 119 | MCFG_IEEE488_SLOT_ADD("ieee8", 8, cbm_ieee488_devices, _default_drive) \ |
| 120 | MCFG_IEEE488_SLOT_ADD("ieee9", 9, cbm_ieee488_devices, NULL) \ |
| 121 | MCFG_IEEE488_SLOT_ADD("ieee10", 10, cbm_ieee488_devices, NULL) \ |
| 122 | MCFG_IEEE488_SLOT_ADD("ieee11", 11, cbm_ieee488_devices, NULL) \ |
| 123 | MCFG_IEEE488_SLOT_ADD("ieee12", 12, cbm_ieee488_devices, NULL) \ |
| 124 | MCFG_IEEE488_SLOT_ADD("ieee13", 13, cbm_ieee488_devices, NULL) \ |
| 125 | MCFG_IEEE488_SLOT_ADD("ieee14", 14, cbm_ieee488_devices, NULL) \ |
| 126 | MCFG_IEEE488_SLOT_ADD("ieee15", 15, cbm_ieee488_devices, NULL) \ |
119 | 127 | MCFG_IEEE488_BUS_ADD() |
120 | 128 | |
121 | 129 | |
trunk/src/mess/machine/d9060.c
r24604 | r24605 | |
267 | 267 | UINT8 data = 0; |
268 | 268 | |
269 | 269 | // device number selection |
270 | | data |= m_address->read() & 0x07; |
| 270 | data |= m_slot->get_address() - 8; |
271 | 271 | |
272 | 272 | // data accepted in |
273 | 273 | data |= m_bus->ndac_r() << 6; |
r24604 | r24605 | |
446 | 446 | MCFG_SCSIDEV_ADD(SASIBUS_TAG ":harddisk0", D9060HD, SCSI_ID_0) |
447 | 447 | MCFG_SCSICB_ADD(SASIBUS_TAG ":host") |
448 | 448 | MCFG_SCSICB_REQ_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, base_d9060_device, req_w)) |
449 | | |
450 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
451 | 449 | MACHINE_CONFIG_END |
452 | 450 | |
453 | 451 | |
trunk/src/mess/machine/ieee488.c
r24604 | r24605 | |
88 | 88 | assert(bus); |
89 | 89 | |
90 | 90 | device_ieee488_interface *dev = dynamic_cast<device_ieee488_interface *>(get_card_device()); |
91 | | if (dev) bus->add_device(get_card_device()); |
| 91 | if (dev) bus->add_device(this, get_card_device()); |
92 | 92 | } |
93 | 93 | |
94 | 94 | |
r24604 | r24605 | |
152 | 152 | // add_device - |
153 | 153 | //------------------------------------------------- |
154 | 154 | |
155 | | void ieee488_device::add_device(device_t *target) |
| 155 | void ieee488_device::add_device(ieee488_slot_device *slot, device_t *target) |
156 | 156 | { |
157 | 157 | daisy_entry *entry = auto_alloc(machine(), daisy_entry(target)); |
158 | 158 | |
159 | 159 | entry->m_interface->m_bus = this; |
| 160 | entry->m_interface->m_slot = slot; |
160 | 161 | |
161 | 162 | m_device_list.append(*entry); |
162 | 163 | } |
trunk/src/mess/machine/ieee488.h
r24604 | r24605 | |
58 | 58 | downcast<ieee488_device *>(device)->set_ren_callback(DEVCB2_##_write); |
59 | 59 | |
60 | 60 | |
61 | | #define MCFG_IEEE488_SLOT_ADD(_tag, _slot_intf, _def_slot) \ |
| 61 | #define MCFG_IEEE488_SLOT_ADD(_tag, _address, _slot_intf, _def_slot) \ |
62 | 62 | MCFG_DEVICE_ADD(_tag, IEEE488_SLOT, 0) \ |
63 | | MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) |
| 63 | MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ |
| 64 | downcast<ieee488_slot_device *>(device)->set_address(_address); |
64 | 65 | |
65 | 66 | |
66 | 67 | |
r24604 | r24605 | |
70 | 71 | |
71 | 72 | // ======================> ieee488_device |
72 | 73 | |
| 74 | class ieee488_slot_device; |
73 | 75 | class device_ieee488_interface; |
74 | 76 | |
75 | 77 | class ieee488_device : public device_t |
r24604 | r24605 | |
87 | 89 | template<class _write> void set_atn_callback(_write wr) { m_write_atn.set_callback(wr); } |
88 | 90 | template<class _write> void set_ren_callback(_write wr) { m_write_ren.set_callback(wr); } |
89 | 91 | |
90 | | void add_device(device_t *target); |
| 92 | void add_device(ieee488_slot_device *slot, device_t *target); |
91 | 93 | |
92 | 94 | // reads for both host and peripherals |
93 | 95 | UINT8 dio_r() { return get_data(); } |
r24604 | r24605 | |
187 | 189 | // construction/destruction |
188 | 190 | ieee488_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
189 | 191 | |
| 192 | void set_address(int address) { m_address = address; } |
| 193 | int get_address() { return m_address; } |
| 194 | |
190 | 195 | // device-level overrides |
191 | 196 | virtual void device_start(); |
| 197 | |
| 198 | protected: |
| 199 | int m_address; |
192 | 200 | }; |
193 | 201 | |
194 | 202 | |
r24604 | r24605 | |
216 | 224 | virtual void ieee488_atn(int state) { }; |
217 | 225 | virtual void ieee488_ren(int state) { }; |
218 | 226 | |
219 | | ieee488_device *m_bus; |
| 227 | ieee488_device *m_bus; |
| 228 | ieee488_slot_device *m_slot; |
220 | 229 | }; |
221 | 230 | |
222 | 231 | |
trunk/src/mess/machine/c8280.c
r24604 | r24605 | |
257 | 257 | UINT8 data = 0; |
258 | 258 | |
259 | 259 | // device number selection |
260 | | data |= m_address->read() & 0x07; |
| 260 | data |= m_slot->get_address() - 8; |
261 | 261 | |
262 | 262 | // data accepted in |
263 | 263 | data |= m_bus->ndac_r() << 6; |
r24604 | r24605 | |
342 | 342 | MCFG_FD1797x_ADD(WD1797_TAG, XTAL_12MHz/6) // clock? |
343 | 343 | MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG":0", c8280_floppies, "8dsdd", floppy_image_device::default_floppy_formats) |
344 | 344 | MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG":1", c8280_floppies, "8dsdd", floppy_image_device::default_floppy_formats) |
345 | | |
346 | | MCFG_IEEE488_SLOT_ADD("ieee", cbm_ieee488_devices, NULL) |
347 | 345 | MACHINE_CONFIG_END |
348 | 346 | |
349 | 347 | |