mirror of
https://github.com/thewesker/RASCSI.git
synced 2025-12-20 20:31:24 -05:00
Added some debug code for Issue #2. This will print out a warning when we get an unhandled mode page code, instead of crashing
This commit is contained in:
@@ -2660,7 +2660,7 @@ int FASTCALL SCSIHD::Inquiry(
|
|||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
BOOL FASTCALL SCSIHD::ModeSelect(const DWORD *cdb, const BYTE *buf, int length)
|
BOOL FASTCALL SCSIHD::ModeSelect(const DWORD *cdb, const BYTE *buf, int length)
|
||||||
{
|
{
|
||||||
int page;
|
BYTE page;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
ASSERT(this);
|
ASSERT(this);
|
||||||
@@ -2702,8 +2702,23 @@ BOOL FASTCALL SCSIHD::ModeSelect(const DWORD *cdb, const BYTE *buf, int length)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// CD-ROM Parameters
|
||||||
|
// According to the SONY CDU-541 manual, Page code 8 is supposed
|
||||||
|
// to set the Logical Block Adress Format, as well as the
|
||||||
|
// inactivity timer multiplier
|
||||||
|
case 0x08:
|
||||||
|
// Debug code for Issue #2:
|
||||||
|
// https://github.com/akuker/RASCSI/issues/2
|
||||||
|
printf("\[Unhandled page code\] Received mode page code 8 with total length %d\n ", length);
|
||||||
|
for (int i = 0; i<length; i++)
|
||||||
|
{
|
||||||
|
printf("%02X ", buf[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
// Other page
|
// Other page
|
||||||
default:
|
default:
|
||||||
|
printf("Unknown Mode Select page code received: %02X\n",page);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2822,7 +2837,7 @@ BOOL FASTCALL SCSIHD_NEC::Open(const Filepath& path, BOOL /*attn*/)
|
|||||||
cylinders = (int)(size >> 9);
|
cylinders = (int)(size >> 9);
|
||||||
cylinders >>= 3;
|
cylinders >>= 3;
|
||||||
cylinders /= 25;
|
cylinders /= 25;
|
||||||
} else if (xstrcasecmp(ext, _T(".HDI")) == 0) { // Anex86 HD image?
|
} else if (xstrcasecmp(ext, _T(".HDI")) == 0) { // Anex86 HD image?
|
||||||
imgoffset = getDwordLE(&hdr[4 + 4]);
|
imgoffset = getDwordLE(&hdr[4 + 4]);
|
||||||
imgsize = getDwordLE(&hdr[4 + 4 + 4]);
|
imgsize = getDwordLE(&hdr[4 + 4 + 4]);
|
||||||
sectorsize = getDwordLE(&hdr[4 + 4 + 4 + 4]);
|
sectorsize = getDwordLE(&hdr[4 + 4 + 4 + 4]);
|
||||||
@@ -2946,7 +2961,7 @@ int FASTCALL SCSIHD_NEC::AddFormat(BOOL change, BYTE *buf)
|
|||||||
// 1ゾーンのトラック数を設定(PC-9801-55はこの値を見ているようだ)
|
// 1ゾーンのトラック数を設定(PC-9801-55はこの値を見ているようだ)
|
||||||
buf[0x2] = (BYTE)(heads >> 8);
|
buf[0x2] = (BYTE)(heads >> 8);
|
||||||
buf[0x3] = (BYTE)heads;
|
buf[0x3] = (BYTE)heads;
|
||||||
|
|
||||||
// 1トラックのセクタ数を設定
|
// 1トラックのセクタ数を設定
|
||||||
buf[0xa] = (BYTE)(sectors >> 8);
|
buf[0xa] = (BYTE)(sectors >> 8);
|
||||||
buf[0xb] = (BYTE)sectors;
|
buf[0xb] = (BYTE)sectors;
|
||||||
@@ -2989,7 +3004,7 @@ int FASTCALL SCSIHD_NEC::AddDrive(BOOL change, BYTE *buf)
|
|||||||
buf[0x2] = (BYTE)(cylinders >> 16);
|
buf[0x2] = (BYTE)(cylinders >> 16);
|
||||||
buf[0x3] = (BYTE)(cylinders >> 8);
|
buf[0x3] = (BYTE)(cylinders >> 8);
|
||||||
buf[0x4] = (BYTE)cylinders;
|
buf[0x4] = (BYTE)cylinders;
|
||||||
|
|
||||||
// ヘッド数を設定
|
// ヘッド数を設定
|
||||||
buf[0x5] = (BYTE)heads;
|
buf[0x5] = (BYTE)heads;
|
||||||
}
|
}
|
||||||
@@ -3403,29 +3418,29 @@ int FASTCALL SCSIMO::AddVendor(int page, BOOL change, BYTE *buf)
|
|||||||
mode page code 20h - Vendor Unique Format Page
|
mode page code 20h - Vendor Unique Format Page
|
||||||
format mode XXh type 0
|
format mode XXh type 0
|
||||||
information: http://h20628.www2.hp.com/km-ext/kmcsdirect/emr_na-lpg28560-1.pdf
|
information: http://h20628.www2.hp.com/km-ext/kmcsdirect/emr_na-lpg28560-1.pdf
|
||||||
|
|
||||||
offset description
|
offset description
|
||||||
02h format mode
|
02h format mode
|
||||||
03h type of format (0)
|
03h type of format (0)
|
||||||
04~07h size of user band (total sectors?)
|
04~07h size of user band (total sectors?)
|
||||||
08~09h size of spare band (spare sectors?)
|
08~09h size of spare band (spare sectors?)
|
||||||
0A~0Bh number of bands
|
0A~0Bh number of bands
|
||||||
|
|
||||||
actual value of each 3.5inches optical medium (grabbed by Fujitsu M2513EL)
|
actual value of each 3.5inches optical medium (grabbed by Fujitsu M2513EL)
|
||||||
|
|
||||||
128M 230M 540M 640M
|
128M 230M 540M 640M
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
size of user band 3CBFAh 6CF75h FE45Ch 4BC50h
|
size of user band 3CBFAh 6CF75h FE45Ch 4BC50h
|
||||||
size of spare band 0400h 0401h 08CAh 08C4h
|
size of spare band 0400h 0401h 08CAh 08C4h
|
||||||
number of bands 0001h 000Ah 0012h 000Bh
|
number of bands 0001h 000Ah 0012h 000Bh
|
||||||
|
|
||||||
further information: http://r2089.blog36.fc2.com/blog-entry-177.html
|
further information: http://r2089.blog36.fc2.com/blog-entry-177.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (disk.ready) {
|
if (disk.ready) {
|
||||||
unsigned spare = 0;
|
unsigned spare = 0;
|
||||||
unsigned bands = 0;
|
unsigned bands = 0;
|
||||||
|
|
||||||
if (disk.size == 9) switch (disk.blocks) {
|
if (disk.size == 9) switch (disk.blocks) {
|
||||||
// 128MB
|
// 128MB
|
||||||
case 248826:
|
case 248826:
|
||||||
@@ -5013,7 +5028,7 @@ void FASTCALL SCSIBR::FS_CheckDir(BYTE *buf)
|
|||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
fsresult = fs->CheckDir(nUnit, pNamests);
|
fsresult = fs->CheckDir(nUnit, pNamests);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5037,10 +5052,10 @@ void FASTCALL SCSIBR::FS_MakeDir(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
fsresult = fs->MakeDir(nUnit, pNamests);
|
fsresult = fs->MakeDir(nUnit, pNamests);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5064,10 +5079,10 @@ void FASTCALL SCSIBR::FS_RemoveDir(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
fsresult = fs->RemoveDir(nUnit, pNamests);
|
fsresult = fs->RemoveDir(nUnit, pNamests);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5092,13 +5107,13 @@ void FASTCALL SCSIBR::FS_Rename(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
pNamestsNew = (Human68k::namests_t*)&buf[i];
|
pNamestsNew = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
fsresult = fs->Rename(nUnit, pNamests, pNamestsNew);
|
fsresult = fs->Rename(nUnit, pNamests, pNamestsNew);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5122,10 +5137,10 @@ void FASTCALL SCSIBR::FS_Delete(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
fsresult = fs->Delete(nUnit, pNamests);
|
fsresult = fs->Delete(nUnit, pNamests);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5150,14 +5165,14 @@ void FASTCALL SCSIBR::FS_Attribute(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nHumanAttribute = ntohl(*dp);
|
nHumanAttribute = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
fsresult = fs->Attribute(nUnit, pNamests, nHumanAttribute);
|
fsresult = fs->Attribute(nUnit, pNamests, nHumanAttribute);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5187,7 +5202,7 @@ void FASTCALL SCSIBR::FS_Files(BYTE *buf)
|
|||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nKey = ntohl(*dp);
|
nKey = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
@@ -5294,7 +5309,7 @@ void FASTCALL SCSIBR::FS_Create(BYTE *buf)
|
|||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nKey = ntohl(*dp);
|
nKey = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
@@ -5356,7 +5371,7 @@ void FASTCALL SCSIBR::FS_Open(BYTE *buf)
|
|||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nKey = ntohl(*dp);
|
nKey = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pNamests = (Human68k::namests_t*)&buf[i];
|
pNamests = (Human68k::namests_t*)&buf[i];
|
||||||
i += sizeof(Human68k::namests_t);
|
i += sizeof(Human68k::namests_t);
|
||||||
|
|
||||||
@@ -5409,7 +5424,7 @@ void FASTCALL SCSIBR::FS_Close(BYTE *buf)
|
|||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nKey = ntohl(*dp);
|
nKey = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pFcb = (Human68k::fcb_t*)&buf[i];
|
pFcb = (Human68k::fcb_t*)&buf[i];
|
||||||
i += sizeof(Human68k::fcb_t);
|
i += sizeof(Human68k::fcb_t);
|
||||||
|
|
||||||
@@ -5458,7 +5473,7 @@ void FASTCALL SCSIBR::FS_Read(BYTE *buf)
|
|||||||
|
|
||||||
pFcb = (Human68k::fcb_t*)&buf[i];
|
pFcb = (Human68k::fcb_t*)&buf[i];
|
||||||
i += sizeof(Human68k::fcb_t);
|
i += sizeof(Human68k::fcb_t);
|
||||||
|
|
||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nSize = ntohl(*dp);
|
nSize = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
@@ -5507,7 +5522,7 @@ void FASTCALL SCSIBR::FS_Write(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nKey = ntohl(*dp);
|
nKey = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pFcb = (Human68k::fcb_t*)&buf[i];
|
pFcb = (Human68k::fcb_t*)&buf[i];
|
||||||
i += sizeof(Human68k::fcb_t);
|
i += sizeof(Human68k::fcb_t);
|
||||||
|
|
||||||
@@ -5559,7 +5574,7 @@ void FASTCALL SCSIBR::FS_Seek(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nKey = ntohl(*dp);
|
nKey = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pFcb = (Human68k::fcb_t*)&buf[i];
|
pFcb = (Human68k::fcb_t*)&buf[i];
|
||||||
i += sizeof(Human68k::fcb_t);
|
i += sizeof(Human68k::fcb_t);
|
||||||
|
|
||||||
@@ -5618,7 +5633,7 @@ void FASTCALL SCSIBR::FS_TimeStamp(BYTE *buf)
|
|||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nKey = ntohl(*dp);
|
nKey = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pFcb = (Human68k::fcb_t*)&buf[i];
|
pFcb = (Human68k::fcb_t*)&buf[i];
|
||||||
i += sizeof(Human68k::fcb_t);
|
i += sizeof(Human68k::fcb_t);
|
||||||
|
|
||||||
@@ -5699,10 +5714,10 @@ void FASTCALL SCSIBR::FS_CtrlDrive(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
pCtrlDrive = (Human68k::ctrldrive_t*)&buf[i];
|
pCtrlDrive = (Human68k::ctrldrive_t*)&buf[i];
|
||||||
i += sizeof(Human68k::ctrldrive_t);
|
i += sizeof(Human68k::ctrldrive_t);
|
||||||
|
|
||||||
fsresult = fs->CtrlDrive(nUnit, pCtrlDrive);
|
fsresult = fs->CtrlDrive(nUnit, pCtrlDrive);
|
||||||
|
|
||||||
memcpy(fsout, pCtrlDrive, sizeof(Human68k::ctrldrive_t));
|
memcpy(fsout, pCtrlDrive, sizeof(Human68k::ctrldrive_t));
|
||||||
@@ -5729,7 +5744,7 @@ void FASTCALL SCSIBR::FS_GetDPB(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
fsresult = fs->GetDPB(nUnit, &dpb);
|
fsresult = fs->GetDPB(nUnit, &dpb);
|
||||||
|
|
||||||
dpb.sector_size = htons(dpb.sector_size);
|
dpb.sector_size = htons(dpb.sector_size);
|
||||||
@@ -5772,7 +5787,7 @@ void FASTCALL SCSIBR::FS_DiskRead(BYTE *buf)
|
|||||||
dp = (DWORD*)&buf[i];
|
dp = (DWORD*)&buf[i];
|
||||||
nSize = ntohl(*dp);
|
nSize = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
fsresult = fs->DiskRead(nUnit, fsout, nSector, nSize);
|
fsresult = fs->DiskRead(nUnit, fsout, nSector, nSize);
|
||||||
fsoutlen = 0x200;
|
fsoutlen = 0x200;
|
||||||
}
|
}
|
||||||
@@ -5796,7 +5811,7 @@ void FASTCALL SCSIBR::FS_DiskWrite(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
fsresult = fs->DiskWrite(nUnit);
|
fsresult = fs->DiskWrite(nUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5873,7 +5888,7 @@ void FASTCALL SCSIBR::FS_Flush(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
fsresult = fs->Flush(nUnit);
|
fsresult = fs->Flush(nUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5896,7 +5911,7 @@ void FASTCALL SCSIBR::FS_CheckMedia(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
fsresult = fs->CheckMedia(nUnit);
|
fsresult = fs->CheckMedia(nUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5919,7 +5934,7 @@ void FASTCALL SCSIBR::FS_Lock(BYTE *buf)
|
|||||||
dp = (DWORD*)buf;
|
dp = (DWORD*)buf;
|
||||||
nUnit = ntohl(*dp);
|
nUnit = ntohl(*dp);
|
||||||
i += sizeof(DWORD);
|
i += sizeof(DWORD);
|
||||||
|
|
||||||
fsresult = fs->Lock(nUnit);
|
fsresult = fs->Lock(nUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6484,7 +6499,7 @@ void FASTCALL SASIDEV::Command()
|
|||||||
#ifdef RASCSI
|
#ifdef RASCSI
|
||||||
// Command reception handshake (10 bytes are automatically received at the first command)
|
// Command reception handshake (10 bytes are automatically received at the first command)
|
||||||
count = ctrl.bus->CommandHandShake(ctrl.buffer);
|
count = ctrl.bus->CommandHandShake(ctrl.buffer);
|
||||||
|
|
||||||
// If no byte can be received move to the status phase
|
// If no byte can be received move to the status phase
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
Error();
|
Error();
|
||||||
@@ -7716,7 +7731,7 @@ BOOL FASTCALL SASIDEV::XferIn(BYTE *buf)
|
|||||||
// Read from disk
|
// Read from disk
|
||||||
ctrl.length = ctrl.unit[lun]->Read(buf, ctrl.next);
|
ctrl.length = ctrl.unit[lun]->Read(buf, ctrl.next);
|
||||||
ctrl.next++;
|
ctrl.next++;
|
||||||
|
|
||||||
// If there is an error, go to the status phase
|
// If there is an error, go to the status phase
|
||||||
if (ctrl.length <= 0) {
|
if (ctrl.length <= 0) {
|
||||||
// Cancel data-in
|
// Cancel data-in
|
||||||
@@ -7856,6 +7871,30 @@ void FASTCALL SASIDEV::FlushUnit()
|
|||||||
ctrl.unit[lun]->Flush();
|
ctrl.unit[lun]->Flush();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
// Mode Select (6)
|
||||||
|
case 0x15:
|
||||||
|
// MODE SELECT(10)
|
||||||
|
case 0x55:
|
||||||
|
// Debug code related to Issue #2 on github, where we get an unhandled Model select when
|
||||||
|
// the mac is rebooted
|
||||||
|
// https://github.com/akuker/RASCSI/issues/2
|
||||||
|
Log(Log::Warning, "Received \'Mode Select\' \[%02X\]\n");
|
||||||
|
Log(Log::Warning, " Operation Code: \[%02X\]\n", ctrl.cmd[0]);
|
||||||
|
Log(Log::Warning, " Logical Unit %01X, PF %01X, SP %01X \[%02X\]\n", ctrl.cmd[1] >> 5, 1 & (ctrl.cmd[1] >> 4), ctrl.cmd[1] & 1, ctrl.cmd[1]);
|
||||||
|
Log(Log::Warning, " Reserved: %02X\n", ctrl.cmd[2]);
|
||||||
|
Log(Log::Warning, " Reserved: %02X\n", ctrl.cmd[3]);
|
||||||
|
Log(Log::Warning, " Parameter List Len %02X\n", ctrl.cmd[4]);
|
||||||
|
Log(Log::Warning, " Reserved: %02X\n", ctrl.cmd[5]);
|
||||||
|
Log(Log::Warning, " Ctrl Len: %08X\n",ctrl.length);
|
||||||
|
|
||||||
|
if (!ctrl.unit[lun]->ModeSelect(
|
||||||
|
ctrl.cmd, ctrl.buffer, ctrl.offset)) {
|
||||||
|
// MODE SELECT failed
|
||||||
|
Log(Log::Warning, "Error occured while processing Mode Select command %02X\n", ctrl.cmd[0]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("Received an invalid flush command %08X!!!!!\n",ctrl.cmd[0]);
|
printf("Received an invalid flush command %08X!!!!!\n",ctrl.cmd[0]);
|
||||||
ASSERT(FALSE);
|
ASSERT(FALSE);
|
||||||
|
|||||||
Reference in New Issue
Block a user