この辺で、大概、詰まる

さて、とりあえず、セクタ単位での読み書きは出来るようになった。
ROSeの先代?と言うか、プロトタイプも、一度、この辺で詰まっている。
ここが一つの壁と言うか、なかなかに目標設定が難しいところだ。
まぁ、多分、なるべく効率的にとか二度手間を避けようとか、
そういう事を考えたりしているからなのかも知れない。


例えば、システムコールの仕組みや、サービスの呼び出し手順を決めてしまえば、
基本的には、その部分を変更する事は許されなくなる。
何故なら、それに準じて作成された物が、動作しなくなるかも知れないからだ。
互換性の重要性は、IntelMicrosoft の歴史からも窺えよう。
とは言え、自分は、IntelMicrosoft ではないから、
そんな事は気にせず、好きにやっちゃえば良い訳なんだが。
なかなか、好きにやれって言われても、出来ないんだよね〜。苦笑


まぁ、それでは、ここから先に進めないので、
頑張って、一歩、前に進んでみようかね。


と言う事で、MS-DOS の ファンクションコールを真似てみる。
割り込みベクタテーブルに INT 0x21h のジャンプ先を登録。
ジャンプ先として割り込みハンドラを作成。
割り込みハンドラから、今まで使っていた文字列出力ルーチンをコール。
これらを準備した上で、メモリエディット機能で、以下のバイナリを入力。

B80010                  		MOV		AX, 0x1000
8ED8                    		MOV		DS, AX
B409                    		MOV		AH, 0x09
BE[1404]                		MOV		SI, testmsg
CD21                    		INT		0x21
CB                      		RETF
                               testmsg:
5445535421210D0A00      		DB		"TEST!!", 0x0D, 0x0A, 0x00

手続き呼び出しで、入力したアドレスをコール。
無事、"TEST!!"と表示されればOKなんだが...
ちなみに、手続き呼び出しは、far コールに変更してみた。


よし、やってみよう。


結果 → 見事に失敗である...


ってか、far コールがダメっぽい?