CPU I/Oポート入出力

 フリーソフトとして公開されている inpout32.dll を用いると,x86 CPU の I/O ポート入出力ができます。
 32ビット版Windowsおよび64ビット版Windowsのいずれでも動作します。 64ビット版Windowsの場合でも,以下の手順で実行してください。

inpout32.dllのダウンロード

http://www.highrez.co.uk/downloads/inpout32/default.htm の中ほどにある Binaries only - x86 & x64 DLLs and libs  をクリックして InpOutBinaries_1500.zip をダウンロードし,適宜のフォルダに展開してください。

driverのインストール

 展開して得られたフォルダのwin32サブフォルダにある InstallDriver.exeを右クリックし,「管理者として実行」を選択してください。

inpout32.dllのインストールとテスト

 

win32フォルダにある inpout32.dllを十進BASICがインストールされたフォルダ(BASIC.EXEが存在するフォルダ)にコピーしてください。
次に示すプログラムは, PC/AT互換機 (いわゆるDOS/V機)用のテストプログラムです。PC/AT互換機は,16進表記で61番のI/Oポートにブザーが接続されていて,このプログラムを実行するとブザーがなります。
 PC/AT互換機以外でこのプログラムを実行するのは危険を伴います。その場合は230行以降をハードウェアに適合するものに書き換えてください。

100 SUB OutB(port, dat)
110    ASSIGN "inpout32.dll","DlPortWritePortUchar"
120 END SUB
130 FUNCTION InpB(port)
140    ASSIGN "inpout32.dll","DlPortReadPortUchar"
150 END FUNCTION
160 SUB OutW(port, dat)
170    ASSIGN "inpout32.dll","Out32"
180 END SUB
190 FUNCTION InpW(port)
200    ASSIGN "inpout32.dll","Inp32"
210 END FUNCTION
220 
230 LET port=BVAL("61",16)
240 LET n=InpB(port)
250 PRINT BSTR$(n,2)
260 CALL OutB(port,INT(n/4)*4+3)  !鳴らす
270 PAUSE
280 CALL OutB(port,INT(n/4)*4)    !止める 
290 
300 END


使い方

CPU I/Oを実行したいプログラムに上のテストプログラムの100〜210行をコピーしてください。
8ビットの入出力には,InpB関数と副プログラムOutBを用います。
16ビットの入出力には,InpW関数と副プログラムOutWを用います。
OutB, OutWは,第1引数がポート番号,第2引数が出力したい値です。



戻る