diff --git a/utils/Makefile b/utils/Makefile index fbebde5..fd06e53 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -1,5 +1,5 @@ -SUBDIRS = macro showbin maker +SUBDIRS = macro showbin maker skipz all clean: for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done diff --git a/utils/maker/maker.c b/utils/maker/maker.c index f72c1e3..b7a2af4 100644 --- a/utils/maker/maker.c +++ b/utils/maker/maker.c @@ -250,7 +250,7 @@ int field_load(int dstfield, char *filename) if (allow) { if (filled[field][origin]) { - printf("%s: field %d, addr %o; duplicate (old %04x new %04o)\n", + printf("%s: field %d, addr %o; duplicate (old %04o new %04o)\n", filename, field, origin, fields[field][origin], word & 07777); } diff --git a/utils/maker/script b/utils/maker/script index ebd3e69..de42146 100644 --- a/utils/maker/script +++ b/utils/maker/script @@ -1,8 +1,8 @@ # disk tss8_rf.dsk -field 0 ../tss8.2/si.bin -field 1 ../tss8.2/fip.bin -field 2 ../tss8.2/init.bin -field 3 ../tss8.2/ts8.bin -#field 4 ../tss8.2/ts8ii.bin -save +field 0 ../../tss8.2/si.bin +field 1 ../../tss8.2/fip.bin +field 2 ../../tss8.2/init.bin +field 3 ../../tss8.2/ts8.bin +#field 4 ../../tss8.2/ts8ii.bin +#save diff --git a/utils/showbin/showbin.c b/utils/showbin/showbin.c index a0eca0c..648ae9b 100644 --- a/utils/showbin/showbin.c +++ b/utils/showbin/showbin.c @@ -18,7 +18,7 @@ u12 mem[MEMSIZE]; u8 binfile[16*1024]; -int loadbin(char *fn) +int loadbin(char *fn, int skipz) { int f, ch, o; int rubout, newfield, state, high, low, done; @@ -31,11 +31,30 @@ int loadbin(char *fn) return -1; } + if (skipz) { + char ch; + while (1) { + int ret; + ret = read(f, &ch, 1); + if (ret != 1) + return -1; + if (ch == 'Z'-'@') + break; + } + } + binfile_size = read(f, binfile, sizeof(binfile)); - printf("loadbin: %d bytes\n", binfile_size); + if (0) printf("loadbin: %d bytes\n", binfile_size); done = 0; + rubout = 0; + state = 0; + field = 0; + origin = 0; + csum = 0; + newfield = 0; + for (o = 0; o < binfile_size && !done; o++) { ch = binfile[o]; @@ -85,7 +104,8 @@ int loadbin(char *fn) printf("loadbin: too big\n"); } - if (1) printf("mem[%o] = %o\n", field|origin, word&07777); + if (0) printf("mem[%o] = %o\n", field|origin, word&07777); + if (1) printf("%05o %04o\n", field|origin, word&07777); mem[field | origin] = word & 07777; origin = (origin + 1) & 07777; @@ -103,8 +123,17 @@ int loadbin(char *fn) main(int argc, char *argv[]) { + int skipz = 0; + + if (argc > 2 && strcmp(argv[1], "-z") == 0) { + skipz = 1; + argc--; + argv++; + } + if (argc > 1) { - loadbin(argv[1]); + if (loadbin(argv[1], skipz)) + exit(1); } exit(0);