2014.2.6

前へ
次へ
ホームページトップへ戻る

CPLD+SIMMを使ってUSBプロトコルの解析を!
VHDLを速習! XC95144XL+16MB・SIMMを使ってUSBプロトコルアナライザを作ってしまいました!
主目的は差し迫った事情からUSBプロトコルの解析をすることだったのですが、その手段として選んだのがコレ!


[第10回]


●パラレルポート(プリンタポート)のコントロール(2)

前回の終わりのところに書きましたように、いまどきパラレルポートが付いている、しかもOSがWindows95かWindows98のパソコンなどをお使いの方は、もう絶滅危惧種といいますかほとんど絶滅状態と思いますので、今更パラレルポート制御について書きましても何の役にも立たないとは思います。
そのようには思いますが、それでも一通りは説明をいたしませんと、それこそ何の役にも立ちません。
ですので、簡単に一通りの説明をすることにいたします。

パラレルポートはもし存在すれば、通常はI/Oアドレス378H(から始まる数バイト)にあります。
通常LPT1と呼ばれています。
システムによってはLPT2(I/Oアドレス278H〜)の場合もあります。
そのほかのアドレスのこともあるようですが、通常は上記のどちらかです。
どちらのアドレスであるかはシステムメモリの0:408番地に格納されています。
前回は、
MOV DX,378
MOV AL,xx (xxは8ビットの値)
OUT DX,AL
のようにいきなりDXに378を入れてパラレルポートをアクセスしましたが、上記の理由から、正式には
MOV DX,[408]
を実行して、パラレルポートを取得すべきです。
しかし私のところのパソコンでは378Hであることがわかっていますので、プログラムを簡単にするために、前回のような使い方をしています。

●8086アセンブラ

そうそう、これについても説明が必要です。
パラレルポートにアクセスするためには、8086アセンブラが必須となります。
ええ。
Windowsパソコンのハードをマシン語で制御いたします。
WindowsXPやWindows7では、そういうことは許してくれません。
いまやWindows98は稀有な存在です。

そういうことになりますと、8086アセンブラが必要になります(もちろん80386アセンブラでもよいのですが、機能が多いだけでかえって煩雑です)。
私が使っておりますのは自作の8086アセンブラです。
以前は説明書をつけて販売しておりましたが、そういう時代でもないと思い、いまは販売しておりません。
ずっと以前にPC9801上で作成したものを、その後にWindows95上で発展させたものです。
昔は開発ツールも自分で作ったものです(というか、そういうことをするのは私だけか)。

N88BASICにはメモリに直接8ビットデータを書き込むPOKEという命令がありました。
それを使って原始的なアセンブラをRAM上に作成し、それを使ってより高機能なアセンブラを作り…、というようにして作成していきました。

下はWindows7上で8086アセンブラを実行したところです。

Windows7ではパラレルポートにアクセスはできませんが、8086アセンブラを実行させることはできます。
もっとも8086アセンブラは16ビットアプリケーション(ASM.COM)なので、Windows7(64ビット)では実行させることはできません。
Windowsはなんだかどんどん制約が多くなってきて、ますます使いにくいものになってきているような気がいたします。

また余計なことを書いていて、肝心のパラレルポートについて、ほとんど説明ができませんでした。

CPLD+SIMMを使ってUSBプロトコルの解析を![第10回]
2014.2.6upload

前へ
次へ
ホームページトップへ戻る