From 659ade5b64f5259f63f58725f398ed9038b5c918 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Fri, 30 Nov 2018 00:29:54 +0000 Subject: [PATCH] plus3boot: simple tool to checksum a plus3 boot block and make it bootable --- Kernel/cpu-z80/image.mk | 4 +++- Kernel/tools/plus3boot.c | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 Kernel/tools/plus3boot.c diff --git a/Kernel/cpu-z80/image.mk b/Kernel/cpu-z80/image.mk index 3a3e8e57..f98eb6b1 100644 --- a/Kernel/cpu-z80/image.mk +++ b/Kernel/cpu-z80/image.mk @@ -23,6 +23,8 @@ tools/flat2z80: tools/flat2z80.c tools/makedck: tools/makedck.c +tools/plus3boot: tools/plus3boot.c + tools/raw2mgt: tools/raw2mgt.c tools/bankld/sdldz80: @@ -38,7 +40,7 @@ tools/trslabel: tools/trslabel.c fuzix.ihx: target $(OBJS) platform-$(TARGET)/fuzix.lnk tools/bankld/sdldz80 $(CROSS_LD) -n -k $(LIBZ80) -f platform-$(TARGET)/fuzix.lnk -fuzix.bin: fuzix.ihx tools/bihx tools/analysemap tools/memhogs tools/binman tools/bintomdv tools/binmunge tools/bin2sna tools/bin2z80 cpm-loader/cpmload.bin tools/flat2z80 tools/makejv3 tools/trslabel tools/visualize tools/raw2mgt tools/cartman tools/makedck +fuzix.bin: fuzix.ihx tools/bihx tools/analysemap tools/memhogs tools/binman tools/bintomdv tools/binmunge tools/bin2sna tools/bin2z80 cpm-loader/cpmload.bin tools/flat2z80 tools/makejv3 tools/trslabel tools/visualize tools/raw2mgt tools/cartman tools/makedck tools/plus3boot -cp hogs.txt hogs.txt.old tools/memhogs hogs.txt head -5 hogs.txt diff --git a/Kernel/tools/plus3boot.c b/Kernel/tools/plus3boot.c new file mode 100644 index 00000000..c6176454 --- /dev/null +++ b/Kernel/tools/plus3boot.c @@ -0,0 +1,25 @@ +#include +#include +#include + +int main(int argc, char *argv[]) +{ + uint8_t buf[512]; + uint8_t *p = buf; + uint8_t sum = 0; + + if (fread(buf, 512, 1, stdin) != 1) { + fprintf(stderr, "boot block too short.\n"); + exit(1); + } + while(p < buf + 512) + sum += *p++; + sum = ~sum; + sum += 4; + buf[15] = sum; + if (fwrite(buf, 512, 1, stdout) != 1) { + fprintf(stderr, "boot block write error.\n"); + exit(1); + } + return 0; +} \ No newline at end of file -- 2.34.1