PDP11: Fix DL11 & TU58 autoconfigure limitation checks

This commit is contained in:
Mark Pizzolato 2016-01-25 07:03:30 -08:00
parent 5da0d954c4
commit c8c071e3e1
2 changed files with 16 additions and 10 deletions

View file

@ -612,10 +612,16 @@ if (dis) {
dlo_dev.flags = dlo_dev.flags | DEV_DIS; dlo_dev.flags = dlo_dev.flags | DEV_DIS;
} }
else { else {
if (((dli_dev.flags & DEV_DIS) || (dlo_dev.flags & DEV_DIS)) && if (dlx_tu58_count() < 16) {
(dlx_tu58_count() < 16)) { if ((dlx_desc.lines + dlx_tu58_count()) > 16) {
if ((dlx_desc.lines + dlx_tu58_count()) > 16) char lines[16];
dlx_desc.lines = 16 - dlx_tu58_count(); int32 saved_switches = sim_switches;
sprintf (lines, "%d", 16 - dlx_tu58_count());
sim_switches |= SWMASK('Y');
dlx_set_lines (NULL, 0, lines, NULL);
sim_switches = saved_switches;
}
dli_dev.flags = dli_dev.flags & ~DEV_DIS; dli_dev.flags = dli_dev.flags & ~DEV_DIS;
dlo_dev.flags = dlo_dev.flags & ~DEV_DIS; dlo_dev.flags = dlo_dev.flags & ~DEV_DIS;
} }

View file

@ -1441,12 +1441,12 @@ td_ctrls = newln;
td_dib.lnt = td_ctrls * td_dib.ulnt; /* upd IO page lnt */ td_dib.lnt = td_ctrls * td_dib.ulnt; /* upd IO page lnt */
/* Make sure that the number of TU58 controllers plus DL devices is 16 or less */ /* Make sure that the number of TU58 controllers plus DL devices is 16 or less */
if ((dli_dptr != NULL) && !(dli_dptr->flags & DEV_DIS) && if ((dli_dptr != NULL) && !(dli_dptr->flags & DEV_DIS) &&
((((DIB *)dli_dptr->ctxt)->numc + td_ctrls) > 16)) { ((((DIB *)dli_dptr->ctxt)->numc + td_ctrls) > 16)) { /* Too many? */
dli_dptr->flags |= DEV_DIS; dli_dptr->flags |= DEV_DIS; /* First disable DL devices */
dli_dptr->reset (dli_dptr); dli_dptr->reset (dli_dptr); /* Notify of the disable */
if (td_ctrls < 16) { if (td_ctrls < 16) { /* Room for some DL devices? */
dli_dptr->flags &= ~DEV_DIS; dli_dptr->flags &= ~DEV_DIS; /* Re-Enable DL devices */
dli_dptr->reset (dli_dptr); dli_dptr->reset (dli_dptr); /* Notify of the enable which forces sizing */
} }
} }
return td_reset (&tdc_dev); return td_reset (&tdc_dev);