From f5dbe460609e9255ee88eeaa739819577f33a432 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Mon, 14 Mar 2022 13:34:33 -0500 Subject: [PATCH] Add irq_set_status irq_set_status can be used to clear the irq status bit so that the interrupt will stop occuring. --- sw/interrupt.h | 1 + sw/interrupt.s | 6 +++++- sw/irq.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sw/interrupt.h b/sw/interrupt.h index ce29bc5..ebd5951 100644 --- a/sw/interrupt.h +++ b/sw/interrupt.h @@ -9,5 +9,6 @@ void irq_int(); void nmi_int(); uint8_t irq_get_status(); +void irq_set_status(uint8_t); #endif \ No newline at end of file diff --git a/sw/interrupt.s b/sw/interrupt.s index aad0d6b..f87f81d 100644 --- a/sw/interrupt.s +++ b/sw/interrupt.s @@ -9,7 +9,7 @@ .import _handle_irq .export _irq_int, _nmi_int -.export _irq_get_status +.export _irq_get_status, _irq_set_status .include "io.inc65" @@ -51,4 +51,8 @@ break: JMP break ; If BRK is detected, something very bad _irq_get_status: lda IRQ_STATUS ldx #$00 + rts + +_irq_set_status: + sta IRQ_STATUS rts \ No newline at end of file diff --git a/sw/irq.c b/sw/irq.c index 64f6d74..3aec0c1 100644 --- a/sw/irq.c +++ b/sw/irq.c @@ -15,5 +15,6 @@ void handle_irq() { if (status & BUTTON) { puts("Button Interrupt!\n"); + irq_set_status(status & ~BUTTON); } } \ No newline at end of file