--- nono/vm/scsibus.cpp 2026/04/29 17:04:50 1.1.1.6 +++ nono/vm/scsibus.cpp 2026/04/29 17:04:53 1.1.1.7 @@ -34,6 +34,28 @@ SCSIBus::~SCSIBus() { } +// 電源オン +bool +SCSIBus::PowerOn() +{ + phase = SCSI::Phase::BusFree; + rst = false; + req = false; + ack = false; + atn = false; + sel = 0; + bsy = 0; + xfer = 0; + data = 0; + + last_req_time = 0; + req_wait = 0; + init_id = -1; + target_id = -1; + + return true; +} + // リセット void SCSIBus::ResetHard() @@ -173,7 +195,10 @@ SCSIBus::AssertSEL(uint id) // だろうか。賢くないターゲットデバイスは検出せずにそのまま (そして // デッドロック) になるだろうか。 - // XXX とりあえず +#if 1 + // XXX とりあえず LUNA で SCSI がなんか刺さった時に本体リセットでも + // 直らない状況を真似するため、ターゲットは何もしないでおく。 +#else // ターゲットデバイスは賢いので、全員イニシエータ様に忖度して // 即座にバスフリーへ移行するというのはどうか。 for (uint i = 0; i < 8; i++) { @@ -181,6 +206,7 @@ SCSIBus::AssertSEL(uint id) NegateBSY(i); } } +#endif } }