CD-ROM からブートして Floppy Disk に書き込んでみる

QEMUを以下のように起動すればCD-ROMブートで FD イメージを利用できる

qemu -cdrom ~/mona/mona/tool/mkimg/mona.iso -fda ~/mona/mona/tool/mkimg/mona.img -boot d


そして、新しい file_server を利用すればFloppy Disk Driveを /fd から利用できます。
新しいAPI monapi_file_read を利用して簡単にファイル書き込みが可能です。
サンプルはこんな感じ。

const char* message = "Hello World\n";
monapi_cmemoryinfo* buffer = new monapi_cmemoryinfo();
if (!monapi_cmemoryinfo_create(buffer, strlen(message) + 1, 0))
{
    monapi_cmemoryinfo_delete(buffer);
    return -1;
}
memcpy(buffer->Data, message, buffer->Size);
dword id = monapi_file_open("/FD/HELLO.TXT", true);
monapi_file_write(id, buffer, buffer->Size);
monapi_file_close(id);


ファイル書き込みといえばエディタだ!と思いつき、id:hetappiさんのgnoteを最新のMona 0.3.0系でコンパイルしてみました。
ちょっとした手直しで動いたので monaos/contrib/Misc/gnoteとしてツリーに追加しました。
gnoteはコピー/貼り付けなどが全て自前で実装されていてかなり気合いが入っています。
肝心の書き込みはここでやっているようです。


当時は書き込みの正式APIがなかったので空になっています。

bool Controller::WriteFile(const String& f, const Document& d) {
    return false;
}


ここにいろいろ書けば動きそうですが、なぜかメニュー部分がうまくイベントを拾ってくれなくて今日のところはここまで。
Mona上でファイルを編集/保存してごにょごにょ。まではだいぶ近付いてきた気がします。