advance/fwrite
の編集
http://hrb.osask.jp/wiki/?advance/fwrite
[
リロード
|
差分
|
単語検索
|
一覧
] [
編集
|
バックアップ
|
添付
]
-- 雛形とするページ --
A
Akkie
Athlon64X2
Clover
DAsoran
Falcon
FormatRule
FrontPage
Genesis
Help
I
InterWikiName
InterWikiSandBox
InterWikiテクニカル
Jormungand
K
Kebo
Kor_Lee_Hee_Rak
Leaf
Linux
Linux/wako_memo
MOIZ99
MW
MenuBar
OSC
PG_MANA
ReadersOS
RecentDeleted
SKYDASH
SandBox
Sero
Sigle
Source
Triangle_Ld.
Zxcvbnm
advance
advance/CPU
advance/FDC
advance/FPU
advance/NotHariMain
advance/QEMUVGA
advance/RTC
advance/blike
advance/cpu_reset
advance/driver
advance/driver/01
advance/driver/02
advance/families
advance/filesystem
advance/fwrite
advance/hddboot
advance/he86
advance/hints
advance/ipl
advance/kernel
advance/keycode
advance/osselect
advance/smaller1
advance/startup
advnace/smaller2
anzy
aotatsu
banbi-
bluedwarf
bo
bugs
challengers
cybozulabsyouth11
deskmanta
esb02b
faq
faq/advance
faq/asm
faq/c00-03
faq/c04-07
faq/c08-15
faq/c16-23
faq/c24-31
faq/make
faq/others
faq/qemu
guide
guide03
guide05
guide07
hikarupsp
imp_log/0000
imp_log/0001
imp_log/0002
imp_log/0003
impressions
index
k
killer_elf
kota
lea
lea/10_memory
lea/4_color
lea/idea
lea/terms
links
logs
logs/osa_hrb/comments0000
logs/osa_hrb/rumors0000
masa
members
message
mistakes
moge32
moppoi5168
notice
osdevjp
populars
prog_index
projects
q_and_a
q_and_a_2
qa_log/0000
qa_log/0001
qa_log/0002
qa_log/0003
qa_log/0004
qa_log/0005
qa_log/0006
qa_log/0007
qa_log/0008
qa_log/0009
quark
rankings
rule
sakamoto
sasaki
spc09
spcc_30min_os
tatsu
tools
tools/bim2hrb
tools/bin2obj
tools/cc1
tools/edimg
tools/gas2nask
tools/makefont
tools/nask
tools/obj2bim
tools/sjisconv
uchan
uho
updates
violations
wako
white
win64-bit
x
ytakano
ヘルプ
リックス
質問します
整形ルール
本は買ったぞ!持ってるぞ!
練習用ページ
* ファイル書き込みのAPIを作ろう(Win互換) -(by [[K]], 2006.06.06) -発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです) -ファイル書き込みのAPI例がほしいということなので書いてみる。 -ただしもともと「はりぼてOS」は読み込みさえできればいいやと割り切って作った部分があるので、これに書き込み機能をつけても、書き込み速度は速くありません。本でいうとここから半日くらいかけて改良していくことになります。その程度の例であることを忘れずに。 -ファイルシステム的には確かに書き込みできますが、実際のディスクへの書き出し部分はつけてないので、電源を切ると書き換え内容はすべて消えます。ディスクへの書き出し方法については、[[advance/FDC]]を参照。 *** まずはAPIの仕様を決める -ファイルのオープンのAPI(EDX=21)では、読み込みモードや書き込みモードなどのモードを指定する方法を用意していませんでした。これは本を書く段階では読み込みしか考えていなかったせいです。 -だからまあここを直せばいいのですが、そうすると api_fopen を修正する必要が出てきて、それにともなってアプリをmakeし直す必要が出てきます。それはめんどうなので、書き込み可能なオープンを追加することにしました。 -ファイルに書き込む場合、基本的に内容は上書きされていきます。もしファイルサイズが足りなければ、自動でファイルサイズも増やされます。上書きなので100バイトの既存ファイルをオープンして10バイト書き込んでもファイルサイズは100バイトのままです。これを10バイトにしたい場合は、書き込みバイト数0でファイル書き込みAPIを一度呼び出せばよい、ということにします。 ファイルの書き込み用オープン(読み込みも可) EDX = 28 EBX = ファイル名 EAX = ファイルハンドル(OSから返される) 普通のオープンとの違いは、指定されたファイルが存在しなくてもエラーにならないことです。 (サイズ0の新規ファイルを作成) ファイルの書き込み EDX = 29 EAX = ファイルハンドル EBX = バッファの番地 ECX = 最大書き込みバイト数 EAX = 今回書き込めたバイト数(OSから返される) *** 改造 -改造するのは以下の点です。 -- struct FILEHANDLE にflagsをつけて、ファイル書き込みがあったかどうかを記録できるようにする。ついでにファイルのオープンのAPI(EDX=21)のときにこのflagsを0にする処理も追加します。 --ファイルの書き込み用オープンのAPI(EDX=28)を追加する。 --ファイルの書き込みのAPI(EDX=29)を追加する。 --ファイルのクローズのAPI(EDX=22)を改造して、ファイル書き込みがあった場合はディスクバッファへ書き戻す。 -つづく(サンプル準備中) * こめんと欄 -電源を切ったら消えるって・・保存っていえますか?(まあ、確かにほぞんしてるけど) -- [[Clover]] SIZE(10){2006-06-07 (水) 15:25:58} -仮に言えないとして、どうしてほしいのでしょうか? 意図が分かりません。他の人の迷惑になるので、もう少し慎重に発言してください。 -- [[K]] SIZE(10){2006-06-07 (水) 16:59:06} -みてて思ったんだけど、再起動とかしても残る方法ってないんですか?多分みんなそっちのほうがいいと思います。 -- [[Clover]] SIZE(10){2006-06-07 (水) 18:35:58} -「ディスクへの書き出し方法については、advance/FDCを参照。」と書いてあります。 -- ''M59'' SIZE(10){2006-06-07 (水) 18:59:44} -ふげ〜〜〜難しい。サンプルソースが超欲しい。 -- ''アセンブラマスターするぞ!!'' SIZE(10){2006-06-08 (木) 15:59:27} -多分作りますので気長に待っていてください(待てるなら)。ただし今忙しいので結構先になりそうです。待ちきれなければ挑戦してうまくいったら発表してしまいましょう! -- [[K]] SIZE(10){2006-06-08 (木) 18:46:00} -Kさんへ。Kさんの手助けになるように作ってみます。Kさんもいろいろとお忙しいということを聞いていますので、Kさんも、たまには少し休んでみては? -- ''アセンブラマスターするぞ!!'' SIZE(10){2006-06-09 (金) 07:07:47} -このAPIの仕様や改造の例で読み込みだけでなく書き込みもすべてFDCでできそうです。ありがとうございます。 -- [[aotatsu]] SIZE(10){2009-02-01 (日) 09:43:06} -fwrite関係ないですけどOSのコンソールにdeleteコマンドを付けようとおもって、ディスクの読み込まれたところのファイル情報のファイル名の先端に0xe5を書き込んだら一応いいんじゃない?とおもってやったら普通にできたので報告します。 -- [[Triangle_Ld.]] SIZE(10){2009-06-21 (日) 01:18:59} #comment
タイムスタンプを変更しない
* ファイル書き込みのAPIを作ろう(Win互換) -(by [[K]], 2006.06.06) -発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです) -ファイル書き込みのAPI例がほしいということなので書いてみる。 -ただしもともと「はりぼてOS」は読み込みさえできればいいやと割り切って作った部分があるので、これに書き込み機能をつけても、書き込み速度は速くありません。本でいうとここから半日くらいかけて改良していくことになります。その程度の例であることを忘れずに。 -ファイルシステム的には確かに書き込みできますが、実際のディスクへの書き出し部分はつけてないので、電源を切ると書き換え内容はすべて消えます。ディスクへの書き出し方法については、[[advance/FDC]]を参照。 *** まずはAPIの仕様を決める -ファイルのオープンのAPI(EDX=21)では、読み込みモードや書き込みモードなどのモードを指定する方法を用意していませんでした。これは本を書く段階では読み込みしか考えていなかったせいです。 -だからまあここを直せばいいのですが、そうすると api_fopen を修正する必要が出てきて、それにともなってアプリをmakeし直す必要が出てきます。それはめんどうなので、書き込み可能なオープンを追加することにしました。 -ファイルに書き込む場合、基本的に内容は上書きされていきます。もしファイルサイズが足りなければ、自動でファイルサイズも増やされます。上書きなので100バイトの既存ファイルをオープンして10バイト書き込んでもファイルサイズは100バイトのままです。これを10バイトにしたい場合は、書き込みバイト数0でファイル書き込みAPIを一度呼び出せばよい、ということにします。 ファイルの書き込み用オープン(読み込みも可) EDX = 28 EBX = ファイル名 EAX = ファイルハンドル(OSから返される) 普通のオープンとの違いは、指定されたファイルが存在しなくてもエラーにならないことです。 (サイズ0の新規ファイルを作成) ファイルの書き込み EDX = 29 EAX = ファイルハンドル EBX = バッファの番地 ECX = 最大書き込みバイト数 EAX = 今回書き込めたバイト数(OSから返される) *** 改造 -改造するのは以下の点です。 -- struct FILEHANDLE にflagsをつけて、ファイル書き込みがあったかどうかを記録できるようにする。ついでにファイルのオープンのAPI(EDX=21)のときにこのflagsを0にする処理も追加します。 --ファイルの書き込み用オープンのAPI(EDX=28)を追加する。 --ファイルの書き込みのAPI(EDX=29)を追加する。 --ファイルのクローズのAPI(EDX=22)を改造して、ファイル書き込みがあった場合はディスクバッファへ書き戻す。 -つづく(サンプル準備中) * こめんと欄 -電源を切ったら消えるって・・保存っていえますか?(まあ、確かにほぞんしてるけど) -- [[Clover]] SIZE(10){2006-06-07 (水) 15:25:58} -仮に言えないとして、どうしてほしいのでしょうか? 意図が分かりません。他の人の迷惑になるので、もう少し慎重に発言してください。 -- [[K]] SIZE(10){2006-06-07 (水) 16:59:06} -みてて思ったんだけど、再起動とかしても残る方法ってないんですか?多分みんなそっちのほうがいいと思います。 -- [[Clover]] SIZE(10){2006-06-07 (水) 18:35:58} -「ディスクへの書き出し方法については、advance/FDCを参照。」と書いてあります。 -- ''M59'' SIZE(10){2006-06-07 (水) 18:59:44} -ふげ〜〜〜難しい。サンプルソースが超欲しい。 -- ''アセンブラマスターするぞ!!'' SIZE(10){2006-06-08 (木) 15:59:27} -多分作りますので気長に待っていてください(待てるなら)。ただし今忙しいので結構先になりそうです。待ちきれなければ挑戦してうまくいったら発表してしまいましょう! -- [[K]] SIZE(10){2006-06-08 (木) 18:46:00} -Kさんへ。Kさんの手助けになるように作ってみます。Kさんもいろいろとお忙しいということを聞いていますので、Kさんも、たまには少し休んでみては? -- ''アセンブラマスターするぞ!!'' SIZE(10){2006-06-09 (金) 07:07:47} -このAPIの仕様や改造の例で読み込みだけでなく書き込みもすべてFDCでできそうです。ありがとうございます。 -- [[aotatsu]] SIZE(10){2009-02-01 (日) 09:43:06} -fwrite関係ないですけどOSのコンソールにdeleteコマンドを付けようとおもって、ディスクの読み込まれたところのファイル情報のファイル名の先端に0xe5を書き込んだら一応いいんじゃない?とおもってやったら普通にできたので報告します。 -- [[Triangle_Ld.]] SIZE(10){2009-06-21 (日) 01:18:59} #comment
テキスト整形のルールを表示する