タイマー8253の役割は分かったけど、時間が来たその信号を通知してキャッチする仕組み…それが割込コントローラ8259というLSI。
つまりタイマー信号がここに接続されている訳ですね。しかも0番端子。いってみれば一番最初に検知できる最優先番号。そうりゃそうです、時間がきてもその信号どおりに動かなきゃタイミング逃してしまいますから…。
でっ、割込コントローラーに信号が入ったらメインCPUの8086に「信号きたよ」って具合に知らせる=割込ベクトルっていうアドレスにジャンプする仕組みが用意されているんです。
大先輩達がPC98のハードウェアを知り尽くし、いろいろな機器を動かしていたカラクリが少しずつ垣間見えてきました。
つまりタイマー信号がここに接続されている訳ですね。しかも0番端子。いってみれば一番最初に検知できる最優先番号。そうりゃそうです、時間がきてもその信号どおりに動かなきゃタイミング逃してしまいますから…。
でっ、割込コントローラーに信号が入ったらメインCPUの8086に「信号きたよ」って具合に知らせる=割込ベクトルっていうアドレスにジャンプする仕組みが用意されているんです。
大先輩達がPC98のハードウェアを知り尽くし、いろいろな機器を動かしていたカラクリが少しずつ垣間見えてきました。
PR
定期的にプログラムを動作させるために時間を設定するのはハードウェアにあるタイマーLSI。
動作時間を設定すると、所定の信号を「ピッ」と動かしてくれます。
PC98の場合、8253に分周比をセットします。
でもその前に、タイマーに入力されているシステムクロックを調べてからでないとちゃんと設定時間どおりに動きません。
タイマーLSIの接続されているI/O番地、内部接続配線を理解した上でのアクセスです。
動作時間を設定すると、所定の信号を「ピッ」と動かしてくれます。
PC98の場合、8253に分周比をセットします。
でもその前に、タイマーに入力されているシステムクロックを調べてからでないとちゃんと設定時間どおりに動きません。
タイマーLSIの接続されているI/O番地、内部接続配線を理解した上でのアクセスです。
PC98のマシン語部分で動いているのは、入力信号状態の監視部分。
BASICでいうINPUT命令なんですが、問題は応答速度。
1mSきっかりで動いてくれるためには、インタプリタでもコンパイラでも速度が足りない…。
だからOSの根幹、MS-DOSにパッチ(穴)を開けて、独自プログラムを組み込んでやならいといけないんですね。
実用に耐えるプログラムは、やはり直接デバイスを操作してやらなきゃ、いかんのです。
BASICでいうINPUT命令なんですが、問題は応答速度。
1mSきっかりで動いてくれるためには、インタプリタでもコンパイラでも速度が足りない…。
だからOSの根幹、MS-DOSにパッチ(穴)を開けて、独自プログラムを組み込んでやならいといけないんですね。
実用に耐えるプログラムは、やはり直接デバイスを操作してやらなきゃ、いかんのです。
今だにPC98で動作しているシステムプログラムがあります。
主流のWindowsベースのソフトウェアに移植をしてしまえばいいのですが、何分、敷居が高い…。
マシン語部分の動作が行っている動作、高速サンプリング計測です。
Windowsに移植していく過程の足跡を今日から少しずつ書いてみたいと思います。
主流のWindowsベースのソフトウェアに移植をしてしまえばいいのですが、何分、敷居が高い…。
マシン語部分の動作が行っている動作、高速サンプリング計測です。
Windowsに移植していく過程の足跡を今日から少しずつ書いてみたいと思います。