--- nono/vm/human68k.cpp 2026/04/29 17:05:38 1.1.1.15 +++ nono/vm/human68k.cpp 2026/04/29 17:05:43 1.1.1.16 @@ -63,7 +63,7 @@ Human68kDevice::Init() uint32 psp_base; uint8 *file; uint32 last_addr; - int ram_size; + uint32 ram_size; assert(gMainApp.exec_file); human68k_file = gMainApp.exec_file; @@ -145,7 +145,7 @@ Human68kDevice::Init() munmap(file, file_size); last_addr = load_addr + load_size + bss_size; - ram_size = mainram->GetSize(); + ram_size = (uint32)mainram->GetSize(); boot_addr = 0x200; ds.Write4(0, ram_size - 4); // 初期 SSP @@ -166,7 +166,7 @@ Human68kDevice::Init() // Timer-C で 10ミリ秒ごとに $9cc.w のワークを減算していく。 // 0 になったら $9d6.l の稼働時間(分) をインクリメントして、 // $9cc.w には $9ca.w の初期値 (6000 = 60秒 * 100) を再セット。 - ds.SetOffset(0x1020); + ds.SetAddr(0x1020); ds.Write2(0x5378); // subq.w #1,($9cc) ds.Write2(0x9cc); ds.Write2(0x660a); // bne @f @@ -180,7 +180,7 @@ Human68kDevice::Init() ds.Write2(0x9cc, 6000); // いきなり初期化しておく。 // コマンドライン文字列を書き込む。LASCII 形式 - ds.SetOffset(0xc001); + ds.SetAddr(0xc001); for (int i = 0; i < 255; i++) { uint8 c = human68k_arg[i]; ds.Write1(c); @@ -195,7 +195,7 @@ Human68kDevice::Init() // instructiontest.x はコマンドラインを指定するだけで動くようだ。 // PSP はロードアドレス-256 の位置でなければならないようだ。 psp_base = 0x1ff00; - ds.SetOffset(psp_base); + ds.SetAddr(psp_base); ds.Write4(-1); // 1つ前のメモリ管理ポインタ ds.Write4(-1); // このメモリを確保したプロセスのメモリ管理ポインタ @@ -204,7 +204,7 @@ Human68kDevice::Init() ds.Write4(psp_base + 0x20, 0xc000); // コマンドライン - ds.SetOffset(boot_addr); + ds.SetAddr(boot_addr); ds.Write2(0x2c4f); // move.l a7,a6 ds.Write2(0x2e7c); // move.l psp_base,a7 ds.Write4(psp_base); @@ -361,7 +361,7 @@ bool Human68kDevice::LoadELF(const uint8 *file, uint size) { LoadInfo info(human68k_file, file, size); - if (mainram->LoadExec(&info) == false) { + if (BootLoader::LoadExec(mainram, &info) == false) { return false; }