trunk/src/mess/machine/pc.c
| r20680 | r20681 | |
| 397 | 397 | { |
| 398 | 398 | XTAL_14_31818MHz/12, /* heartbeat IRQ */ |
| 399 | 399 | DEVCB_NULL, |
| 400 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) |
| 400 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) |
| 401 | 401 | }, { |
| 402 | 402 | XTAL_14_31818MHz/12, /* dram refresh */ |
| 403 | 403 | DEVCB_NULL, |
| r20680 | r20681 | |
| 423 | 423 | { |
| 424 | 424 | XTAL_14_31818MHz/12, /* heartbeat IRQ */ |
| 425 | 425 | DEVCB_NULL, |
| 426 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) |
| 426 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) |
| 427 | 427 | }, { |
| 428 | 428 | XTAL_14_31818MHz/12, /* dram refresh */ |
| 429 | 429 | DEVCB_NULL, |
| r20680 | r20681 | |
| 444 | 444 | { |
| 445 | 445 | XTAL_16MHz/12, /* heartbeat IRQ */ |
| 446 | 446 | DEVCB_NULL, |
| 447 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) |
| 447 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) |
| 448 | 448 | }, { |
| 449 | 449 | XTAL_16MHz/12, /* serial port */ |
| 450 | 450 | DEVCB_NULL, |
trunk/src/mess/machine/s100_wunderbus.c
| r20680 | r20681 | |
| 86 | 86 | { |
| 87 | 87 | DEVCB_NULL, |
| 88 | 88 | DEVCB_NULL, |
| 89 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir3_w), |
| 89 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w), |
| 90 | 90 | DEVCB_NULL, |
| 91 | 91 | DEVCB_NULL, |
| 92 | 92 | DEVCB_NULL |
| r20680 | r20681 | |
| 101 | 101 | { |
| 102 | 102 | DEVCB_NULL, |
| 103 | 103 | DEVCB_NULL, |
| 104 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir4_w), |
| 104 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w), |
| 105 | 105 | DEVCB_NULL, |
| 106 | 106 | DEVCB_NULL, |
| 107 | 107 | DEVCB_NULL |
| r20680 | r20681 | |
| 116 | 116 | { |
| 117 | 117 | DEVCB_NULL, |
| 118 | 118 | DEVCB_NULL, |
| 119 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir5_w), |
| 119 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir5_w), |
| 120 | 120 | DEVCB_NULL, |
| 121 | 121 | DEVCB_NULL, |
| 122 | 122 | DEVCB_NULL |
| r20680 | r20681 | |
| 132 | 132 | if (state) |
| 133 | 133 | { |
| 134 | 134 | m_rtc_tp = state; |
| 135 | | pic8259_ir7_w(m_pic, m_rtc_tp); |
| 135 | m_pic->ir7_w(m_rtc_tp); |
| 136 | 136 | } |
| 137 | 137 | } |
| 138 | 138 | |
| r20680 | r20681 | |
| 301 | 301 | |
| 302 | 302 | void s100_wunderbus_device::s100_vi0_w(int state) |
| 303 | 303 | { |
| 304 | | pic8259_ir0_w(m_pic, state); |
| 304 | m_pic->ir0_w(state); |
| 305 | 305 | } |
| 306 | 306 | |
| 307 | 307 | |
| r20680 | r20681 | |
| 311 | 311 | |
| 312 | 312 | void s100_wunderbus_device::s100_vi1_w(int state) |
| 313 | 313 | { |
| 314 | | pic8259_ir1_w(m_pic, state); |
| 314 | m_pic->ir1_w(state); |
| 315 | 315 | } |
| 316 | 316 | |
| 317 | 317 | |
| r20680 | r20681 | |
| 321 | 321 | |
| 322 | 322 | void s100_wunderbus_device::s100_vi2_w(int state) |
| 323 | 323 | { |
| 324 | | pic8259_ir2_w(m_pic, state); |
| 324 | m_pic->ir2_w(state); |
| 325 | 325 | } |
| 326 | 326 | |
| 327 | 327 | |
| r20680 | r20681 | |
| 400 | 400 | |
| 401 | 401 | // reset clock interrupt |
| 402 | 402 | m_rtc_tp = 0; |
| 403 | | pic8259_ir7_w(m_pic, m_rtc_tp); |
| 403 | m_pic->ir7_w(m_rtc_tp); |
| 404 | 404 | break; |
| 405 | 405 | |
| 406 | 406 | case 3: // Parallel data IN |
| r20680 | r20681 | |
| 408 | 408 | |
| 409 | 409 | case 4: // 8259 0 register |
| 410 | 410 | case 5: // 8259 1 register |
| 411 | | data = pic8259_r(m_pic, space, offset & 0x01); |
| 411 | data = m_pic->read(space, offset & 0x01); |
| 412 | 412 | break; |
| 413 | 413 | |
| 414 | 414 | case 6: // not used |
| r20680 | r20681 | |
| 517 | 517 | |
| 518 | 518 | case 4: // 8259 0 register |
| 519 | 519 | case 5: // 8259 1 register |
| 520 | | pic8259_w(m_pic, space, offset & 0x01, data); |
| 520 | m_pic->write(space, offset & 0x01, data); |
| 521 | 521 | break; |
| 522 | 522 | |
| 523 | 523 | case 6: // Par. port cntrl. |
trunk/src/mess/machine/genpc.c
| r20680 | r20681 | |
| 237 | 237 | { |
| 238 | 238 | XTAL_14_31818MHz/12, /* heartbeat IRQ */ |
| 239 | 239 | DEVCB_NULL, |
| 240 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) |
| 240 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) |
| 241 | 241 | }, { |
| 242 | 242 | XTAL_14_31818MHz/12, /* dram refresh */ |
| 243 | 243 | DEVCB_NULL, |
| r20680 | r20681 | |
| 413 | 413 | /* If PB7 is set clear the shift register and reset the IRQ line */ |
| 414 | 414 | if ( m_ppi_keyboard_clear ) |
| 415 | 415 | { |
| 416 | | pic8259_ir1_w(m_pic8259, 0); |
| 416 | m_pic8259->ir1_w(0); |
| 417 | 417 | m_ppi_shift_register = 0; |
| 418 | 418 | m_ppi_shift_enable = 1; |
| 419 | 419 | } |
| r20680 | r20681 | |
| 433 | 433 | static const isa8bus_interface isabus_intf = |
| 434 | 434 | { |
| 435 | 435 | // interrupts |
| 436 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir2_w), |
| 437 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir3_w), |
| 438 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir4_w), |
| 439 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir5_w), |
| 440 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir6_w), |
| 441 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir7_w), |
| 436 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w), |
| 437 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w), |
| 438 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w), |
| 439 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir5_w), |
| 440 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir6_w), |
| 441 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir7_w), |
| 442 | 442 | |
| 443 | 443 | // dma request |
| 444 | 444 | DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq1_w), |
| r20680 | r20681 | |
| 654 | 654 | |
| 655 | 655 | IRQ_CALLBACK_MEMBER(ibm5160_mb_device::pc_irq_callback) |
| 656 | 656 | { |
| 657 | | return pic8259_acknowledge(m_pic8259); |
| 657 | return m_pic8259->inta_r(); |
| 658 | 658 | } |
| 659 | 659 | |
| 660 | 660 | |
| r20680 | r20681 | |
| 874 | 874 | /* If PB7 is set clear the shift register and reset the IRQ line */ |
| 875 | 875 | if ( m_ppi_keyboard_clear ) |
| 876 | 876 | { |
| 877 | | pic8259_ir1_w(m_pic8259, 0); |
| 877 | m_pic8259->ir1_w(0); |
| 878 | 878 | m_ppi_shift_register = 0; |
| 879 | 879 | m_ppi_shift_enable = 1; |
| 880 | 880 | } |
trunk/src/mess/machine/southbridge.c
| r20680 | r20681 | |
| 19 | 19 | |
| 20 | 20 | const struct pic8259_interface at_pic8259_slave_config = |
| 21 | 21 | { |
| 22 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir2_w), |
| 22 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w), |
| 23 | 23 | DEVCB_LINE_GND, |
| 24 | 24 | DEVCB_NULL |
| 25 | 25 | }; |
| r20680 | r20681 | |
| 75 | 75 | { |
| 76 | 76 | DEVCB_CPU_INPUT_LINE(":maincpu", INPUT_LINE_RESET), |
| 77 | 77 | DEVCB_CPU_INPUT_LINE(":maincpu", INPUT_LINE_A20), |
| 78 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir1_w), |
| 78 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir1_w), |
| 79 | 79 | DEVCB_NULL, |
| 80 | 80 | DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb), |
| 81 | 81 | DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb) |
| r20680 | r20681 | |
| 90 | 90 | static const isa16bus_interface isabus_intf = |
| 91 | 91 | { |
| 92 | 92 | // interrupts |
| 93 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir2_w), // in place of irq 2 on at irq 9 is used |
| 94 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w), |
| 95 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir4_w), |
| 96 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir5_w), |
| 97 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir6_w), |
| 98 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), |
| 93 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir2_w), // in place of irq 2 on at irq 9 is used |
| 94 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w), |
| 95 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir4_w), |
| 96 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir5_w), |
| 97 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir6_w), |
| 98 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), |
| 99 | 99 | |
| 100 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir3_w), |
| 101 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir4_w), |
| 102 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir5_w), |
| 103 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir6_w), |
| 104 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir7_w), |
| 100 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir3_w), |
| 101 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir4_w), |
| 102 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir5_w), |
| 103 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir6_w), |
| 104 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir7_w), |
| 105 | 105 | |
| 106 | 106 | // dma request |
| 107 | 107 | DEVCB_DEVICE_LINE("dma8237_1", i8237_dreq0_w), |
| r20680 | r20681 | |
| 183 | 183 | |
| 184 | 184 | IRQ_CALLBACK_MEMBER(southbridge_device::at_irq_callback) |
| 185 | 185 | { |
| 186 | | return pic8259_acknowledge(m_pic8259_master); |
| 186 | return m_pic8259_master->inta_r(); |
| 187 | 187 | } |
| 188 | 188 | |
| 189 | 189 | //------------------------------------------------- |
| r20680 | r20681 | |
| 232 | 232 | READ8_MEMBER( southbridge_device::get_slave_ack ) |
| 233 | 233 | { |
| 234 | 234 | if (offset==2) // IRQ = 2 |
| 235 | | return pic8259_acknowledge(m_pic8259_slave); |
| 235 | return m_pic8259_slave->inta_r(); |
| 236 | 236 | |
| 237 | 237 | return 0x00; |
| 238 | 238 | } |
| r20680 | r20681 | |
| 266 | 266 | WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out0_changed ) |
| 267 | 267 | { |
| 268 | 268 | if (m_pic8259_master) |
| 269 | | pic8259_ir0_w(m_pic8259_master, state); |
| 269 | m_pic8259_master->ir0_w(state); |
| 270 | 270 | } |
| 271 | 271 | |
| 272 | 272 | |
trunk/src/mess/includes/victor9k.h
| r20680 | r20681 | |
| 7 | 7 | #include "emu.h" |
| 8 | 8 | #include "cpu/i86/i86.h" |
| 9 | 9 | #include "cpu/mcs48/mcs48.h" |
| 10 | | #include "imagedev/flopdrv.h" |
| 10 | #include "imagedev/floppy.h" |
| 11 | 11 | #include "machine/ram.h" |
| 12 | 12 | #include "machine/ctronics.h" |
| 13 | 13 | #include "machine/6522via.h" |
| r20680 | r20681 | |
| 52 | 52 | m_cvsd(*this, HC55516_TAG), |
| 53 | 53 | m_crtc(*this, HD46505S_TAG), |
| 54 | 54 | m_ram(*this, RAM_TAG), |
| 55 | | m_floppy0(*this, FLOPPY_0), |
| 56 | | m_floppy1(*this, FLOPPY_1), |
| 57 | | m_kb(*this, VICTOR9K_KEYBOARD_TAG) |
| 58 | | , |
| 59 | | m_video_ram(*this, "video_ram"){ } |
| 55 | m_floppy0(*this, I8048_TAG":0:525qd"), |
| 56 | m_floppy1(*this, I8048_TAG":1:525qd"), |
| 57 | m_kb(*this, VICTOR9K_KEYBOARD_TAG), |
| 58 | m_video_ram(*this, "video_ram") |
| 59 | { } |
| 60 | 60 | |
| 61 | 61 | required_device<cpu_device> m_maincpu; |
| 62 | 62 | required_device<cpu_device> m_fdc_cpu; |
| r20680 | r20681 | |
| 68 | 68 | required_device<hc55516_device> m_cvsd; |
| 69 | 69 | required_device<mc6845_device> m_crtc; |
| 70 | 70 | required_device<ram_device> m_ram; |
| 71 | | required_device<legacy_floppy_image_device> m_floppy0; |
| 72 | | required_device<legacy_floppy_image_device> m_floppy1; |
| 71 | required_device<floppy_image_device> m_floppy0; |
| 72 | required_device<floppy_image_device> m_floppy1; |
| 73 | 73 | required_device<victor9k_keyboard_device> m_kb; |
| 74 | 74 | |
| 75 | 75 | virtual void machine_start(); |
trunk/src/mess/drivers/victor9k.c
| r20680 | r20681 | |
| 119 | 119 | DEVCB_NULL, |
| 120 | 120 | DEVCB_NULL, |
| 121 | 121 | DEVCB_NULL, |
| 122 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir7_w), |
| 122 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w), |
| 123 | 123 | NULL |
| 124 | 124 | }; |
| 125 | 125 | |
| r20680 | r20681 | |
| 139 | 139 | { |
| 140 | 140 | 2500000, |
| 141 | 141 | DEVCB_LINE_VCC, |
| 142 | | DEVCB_DRIVER_LINE_MEMBER(victor9k_state,mux_serial_b_w) |
| 142 | DEVCB_DRIVER_LINE_MEMBER(victor9k_state, mux_serial_b_w) |
| 143 | 143 | }, { |
| 144 | 144 | 2500000, |
| 145 | 145 | DEVCB_LINE_VCC, |
| 146 | | DEVCB_DRIVER_LINE_MEMBER(victor9k_state,mux_serial_a_w) |
| 146 | DEVCB_DRIVER_LINE_MEMBER(victor9k_state, mux_serial_a_w) |
| 147 | 147 | }, { |
| 148 | 148 | 100000, |
| 149 | 149 | DEVCB_LINE_VCC, |
| 150 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir2_w) |
| 150 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir2_w) |
| 151 | 151 | } |
| 152 | 152 | } |
| 153 | 153 | }; |
| r20680 | r20681 | |
| 218 | 218 | { |
| 219 | 219 | m_ssda_irq = state; |
| 220 | 220 | |
| 221 | | pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); |
| 221 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 222 | 222 | } |
| 223 | 223 | |
| 224 | 224 | static MC6852_INTERFACE( ssda_intf ) |
| r20680 | r20681 | |
| 352 | 352 | { |
| 353 | 353 | m_via1_irq = state; |
| 354 | 354 | |
| 355 | | pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); |
| 355 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 356 | 356 | } |
| 357 | 357 | |
| 358 | 358 | static const via6522_interface via1_intf = |
| r20680 | r20681 | |
| 451 | 451 | { |
| 452 | 452 | m_via2_irq = state; |
| 453 | 453 | |
| 454 | | pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); |
| 454 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 455 | 455 | } |
| 456 | 456 | |
| 457 | 457 | static const via6522_interface via2_intf = |
| r20680 | r20681 | |
| 557 | 557 | { |
| 558 | 558 | m_via3_irq = state; |
| 559 | 559 | |
| 560 | | pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); |
| 560 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 561 | 561 | } |
| 562 | 562 | |
| 563 | 563 | static const via6522_interface via3_intf = |
| r20680 | r20681 | |
| 627 | 627 | { |
| 628 | 628 | m_via4_irq = state; |
| 629 | 629 | |
| 630 | | pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); |
| 630 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 631 | 631 | } |
| 632 | 632 | |
| 633 | 633 | static const via6522_interface via4_intf = |
| r20680 | r20681 | |
| 691 | 691 | { |
| 692 | 692 | m_via5_irq = state; |
| 693 | 693 | |
| 694 | | pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); |
| 694 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 695 | 695 | } |
| 696 | 696 | |
| 697 | 697 | static const via6522_interface via5_intf = |
| r20680 | r20681 | |
| 733 | 733 | UINT8 data = 0; |
| 734 | 734 | |
| 735 | 735 | // track 0 drive A sense |
| 736 | | data |= floppy_tk00_r(m_floppy0) << 1; |
| 736 | data |= m_floppy0->trk00_r() << 1; |
| 737 | 737 | |
| 738 | 738 | // track 0 drive B sense |
| 739 | | data |= floppy_tk00_r(m_floppy1) << 3; |
| 739 | data |= m_floppy1->trk00_r() << 3; |
| 740 | 740 | |
| 741 | 741 | // write protect sense |
| 742 | | data |= floppy_wpt_r(m_drive ? m_floppy1 : m_floppy0) << 6; |
| 742 | data |= (m_drive ? m_floppy1->wpt_r() : m_floppy0->wpt_r()) << 6; |
| 743 | 743 | |
| 744 | 744 | // disk sync detect |
| 745 | 745 | |
| r20680 | r20681 | |
| 804 | 804 | // door A sense |
| 805 | 805 | |
| 806 | 806 | // single/double sided |
| 807 | | data |= floppy_twosid_r(m_drive ? m_floppy1 : m_floppy0) << 5; |
| 807 | data |= (m_drive ? m_floppy1->twosid_r() : m_floppy0->twosid_r()) << 5; |
| 808 | 808 | |
| 809 | 809 | return data; |
| 810 | 810 | } |
| r20680 | r20681 | |
| 848 | 848 | { |
| 849 | 849 | m_via6_irq = state; |
| 850 | 850 | |
| 851 | | pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); |
| 851 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); |
| 852 | 852 | } |
| 853 | 853 | |
| 854 | 854 | static const via6522_interface via6_intf = |
| r20680 | r20681 | |
| 876 | 876 | { |
| 877 | 877 | m_via2->write_cb1(state); |
| 878 | 878 | |
| 879 | | pic8259_ir6_w(m_pic, state ? CLEAR_LINE : ASSERT_LINE); |
| 879 | m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE); |
| 880 | 880 | } |
| 881 | 881 | |
| 882 | 882 | static VICTOR9K_KEYBOARD_INTERFACE( kb_intf ) |
| r20680 | r20681 | |
| 884 | 884 | DEVCB_DRIVER_LINE_MEMBER(victor9k_state, kbrdy_w) |
| 885 | 885 | }; |
| 886 | 886 | |
| 887 | | // Floppy Configuration |
| 888 | | |
| 889 | | static const floppy_interface victor9k_floppy_interface = |
| 890 | | { |
| 891 | | DEVCB_NULL, |
| 892 | | DEVCB_NULL, |
| 893 | | DEVCB_NULL, |
| 894 | | DEVCB_NULL, |
| 895 | | DEVCB_NULL, |
| 896 | | FLOPPY_STANDARD_5_25_DSQD, |
| 897 | | LEGACY_FLOPPY_OPTIONS_NAME(default), |
| 898 | | "floppy_5_25", |
| 899 | | NULL |
| 900 | | }; |
| 901 | | |
| 902 | 887 | // IEEE-488 Interface |
| 903 | 888 | |
| 904 | 889 | static IEEE488_INTERFACE( ieee488_intf ) |
| r20680 | r20681 | |
| 913 | 898 | DEVCB_NULL |
| 914 | 899 | }; |
| 915 | 900 | |
| 901 | static SLOT_INTERFACE_START( victor9k_floppies ) |
| 902 | SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) |
| 903 | SLOT_INTERFACE_END |
| 904 | |
| 916 | 905 | // Machine Initialization |
| 917 | 906 | |
| 918 | 907 | IRQ_CALLBACK_MEMBER(victor9k_state::victor9k_irq_callback) |
| 919 | 908 | { |
| 920 | | return pic8259_acknowledge(m_pic); |
| 909 | return m_pic->inta_r(); |
| 921 | 910 | } |
| 922 | 911 | |
| 923 | 912 | void victor9k_state::machine_start() |
| r20680 | r20681 | |
| 970 | 959 | MCFG_VIA6522_ADD(M6522_4_TAG, XTAL_30MHz/30, via4_intf) |
| 971 | 960 | MCFG_VIA6522_ADD(M6522_5_TAG, XTAL_30MHz/30, via5_intf) |
| 972 | 961 | MCFG_VIA6522_ADD(M6522_6_TAG, XTAL_30MHz/30, via6_intf) |
| 973 | | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(victor9k_floppy_interface) |
| 962 | MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats) |
| 963 | MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats) |
| 974 | 964 | MCFG_VICTOR9K_KEYBOARD_ADD(kb_intf) |
| 975 | 965 | |
| 976 | 966 | // internal ram |
trunk/src/mess/drivers/wangpc.c
| r20680 | r20681 | |
| 273 | 273 | { |
| 274 | 274 | //if (LOG) logerror("%s: Timer 0 IRQ clear\n", machine().describe_context()); |
| 275 | 275 | |
| 276 | | pic8259_ir0_w(m_pic, CLEAR_LINE); |
| 276 | m_pic->ir0_w(CLEAR_LINE); |
| 277 | 277 | } |
| 278 | 278 | |
| 279 | 279 | |
| r20680 | r20681 | |
| 733 | 733 | { |
| 734 | 734 | int state = !m_timer2_irq || m_epci->rxrdy_r() || m_epci->txemt_r() || !m_acknlg || !m_dav || !m_busy; |
| 735 | 735 | |
| 736 | | pic8259_ir1_w(m_pic, state); |
| 736 | m_pic->ir1_w(state); |
| 737 | 737 | } |
| 738 | 738 | |
| 739 | 739 | void wangpc_state::check_level2_interrupts() |
| 740 | 740 | { |
| 741 | 741 | int state = !m_dma_eop || m_uart_dr || m_uart_tbre || m_fdc_dd0 || m_fdc_dd1 || m_fdc->get_irq() || m_fpu_irq || m_bus_irq2; |
| 742 | 742 | |
| 743 | | pic8259_ir2_w(m_pic, state); |
| 743 | m_pic->ir2_w(state); |
| 744 | 744 | } |
| 745 | 745 | |
| 746 | | IRQ_CALLBACK_MEMBER(wangpc_state::wangpc_irq_callback) |
| 746 | IRQ_CALLBACK_MEMBER( wangpc_state::wangpc_irq_callback ) |
| 747 | 747 | { |
| 748 | | return pic8259_acknowledge(m_pic); |
| 748 | return m_pic->inta_r(); |
| 749 | 749 | } |
| 750 | 750 | |
| 751 | 751 | static const struct pic8259_interface pic_intf = |
| r20680 | r20681 | |
| 903 | 903 | { |
| 904 | 904 | 500000, |
| 905 | 905 | DEVCB_LINE_VCC, |
| 906 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir0_w) |
| 906 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir0_w) |
| 907 | 907 | }, { |
| 908 | 908 | 2000000, |
| 909 | 909 | DEVCB_LINE_VCC, |
| r20680 | r20681 | |
| 1062 | 1062 | static WANGPC_BUS_INTERFACE( bus_intf ) |
| 1063 | 1063 | { |
| 1064 | 1064 | DEVCB_DRIVER_LINE_MEMBER(wangpc_state, bus_irq2_w), |
| 1065 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir3_w), |
| 1066 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir4_w), |
| 1067 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir5_w), |
| 1068 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir6_w), |
| 1069 | | DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir7_w), |
| 1065 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w), |
| 1066 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w), |
| 1067 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir5_w), |
| 1068 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir6_w), |
| 1069 | DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w), |
| 1070 | 1070 | DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq1_w), |
| 1071 | 1071 | DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq2_w), |
| 1072 | 1072 | DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq3_w), |
trunk/src/mess/drivers/iq151.c
| r20680 | r20681 | |
| 221 | 221 | |
| 222 | 222 | INPUT_CHANGED_MEMBER(iq151_state::iq151_break) |
| 223 | 223 | { |
| 224 | | pic8259_ir5_w(m_pic, newval & 1); |
| 224 | m_pic->ir5_w(newval & 1); |
| 225 | 225 | } |
| 226 | 226 | |
| 227 | 227 | /* Input ports */ |
| r20680 | r20681 | |
| 324 | 324 | |
| 325 | 325 | INTERRUPT_GEN_MEMBER(iq151_state::iq151_vblank_interrupt) |
| 326 | 326 | { |
| 327 | | pic8259_ir6_w(m_pic, m_vblank_irq_state & 1); |
| 327 | m_pic->ir6_w(m_vblank_irq_state & 1); |
| 328 | 328 | m_vblank_irq_state ^= 1; |
| 329 | 329 | } |
| 330 | 330 | |
| 331 | 331 | IRQ_CALLBACK_MEMBER(iq151_state::iq151_irq_callback) |
| 332 | 332 | { |
| 333 | | return pic8259_acknowledge(m_pic); |
| 333 | return m_pic->inta_r(); |
| 334 | 334 | } |
| 335 | 335 | |
| 336 | 336 | TIMER_DEVICE_CALLBACK_MEMBER(iq151_state::cassette_timer) |
| r20680 | r20681 | |
| 403 | 403 | |
| 404 | 404 | static const iq151cart_interface iq151_cart_interface = |
| 405 | 405 | { |
| 406 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w), |
| 407 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir1_w), |
| 408 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir2_w), |
| 409 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir3_w), |
| 410 | | DEVCB_DEVICE_LINE("pic8259", pic8259_ir4_w), |
| 406 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w), |
| 407 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir1_w), |
| 408 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w), |
| 409 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w), |
| 410 | DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w), |
| 411 | 411 | DEVCB_NULL |
| 412 | 412 | }; |
| 413 | 413 | |
trunk/src/mess/drivers/at.c
| r20680 | r20681 | |
| 296 | 296 | { |
| 297 | 297 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_RESET), |
| 298 | 298 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_A20), |
| 299 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir1_w), |
| 299 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir1_w), |
| 300 | 300 | DEVCB_NULL, |
| 301 | 301 | DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb), |
| 302 | 302 | DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb) |
| r20680 | r20681 | |
| 310 | 310 | |
| 311 | 311 | WRITE_LINE_MEMBER( at_state::at_mc146818_irq ) |
| 312 | 312 | { |
| 313 | | pic8259_ir0_w(m_pic8259_slave, (state) ? 0 : 1); |
| 313 | m_pic8259_slave->ir0_w((state) ? 0 : 1); |
| 314 | 314 | } |
| 315 | 315 | |
| 316 | 316 | const struct mc146818_interface at_mc146818_config = |
| r20680 | r20681 | |
| 321 | 321 | static const isa16bus_interface isabus_intf = |
| 322 | 322 | { |
| 323 | 323 | // interrupts |
| 324 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir2_w), // in place of irq 2 on at irq 9 is used |
| 325 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w), |
| 326 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir4_w), |
| 327 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir5_w), |
| 328 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir6_w), |
| 329 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), |
| 324 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir2_w), // in place of irq 2 on at irq 9 is used |
| 325 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w), |
| 326 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir4_w), |
| 327 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir5_w), |
| 328 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir6_w), |
| 329 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), |
| 330 | 330 | |
| 331 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir3_w), |
| 332 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir4_w), |
| 333 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir5_w), |
| 334 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir6_w), |
| 335 | | DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir7_w), |
| 331 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir3_w), |
| 332 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir4_w), |
| 333 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir5_w), |
| 334 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir6_w), |
| 335 | DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir7_w), |
| 336 | 336 | |
| 337 | 337 | // dma request |
| 338 | 338 | DEVCB_DEVICE_LINE_MEMBER("dma8237_1", am9517a_device, dreq0_w), |
trunk/src/mess/drivers/qx10.c
| r20680 | r20681 | |
| 327 | 327 | |
| 328 | 328 | //logerror("Interrupt from upd765: %d\n", state); |
| 329 | 329 | // signal interrupt |
| 330 | | pic8259_ir6_w(m_pic_m, state); |
| 330 | m_pic_m->ir6_w(state); |
| 331 | 331 | } |
| 332 | 332 | |
| 333 | 333 | void qx10_state::drq_w(bool state) |
| r20680 | r20681 | |
| 545 | 545 | READ8_MEMBER( qx10_state::get_slave_ack ) |
| 546 | 546 | { |
| 547 | 547 | if (offset==7) { // IRQ = 7 |
| 548 | | return pic8259_acknowledge(m_pic_s); |
| 548 | return m_pic_s->inta_r(); |
| 549 | 549 | } |
| 550 | 550 | return 0x00; |
| 551 | 551 | } |
| r20680 | r20681 | |
| 572 | 572 | |
| 573 | 573 | static const struct pic8259_interface qx10_pic8259_slave_config = |
| 574 | 574 | { |
| 575 | | DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), |
| 575 | DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), |
| 576 | 576 | DEVCB_LINE_GND, |
| 577 | 577 | DEVCB_NULL |
| 578 | 578 | }; |
| r20680 | r20681 | |
| 611 | 611 | m_keyb.led[(data & 0xe) >> 1] = data & 1; |
| 612 | 612 | printf("keyb Set led %02x %s\n",((data & 0xe) >> 1),data & 1 ? "on" : "off"); |
| 613 | 613 | m_keyb.rx = (data & 0xf) | 0xc0; |
| 614 | | pic8259_ir4_w(machine().device("pic8259_master"), 1); |
| 614 | m_pic_m->ir4_w(1); |
| 615 | 615 | break; |
| 616 | 616 | case 0x60: |
| 617 | 617 | printf("keyb Read LED status\n"); |
| r20680 | r20681 | |
| 702 | 702 | if(newval && !oldval) |
| 703 | 703 | { |
| 704 | 704 | m_keyb.rx = (UINT8)(FPTR)(param) & 0x7f; |
| 705 | | pic8259_ir4_w(machine().device("pic8259_master"), 1); |
| 705 | m_pic_m->ir4_w(1); |
| 706 | 706 | } |
| 707 | 707 | |
| 708 | 708 | if(oldval && !newval) |