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; }
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]); } } }
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]); } } }