diff options
author | Maxwell Beck <max@rastertail.net> | 2025-07-20 11:13:53 -0500 |
---|---|---|
committer | Maxwell Beck <max@rastertail.net> | 2025-07-20 11:13:53 -0500 |
commit | 039f2b9965ac716f7cb24c3563f6a9bf9e3038da (patch) | |
tree | ccfacca3474a26a772b78a8018de640001cef870 /src | |
parent | 38f2755daa2456a4ebcaadcf3ddd2ff88e4fa838 (diff) |
feat: Move drive handing to `SIO_IRQ_PROC1`
Diffstat (limited to 'src')
-rw-r--r-- | src/pico1541.c | 13 |
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() { |