PDP11, VAX8600, VAX780, VAX750: Fix prior Massbus auto configure.
As discussed in #307
This commit is contained in:
parent
550e360769
commit
7bd58c6d7f
2 changed files with 22 additions and 40 deletions
|
@ -862,16 +862,11 @@ if (dptr->flags & DEV_DIS) { /* Disabling? */
|
||||||
|
|
||||||
dibp->ba = MBA_AUTO; /* Flag unassigned */
|
dibp->ba = MBA_AUTO; /* Flag unassigned */
|
||||||
mba_reset (&mba_dev[mb]); /* reset prior MBA */
|
mba_reset (&mba_dev[mb]); /* reset prior MBA */
|
||||||
mba_dev[mb].flags |= DEV_DIS; /* disable prior MBA */
|
|
||||||
}
|
}
|
||||||
build_dib_tab();
|
build_dib_tab();
|
||||||
if (!(dptr->flags & DEV_DIS)) { /* Enabling? */
|
if (!(dptr->flags & DEV_DIS)) /* Enabling? */
|
||||||
uint32 mb = dibp->ba;
|
|
||||||
|
|
||||||
mba_dev[mb].flags &= ~DEV_DIS; /* enable assigned MBA */
|
|
||||||
mba_reset (&mba_dev[dibp->ba]); /* reset new MBA */
|
mba_reset (&mba_dev[dibp->ba]); /* reset new MBA */
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Show Massbus adapter number */
|
/* Show Massbus adapter number */
|
||||||
|
|
||||||
|
@ -894,25 +889,20 @@ return SCPE_OK;
|
||||||
void init_mbus_tab (void)
|
void init_mbus_tab (void)
|
||||||
{
|
{
|
||||||
uint32 i;
|
uint32 i;
|
||||||
static t_bool initialized = FALSE;
|
|
||||||
|
|
||||||
if (!initialized) { /* Force MBA devices to reflect initial state */
|
|
||||||
DEVICE *dptr; /* of potentially attached devices */
|
|
||||||
int mba_devs;
|
int mba_devs;
|
||||||
|
|
||||||
for (i = mba_devs = 0; (dptr = sim_devices[i]) != NULL; i++) {
|
|
||||||
if (dptr->flags & DEV_MBUS) {
|
|
||||||
mba_dev[mba_devs].flags &= ~DEV_DIS;
|
|
||||||
mba_dev[mba_devs].flags |= (dptr->flags & DEV_DIS);
|
|
||||||
mba_devs++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
initialized = TRUE;
|
|
||||||
}
|
|
||||||
for (i = 0; i < MBA_NUM; i++) {
|
for (i = 0; i < MBA_NUM; i++) {
|
||||||
mbregR[i] = NULL;
|
mbregR[i] = NULL;
|
||||||
mbregW[i] = NULL;
|
mbregW[i] = NULL;
|
||||||
mbabort[i] = NULL;
|
mbabort[i] = NULL;
|
||||||
|
mba_dev[i].flags |= DEV_DIS;
|
||||||
|
}
|
||||||
|
for (i = mba_devs = 0; sim_devices[i] != NULL; i++) {
|
||||||
|
if ((sim_devices[i]->flags & DEV_MBUS) &&
|
||||||
|
(!(sim_devices[i]->flags & DEV_DIS))) {
|
||||||
|
mba_dev[mba_devs].flags &= ~DEV_DIS;
|
||||||
|
mba_devs++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mba_active = 0;
|
mba_active = 0;
|
||||||
}
|
}
|
||||||
|
@ -945,6 +935,7 @@ if (dibp->wr) /* set wr dispatch */
|
||||||
mbregW[idx] = dibp->wr;
|
mbregW[idx] = dibp->wr;
|
||||||
if (dibp->ack[0]) /* set abort dispatch */
|
if (dibp->ack[0]) /* set abort dispatch */
|
||||||
mbabort[idx] = dibp->ack[0];
|
mbabort[idx] = dibp->ack[0];
|
||||||
|
mba_dev[idx].flags &= ~DEV_DIS; /* mark MBA enabled */
|
||||||
return build_ubus_tab (&mba_dev[idx], (DIB *)mba_dev[idx].ctxt);
|
return build_ubus_tab (&mba_dev[idx], (DIB *)mba_dev[idx].ctxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -926,41 +926,31 @@ if (dptr->flags & DEV_DIS) { /* Disabling? */
|
||||||
|
|
||||||
dibp->ba = MBA_AUTO; /* Flag unassigned */
|
dibp->ba = MBA_AUTO; /* Flag unassigned */
|
||||||
mba_reset (&mba_dev[mb]); /* reset prior MBA */
|
mba_reset (&mba_dev[mb]); /* reset prior MBA */
|
||||||
mba_dev[mb].flags |= DEV_DIS; /* disable prior MBA */
|
|
||||||
}
|
}
|
||||||
build_dib_tab();
|
build_dib_tab();
|
||||||
if (!(dptr->flags & DEV_DIS)) { /* Enabling? */
|
if (!(dptr->flags & DEV_DIS)) /* Enabling? */
|
||||||
uint32 mb = dibp->ba;
|
|
||||||
|
|
||||||
mba_dev[mb].flags &= ~DEV_DIS; /* enable assigned MBA */
|
|
||||||
mba_reset (&mba_dev[dibp->ba]); /* reset new MBA */
|
mba_reset (&mba_dev[dibp->ba]); /* reset new MBA */
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Init Mbus tables */
|
/* Init Mbus tables */
|
||||||
|
|
||||||
void init_mbus_tab (void)
|
void init_mbus_tab (void)
|
||||||
{
|
{
|
||||||
uint32 i;
|
uint32 i;
|
||||||
static t_bool initialized = FALSE;
|
|
||||||
|
|
||||||
if (!initialized) { /* Force MBA devices to reflect initial state */
|
|
||||||
DEVICE *dptr; /* of potentially attached devices */
|
|
||||||
int mba_devs;
|
int mba_devs;
|
||||||
|
|
||||||
for (i = mba_devs = 0; (dptr = sim_devices[i]) != NULL; i++) {
|
|
||||||
if (dptr->flags & DEV_MBUS) {
|
|
||||||
mba_dev[mba_devs].flags &= ~DEV_DIS;
|
|
||||||
mba_dev[mba_devs].flags |= (dptr->flags & DEV_DIS);
|
|
||||||
mba_devs++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
initialized = TRUE;
|
|
||||||
}
|
|
||||||
for (i = 0; i < MBA_NUM; i++) {
|
for (i = 0; i < MBA_NUM; i++) {
|
||||||
mbregR[i] = NULL;
|
mbregR[i] = NULL;
|
||||||
mbregW[i] = NULL;
|
mbregW[i] = NULL;
|
||||||
mbabort[i] = NULL;
|
mbabort[i] = NULL;
|
||||||
|
mba_dev[i].flags |= DEV_DIS;
|
||||||
|
}
|
||||||
|
for (i = mba_devs = 0; sim_devices[i] != NULL; i++) {
|
||||||
|
if ((sim_devices[i]->flags & DEV_MBUS) &&
|
||||||
|
(!(sim_devices[i]->flags & DEV_DIS))) {
|
||||||
|
mba_dev[mba_devs].flags &= ~DEV_DIS;
|
||||||
|
mba_devs++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mba_active = 0;
|
mba_active = 0;
|
||||||
}
|
}
|
||||||
|
@ -993,6 +983,7 @@ if (dibp->wr) /* set wr dispatch */
|
||||||
mbregW[idx] = dibp->wr;
|
mbregW[idx] = dibp->wr;
|
||||||
if (dibp->ack[0]) /* set abort dispatch */
|
if (dibp->ack[0]) /* set abort dispatch */
|
||||||
mbabort[idx] = dibp->ack[0];
|
mbabort[idx] = dibp->ack[0];
|
||||||
|
mba_dev[idx].flags &= ~DEV_DIS; /* mark MBA enabled */
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue