1
0
mirror of https://github.com/aap/pdp6.git synced 2026-04-28 04:54:53 +00:00

started with IO

This commit is contained in:
aap
2016-04-16 01:32:43 +02:00
parent f41c186d88
commit 692715079e
5 changed files with 162 additions and 39 deletions

31
mem.c
View File

@@ -14,17 +14,22 @@ readmem(char *file, word *mem, word size)
FILE *f;
char buf[100], *s;
hword a;
word w;
if(f = fopen(file, "r"), f == nil)
return;
a = 0;
while(s = fgets(buf, 100, f)){
while(*s){
if(*s == ':')
a = strtol(s+1, &s, 8);
else if('0' <= *s && *s <= '7' &&
a < size)
mem[a++] = strtol(s, &s, 8);
else
if(*s == ';')
break;
else if('0' <= *s && *s <= '7'){
w = strtol(s, &s, 8);
if(*s == ':'){
a = w;
s++;
}else
mem[a++] = w;
}else
s++;
}
}
@@ -47,9 +52,13 @@ dumpmem(void)
if(f = fopen("memdump", "w"), f == nil)
return;
for(a = 0; a < 16; a++)
fprint(f, ":%02o %012llo\n", a, fmem[a]);
for(a = 0; a < maxmem; a++)
fprint(f, ":%06o %012llo\n", a, memory[a]);
fprint(f, "%02o: %012llo\n", a, fmem[a]);
for(a = 0; a < maxmem; a++){
if(memory[a]){
fprint(f, "%06o: ", a);
fprint(f, "%012llo\n", memory[a]);
}
}
fclose(f);
}
@@ -74,13 +83,13 @@ wakemem(void)
membus0 |= MEMBUS_MAI_ADDR_ACK;
hold = membus0 & MEMBUS_MA_FMC_SEL1 ? &fmem[a] : &memory[a];
if(membus0 & MEMBUS_RD_RQ){
membus1 = *hold;
membus1 = *hold & FW;
membus0 |= MEMBUS_MAI_RD_RS;
hold = NULL;
}
}
if(membus0 & MEMBUS_MAI_WR_RS && hold){
*hold = membus1;
*hold = membus1 & FW;
membus0 &= ~MEMBUS_MAI_WR_RS;
hold = NULL;
}