はりぼて日記
2007 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 10
2006 | 11 | 12
1月 13 (土曜日) 2007
23:15
20日目
 
20日目。やった!いよいよ大台!



[1]

これはいつもの整理ですね〜。



[2]〜[3]

なるほどぉ。アプリとかから使える関数をOS側で用意してあげるわけね。・・・しかしその理屈は単純ではあるけど、実際にはいろいろ煩雑だなぁ。(各プログラムがセグメントに分かれているんだからしょうがないよね。ん?じゃ、セグメントなんか使わないで全部OSと同じセグメント内で読み込み&実行をしたらどうかって?。それは可能だけど、そうなるとアプリはすべて、自分が何番地に読み込まれるのかを設定しなくてはいけなくなるよね。それだと、アプリが一個しか使えないとかそういう話になっちゃう)



[4]

ん?あれ? アプリの終了まではいいけど、アプリが終了した後の処理ってなんかしなくていいのかな?。確保してあるメモリを開放したりとか?? (あれ?ソース見落としてるかな?)



[5]

割り込み? あ〜。あったあった。んで、割り込み番号が余っているって?。へ〜。そうなんだ!。

なるほど。なんか、処理を割り込みにしたほうが簡単だよね?

(まあそれはいままでキーボードだマウスだの割り込みをがんばってきた財産なんだけどね)



・・・INT 0x??・・・。これ、BIOSコールとかもこのパターンだったよね?。たしかMS-DOSのファンクションコールも・・・

もしかして、BIOSやらDOSコールやらって、内部では今回と同じような処理and配置をしているの?(番号こそテンテンバラバラだけど)



[6]

お〜。これこれ。こうでなくっちゃ! (^^



[7]

むむむ?。あ〜。そっか! PUSHADって、汎用レジスタの値を一気にどーんとスタックに積んでくれる命令だっけ。

(どのレジスタが対象でどれが詰まれないかがちょっとあやしい。あとで復習しておこう・・・)



[8]

・・・復習いらなかった。書いてありますた。(^^;

へッへぇ〜。ここは実は、珍しく予測が付いていたのだ。(笑

昔、BIOSで文字表示したりしてたことあるんで、たぶんいずれこのパターンになるんだろうなぁなんてね。



で、改造したhello2.hrbと。

・・・え"〜?失敗オチ?

さすがのKタンも疲れて頭が回らないと?? ざんねん〜!!



 
name: @Guest  Comment:
22:46
19日目2
 
19日目 [5] 終了〜



・・・げげぇぇ!。アプリの読み込みと実行って、こんなんで出来るの?。こんなんでいいの???



うーむ。しかしたしかに

 ・それ用のセグメントを作る

 ・そのセグメント(メモリ)に読み込む

 ・そこへfarjump

 ・実行



・・・いや、たしかに過不足はないよね?

え〜。でも、とりあえずとは言っても、こんなんでいいの?

なんかすげー!!!

(いや、なんでそんなこと言うかっていうと、アプリの実行ってもっと仰々しい仕組みなんだろうと勝手に思っていたので・・・)
 
name: @Guest  Comment:
Referer  (2)
22:37
19日目
 
19日目 [1]〜[4] 終了〜



この辺は理屈もプログラムも解るし、結果が画面に出るんでたのしいね。



(それにしても、FATの圧縮。これは知らなかった。そんなことしてたのかぁ。いや、これも同じく、昔ちょっと勉強した時にFATを読み込んで見てみたことがある。その当時の解説書には、圧縮のことがちゃんと書いてなかったのか私が見逃してたのか、理屈がわかるのにバイナリデータがチンプンカンプンだった記憶がある。)
 
name: @Guest  Comment:
15:05
18日目2
 
18日目 [7] 終了〜



・・・こりゃちょっと驚いた。dirコマンド。ディスクにアクセスしなくちゃいけない。

「え”〜! そりゃおもしろいけど、そんな処理をここでできるのかなぁ?。32bitだからBIOSも使えないはずだし。はりぼて友の会のみんなもここいらへん苦戦してるみたいだし・・・」

と思ったのだが、こんな方法を使うとは!



もちろんこれは、「OSがディスクを読んでいる」わけじゃないんだから本当じゃない。しかしそれを言うのは野暮ってもんだよね?。

学習段階・未完成の段階で、とにもかくにもファイルの処理の例が出てるわけだから。



それともう一個。

私は昔、ちょこっとここいら辺りを勉強したことがある。あるセクタを読むと、そこには決まった長さでファイルの情報が書かれている。ずら〜・・・とね。

これを処理しようと考えた私は当時、for〜nextとかを使ってすんごい複雑な処理をして、変数にその情報を格納していったんだけど、今回も出てきた構造体定義&ポインタ宣言型を使うことで、なんにも処理しないでちゃんと分割して読めるようになるんだなぁ。

ポインタはむずかしかったけど、これが解るようになるとこんな処理でかえって簡単確実にできるんだね。すご〜い!

(スマソ。きっとCを当たり前に使える人にはえらくレベル低い部分の感動なんでしょうねぇ。お恥ずかしい・・・)
 
name: @Guest  Comment:
Referer  (1)
14:47
18日目
 
18日目 [1]〜[6]



すごいぞ。コマンドがどんどん実装できる!。もちろんこういうのは将来的に分離するのが本当だろうけど、「まずは」で進めていけるね。

(冗談でおバカなコマンドを搭載したいと思う私はおバカですかそうですか)
 
name: @Guest  Comment:
14:28
17日目2
 
17日目 [2]〜[7] 終了〜。



ぎゃあぁぁ!楽しい!

ふむ。なるほどぉ。言われてみればその通りだけど、キーボード(まあマウスも)等、一個しかないものからの受信は、一旦OSが受信して貯めておいて、改めて「どのタスクに送信するか?」と割り振りを行うわけだよね。

(しかし知らなかった。CpaspLockとはそういうのは、てっきりパソコンそのものの仕様というか動作で、OSとは関係ないと思ってた。なんとこういうのもOSが面倒みてやらないといけないんだね。)

(逆に言えば、こういうのを俺様仕様にするのも簡単なわけかぁ。)



しかし相変わらず誘惑がひどい。emacs使いな私は、Ctrlキーやそれ用のコンボ、あとはCapsをCtrlにしたい誘惑が・・・(^^;
 
name: @Guest  Comment:
14:04
17日目
 
[1]

下に同じ〜。

(番兵の理屈はわかるけど)
 
name: @Guest  Comment:
14:01
16日目4
 
16日目 [5]



うわ〜。わっかんねぇ〜。

困ったなこれは・・・理屈がよくわからないや。



レベル0のタスク組。ここになにかある場合はレベル1にはスイッチしないと。たとえば音楽再生処理のタスクをレベル0に登録したとする。しかしそうなると、音楽を停止するまではレベル1のタスクにはスイッチしないのか?。



・・・だめだぁ。ここ、もう二日も読んでるけど、ど〜も解らない。イチかバチか、ここはちょっと保留にして進めてみよう・・・orz・・・
 
name: @Guest  Comment:
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.