--- nono/vm/fdc.h 2026/04/29 17:04:28 1.1 +++ nono/vm/fdc.h 2026/04/29 17:04:44 1.1.1.4 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once @@ -102,21 +103,22 @@ struct FDC { class FDCDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; private: static const int baseaddr = 0xe94000; public: FDCDevice(); - virtual ~FDCDevice(); + virtual ~FDCDevice() override; - virtual void ResetHard(); + void ResetHard() override; - virtual uint64 Read8(uint32 addr); - virtual uint64 Read16(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Write16(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); + protected: + // BusIO インタフェース + static const uint32 NPORT = 4; + uint64 Read(uint32 addr); + uint64 Write(uint32 addr, uint32 data); + uint64 Peek(uint32 addr); private: uint32 ReadStatus(); @@ -131,7 +133,7 @@ class FDCDevice struct FDC fdc {}; struct FDD fdd[4] {}; - void Callback(int); + void Callback(Event& ev); void Interrupt(); @@ -143,3 +145,5 @@ class FDCDevice // コマンド名一覧 static const char *cmdnames_str[]; }; + +extern std::unique_ptr gFDC;