--- nono/vm/fdd.h 2026/04/29 17:05:13 1.1 +++ nono/vm/fdd.h 2026/04/29 17:05:28 1.1.1.4 @@ -22,6 +22,9 @@ #define MARK_DAM (0xfb) #define MARK_DDAM (0xf8) +class FDCDevice; +class PEDECDevice; + // フロッピーディスクの 1 トラック class FDTrack { @@ -40,10 +43,10 @@ class FDTrack void Clear(); // buf[0] はインデックスホールの位置と一致させる - std::vector buf; // リングアクセスバッファ + std::vector buf {}; // リングアクセスバッファ std::vector markpos {}; // アドレスマーク位置 // SYNC の次にあるIAM,IDAM,DAM/DDAM - uint32 lba; // バッファしているトラックの先頭セクタのLBA + uint32 lba {}; // バッファしているトラックの先頭セクタのLBA }; class FDDDevice : public Device @@ -71,14 +74,14 @@ class FDDDevice : public Device }; public: - FDDDevice(int unit_); + explicit FDDDevice(uint unit_); ~FDDDevice() override; bool Init() override; void ResetHard(bool poweron) override; // モニタ更新 (FDC の下請け) - void MonitorUpdateFDD(TextScreen&, int hd); + void MonitorUpdateFDD(TextScreen&, uint hd); // ユニット番号を返す int GetUnitNo() const { return unit; } @@ -168,13 +171,13 @@ class FDDDevice : public Device void MediaChanged() const; // メディア挿入/排出コールバック - void LoadCallback(MessageID, uint32); - void UnloadCallback(MessageID, uint32); + void LoadMessage(MessageID, uint32); + void UnloadMessage(MessageID, uint32); // イベントコールバック void EventCallback(Event &); - int unit {}; // ユニット番号(ドライブ番号) + uint unit {}; // ユニット番号(ドライブ番号) bool selected {}; // FDD SELECT 入力信号で選択されていれば true enum { STOPPED = 0, // モータ停止中 @@ -188,8 +191,8 @@ class FDDDevice : public Device } bool IsReady() const { return (motor_state == READY); } bool is_blink {}; // LED ブリンク - int cylinder {}; // 現在のシリンダ番号 - int pos {}; // アクセス位置 + uint cylinder {}; // 現在のシリンダ番号 + uint pos {}; // アクセス位置 // トラックバッファ FDTrack trackbuf {}; @@ -226,5 +229,8 @@ class FDDDevice : public Device // 新しいイメージファイルのフルパス (UIから) std::string new_pathname {}; + FDCDevice *fdc {}; + PEDECDevice *pedec {}; + Event event { this }; };