From 34dafa69e2e87d9207a8e00514a9994b4403f3be Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 30 Aug 2018 22:49:45 +0100 Subject: [PATCH] hdflba: tool I forgot to add Makes an HDF emulated hard disk acquire LBA support --- Kernel/tools/hdflba.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Kernel/tools/hdflba.c diff --git a/Kernel/tools/hdflba.c b/Kernel/tools/hdflba.c new file mode 100644 index 00000000..fba093ce --- /dev/null +++ b/Kernel/tools/hdflba.c @@ -0,0 +1,43 @@ +/* + * Mark an HDF file as LBA + */ + +#include +#include +#include + +int main(int argc, char *argv[]) +{ + unsigned char buf[512]; + FILE *f; + + if (argc != 2) { + fprintf(stderr, "%s: hdffile\n", argv[0]); + exit(1); + } + + f = fopen(argv[1], "r+"); + if (f == NULL) { + perror(argv[1]); + exit(1); + } + if (fread(buf, 512, 1, f) != 1) { + fprintf(stderr, "%s: short read.\n", argv[1]); + exit(1); + } + if (memcmp(buf, "RS-IDE", 6)) { + fprintf(stderr, "%s: not an HDF image.\n", argv[1]); + exit(1); + } + buf[0x16 + 99] |= 2; + rewind(f); + if (fwrite(buf, 512, 1, f) != 1) { + fprintf(stderr, "%s: short write.\n", argv[1]); + exit(1); + } + if (fclose(f)) { + perror(argv[1]); + exit(1); + } + exit(0); +} -- 2.34.1