16bit

16bit

1993年のDOSから ping 1.1.1.1 — ISAバスのNE2000をRustで実装する【rustx86 ネットワーク編 #2】

連載「rustx86 ネットワーク編」: Rust + WebAssemblyのx86エミュレータをインターネットに繋ぐまでの開発記。#1はSLiRP backendとなるユーザーモードNATデーモン「wsslirp」(Go + gViso...
16bit

Rust + WASM の x86 エミュレータで ELKS のテトリスが即ゲームオーバーになる — 犯人は HLT 早送りの時間会計だった

自作の x86 エミュレータ rustx86 (Rust + WebAssembly、ブラウザで 16bit UNIX や 32bit Linux が動く) で、ELKS 0.9.1 のテトリスを起動すると駒が一瞬で積み上がり、Bye! Y...
16bit

Rust + WebAssembly の x86 エミュレータに gdb 風デバッガを作る — 倒れた場所は犯行現場ではない

自作の x86 エミュレータ (rustx86) で FreeDOS を動かしたら、Tab キーを押すとカーソルが画面の先頭へ飛んだ。Ctrl+C も効かない。前回はこの手のバグを、割り込みの統計ダンプと勘で追い詰めた。今回はその反省から、...
16bit

Rust + WebAssembly の x86 エミュレータで FreeDOS を起動して、ブラウザで DOS ゲームを動かした

Rustでエミュレータを書く 連載 第4回1. RustとWASMでゲームボーイエミュレータを作る2. x86エミュレータを自作する — 正解を知っているCPUに答え合わせさせる3. 8259 PIC と BIOS を書いて、16bit U...
16bit

Rust + WebAssembly で 8259 PIC と BIOS を書いて、ブラウザで 16bit UNIX (ELKS) をログインまで動かした

Rustでエミュレータを書く 連載 第3回1. RustとWASMでゲームボーイエミュレータを作る — テスト全通過から「実機の音」になるまで2. x86エミュレータを自作する — 正解を知っているCPUに答え合わせさせる3. Rust +...
16bit

x86エミュレータを自作する — 正解を知っているCPUに答え合わせさせる

Rustでx86エミュレータを自作し、リアルモード8086を動かすまでの開発記。x86には網羅テストROMがないため、QEMU由来のUnicorn Engineをオラクルにした比較実行(co-sim)で検証する。緑のテストを信用する前に変異テストで検出力を確かめ、ランダムでは踏めない境界値を総当たりで潰すまで。