PDP11: Improve idling.
This commit is contained in:
parent
eb359b962f
commit
34c4ab3cd5
4 changed files with 16 additions and 9 deletions
|
@ -157,7 +157,7 @@ DIB dci_dib = {
|
||||||
2, IVCL (DCI), VEC_AUTO, { &dci_iack, &dco_iack }, IOLN_DC,
|
2, IVCL (DCI), VEC_AUTO, { &dci_iack, &dco_iack }, IOLN_DC,
|
||||||
};
|
};
|
||||||
|
|
||||||
UNIT dci_unit = { UDATA (&dci_svc, 0, 0), TMLN_SPD_9600_BPS };
|
UNIT dci_unit = { UDATA (&dci_svc, UNIT_IDLE, 0), TMLN_SPD_9600_BPS };
|
||||||
|
|
||||||
REG dci_reg[] = {
|
REG dci_reg[] = {
|
||||||
{ BRDATAD (BUF, dci_buf, DEV_RDX, 8, DCX_LINES, "input control/stats register") },
|
{ BRDATAD (BUF, dci_buf, DEV_RDX, 8, DCX_LINES, "input control/stats register") },
|
||||||
|
|
|
@ -81,8 +81,8 @@ DIB dh_dib = {
|
||||||
};
|
};
|
||||||
|
|
||||||
UNIT dh_unit[] = {
|
UNIT dh_unit[] = {
|
||||||
{ UDATA (&dh_input_svc, UNIT_ATTABLE, 0) },
|
{ UDATA (&dh_input_svc, UNIT_ATTABLE | UNIT_IDLE, 0) },
|
||||||
{ UDATA (&dh_output_svc, UNIT_DIS, 0) }
|
{ UDATA (&dh_output_svc, UNIT_DIS | UNIT_IDLE, 0) }
|
||||||
};
|
};
|
||||||
|
|
||||||
REG dh_reg[] = {
|
REG dh_reg[] = {
|
||||||
|
|
|
@ -58,7 +58,7 @@ DIB ng_dib = {
|
||||||
};
|
};
|
||||||
|
|
||||||
UNIT ng_unit = {
|
UNIT ng_unit = {
|
||||||
UDATA (&ng_svc, 0, 0), NG_DELAY
|
UDATA (&ng_svc, UNIT_IDLE, 0), NG_DELAY
|
||||||
};
|
};
|
||||||
|
|
||||||
REG ng_reg[] = {
|
REG ng_reg[] = {
|
||||||
|
@ -133,8 +133,14 @@ t_stat
|
||||||
ng_wr(int32 data, int32 PA, int32 access)
|
ng_wr(int32 data, int32 PA, int32 access)
|
||||||
{
|
{
|
||||||
switch (PA & 002) {
|
switch (PA & 002) {
|
||||||
case 000: ng_set_csr(data); return SCPE_OK;
|
case 000:
|
||||||
case 002: ng_set_reloc(data); return SCPE_OK;
|
ng_set_csr(data);
|
||||||
|
if (data & 010000)
|
||||||
|
sim_activate (&ng_unit, 1);
|
||||||
|
return SCPE_OK;
|
||||||
|
case 002:
|
||||||
|
ng_set_reloc(data);
|
||||||
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
return SCPE_NXM;
|
return SCPE_NXM;
|
||||||
}
|
}
|
||||||
|
@ -185,7 +191,6 @@ ng_reset(DEVICE *dptr)
|
||||||
|
|
||||||
CLR_INT (NG);
|
CLR_INT (NG);
|
||||||
ng_unit.wait = 100;
|
ng_unit.wait = 100;
|
||||||
sim_activate (dptr->units, 1);
|
|
||||||
|
|
||||||
set_cmd (0, "DZ DISABLED"); /* Conflict with NG. */
|
set_cmd (0, "DZ DISABLED"); /* Conflict with NG. */
|
||||||
set_cmd (0, "HK DISABLED"); /* Conflict with RF. */
|
set_cmd (0, "HK DISABLED"); /* Conflict with RF. */
|
||||||
|
|
|
@ -308,6 +308,7 @@ ng_cycle(int us, int slowdown)
|
||||||
static uint32 usec = 0;
|
static uint32 usec = 0;
|
||||||
static uint32 msec = 0;
|
static uint32 msec = 0;
|
||||||
uint32 new_msec;
|
uint32 new_msec;
|
||||||
|
int running = 0;
|
||||||
int saved;
|
int saved;
|
||||||
|
|
||||||
new_msec = (usec += us) / 1000;
|
new_msec = (usec += us) / 1000;
|
||||||
|
@ -323,7 +324,7 @@ ng_cycle(int us, int slowdown)
|
||||||
if ((status[0] & 1) == 0)
|
if ((status[0] & 1) == 0)
|
||||||
goto age_ret;
|
goto age_ret;
|
||||||
} else if (ng_type != TYPE_DAZZLE)
|
} else if (ng_type != TYPE_DAZZLE)
|
||||||
return 1;
|
return 0;
|
||||||
|
|
||||||
if (sync_period)
|
if (sync_period)
|
||||||
goto age_ret;
|
goto age_ret;
|
||||||
|
@ -333,6 +334,7 @@ ng_cycle(int us, int slowdown)
|
||||||
if (ng_type == TYPE_DAZZLE && (status[console] & TKRUN) == 0)
|
if (ng_type == TYPE_DAZZLE && (status[console] & TKRUN) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
running = 1;
|
||||||
time_out = fetch(dpc[console], &inst);
|
time_out = fetch(dpc[console], &inst);
|
||||||
DEBUGF("[%d] PC %06o, INSTR %06o\n", console, dpc[console], inst);
|
DEBUGF("[%d] PC %06o, INSTR %06o\n", console, dpc[console], inst);
|
||||||
dpc[console] += 2;
|
dpc[console] += 2;
|
||||||
|
@ -355,5 +357,5 @@ ng_cycle(int us, int slowdown)
|
||||||
|
|
||||||
age_ret:
|
age_ret:
|
||||||
display_age(us, slowdown);
|
display_age(us, slowdown);
|
||||||
return 1;
|
return running || !display_is_blank();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue