パラレルポート(プリンタポート、IEEE 1284ポート、LPTともいう)を通して外部からデータを受信するにはどうしたらよいか調べてみたのだが、なかなか日本語の詳しい解説が見当たらない。
というわけでパラレルポートの概要も含めメモしてみる。

注意:・機種依存の部分はかなりいい加減だったり。。
・ここにある情報は海外にあるいろんな文書を参考にしているが、ネット上の情報だけに内容に食い違いがある(特にSPPの信号ピン役割、ネゴシエーションについては信憑性がない。)
・ここではパラレルポートをプリンタポートとしてではなくデータ入出力ポートとして書いているので、プリンタの接続・制御の参考にしないように。各プリンタのマニュアルに仕様の詳細が記載されていることがあるのでそちらを一度確認すること。

・ユーザーエンドの話はほとんど出てきませんので、OSやソフトウェアでの利用・設定方法などは他を当たってください。


○パラレルポートとは
広義には複数のデータビットを同時にやり取りするインターフェースのこと。一般にIEEE 1284で定められているプリンタポートを指すことが多い。
厳密にいえばプリンタポートは印刷関係の仕様だけを指定するセントロニクス社仕様を指すので、パラレルポートは「プリンタポート」ではなく「IEEE 1284ポート」や単に「パラレルポート」と呼ぶべき。
IEEE 1284はセントロニクス社仕様よりも細かく仕様を定めており、またプリンタ以外の機器の利用も考えられており、ある程度の汎用性を持つ。
IEEE 1284規格はIEEE 1284:2000, IEEE 1284.1:1997, IEEE 1284.2(不採択), IEEE 1284.3:2000(廃止), IEEE 1284.4:2000(廃止) に分けられる。

もともとは1970年代にセントロニクス社(現在プリンタ事業はTallyGenicomに移り、自らは社名を変えて台所用品を取り扱っている。)が、同社の計算機に使用していたコネクタが大量に余り、これを同社のプリンタ"Model 101"のプリンタポートとして使ったのが始まりで、これがすぐにデファクトスタンダードとなった。92年にヒューレットパッカード社が独自拡張によって双方向通信を可能にし、恐らくはこれを受けて、独自規格の乱立を避けるべくIEEEが94年にIEEE 1284としてまとめた。
90年代後半には海外でHDDやZIPドライブとの接続にも使われたが、日本ではSCSIが普及していたため、パラレルポートは専らプリンタ、スキャナとの接続だけに使われていた印象がある。しかし2000年代に入ると、高速なインターフェースであるUSBの動作が安定化しUSB対応機器が普及してきたこともあり、周辺機器との接続はUSBが主流になる。
現在は法人向けモデルを除いてパラレルポートを搭載する機器はほとんど見かけない。


○コネクタの種類
IEEE 1284では3種類のコネクタを規定している。

Type A : D-Sub 25ピン
Parallel port connector Type-A
Type B : アンフェノール フルピッチ 36ピン

Type C : アンフェノール ハーフピッチ 36ピン
Parallel port connector Type-C

PC側はType Aがほとんどで、PC99規格に準拠していればコネクタが赤紫色に塗られているはず。
プリンタ側はType Bが多く、その他の機器はType Cが多い(らしい。)
最近はメーカー製PCではパラレルポートはほとんど見かけなくなり、自作PC用マザーボードからも消えつつある。
今もなお生産・販売されているパラレルポートプリンタケーブルのほとんどはType A - Type Bコネクタである。

その他、NEC PC-9800シリーズでは
・アンフェノール フルピッチ 14ピン : PC-88、PC-9801から初期のPC-9821

・アンフェノール ハーフピッチ 36ピン : ハイレゾモード搭載機種、PC-9821Ap2以降
Parallel port connector on PC-98 later model
形状はType Cコネクタと同じだが、信号ピンの配置はType Bに近い。
通常PC-98で使われるD-Sub 25ピンはパラレルポートではなくシリアルポート(RS-232)なので注意。

