ザビタン開発日記
2009
| 01
11月 10 (土曜日) 2007 | ||
23:51
|
毛利小五郎でした!!!
|
|
・・・このオイラのマヌケさといったら、迷探偵毛利小五郎か、はたまたうっかり八兵衛か!!!
FAT領域は圧縮されている って、黒猫本のP388にちゃんと書いてあるじゃん!!!! ・・・・嗚呼・・・・なーにやってんだろ・・・俺・・・・orz・・・ |
||
22:50
|
じっちゅんの名にかけて謎は全て解けた!!
|
|
FAT領域の並びをもう一回見直してみた!
・・・うーん。合っている。FAT番号0x00AB(論理セクタ202)には euc.txtの内容が書かれている。さらにFAT領域には、0x00ABの次は 0x60E5とかかれている。 さっきの式を当てると・・・・・・・あっれえぇぇ?合わないぞ?? じっちゃん・・・ごめんなさい・・・orz |
||
22:05
|
FAT迷宮
|
|
ルートから、この開始クラスタ番号なる値が一番小さいものを探してみた。
haribote.sysのようだ。しかしそのには0x0002と書かれている。 ・・・あっれえぇ? 0x0000や0x0001がなんでないの??? で、haribote.sysファイルが始まっているのが・・・・ 0x00004200!??? 論理セクタ33? え? これって、データ領域の先頭部分じゃないの??? ・・・もしかして、0x0000と0x0001は欠番か予約かなんかじゃないのかな・・・ もしこの仮定が正しいとすると、こんな式が成り立つはず。
euc.txt のファイル開始位置は 0x00ABだから・・・
論理セクタ202っていうのはええと・・・0x00019400・・・ うおぉぉぉぉ!!! ドンピシャだあぁぁ! |
||
21:30
|
ディスクイメージのセクタ位置
|
|
バイナリエディタでディスクイメージを開いて照らし合わせてみる。
えーっと・・・論理セクタ0が0x00000000〜0x000001FFFだよね? で、論理セクタ1が0x00000200から。するってぇ〜と。 論理セクタ19(ルートディレクトリ開始点)が0x00002600。 うむ!論理セクタ順だね! ということは、バイナリエディタで見る0X00000200〜0x000025FFまでがFAT領域と・・・ どうもルートディレクトリの情報にある「ファイル開始地点」というのは論理セクタのことではなく、FATの位置を表している・・・らしい。(ググり中。まだ不確定・・・) FATの位置っていうのは、FAT領域に並んでいるデータを2バイト刻みで 番号を振ったものらしい。
・・・っということは、0x00ABの倍の番地進むんだから・・・
こういうことかなぁ・・・・ バイナリで見ると、ウチのeuc.txtは論理セクタ202から始まってる。 ううぅぅぅぅうううううううんんん????? |
||
18:01
|
クラスタとは??
|
|
うーん・・・どうも違うようだぞ??
|
||
17:16
|
クラスタとは??
|
|
実際にセクタを読んでみる。まずはルートディレクトリ領域。
・・・euc.txtに関する32バイトの部分を先の表に当てはめてみると・・・
・・・ふむ。0xABと0x00かぁ・・・これがeuc.txtが始まっているクラスタと・・・ (たぶんこういうのって、リトルエンディアンで逆になってるはず。ということは、0x00ABがスタート地点ではないか??) 10進数に直すと171。論理セクタ171からってことでいいのかな?? ・・・・・あれーーーー! 違ううぅぅ!!! |
||
16:20
|
ファイルってどうなってるの?
|
|
今現在、ザビたんはセクタを読むことができるけど、それだけじゃアカン。
ファイルというのはディスク上でどうなっているんだろう??? P372辺りの解説を再読。なになに??? 例の「ルートディレクトリ」領域。今まではファイル名の読み出しにしか使ってなかったんだけど、ここにファイルがどうなっているか という情報が入っているようだ。うーん・・・図にすると・・・
ふむ・・・この26・27がファイルの開始地点のようだ。しかし、クラスタ番号とは??? 今までは「FDに関しては論理セクタ=クラスタ」程度で認識してたけど、これでいいのかな??早速実験じゃ! |
||
15:39
|
fileopenAPIの仕様
|
|
11:48
|
ファイル名判定APIが欲しい!
|
|
思ったんだけど、アセンブラとかでやってると、ファイル名が適当かそうでないかを アセンブラ上でプログラムするのがきっつい・・・ API化してC言語で書きたいよぉ〜 涙 そんなわけでちょっと試作・・・・ でけた━━━━━━ ヽ(‘∀‘)ノ ━━━━━━ !!!!! まあとりあえずはこんなところでしょうかねぇ。 これでtype2がだいぶ楽になる〜♪ (いずれdir2でも使おう) リビジョン80
|
||
09:33
|
来ました! fopen!
|
|
type2コマンド。まずはノーマルのtypeをコピーしてリネーム。で、中を見てみると・・・
うーん。C言語だねぇ。そして内部ではfopenとfreadという関数(API)が呼ばれている。 この両関数を、たとえば2をつけるだけで同じ動作をする・・・ なーんてのをちょっと妄想してみよう。 ========= 数時間後 ================= だめだなぁ・・・ちょっと・・・・ Cから使えるfopenとかも早く作りたいのはやまやまだけど、まだアセンブラレベルでの 関数が足りなすぎると思う。残念だけどちょっと舵を切って、再びINT 40系列でのプログラミング・・・ |
||
(1)  |
PopnupBlog V3 Denali created by Bluemoon inc. |