--- nono/vm/scsicmd.cpp 2026/04/29 17:05:03 1.1.1.2 +++ nono/vm/scsicmd.cpp 2026/04/29 17:05:28 1.1.1.5 @@ -4,7 +4,9 @@ // Licensed under nono-license.txt // +// // SCSI コマンド +// #include "scsicmd.h" #include "scsidev.h" @@ -232,7 +234,7 @@ SCSICmdRead::Command(std::vector& CheckLUN; CheckMedium; - const uint8& cmd = cmdseq[0]; + const uint8 cmd = cmdseq[0]; if (cmd == SCSI::Command::Read10) { if ((cmdseq[1] & 0x01)) { parent->putlogf(0, lstr("%s RelAdr not supported", @@ -456,7 +458,7 @@ SCSICmdInquiry::Command(std::vectorClearSense(); uint reqlen = (uint)cmdseq[4]; - parent->putlogf(1, lstr("%s LUN=%d reqlen=$%02x", + parent->putlogf(1, lstr("%s LUN=%u reqlen=$%02x", SCSI::GetCommandName(cmdseq[0]), LUN, reqlen)); // 基本の 36バイト分を用意した上でデバイスに問い合わせ。 @@ -469,7 +471,7 @@ SCSICmdInquiry::Command(std::vectorloglevel >= 1) { - if (r == ModePageResult::NotImplemented) { - parent->putlogn("%s 未実装", log.c_str()); + if (r == ModePageResult::NotSupported) { + parent->putlogn("%s not supported", log.c_str()); } else { parent->putlogn("%s", log.c_str()); } @@ -883,8 +885,8 @@ SCSICmdModeSense::AddEmptyPage() SCSICmdModeSense::ModePageResult SCSICmdModeSense::AddCachingPage() { - const SCSIDisk *disk = dynamic_cast(parent); - assert(disk); + // XXX この assert いる? + assert(dynamic_cast(parent) != NULL); // とりあえずパラメータはなんもなし。 // PC::Changeable でも全部 0 なのでこのままでいい。 @@ -944,7 +946,7 @@ SCSICmdStartStopUnit::Command(std::vecto bool loej = (cmdseq[4] & 0x02); bool start = (cmdseq[4] & 0x01); - parent->putlogf(1, lstr("%s LoEj=%d Start=%d", + parent->putlogf(1, lstr("%s LoEj=%u Start=%u", SCSI::GetCommandName(cmdseq[0]), (loej ? 1 : 0), (start ? 1 : 0))); if (disk->IsRemovableDevice()) { @@ -1020,7 +1022,7 @@ SCSICmdPreventAllowMediumRemoval::Comman // PreventMediumRemoval() は状態変化でログレベル 1 で表示してるので、 // ここではログレベル 2 で常に表示にしておく。 uint prevent = cmdseq[4] & 1; - parent->putlogf(2, lstr("%s prevent=%d", + parent->putlogf(2, lstr("%s prevent=%u", SCSI::GetCommandName(cmdseq[0]), prevent)); disk->PreventMediumRemoval(prevent); @@ -1149,21 +1151,21 @@ SCSICmdReadTOC::Command(std::vectorputlogf(0, lstr("ReadTOC MSF=1 未実装")); + parent->putlogf(0, lstr("ReadTOC MSF=1 (NOT IMPLEMENTED)")); } // 開始トラックが 0 なら、媒体上の先頭トラックからを意味する。 // ここでは1トラック目から始まることにしてみる。 - const int TrackStart = 1; - const int TrackMax = 1; + const uint TrackStart = 1; + const uint TrackMax = 1; - int start = cmdseq[6]; + uint start = cmdseq[6]; if (start == 0) { start = TrackStart; } // イニシエータが用意しているバッファ長 - int reqlen = (cmdseq[7] << 8) | cmdseq[8]; + uint reqlen = (cmdseq[7] << 8) | cmdseq[8]; // start は送られてきた情報が知りたいだろう parent->putlogf(1, lstr("%s start=$%x len=$%x", @@ -1176,7 +1178,7 @@ SCSICmdReadTOC::Command(std::vector