void c64keyboard_restore_key(int v) { /* ignore key release */ if (v) { /* trigger the NMI */ maincpu_set_nmi(c64keyboard_int_num, 1); /* ack the restore NMI, leaving global_pending_int active */ maincpu_set_nmi(c64keyboard_int_num, 0); } }
static void midi_set_int(int midiirq, unsigned int int_num, int value) { if (midiirq == IK_IRQ) { maincpu_set_irq(int_num, value); } if (midiirq == IK_NMI) { maincpu_set_nmi(int_num, value); } }
/* called by the Freeze Button alarm */ static void cart_freeze_alarm_triggered(CLOCK offset, void *data) { DBG(("cart_freeze_alarm_triggered\n")); alarm_unset(cartridge_freeze_alarm); cart_freeze_alarm_time = CLOCK_MAX; if (cart_freeze_allowed()) { /* c64carthooks.c */ DBG(("cart_trigger_freeze delay 3 cycles\n")); maincpu_set_nmi(cartridge_int_num, IK_NMI); cart_nmi_alarm_time = maincpu_clk + 3; alarm_set(cartridge_nmi_alarm, cart_nmi_alarm_time); } }
/* called from individual carts */ void cart_trigger_nmi(void) { maincpu_set_nmi(cartridge_int_num, IK_NMI); cart_nmi_alarm_time = maincpu_clk + 3; alarm_set(cartridge_nmi_alarm, cart_nmi_alarm_time); }
/* called by individual carts */ void cartridge_release_freeze(void) { maincpu_set_nmi(cartridge_int_num, 0); }
/* trigger a freeze, but don't trigger the cartridge logic (which might release it). used by monitor */ void cartridge_trigger_freeze_nmi_only(void) { maincpu_set_nmi(cartridge_int_num, IK_NMI); }