trunk/src/mess/machine/b2m.c
| r20629 | r20630 | |
| 347 | 347 | machine().save().register_postload(save_prepost_delegate(FUNC(b2m_postload), this)); |
| 348 | 348 | } |
| 349 | 349 | |
| 350 | | static IRQ_CALLBACK(b2m_irq_callback) |
| 350 | IRQ_CALLBACK_MEMBER(b2m_state::b2m_irq_callback) |
| 351 | 351 | { |
| 352 | | b2m_state *state = device->machine().driver_data<b2m_state>(); |
| 353 | | return pic8259_acknowledge(state->m_pic); |
| 352 | return pic8259_acknowledge(m_pic); |
| 354 | 353 | } |
| 355 | 354 | |
| 356 | 355 | const struct pic8259_interface b2m_pic8259_config = |
| r20629 | r20630 | |
| 372 | 371 | m_b2m_side = 0; |
| 373 | 372 | m_b2m_drive = 0; |
| 374 | 373 | |
| 375 | | machine().device("maincpu")->execute().set_irq_acknowledge_callback(b2m_irq_callback); |
| 374 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(b2m_state::b2m_irq_callback),this)); |
| 376 | 375 | b2m_set_bank(machine(), 7); |
| 377 | 376 | } |
trunk/src/mess/machine/mbc55x.c
| r20629 | r20630 | |
| 126 | 126 | pic8259_w(m_pic, space, offset>>1, data); |
| 127 | 127 | } |
| 128 | 128 | |
| 129 | | static IRQ_CALLBACK(mbc55x_irq_callback) |
| 129 | IRQ_CALLBACK_MEMBER(mbc55x_state::mbc55x_irq_callback) |
| 130 | 130 | { |
| 131 | | mbc55x_state *state = device->machine().driver_data<mbc55x_state>(); |
| 132 | | return pic8259_acknowledge( state->m_pic ); |
| 131 | return pic8259_acknowledge(m_pic); |
| 133 | 132 | } |
| 134 | 133 | |
| 135 | 134 | /* PIT8253 Configuration */ |
| r20629 | r20630 | |
| 388 | 387 | { |
| 389 | 388 | set_ram_size(machine()); |
| 390 | 389 | keyboard_reset(machine()); |
| 391 | | machine().device(MAINCPU_TAG)->execute().set_irq_acknowledge_callback(mbc55x_irq_callback); |
| 390 | machine().device(MAINCPU_TAG)->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mbc55x_state::mbc55x_irq_callback),this)); |
| 392 | 391 | } |
| 393 | 392 | |
| 394 | 393 | void mbc55x_state::machine_start() |
trunk/src/mess/machine/pk8020.c
| r20629 | r20630 | |
| 984 | 984 | DEVCB_NULL |
| 985 | 985 | }; |
| 986 | 986 | |
| 987 | | static IRQ_CALLBACK( pk8020_irq_callback ) |
| 987 | IRQ_CALLBACK_MEMBER(pk8020_state::pk8020_irq_callback) |
| 988 | 988 | { |
| 989 | | return pic8259_acknowledge(device->machine().device("pic8259")); |
| 989 | return pic8259_acknowledge(machine().device("pic8259")); |
| 990 | 990 | } |
| 991 | 991 | |
| 992 | 992 | void pk8020_state::machine_reset() |
| 993 | 993 | { |
| 994 | 994 | pk8020_set_bank(machine(),0); |
| 995 | | machine().device("maincpu")->execute().set_irq_acknowledge_callback(pk8020_irq_callback); |
| 995 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pk8020_state::pk8020_irq_callback),this)); |
| 996 | 996 | |
| 997 | 997 | m_sound_gate = 0; |
| 998 | 998 | m_sound_level = 0; |
trunk/src/mess/machine/at.c
| r20629 | r20630 | |
| 350 | 350 | init_at_common(machine()); |
| 351 | 351 | } |
| 352 | 352 | |
| 353 | | static IRQ_CALLBACK(at_irq_callback) |
| 353 | IRQ_CALLBACK_MEMBER(at_state::at_irq_callback) |
| 354 | 354 | { |
| 355 | | at_state *st = device->machine().driver_data<at_state>(); |
| 356 | | return pic8259_acknowledge(st->m_pic8259_master); |
| 355 | return pic8259_acknowledge(m_pic8259_master); |
| 357 | 356 | } |
| 358 | 357 | |
| 359 | 358 | MACHINE_START_MEMBER(at_state,at) |
| 360 | 359 | { |
| 361 | | machine().device("maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); |
| 360 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(at_state::at_irq_callback),this)); |
| 362 | 361 | } |
| 363 | 362 | |
| 364 | 363 | MACHINE_RESET_MEMBER(at_state,at) |
trunk/src/mess/machine/southbridge.c
| r20629 | r20630 | |
| 180 | 180 | * Init functions |
| 181 | 181 | * |
| 182 | 182 | **********************************************************/ |
| 183 | | /* |
| 184 | | IRQ_CALLBACK(southbridge_device::at_irq_callback) |
| 183 | |
| 184 | IRQ_CALLBACK_MEMBER(southbridge_device::at_irq_callback) |
| 185 | 185 | { |
| 186 | | device_t *pic = device->machine().device(":pcibus:1:i82371ab:pic8259_master"); |
| 187 | | //return pic8259_acknowledge(m_pic8259_master); |
| 188 | | return pic8259_acknowledge(pic); |
| 186 | return pic8259_acknowledge(m_pic8259_master); |
| 189 | 187 | } |
| 190 | | */ |
| 188 | |
| 191 | 189 | //------------------------------------------------- |
| 192 | 190 | // device_start - device-specific startup |
| 193 | 191 | //------------------------------------------------- |
| r20629 | r20630 | |
| 209 | 207 | |
| 210 | 208 | |
| 211 | 209 | m_at_offset1 = 0xff; |
| 212 | | //machine().device(":maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); |
| 210 | machine().device(":maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(southbridge_device::at_irq_callback),this)); |
| 213 | 211 | } |
| 214 | 212 | |
| 215 | 213 | //------------------------------------------------- |
trunk/src/mess/machine/i82371sb.c
| r20629 | r20630 | |
| 138 | 138 | //logerror("i82371sb_pci_write: write to undefined function %d\n", function); |
| 139 | 139 | } |
| 140 | 140 | |
| 141 | | static IRQ_CALLBACK(at_irq_callback) |
| 142 | | { |
| 143 | | device_t *pic = device->machine().device(":pcibus:1:i82371sb:pic8259_master"); |
| 144 | | return pic8259_acknowledge(pic); |
| 145 | | } |
| 146 | | |
| 147 | 141 | //------------------------------------------------- |
| 148 | 142 | // device_start - device-specific startup |
| 149 | 143 | //------------------------------------------------- |
| r20629 | r20630 | |
| 153 | 147 | southbridge_device::device_start(); |
| 154 | 148 | /* setup save states */ |
| 155 | 149 | save_item(NAME(m_regs)); |
| 156 | | |
| 157 | | machine().device(":maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); |
| 158 | 150 | } |
| 159 | 151 | |
| 160 | 152 | //------------------------------------------------- |
trunk/src/mess/machine/apollo.c
| r20629 | r20630 | |
| 675 | 675 | } |
| 676 | 676 | } |
| 677 | 677 | |
| 678 | | IRQ_CALLBACK(apollo_pic_acknowledge) { |
| 679 | | UINT32 vector = pic8259_acknowledge(get_pic8259_master(device)); |
| 678 | IRQ_CALLBACK_MEMBER(apollo_state::apollo_pic_acknowledge) |
| 679 | { |
| 680 | UINT32 vector = pic8259_acknowledge(get_pic8259_master(&device)); |
| 680 | 681 | if ((vector & 0x0f) == APOLLO_IRQ_PIC_SLAVE) { |
| 681 | | vector = pic8259_acknowledge(get_pic8259_slave(device)); |
| 682 | vector = pic8259_acknowledge(get_pic8259_slave(&device)); |
| 682 | 683 | } |
| 683 | 684 | |
| 684 | 685 | // don't log ptm interrupts |
| 685 | 686 | if (vector != APOLLO_IRQ_VECTOR+APOLLO_IRQ_PTM) { |
| 686 | | DLOG1(("apollo_pic_acknowledge: irq=%d vector=%x", vector & 0x0f, vector)); |
| 687 | MLOG1(("apollo_pic_acknowledge: irq=%d vector=%x", vector & 0x0f, vector)); |
| 687 | 688 | } |
| 688 | 689 | |
| 689 | 690 | if (apollo_is_dn3000()) { |
trunk/src/mess/machine/genpc.c
| r20629 | r20630 | |
| 652 | 652 | membank( "bank10" )->set_base( machine().device<ram_device>(RAM_TAG)->pointer() ); |
| 653 | 653 | } |
| 654 | 654 | |
| 655 | | IRQ_CALLBACK(ibm5160_mb_device::pc_irq_callback) |
| 655 | IRQ_CALLBACK_MEMBER(ibm5160_mb_device::pc_irq_callback) |
| 656 | 656 | { |
| 657 | | device_t *pic = device->machine().device("mb:pic8259"); |
| 658 | | return pic8259_acknowledge( pic ); |
| 657 | return pic8259_acknowledge(m_pic8259); |
| 659 | 658 | } |
| 660 | 659 | |
| 661 | 660 | |
| r20629 | r20630 | |
| 665 | 664 | |
| 666 | 665 | void ibm5160_mb_device::device_reset() |
| 667 | 666 | { |
| 668 | | m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); |
| 667 | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ibm5160_mb_device::pc_irq_callback),this)); |
| 669 | 668 | |
| 670 | 669 | m_u73_q2 = 0; |
| 671 | 670 | m_out1 = 2; // initial state of pit output is undefined |
trunk/src/mess/machine/pc.c
| r20629 | r20630 | |
| 1463 | 1463 | mess_init_pc_common(machine(), PCCOMMON_KEYBOARD_PC, pc_set_keyb_int, pc_set_irq_line); |
| 1464 | 1464 | } |
| 1465 | 1465 | |
| 1466 | | static IRQ_CALLBACK(pc_irq_callback) |
| 1466 | IRQ_CALLBACK_MEMBER(pc_state::pc_irq_callback) |
| 1467 | 1467 | { |
| 1468 | | pc_state *st = device->machine().driver_data<pc_state>(); |
| 1469 | | return pic8259_acknowledge( st->m_pic8259 ); |
| 1468 | return pic8259_acknowledge(m_pic8259); |
| 1470 | 1469 | } |
| 1471 | 1470 | |
| 1472 | 1471 | |
| r20629 | r20630 | |
| 1475 | 1474 | m_pic8259 = machine().device("pic8259"); |
| 1476 | 1475 | m_pit8253 = machine().device("pit8253"); |
| 1477 | 1476 | m_maincpu = machine().device<cpu_device>("maincpu" ); |
| 1478 | | m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); |
| 1477 | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc_state::pc_irq_callback),this)); |
| 1479 | 1478 | |
| 1480 | 1479 | pc_fdc_interface *fdc = machine().device<pc_fdc_interface>("fdc"); |
| 1481 | 1480 | fdc->setup_intrq_cb(pc_fdc_interface::line_cb(FUNC(pc_state::fdc_interrupt), this)); |
| r20629 | r20630 | |
| 1511 | 1510 | MACHINE_START_MEMBER(pc_state,mc1502) |
| 1512 | 1511 | { |
| 1513 | 1512 | m_maincpu = machine().device<cpu_device>("maincpu" ); |
| 1514 | | m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); |
| 1513 | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc_state::pc_irq_callback),this)); |
| 1515 | 1514 | |
| 1516 | 1515 | m_pic8259 = machine().device("pic8259"); |
| 1517 | 1516 | m_pit8253 = machine().device("pit8253"); |
| r20629 | r20630 | |
| 1539 | 1538 | m_pcjr_watchdog = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pc_state::pcjr_fdc_watchdog),this)); |
| 1540 | 1539 | pcjr_keyb.keyb_signal_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pc_state::pcjr_keyb_signal_callback),this)); |
| 1541 | 1540 | m_maincpu = machine().device<cpu_device>("maincpu"); |
| 1542 | | m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); |
| 1541 | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc_state::pc_irq_callback),this)); |
| 1543 | 1542 | |
| 1544 | 1543 | machine().device<upd765a_device>("upd765")->set_ready_line_connected(false); |
| 1545 | 1544 | |
trunk/src/mess/machine/i82371ab.c
| r20629 | r20630 | |
| 208 | 208 | } |
| 209 | 209 | } |
| 210 | 210 | |
| 211 | | static IRQ_CALLBACK(at_irq_callback) |
| 212 | | { |
| 213 | | device_t *pic = device->machine().device(":pcibus:1:i82371ab:pic8259_master"); |
| 214 | | return pic8259_acknowledge(pic); |
| 215 | | } |
| 216 | | |
| 217 | 211 | //------------------------------------------------- |
| 218 | 212 | // device_start - device-specific startup |
| 219 | 213 | //------------------------------------------------- |
| r20629 | r20630 | |
| 223 | 217 | southbridge_device::device_start(); |
| 224 | 218 | /* setup save states */ |
| 225 | 219 | save_item(NAME(m_regs)); |
| 226 | | |
| 227 | | machine().device(":maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); |
| 228 | 220 | } |
| 229 | 221 | |
| 230 | 222 | //------------------------------------------------- |
trunk/src/mess/includes/apollo.h
| r20629 | r20630 | |
| 187 | 187 | void fdc_interrupt(bool state); |
| 188 | 188 | void fdc_dma_drq(bool state); |
| 189 | 189 | DECLARE_FLOPPY_FORMATS( floppy_formats ); |
| 190 | IRQ_CALLBACK_MEMBER(apollo_irq_acknowledge); |
| 191 | IRQ_CALLBACK_MEMBER(apollo_pic_acknowledge); |
| 190 | 192 | }; |
| 191 | 193 | |
| 192 | 194 | MACHINE_CONFIG_EXTERN( apollo ); |
| r20629 | r20630 | |
| 250 | 252 | DECLARE_WRITE8_DEVICE_HANDLER(apollo_pic8259_slave_w ); |
| 251 | 253 | DECLARE_READ8_DEVICE_HANDLER( apollo_pic8259_slave_r ); |
| 252 | 254 | |
| 253 | | IRQ_CALLBACK(apollo_pic_acknowledge); |
| 254 | | |
| 255 | 255 | /*----------- machine/apollo_ptm.c -----------*/ |
| 256 | 256 | |
| 257 | 257 | DECLARE_WRITE8_DEVICE_HANDLER( apollo_ptm_w ); |
trunk/src/mess/drivers/vt100.c
| r20629 | r20630 | |
| 62 | 62 | UINT32 screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 63 | 63 | INTERRUPT_GEN_MEMBER(vt100_vertical_interrupt); |
| 64 | 64 | TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback); |
| 65 | IRQ_CALLBACK_MEMBER(vt100_irq_callback); |
| 65 | 66 | }; |
| 66 | 67 | |
| 67 | 68 | |
| r20629 | r20630 | |
| 335 | 336 | // A4 - receiver |
| 336 | 337 | // A5 - vertical fequency |
| 337 | 338 | // all other set to 1 |
| 338 | | static IRQ_CALLBACK(vt100_irq_callback) |
| 339 | IRQ_CALLBACK_MEMBER(vt100_state::vt100_irq_callback) |
| 339 | 340 | { |
| 340 | | vt100_state *state = device->machine().driver_data<vt100_state>(); |
| 341 | | UINT8 ret = 0xc7 | (state->m_keyboard_int << 3) | (state->m_receiver_int << 4) | (state->m_vertical_int << 5); |
| 342 | | state->m_receiver_int = 0; |
| 341 | UINT8 ret = 0xc7 | (m_keyboard_int << 3) | (m_receiver_int << 4) | (m_vertical_int << 5); |
| 342 | m_receiver_int = 0; |
| 343 | 343 | return ret; |
| 344 | 344 | } |
| 345 | 345 | |
| r20629 | r20630 | |
| 363 | 363 | |
| 364 | 364 | m_key_scan = 0; |
| 365 | 365 | |
| 366 | | machine().device("maincpu")->execute().set_irq_acknowledge_callback(vt100_irq_callback); |
| 366 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vt100_state::vt100_irq_callback),this)); |
| 367 | 367 | } |
| 368 | 368 | |
| 369 | 369 | READ8_MEMBER( vt100_state::vt100_read_video_ram_r ) |
trunk/src/mess/drivers/ng_aes.c
| r20629 | r20630 | |
| 66 | 66 | |
| 67 | 67 | |
| 68 | 68 | |
| 69 | | static IRQ_CALLBACK(neocd_int_callback); |
| 70 | 69 | |
| 71 | 70 | /* Stubs for various functions called by the FBA code, replace with MAME specifics later */ |
| 72 | 71 | |
| r20629 | r20630 | |
| 178 | 177 | DECLARE_DRIVER_INIT(neocdz); |
| 179 | 178 | DECLARE_DRIVER_INIT(neocdzj); |
| 180 | 179 | |
| 180 | IRQ_CALLBACK_MEMBER(neocd_int_callback); |
| 181 | 181 | }; |
| 182 | 182 | |
| 183 | 183 | |
| r20629 | r20630 | |
| 1117 | 1117 | save_pointer(NAME(m_memcard_data), 0x2000); |
| 1118 | 1118 | |
| 1119 | 1119 | // for custom vectors |
| 1120 | | machine().device("maincpu")->execute().set_irq_acknowledge_callback(neocd_int_callback); |
| 1120 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ng_aes_state::neocd_int_callback),this)); |
| 1121 | 1121 | |
| 1122 | 1122 | neogeo_set_main_cpu_vector_table_source(machine(), 0); // default to the BIOS vectors |
| 1123 | 1123 | |
| r20629 | r20630 | |
| 1539 | 1539 | |
| 1540 | 1540 | /* NeoCD uses custom vectors on IRQ4 to handle various events from the CDC */ |
| 1541 | 1541 | |
| 1542 | | static IRQ_CALLBACK(neocd_int_callback) |
| 1542 | IRQ_CALLBACK_MEMBER(ng_aes_state::neocd_int_callback) |
| 1543 | 1543 | { |
| 1544 | | ng_aes_state *state = device->machine().driver_data<ng_aes_state>(); |
| 1545 | | |
| 1546 | 1544 | if (irqline==4) |
| 1547 | 1545 | { |
| 1548 | | if (state->get_nNeoCDIRQVectorAck()) { |
| 1549 | | state->set_nNeoCDIRQVectorAck(0); |
| 1550 | | return state->get_nNeoCDIRQVector(); |
| 1546 | if (get_nNeoCDIRQVectorAck()) { |
| 1547 | set_nNeoCDIRQVectorAck(0); |
| 1548 | return get_nNeoCDIRQVector(); |
| 1551 | 1549 | } |
| 1552 | 1550 | } |
| 1553 | 1551 | |
trunk/src/mess/drivers/apollo.c
| r20629 | r20630 | |
| 278 | 278 | apollo_csr_set_status_register(APOLLO_CSR_SR_CPU_TIMEOUT, APOLLO_CSR_SR_CPU_TIMEOUT); |
| 279 | 279 | } |
| 280 | 280 | |
| 281 | | static IRQ_CALLBACK(apollo_irq_acknowledge) { |
| 281 | IRQ_CALLBACK_MEMBER(apollo_state::apollo_irq_acknowledge) |
| 282 | { |
| 282 | 283 | int result = M68K_INT_ACK_AUTOVECTOR; |
| 283 | 284 | |
| 284 | | device->machine().device(MAINCPU)->execute().set_input_line(irqline, CLEAR_LINE); |
| 285 | machine().device(MAINCPU)->execute().set_input_line(irqline, CLEAR_LINE); |
| 285 | 286 | |
| 286 | | DLOG2(("apollo_irq_acknowledge: interrupt level=%d", irqline)); |
| 287 | MLOG2(("apollo_irq_acknowledge: interrupt level=%d", irqline)); |
| 287 | 288 | |
| 288 | 289 | if (irqline == 6) { |
| 289 | 290 | result = apollo_pic_acknowledge(device, irqline); |
| r20629 | r20630 | |
| 1080 | 1081 | { |
| 1081 | 1082 | // MLOG1(("driver_init_dn3500")); |
| 1082 | 1083 | |
| 1083 | | machine().device(MAINCPU)->execute().set_irq_acknowledge_callback(apollo_irq_acknowledge); |
| 1084 | machine().device(MAINCPU)->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(apollo_state::apollo_irq_acknowledge),this)); |
| 1084 | 1085 | |
| 1085 | 1086 | /* hook the RESET line, which resets a slew of other components */ |
| 1086 | 1087 | m68k_set_reset_callback(machine().device(MAINCPU), apollo_reset_instr_callback); |
trunk/src/mess/drivers/pasogo.c
| r20629 | r20630 | |
| 73 | 73 | INTERRUPT_GEN_MEMBER(pasogo_interrupt); |
| 74 | 74 | TIMER_DEVICE_CALLBACK_MEMBER(vg230_timer); |
| 75 | 75 | DECLARE_WRITE_LINE_MEMBER(pasogo_pic8259_set_int_line); |
| 76 | IRQ_CALLBACK_MEMBER(pasogo_irq_callback); |
| 76 | 77 | }; |
| 77 | 78 | |
| 78 | 79 | |
| r20629 | r20630 | |
| 456 | 457 | // machine.device("maincpu")->execute().set_input_line(UPD7810_INTFE1, PULSE_LINE); |
| 457 | 458 | } |
| 458 | 459 | |
| 459 | | static IRQ_CALLBACK(pasogo_irq_callback) |
| 460 | IRQ_CALLBACK_MEMBER(pasogo_state::pasogo_irq_callback) |
| 460 | 461 | { |
| 461 | | return pic8259_acknowledge( device->machine().device("pic8259")); |
| 462 | return pic8259_acknowledge( machine().device("pic8259")); |
| 462 | 463 | } |
| 463 | 464 | |
| 464 | 465 | void pasogo_state::machine_reset() |
| 465 | 466 | { |
| 466 | | machine().device("maincpu")->execute().set_irq_acknowledge_callback(pasogo_irq_callback); |
| 467 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pasogo_state::pasogo_irq_callback),this)); |
| 467 | 468 | } |
| 468 | 469 | |
| 469 | 470 | //static const unsigned i86_address_mask = 0x000fffff; |
trunk/src/mess/drivers/x68k.c
| r20629 | r20630 | |
| 1820 | 1820 | #endif |
| 1821 | 1821 | } |
| 1822 | 1822 | |
| 1823 | | static IRQ_CALLBACK(x68k_int_ack) |
| 1823 | IRQ_CALLBACK_MEMBER(x68k_state::x68k_int_ack) |
| 1824 | 1824 | { |
| 1825 | | x68k_state *state = device->machine().driver_data<x68k_state>(); |
| 1826 | | |
| 1827 | 1825 | if(irqline == 6) // MFP |
| 1828 | 1826 | { |
| 1829 | | state->m_mfp.current_irq = -1; |
| 1830 | | if(state->m_current_vector[6] != 0x4b && state->m_current_vector[6] != 0x4c) |
| 1831 | | state->m_current_vector[6] = state->m_mfpdev->get_vector(); |
| 1827 | m_mfp.current_irq = -1; |
| 1828 | if(m_current_vector[6] != 0x4b && m_current_vector[6] != 0x4c) |
| 1829 | m_current_vector[6] = m_mfpdev->get_vector(); |
| 1832 | 1830 | else |
| 1833 | | device->machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,state->m_current_vector[irqline]); |
| 1834 | | logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",state->m_current_vector[6],irqline); |
| 1835 | | return state->m_current_vector[6]; |
| 1831 | machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); |
| 1832 | logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",m_current_vector[6],irqline); |
| 1833 | return m_current_vector[6]; |
| 1836 | 1834 | } |
| 1837 | 1835 | |
| 1838 | | device->machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,state->m_current_vector[irqline]); |
| 1836 | machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); |
| 1839 | 1837 | if(irqline == 1) // IOSC |
| 1840 | 1838 | { |
| 1841 | | state->m_ioc.irqstatus &= ~0xf0; |
| 1839 | m_ioc.irqstatus &= ~0xf0; |
| 1842 | 1840 | } |
| 1843 | 1841 | if(irqline == 5) // SCC |
| 1844 | 1842 | { |
| 1845 | | state->m_mouse.irqactive = 0; |
| 1843 | m_mouse.irqactive = 0; |
| 1846 | 1844 | } |
| 1847 | 1845 | |
| 1848 | | logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",state->m_current_vector[irqline],irqline); |
| 1849 | | return state->m_current_vector[irqline]; |
| 1846 | logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",m_current_vector[irqline],irqline); |
| 1847 | return m_current_vector[irqline]; |
| 1850 | 1848 | } |
| 1851 | 1849 | |
| 1852 | 1850 | WRITE_LINE_MEMBER(x68k_state::x68k_scsi_irq) |
| r20629 | r20630 | |
| 2587 | 2585 | |
| 2588 | 2586 | mfp_init(); |
| 2589 | 2587 | |
| 2590 | | machine().device("maincpu")->execute().set_irq_acknowledge_callback(x68k_int_ack); |
| 2588 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(x68k_state::x68k_int_ack),this)); |
| 2591 | 2589 | |
| 2592 | 2590 | // init keyboard |
| 2593 | 2591 | m_keyboard.delay = 500; // 3*100+200 |