--- nono/vm/spc.h 2026/04/29 17:04:32 1.1.1.3 +++ nono/vm/spc.h 2026/04/29 17:04:39 1.1.1.5 @@ -1,14 +1,15 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once #include "device.h" -#include "scsidev.h" -#include "scheduler.h" #include "fixedqueue.h" +#include "scheduler.h" +#include "scsidev.h" #include "vm.h" struct SPC @@ -127,28 +128,27 @@ struct SPC class SPCDevice : public SCSIHostDevice { - typedef SCSIHostDevice inherited; + using inherited = SCSIHostDevice; public: SPCDevice(); - virtual ~SPCDevice(); + ~SPCDevice() override; - virtual bool Init(); - virtual void ResetHard(); - virtual void ResetSoft(); - void Reset(); + bool Init() override; + void ResetHard() override; + void ResetSoft() override; - virtual bool MonitorUpdate(); + void MonitorUpdate(TextScreen&) override; // SCSIBus コールバック // バスフリーになった (全員に通知される) - virtual void BusFreeCB(int id); + void BusFreeCB(int id) override; // ターゲットがセレクションに応答した (イニシエータのみ通知される) - virtual void SelectionAckCB(); + void SelectionAckCB() override; // 情報転送フェーズで REQ を立てた (イニシエータのみ通知される) - virtual void TransferReqCB(); + void TransferReqCB() override; protected: // BusIO インタフェース @@ -158,7 +158,10 @@ class SPCDevice : public SCSIHostDevice uint64 Peek(uint32 addr); private: - void MonitorReg(int x, int y, uint32 reg, const char * const *names); + void Reset(); + + void MonitorReg(TextScreen&, + int x, int y, uint32 reg, const char * const *names); // SCTL レジスタへの書き込み void WriteSCTL(uint32);