summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
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() {