1
0
mirror of synced 2026-04-05 05:13:32 +00:00
This commit is contained in:
brad
2010-04-11 10:34:23 +00:00
parent aeb707c4c3
commit 9d76e4f896
4 changed files with 41 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
SUBDIRS = macro showbin maker
SUBDIRS = macro showbin maker skipz
all clean:
for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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);