From 039f2b9965ac716f7cb24c3563f6a9bf9e3038da Mon Sep 17 00:00:00 2001 From: Maxwell Beck Date: Sun, 20 Jul 2025 11:13:53 -0500 Subject: feat: Move drive handing to `SIO_IRQ_PROC1` --- CMakeLists.txt | 2 +- src/pico1541.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 04846ba..4963841 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,5 +11,5 @@ add_executable(pico1541 ) pico_set_binary_type(pico1541 copy_to_ram) target_include_directories(pico1541 PRIVATE src) -target_link_libraries(pico1541 pico_runtime pico_multicore hardware_timer hardware_flash tinyusb_device tinyusb_board pico_stdlib) +target_link_libraries(pico1541 pico_runtime pico_multicore hardware_timer hardware_flash hardware_irq tinyusb_device tinyusb_board pico_stdlib) pico_add_extra_outputs(pico1541) 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 #include #include #include #include +#include #include #include @@ -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() { -- cgit 1.4.1