From aebed6b479b28d2ca47766d0bdaf3316add0a419 Mon Sep 17 00:00:00 2001 From: sorgelig Date: Sat, 31 Jul 2021 06:57:18 +0800 Subject: [PATCH] Minimig: fix behaviour of disk led, add led activity to shared folder access. --- input.cpp | 11 ++++++++++- input.h | 1 + support/minimig/minimig_fdd.cpp | 4 ---- support/minimig/minimig_share.cpp | 5 +++++ user_io.cpp | 2 ++ 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/input.cpp b/input.cpp index 2e288e8..deb0e90 100644 --- a/input.cpp +++ b/input.cpp @@ -1050,6 +1050,12 @@ int toggle_kbdled(int mask) return state; } +static int sysled_is_enabled = 1; +void sysled_enable(int en) +{ + sysled_is_enabled = en; +} + #define JOYMAP_DIR "inputs/" static int load_map(const char *name, void *pBuffer, int size) { @@ -4047,7 +4053,10 @@ int input_test(int getchar) if ((pool[NUMDEV + 2].fd >= 0) && (pool[NUMDEV + 2].revents & POLLPRI)) { static char status[16]; - if (read(pool[NUMDEV + 2].fd, status, sizeof(status) - 1) && status[0] != '0') DISKLED_ON; + if (read(pool[NUMDEV + 2].fd, status, sizeof(status) - 1) && status[0] != '0') + { + if (sysled_is_enabled || video_fb_state()) DISKLED_ON; + } lseek(pool[NUMDEV + 2].fd, 0, SEEK_SET); } } diff --git a/input.h b/input.h index 8483ec2..da09999 100644 --- a/input.h +++ b/input.h @@ -74,6 +74,7 @@ void set_kbdled(int mask, int state); int get_kbdled(int mask); int toggle_kbdled(int mask); +void sysled_enable(int en); void input_notify_mode(); int input_poll(int getchar); diff --git a/support/minimig/minimig_fdd.cpp b/support/minimig/minimig_fdd.cpp index 0413a19..cde6a8e 100644 --- a/support/minimig/minimig_fdd.cpp +++ b/support/minimig/minimig_fdd.cpp @@ -614,19 +614,15 @@ void HandleFDD(unsigned char c1, unsigned char c2) if (c1 & CMD_RDTRK) { - DISKLED_ON; sel = (c1 >> 6) & 0x03; df[sel].track = c2; ReadTrack(&df[sel]); - DISKLED_OFF; } else if (c1 & CMD_WRTRK) { - DISKLED_ON; sel = (c1 >> 6) & 0x03; df[sel].track = c2; WriteTrack(&df[sel]); - DISKLED_OFF; } } diff --git a/support/minimig/minimig_share.cpp b/support/minimig/minimig_share.cpp index 1961c02..8e098f7 100644 --- a/support/minimig/minimig_share.cpp +++ b/support/minimig/minimig_share.cpp @@ -620,6 +620,7 @@ static int process_request(void *reqres_buffer) break; } + DISKLED_ON; uint32_t length = SWAP_INT(req->length); length = FileReadAdv(&open_file_handles[key], shmem + DATA_BUFFER, length); @@ -642,6 +643,7 @@ static int process_request(void *reqres_buffer) break; } + DISKLED_ON; uint32_t length = SWAP_INT(req->length); length = FileWriteAdv(&open_file_handles[key], shmem + DATA_BUFFER, length); @@ -720,6 +722,7 @@ static int process_request(void *reqres_buffer) break; } + DISKLED_ON; if (PathIsDir(name, 0)) { ret = DirDelete(name) ? 0 : ERROR_DIRECTORY_NOT_EMPTY; @@ -784,6 +787,7 @@ static int process_request(void *reqres_buffer) break; } + DISKLED_ON; if (rename(buf, fp2)) { ret = ERROR_OBJECT_NOT_FOUND; @@ -801,6 +805,7 @@ static int process_request(void *reqres_buffer) CreateDirResponse *res = (CreateDirResponse*)reqres_buffer; sz_res = sizeof(CreateDirResponse); + DISKLED_ON; char *name = find_path(SWAP_INT(req->key), req->name + 1); if (!FileCreatePath(name)) { diff --git a/user_io.cpp b/user_io.cpp index f3173c2..f5ceaf3 100644 --- a/user_io.cpp +++ b/user_io.cpp @@ -2513,7 +2513,9 @@ void user_io_poll() spi_w(0); spi_w(0); DisableFpga(); + sysled_enable(0); HandleFDD(c1, c2); + sysled_enable(1); uint16_t sd_req = ide_check(); if (sd_req & 0x8000)