ちなみにインターリンク(Interlink)ケーブルはMicrosoftがパソコン間を直接接続してデータ交換を行うために策定した仕様で、IEEE 1284とは関係ない。


○信号特性
セントロニクス社仕様では電気的な規定はない。
IEEE 1284ではLevel 1とLevel 2が規定されているが、EPP、ECPモードなどの高速通信を利用するにはLevel 2に適合している必要がある。
以下はLevel 2での規定。
VOH : +2.4V - +5.5V
VOL : -0.5V - +0.4V
VIH : +2.0V - +7.0V
VIL : -2.0V - +0.8V
基本的には入出力ともTTL・CMOSレベルだと考えればよい。


○モード
信号のピン割り当ては各モードによって名称や役割が多少異なるので、これを先に述べておく必要がある。
IEEE 1284では全部で5つのモード(通信方法)を規定している。
1. 互換モード (Compatibility Mode) - いわゆるセントロニクス仕様、8ビット出力のみ、最大転送速度1.2kbps~150kbps
2. ニブルモード (Nibble Mode) - 4ビット入力のみ、最大50kbps~150kbps
3. バイトモード (Byte Mode) - 8ビット半二重双方向通信、最大500kbps
4. EPPモード (Enhanced Parallel Port) - 8ビット半二重双方向通信、最大500kbps~1.5Mbps
5. ECPモード (Extended Capabilities Mode) - 8ビット半二重双方向通信、最大500kbps~2.5Mbps
最大転送速度はコネクタタイプの組み合わせやケーブル長、I/Oコントローラによって異なる。
一定の速度で通信できる保証はないのでハンドシェイクが必要になるだろう。

また、下記の4種類のポートがある。
1. SPP (Standard Parallel Port) - 入力にニブルモード。出力に互換モードをサポートする。
2. BPP (Bi-directional Parallel Port) - 入力にバイトモードを、出力に互換モードとバイトモードをサポートする。
3. EPP - 入出力にEPPモードをサポートする。7台までデイジーチェーンが可能。プリンタ、スキャナ以外の周辺機器も使用できる。
4. ECP - 入出力にECPモードをサポートする。圧縮データの転送をサポート。プリンタ、スキャナ向けに設計されている。DMAチャンネルを1つ使用。

EPP、ECPはSPPやBPPとして使うこともできる。
ニブルモードでも2回に分けることで8ビットのデータを入力できるが、当然、通信速度はバイトモードに劣る。
互換モードやバイトモードは簡単な仕組みなので自作機器はこれらを利用することが多い。

マザーボード上(オンボード)のパラレルポートのポート設定はBIOS設定画面から行うことが多い。
8bit双方向通信をしたいにも関わらずBIOS設定項目にBi-Directionalがない場合はEPPを選択する。
実際に互換モード以外の各モードへ切り替えるには、電源投入時にホスト側から送られる特定の信号に機器が応答(ネゴシエーション成立)する必要がある。機器がそれを無視すれば互換モードとして動作する。


○SPP互換モード ピン割り当て(参考)
IEEE 1284 SPP pinout
原図ファイル→ IEEE1284ピンアサイン.xlsx (MS-Excel 2010形式)
先頭にnが付いている割り当て名は伝送路上の電気信号と実際の状態が逆であることを示す(Low level = Active)
P自動改行 : プリンタ側での自動改行(Line Feed)を有効にする場合は信号をLowに、無効にする場合はHighにする。通常はLow。
古いプリンタでは改行(紙送り)をプリンタ側で手動で行うことがあった。
DC1/3 : 制御コードDC1(0x11)、DC3(0x13)のことで、これらの制御コードを利用する場合は信号をLowにする。

セントロニクス仕様のパラレルポートピン配列については改めてこちらにまとめた。
標準的なプリンターポートのピン配列について
パラレルポートのレジスタ構成やレジスタと信号ピンの関係、SPP互換モードのハンドシェイク手順などはNo.2に。
パラレルポートについてメモNo.2


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!