--- nono/vm/fdd.cpp 2026/04/29 17:05:51 1.1.1.6 +++ nono/vm/fdd.cpp 2026/04/29 17:06:01 1.1.1.7 @@ -91,6 +91,9 @@ FDDDevice::FDDDevice(uint unit_) : inherited(OBJ_FDD(unit_)) { unit = unit_; + + // image はコンストラクタがないので、この辺りで設定。 + image.SetName(GetName()); } // デストラクタ @@ -126,13 +129,13 @@ FDDDevice::Init() // オープン前に writeignore をチェック。 // この後パス名を処理するとすぐに UI に通知を出すため、それより前で // 行わないといけない。うーん。 - const ConfigItem& wi = gConfig->Find(wikey); - write_ignore = wi.AsInt(); + write_ignore = gConfig->Find(wikey).AsBool(); // 設定時点でファイルが指定されていればオープン if (filename.empty() == false) { std::string path = gMainApp.NormalizePath(filename); if (LoadDisk(path) == false) { + itemimg.Err("Could not open %s", path.c_str()); return false; } } @@ -156,7 +159,7 @@ FDDDevice::ResetHard(bool poweron) // y = 11 以降が各ドライブの状態で、このうち x = 26 以降が FDD の担当。 // y = 16 以降は FDD のアクセスマップ。 void -FDDDevice::MonitorUpdateFDD(TextScreen& screen, uint hd) +FDDDevice::MonitorScreenFDD(TextScreen& screen, uint hd) { /* 1 2 3 4 5 6 7 0123456789012345678901234567890123456789012345678901234567890123456789012345678 @@ -322,7 +325,7 @@ FDDDevice::EventCallback(Event *ev) } else { event->time /= 2; } - putlog(4, "SPIN_UP next=%uusec", (uint)(event->time / 1_usec)); + putlog(4, "SPIN_UP next=%uusec", (uint)tsec_to_usec(event->time)); } scheduler->StartEvent(ev); break; @@ -335,7 +338,7 @@ FDDDevice::EventCallback(Event *ev) } else { event->time *= 2; scheduler->StartEvent(ev); - putlog(4, "SPIN_DOWN next=%uusec", (uint)(event->time / 1_usec)); + putlog(4, "SPIN_DOWN next=%uusec", (uint)tsec_to_usec(event->time)); } break; @@ -389,7 +392,7 @@ FDDDevice::DoMotorOn() // 使っているので、約 524msec かかる。細かいことは気にしない。 motor_state = SPIN_UP; event->time = 262144_usec; - putlog(4, "SPIN_UP next=%uusec", (uint)(event->time / 1_usec)); + putlog(4, "SPIN_UP next=%uusec", (uint)tsec_to_usec(event->time)); } else if (motor_state == SPIN_DOWN) { // 細かいことは無視して、増速に転じる motor_state = SPIN_UP;