summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxwell Beck <max@rastertail.net>2025-07-20 11:13:53 -0500
committerMaxwell Beck <max@rastertail.net>2025-07-20 11:13:53 -0500
commit039f2b9965ac716f7cb24c3563f6a9bf9e3038da (patch)
treeccfacca3474a26a772b78a8018de640001cef870 /src
parent38f2755daa2456a4ebcaadcf3ddd2ff88e4fa838 (diff)
feat: Move drive handing to `SIO_IRQ_PROC1`
Diffstat (limited to 'src')
-rw-r--r--src/pico1541.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/pico1541.c b/src/pico1541.c
index 8a02587..9864c89 100644
--- a/src/pico1541.c
+++ b/src/pico1541.c
@@ -1,8 +1,10 @@
+#include <hardware/regs/intctrl.h>
#include <stdint.h>
#include <hardware/clocks.h>
#include <hardware/flash.h>
#include <hardware/gpio.h>
+#include <hardware/irq.h>
#include <hardware/timer.h>
#include <pico/multicore.h>
@@ -272,15 +274,18 @@ DRESULT disk_ioctl(BYTE pdrv, BYTE cmd, void *buff) {
return RES_PARERR;
}
+void drive_irq() {
+ drive_cycle(&drive);
+}
+
void drive_thread() {
drive_init(&drive);
drive.image = disk;
+
+ irq_set_exclusive_handler(SIO_IRQ_PROC1, drive_irq);
+ irq_set_enabled(SIO_IRQ_PROC1, true);
multicore_fifo_push_blocking(1);
-
- while (multicore_fifo_pop_blocking_inline()) {
- drive_cycle(&drive);
- }
}
int main() {