--- nono/vm/fdd.h 2026/04/29 17:05:13 1.1.1.1 +++ nono/vm/fdd.h 2026/04/29 17:05:59 1.1.1.6 @@ -12,7 +12,6 @@ #include "device.h" #include "diskimage.h" -#include "event.h" #include "message.h" #include "textscreen.h" @@ -22,6 +21,9 @@ #define MARK_DAM (0xfb) #define MARK_DDAM (0xf8) +class FDCDevice; +class PEDECDevice; + // フロッピーディスクの 1 トラック class FDTrack { @@ -40,10 +42,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 +73,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 MonitorScreenFDD(TextScreen&, uint hd); // ユニット番号を返す int GetUnitNo() const { return unit; } @@ -168,13 +170,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 &); + void EventCallback(Event *); - int unit {}; // ユニット番号(ドライブ番号) + uint unit {}; // ユニット番号(ドライブ番号) bool selected {}; // FDD SELECT 入力信号で選択されていれば true enum { STOPPED = 0, // モータ停止中 @@ -188,8 +190,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 +228,8 @@ class FDDDevice : public Device // 新しいイメージファイルのフルパス (UIから) std::string new_pathname {}; - Event event { this }; + FDCDevice *fdc {}; + PEDECDevice *pedec {}; + + Event *event {}; };