Example #1
0
static void wd33c93Disconnect(WD33C93* wd33c93)
{
    if (wd33c93->phase != BusFree) {
        if ((wd33c93->targetId >= 0) && (wd33c93->targetId < wd33c93->maxDev)) {
            scsiDeviceDisconnect(TARGET);
        }
        if (wd33c93->regs[REG_SCSI_STATUS] != SS_XFER_END) {
            wd33c93->regs[REG_SCSI_STATUS] = SS_DISCONNECT;
        }
        wd33c93->regs[REG_AUX_STATUS]  = AS_INT;
        wd33c93->phase          = BusFree;
        //wd33c93->nextPhase    = -1;
    }

    //wd33c93->mci          = -1;
    wd33c93->tc             = 0;
    //wd33c93->atn          = 0;

    SCSILOG("busfree()\n\n");
    scsiDeviceLogFlush();
}
Example #2
0
static void mb89352Disconnect(MB89352* spc)
{
    if (spc->phase != BusFree) {
        if ((spc->targetId >= 0) && (spc->targetId < 8)) {
            scsiDeviceDisconnect(TARGET);
        }
        spc->regs[REG_INTS] |= INTS_Disconnected;
        spc->phase      = BusFree;
        spc->nextPhase  = -1;
    }

    spc->regs[REG_PSNS] = 0;
    spc->isBusy         = 0;
    spc->isTransfer     = 0;
    spc->counter        = 0;
    spc->tc             = 0;
    spc->atn            = 0;

    SCSILOG("busfree()\n\n");
    scsiDeviceLogFlush();
}