Ejemplo n.º 1
0
SCSIDEVICE* scsiDeviceCreate(int scsiId, int diskId, UInt8* buf, char* name,
                  int type, int mode, CdromXferCompCb xferCompCb, void* ref)
{
    SCSIDEVICE* scsi = malloc(sizeof(SCSIDEVICE));

    scsi->scsiId        = scsiId;
    scsi->diskId        = diskId;
    scsi->buffer        = buf;
    scsi->productName   = name;
    scsi->deviceType    = type;
    scsi->mode          = mode;
    scsi->enabled       = 1;
    scsi->sectorSize    = 512;
    scsi->cdrom         = NULL;
/*
    scsi->disk.fileName[0] = 0;
    scsi->disk.fileNameInZip[0] = 0;
    scsi->disk.directory[0] = 0;
    scsi->disk.extensionFilter = 0;
    scsi->disk.type = 0;
*/
    if (type == SDT_CDROM) {
        scsi->sectorSize = 2048;
        scsi->cdrom = archCdromCreate(xferCompCb, ref);
        if (scsi->cdrom == NULL) {
            scsi->enabled = 0;
        }
    }
    scsiDeviceReset(scsi);
    return scsi;
}
Ejemplo n.º 2
0
void mb89352Reset(MB89352* spc, int scsireset)
{
    int i;

    spc->regs[REG_BDID] = 0x80;     // Initial value
    spc->regs[REG_SCTL] = 0x80;
    spc->rst   = 0;
    spc->atn   = 0;
    spc->myId  = 7;

    mb89352SoftReset(spc);

    if (scsireset) {
        for (i = 0; i < 8; ++i) {
            scsiDeviceReset(spc->scsiDevice[i]);
        }
    }
}
Ejemplo n.º 3
0
void wd33c93Reset(WD33C93* wd33c93, int scsireset)
{
    int i;

    SCSILOG("wd33c93 reset\n");
    scsiDeviceLogFlush();

    // initialized register
    memset(wd33c93->regs, 0, 0x1b);
    memset(wd33c93->regs + 0x1b, 0xff, 4);
    wd33c93->regs[REG_AUX_STATUS] = AS_INT;
    wd33c93->myId   = 0;
    wd33c93->latch  = 0;
    wd33c93->tc     = 0;
    wd33c93->phase  = BusFree;
    wd33c93->pBuf   = wd33c93->buffer;
    if (scsireset) {
        for (i = 0; i < wd33c93->maxDev; ++i) {
            scsiDeviceReset(wd33c93->dev[i]);
        }
    }
}