ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
11月 11 (日曜日) 2007
23:24
パワーでもこちらは負けん!私はメバルルとは違う!
 
うはぁぁぁ!!!

いけたぞ!!!! まだまだ機能超限定だけど読んだぞ!!!

・・・あっちゃぁぁぁぁ!!!
まーた例の問題が出ちゃった。(ファイルが大きくなって日本語フォントを全部読めていない)

・・・とりあえず、またファイル順を入れ替えてと・・・

くっそぉーーー! この辺が限界か!
まあとりあえずはこんなところで。
(原因はわかってる。dir2やtype2がとりあえずのため、自身の内部に巨大なバッファエリアを持ってるせいなんだよねぇ・・・)

今現在は、まだ単セクタファイル専用なんだけど、もうすこし
拡張して多セクタファイルにも対応しよう!!!

リビジョン82
 
30日を過ぎたBlogにはコメントできません。

Referer  (3)
16:35
いよいよfileopenに着手!??
 
クソったれぇ! (最後10分降られた!)

さーて。とりあえずはtype2.nasとconsole.cはこんなところかな。
いよいよfd.cにファイルオープン命令をカキコ・・・
リビジョン81
 
30日を過ぎたBlogにはコメントできません。
13:28
ファイルオープンAPI再び
 
いよいよファイルオープンAPIを試搭載開始。
まず、''とりあえず''は、FATの繋がりを論理セクタで返すようにしてみる・・・

飽きた ━━━━[;´Д`]━━━━ !!!

・・・ちょっと首都高までお散歩・・・
 
30日を過ぎたBlogにはコメントできません。

Referer  (1)
10:53
過ちは青春さ! 人生の肥やしさ!
 
(でも肥やしあげすぎると根っこが腐っちゃうんだよね・・・orz)

えー! そんなわけでありまして! 再び正しい知識で再検証!

  1. ルートディレクトリからファイル名を探し、ファイルを探す
  2. ファイルが見つかったら、例の2バイトを読むことでファイル開始位置が解る
  3. この値は 論理セクタ位置 = データ領域開始位置 - 2 + ファイル開始位置 なんて式で論理セクタに変換できる
  4. 末尾の4バイトを読む。これはサイズを表しているので、これが1セクタ以下ならファイルは一個のセクタに収まっているので終了。
  5. すこしでも大きい場合、多セクタにつながっているのでFAT領域を読んで追いかける
  6. FAT領域は3バイトで2つを作っている(圧縮?)
  7. 先ほどの開始位置と照らし合わせる。それによって次につながっている論理セクタの位置がわかる
  8. この値がFF8〜FF9になれば、そこでファイルは終了

さて、じゃ、FAT領域の解読。例の表に当てはめると・・・

ウチのFAT(論理セクタ1)の状態

FAT番号 00 01 02 03 04 05 06 07
┌──┐ ┌──┐ ┌──┐ ┌──┐
0x00000200 F0 FF FF 03 40 00 05 60 00 07 80 00
FAT番号 08 09 0A 0B 0C 0D 0E 0F
┌──┐ ┌──┐ ┌──┐ ┌──┐
0x0000020D 09 A0 00 0B C0 00 0D E0 00 0F 00 01
FAT番号 10 11 12 13 14 15 16 17
┌──┐ ┌──┐ ┌──┐ ┌──┐
0x0000021A 11 20 01 13 40 01 15 60 01 17 80 01
FAT番号 18 19 1A 1B 1C 1D 1E 1F
┌──┐ ┌──┐ ┌──┐ ┌──┐
0x00000227 19 A0 01 1B C0 01 1D E0 01 1F 00 02

こういうふうになるわけか。そうするとこんな式でいいのかな?

if ( 開始ナンバー % 2 ==0 ) //偶数奇数で分ける
{
FAT頭 = 開始ナンバー * 3 / 2 + 0x00000200;
FAT尻 = FAT頭 + 2;
//ここで例に並べ替えを行い、二つの数値を取り出す//
次FAT = 1番目の値
}
else
{
FAT頭 = (開始ナンバー - 1) * 3 / 2 + 0x00000200 ;
FAT尻 = FAT頭 + 2;
//ここで例に並べ替えを行い、二つの数値を取り出す//
次FAT = 2番目の値
}

・・・この式で行くと、例のeuc.txtのファイル開始ナンバー(0x00AB)の情報が書いてあるFAT番地は・・・・2FF !?

FAT番号 AA AB
┌──┐
0x000002FF FF FF FF

こうなるはず! 2番目の数字を取り出すと・・・FFF !?
つまりファイルはこれで終了!!!
むむむ!? これでほんとにいいのかなぁ。(先のポカがあるから心配だ・・・
 
30日を過ぎたBlogにはコメントできません。

Referer  (1)
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.