From: Alan Cox Date: Tue, 27 Nov 2018 12:49:04 +0000 (+0000) Subject: makedck: Make a Timex cartridge dock for the kernel image X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=f4a1247c8adbb7193885d19242be6110fb14d589;p=FUZIX.git makedck: Make a Timex cartridge dock for the kernel image --- diff --git a/Kernel/tools/makedck.c b/Kernel/tools/makedck.c new file mode 100644 index 00000000..08246c81 --- /dev/null +++ b/Kernel/tools/makedck.c @@ -0,0 +1,52 @@ +/* + * Make a DCK file of the top 32K of a 64K image + */ + +#include +#include +#include +#include + + +int main(int argc, char *argv[]) +{ + FILE *in, *out; + char buf[32768]; + if (argc != 3) { + fprintf(stderr, "%s image dockfile.\n", argv[0]); + exit(1); + } + in = fopen(argv[1], "r"); + if (in == NULL) { + perror(argv[1]); + exit(1); + } + out = fopen(argv[2], "w"); + if (out == NULL) { + perror(argv[2]); + exit(1); + } + fputc(0, out); /* Dock */ + fputc(0x1, out); /* Low 32K is RAM, data absent */ + fputc(0x1, out); + fputc(0x1, out); + fputc(0x1, out); + fputc(0x2, out); /* Next 32K is ROM, data present */ + fputc(0x2, out); + fputc(0x2, out); + fputc(0x2, out); + + /* Now the data */ + if (fread(buf, 32768, 1, in) != 1 || + fread(buf, 32768, 1, in) != 1) { + fprintf(stderr, "%s: image '%s' is too short.\n", + argv[0], argv[1]); + exit(1); + } + if (fwrite(buf, 32768,1, out) != 1 || fclose(out)) { + fprintf(stderr, "%s: short write to '%s'.\n", argv[0], argv[2]); + exit(1); + } + return 0; +} + \ No newline at end of file