This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
SUBDIRS = macro showbin maker
|
||||
SUBDIRS = macro showbin maker skipz
|
||||
|
||||
all clean:
|
||||
for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user