Add irq_set_status

irq_set_status can be used to clear the irq status bit so that the
interrupt will stop occuring.
This commit is contained in:
Byron Lathi
2022-03-14 13:34:33 -05:00
parent a5474b5ae5
commit f5dbe46060
3 changed files with 7 additions and 1 deletions

View File

@@ -9,5 +9,6 @@ void irq_int();
void nmi_int(); void nmi_int();
uint8_t irq_get_status(); uint8_t irq_get_status();
void irq_set_status(uint8_t);
#endif #endif

View File

@@ -9,7 +9,7 @@
.import _handle_irq .import _handle_irq
.export _irq_int, _nmi_int .export _irq_int, _nmi_int
.export _irq_get_status .export _irq_get_status, _irq_set_status
.include "io.inc65" .include "io.inc65"
@@ -51,4 +51,8 @@ break: JMP break ; If BRK is detected, something very bad
_irq_get_status: _irq_get_status:
lda IRQ_STATUS lda IRQ_STATUS
ldx #$00 ldx #$00
rts
_irq_set_status:
sta IRQ_STATUS
rts rts

View File

@@ -15,5 +15,6 @@ void handle_irq() {
if (status & BUTTON) { if (status & BUTTON) {
puts("Button Interrupt!\n"); puts("Button Interrupt!\n");
irq_set_status(status & ~BUTTON);
} }
} }