1
0
mirror of https://github.com/aap/pdp6.git synced 2026-02-07 00:47:43 +00:00

memory power on

This commit is contained in:
aap
2016-10-31 16:38:13 +01:00
parent 91f93179bb
commit 1fde96488e
3 changed files with 32 additions and 5 deletions

View File

@@ -3061,8 +3061,15 @@ aprmain(void *p)
apr->nnextpulses = 0;
apr->ia_inh = 0;
apr->membus.c12 = 0;
apr->membus.c34 = 0;
apr->iobus.c12 = 0;
apr->iobus.c34 = 0;
if(apr->membus.fmem)
apr->membus.fmem->poweron(apr->membus.fmem);
for(i = 0; i < 16; i++)
if(apr->membus.cmem[i])
apr->membus.cmem[i]->poweron(apr->membus.cmem[i]);
nextpulse(apr, mr_pwr_clr);
while(apr->sw_power){

View File

@@ -130,6 +130,18 @@ end:
return 0;
}
static void
powercore(Mem *mem)
{
CMem *core;
core = mem->module;
readmem(core->filename, core->core, 040000);
core->cmc_aw_rq = 1;
core->cmc_p_act = -1;
core->cmc_last_proc = 2; /* not reset by the hardware :/ */
}
/* This is based on the 162 memory */
static int
wakeff(Mem *mem, Membus *bus)
@@ -183,6 +195,16 @@ end:
return 0;
}
static void
powerff(Mem *mem)
{
FMem *ff;
ff = mem->module;
ff->fmc_act = 0;
ff->fmc_wr = 0;
}
void
wakemem(Membus *bus)
{
@@ -217,13 +239,8 @@ makecoremem(const char *file)
Mem *mem;
core = malloc(sizeof(CMem));
memset(core, 0, sizeof(CMem));
core->filename = file;
pthread_mutex_init(&core->mutex, nil);
core->cmc_aw_rq = 1;
core->cmc_p_act = -1;
core->cmc_last_proc = 2;
readmem(core->filename, core->core, 040000);
mem = malloc(sizeof(Mem));
mem->module = core;
@@ -232,6 +249,7 @@ makecoremem(const char *file)
mem->bus[2] = &memterm;
mem->bus[3] = &memterm;
mem->wake = wakecore;
mem->poweron = powercore;
return mem;
}
@@ -253,6 +271,7 @@ makefastmem(int p)
mem->bus[2] = &memterm;
mem->bus[3] = &memterm;
mem->wake = wakeff;
mem->poweron = powerff;
return mem;
}

View File

@@ -151,6 +151,7 @@ struct Mem
void *module;
Membus *bus[4];
int (*wake)(Mem *mem, Membus *bus);
void (*poweron)(Mem *mem);
};
struct Membus