PokuG stdio.h

stdio.hはおまじない

MENU

IRQ(INT)とI/OアドレスとDMA

IRQ(INT)とI/OアドレスとDMA

この知識はPC98だからというものではなく、どのパソコンでも共通のものだったと思います。

WindowsならPlug&Playの機能でIRQ及びI/Oアドレスを自動で割り振りますが、MS-DOSでは重複しないように手動で設定しないといけないので解説します。

ちなみにMS-DOSでIRQもしくはI/Oアドレスが重複しているとドライバを読み込んだ時点でOSがハングしてました。

IRQとINT

IRQ

IRQとは「割り込み要求」とも呼ばれます。
割り込みというのは各種デバイスがCPUとやり取りする際に発生し、
どのデバイスからの要求なのかを識別するために用いられます。

昔は0~15までの16種類まででIRQが絶対的に少ない為にパソコンに拡張カードが数枚しかささらなかったと聞いたことがあります。


左がWindows95で確認したIRQ。
右がWindows11で確認したIRQ。

INT

PC-9821ではユーザーが使用できるIRQをINTと呼んでいます。

PC9821のINIの例

下の画像は "PC-9821V200" のステップアップガイドの抜粋です。
ユーザーが使用できるIRQ(INI)の一覧になります。

何か増設する場合は使用していないIRQ(INI)を選び設定します。
もし空きがない場合は、既に設定してあるIRQ(INI)をずらしたり、デバイスを無効にしたりして空を捻出します。



I/Oアドレス

CPUと各種デバイスがデータをやり取りするための窓口としての領域に付けられた住所のことです。
「入出力ポート」とも呼ばれます。

この値もかぶってしまうと問題になります。


左がWindows95で確認したIRQ。
右がWindows11で確認したIRQ。

DMAチャネル

DMAチャネルとは、CPUを使わずにデバイスとメインメモリとの間でデータ転送を行うために使われるのがDMAチャネルと呼ばれています。

CPUが他の処理を実行中でもデータ転送を行うことができるので、CPUに負荷がかからずデータを転送できます。

この値もかぶってしまうと問題になります。
IRQ(INT)に比べるとDMAチャネルが重複するケースはまれですが、SoundBlaster互換の音源などはDMAを使用しているようです。

PC9821のDMAチャネルの例

下の画像は "PC-9821V200" のステップアップガイドの抜粋です。

終わり

IRQ(とINT)とI/Oアドレス、DMAは被らないように設定しましょう!