Mona/0.3.0/新file_server


Monaのfile_serverを新しいものにリプレースしたので紹介します。

背景

変更点

API

dword monapi_call_file_open(const char* file)dword monapi_file_open(const char* file, MONAPI_BOOL create)ファイルをopenする。ハンドルが返る
dword monapi_call_file_get_file_size(dword id)dword monapi_file_get_file_size(dword id)開いているファイルのサイズを得る
MONAPI_BOOL monapi_call_file_seek(dword id, dword position, dword flag)dword monapi_file_seek(dword fileID, dword offset, dword origin)seekする
MONAPI_BOOL monapi_call_file_close(dword id)dword monapi_file_close(dword id)ファイルをcloseする
monapi_cmemoryinfo* monapi_call_file_read(dword id, dword size)monapi_cmemoryinfo* monapi_file_read(dword fileID, dword size)ファイルをreadする
monapi_cmemoryinfo* monapi_call_file_read_data(const char* file, MONAPI_BOOL prompt)monapi_cmemoryinfo* monapi_file_read_all(const char* file)ファイルを全てreadする
monapi_cmemoryinfo* monapi_call_file_read_directory(const char* path, MONAPI_BOOL prompt)monapi_cmemoryinfo* monapi_file_read_directory(const char* path)ディレクトリをread
int monapi_call_change_drive(int drive, MONAPI_BOOL prompt)廃止
int monapi_call_get_current_drive()廃止
int monapi_call_get_current_directory(char* dest)廃止
int monapi_call_change_directory(const char* dest)廃止
dword monapi_file_write(dword fileID, monapi_cmemoryinfo* mem, dword size)ファイルをwriteする

サンプルコード

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上でファイルを編集/保存してごにょごにょ。まではだいぶ近付いてきた気がします。

コメント

コメントはありません。 コメント/Mona/0.3.0/新file_server?

お名前:

file_server 導入に伴って stlport を tool に配置した件

コメントはありません。 コメント/Mona/0.3.0/新file_server?

お名前:

file_server のコンパイルに失敗する件

コメントはありません。 コメント/Mona/0.3.0/新file_server?

お名前:

deviceOn / deviceOff が適切でない件

コメントはありません。 コメント/Mona/0.3.0/新file_server?

お名前:

MENU

now: 1

リンク


最新の20件
2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3836, today: 1, yesterday: 1

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:55 (3831d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.058 sec.