--- nono/vm/pluto.cpp 2026/04/29 17:05:21 1.1.1.10 +++ nono/vm/pluto.cpp 2026/04/29 17:05:25 1.1.1.11 @@ -60,7 +60,7 @@ PlutoDevice::rom[] = { 0x2e00, // .dc.b ".",0 }; -uint64 +busdata PlutoDevice::Read8(uint32 addr) { uint32 offset = addr - baseaddr; @@ -75,10 +75,10 @@ PlutoDevice::Read8(uint32 addr) } } - return (uint64)-1; + return busdata::BusErr; } -uint64 +busdata PlutoDevice::Read16(uint32 addr) { uint32 offset = addr - baseaddr; @@ -87,10 +87,10 @@ PlutoDevice::Read16(uint32 addr) return rom[offset / 2]; } - return (uint64)-1; + return busdata::BusErr; } -uint64 +busdata PlutoDevice::Read32(uint32 addr) { uint32 offset = addr - baseaddr; @@ -108,10 +108,10 @@ PlutoDevice::Read32(uint32 addr) default: break; } - return (uint64)-1; + return busdata::BusErr; } -uint64 +busdata PlutoDevice::Write8(uint32 addr, uint32 data) { switch (addr) { @@ -125,14 +125,14 @@ PlutoDevice::Write8(uint32 addr, uint32 return 0; } -uint64 +busdata PlutoDevice::Write16(uint32 addr, uint32 data) { putlog(0, "未実装ワード書き込み $%06x", addr); return 0; } -uint64 +busdata PlutoDevice::Peek8(uint32 addr) { uint32 offset = addr - baseaddr; @@ -147,7 +147,7 @@ PlutoDevice::Peek8(uint32 addr) } } - return (uint64)-1; + return busdata::BusErr; } // @@ -164,12 +164,12 @@ PlutoDevice::ROM_Load() auto mainbus = GetMainbusDevice(); auto mainram = GetMainRAMDevice(); - auto mpu680x0 = GetMPU680x0Device(); + auto mpu680x0 = GetMPU680x0Device(mpu); auto sram = GetSRAMDevice(); // ホストファイルをロード LoadInfo info(gMainApp.exec_file); - if (mainram->LoadFromFile(&info) == false) { + if (mainram->LoadExec(&info) == false) { return -1; } @@ -204,15 +204,15 @@ PlutoDevice::ROM_Load() mpu680x0->reg.D[6] = 0xa1000004; mpu680x0->reg.D[7] = 0; - mpu680x0->reg.A[7] = sram->GetRAMSize(); - mpu680x0->reg.A[7] -= 4; - mainbus->Write32(mpu680x0->reg.A[7], info.end - info.start); // esym + uint32 a7 = sram->GetRAMSize(); + a7 -= 4; + mainbus->HVWrite32(a7, info.end - info.start); // esym + a7 -= 4; + mainbus->HVWrite32(a7, sram->GetRAMSize()); // physsize + a7 -= 4; + mainbus->HVWrite32(a7, 0x00000000); // firstpa - mpu680x0->reg.A[7] -= 4; - mainbus->Write32(mpu680x0->reg.A[7], sram->GetRAMSize()); // physsize - - mpu680x0->reg.A[7] -= 4; - mainbus->Write32(mpu680x0->reg.A[7], 0x00000000); // firstpa + mpu680x0->reg.A[7] = a7; return info.entry; }