--- nono/vm/pedec.cpp 2026/04/29 17:05:10 1.1.1.5 +++ nono/vm/pedec.cpp 2026/04/29 17:05:14 1.1.1.6 @@ -25,6 +25,7 @@ #include "pedec.h" #include "fdc.h" +#include "fdd.h" #include "spc.h" // グローバル参照用 @@ -81,7 +82,7 @@ PEDECDevice::Write(uint32 offset, uint32 intmap_enabled |= (data & 0x02) ? IntmapFDD : 0; intmap_enabled |= (data & 0x01) ? IntmapPRT : 0; - putlog(1, "割り込みマスク設定 HDD=%d FDC=%d FDD=%d PRT=%d", + putlog(1, "Set Interrupt Mask HDD=%d FDC=%d FDD=%d PRT=%d", ((intmap_enabled & IntmapHDD) ? 1 : 0), ((intmap_enabled & IntmapFDC) ? 1 : 0), ((intmap_enabled & IntmapFDD) ? 1 : 0), @@ -90,7 +91,7 @@ PEDECDevice::Write(uint32 offset, uint32 case 1: // $E9C003 割り込みベクタ vector = data & 0xfc; - putlog(1, "割り込みベクタ設定 $%02x", vector); + putlog(1, "Set Interrupt Vector $%02x", vector); return 0; default: @@ -190,6 +191,8 @@ PEDECDevice::InterruptAcknowledge(int lv if ((stat & IntmapFDC)) { return vector + 0; + } else if ((stat & IntmapFDD)) { + return vector + 1; } else { VMPANIC("Unknown interrupt acknowledge"); } @@ -205,5 +208,8 @@ PEDECDevice::GetIntmap(Device *source) c if (__predict_true(source == gFDC)) { return IntmapFDC; } + if (dynamic_cast(source)) { + return IntmapFDD; + } VMPANIC("Unsupported interrupt device"); }