Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO ■プリンタポート 対象 ノーマル,LT・HA チップ 8255A相当品 解説 o ノーマルモードでは、プリンタポートに8255相当品を使用している。 o ポートは出力のみであり、プリンタポートではBUSYの1ビットのみ入力が が行われる。 o プリンタポートの8255のポートB,Cでは、プリンタポート以外の目的にも 用いられる。 関連 INT 1Ah I/O 0439h bit 7 0000:0458h bit 2,1 0000:05B3h I/O 0040h 名前 データポート 機能 [READ/WRITE] bit 7〜0: PORT Aリード/ライト 解説 o プリンタポートに出力するパラレルデータを設定する。 o このポートは8255のPORT Aである。通常、モード0出力で初期化されている。 u このポートに対する読みだしは、診断のための読み出しである。通常、最後 に書き込まれた値が読み出されるが、ノートタイプの一部機種ではプルアップ 抵抗に流れる電流による消費電力を押さえるために、一定時間プリンタ関係 のI/OへのアクセスがないとこのポートにFFhを設定する。このため、必ずしも 読み出された値が最後にプリンタに送出された値とは限らない。 関連 I/O 0042h I/O 0046h I/O 0042h 名前 ステータスポート 機能 [READ] PORT Bリード bit 7,6: TYP1,0 システムタイプ 11b= PC-9801U,PC-98LT・HA 10b= その他の機種 01b= 未定義 00b= PC-9801初代 bit 5: MOD システムクロック 1= 8MHz(タイマクロック2.0MHz) 0= 5/10MHz(タイマクロック2.5MHz) bit 4: LCD プラズマディスプレイ使用状態(DIP SW 1-3) 1= 使用しない(DIP SW 1-3 OFF),LT・HA,NOTE 0= 使用する(DIP SW 1-3 ON) * DIP SWの状態がそのまま見えるだけで、現在のモードを示して いるわけではない。ハイレゾ兼用機でもSW読み出し・機能とも 有効。 bit 3: HGC グラフィック拡張機能(DIP SW 1-8) 1= 基本モード(DIP SW 1-8 OFF),LT・HA 0= 拡張モード(DIP SW 1-8 ON) * DIP SWの状態がそのまま見えるだけで、現在のモードを示して いるわけではない。 bit 2: プリンタインタフェイスBUSY#信号 1= インアクティブ 0= アクティブ(BUSY状態) bit 1: CPUT 動作CPU■[ノーマル] 1= V30,V33 0= 8086,286,386,486,Pentiumプロセッサ * 実際に動作しているCPUを示す。 bit 1: CPUT システムタイプ■[LT・HA] 1= HA 0= LT bit 0: VF VFフラグ 1= PC-9801VF,PC-9801U * 内蔵2DD I/Fしか持たない機種 0= その他の機種 [WRITE] PORT Bライト 無動作 ■[HA]HAでは、初期化時にメモリスイッチ11hの値を書き込む。 bit 2,1以外のビットは、書き込んだ値が読める。 解説 o プリンタポートから入力する各種ステータス、一部ディップスイッチの 設定等を読み出す。 o このポートは8255のPORT Bである。通常、モード0入力で初期化されている。 o PC-H98(ノーマルモード)で、INT 1Ah - Function 17hを実行し、 プリンタインタフェースをフルセントロニクス化すると、この I/Oポートはハイレゾ互換になる。 関連 I/O 0040h I/O 0044h 名前 ストローブポート 機能 [READ/WRITE] bit 7: PSTB# プリンタストローブ信号 bit 6〜4: 未使用(000bにする) bit 3: IR8(INT 10h)割り込み要求 0= ON 1= OFF * 8086,V30動作時のみ。286以上のCPU動作時は(V30相当モード含む) 切り離される。ただし、PC-9821Cx2・Cb2ではIR8はリモコンコント ローラで使用されている。LT・HAでは未使用。 bit 2: 未使用(0にする) bit 1: RST287/RST387 0= CPUリセットでリセットしない 1= CPUリセットでリセットする * 287,387動作時のみ bit 0: 未使用(0にする) 解説 o プリンタのストローブを制御する。 o このポートは8255のPORT Cである。通常、モード0出力で初期化されている。 o 詳細は8255データシート参照。 o PC-H98(ノーマルモード)で、INT 1Ah - Function 17hを実行し、 プリンタインタフェースをフルセントロニクス化すると、この I/Oポートはハイレゾ互換になる。 関連 I/O 0040h I/O 0046h 名前 コントロールレジスタ 機能 [READ] なし [WRITE] コントロールレジスタライト 解説 o 8255のモード設定を行う。通常、xxhで初期化されている。 o 詳細は8255データシート参照。 関連 I/O 0040h =============================================================================== ■プリンタポート 対象 ハイレゾ チップ 8255A 解説 o ハイレゾモードでは、フルセントロニクス化されたプリンタインタフェース が使用される。 o PC-H98シリーズではプリンタポートから入力を行うことも可能である。 関連 INT 1Ah 0000:041Ch I/O 0439h bit 7 I/O 0040h 名前 データポート 機能 [READ/WRITE] bit 7〜0: プリンタポートに出力するパラレルデータ 解説 o プリンタポートに出力するパラレルデータを設定する。 o このポートは8255のPORT Aである。通常、モード1出力で初期化されている。 o 詳細は8255データシート参照。 関連 I/O 0042h I/O 0046h I/O 0042h 名前 ステータスポート 機能 [READ] PORT Bリード bit 7: SELECT# bit 6: FAULT# bit 5: PE# bit 4: DC+5V# bit 3: INPUT BUSY# bit 2: BUSY# bit 1: Reserved bit 0: ACK# 1= インアクティブ 0= アクティブ [WRITE] PORT Bライト * 無動作 解説 o プリンタポートから入力する各種ステータス、一部ディップスイッチの 設定等を読み出す。 o このポートは8255のPORT Bである。通常、モード0入力で初期化されている。 o 詳細は8255データシート参照。 関連 I/O 0040h I/O 0046h I/O 0044h 名前 ストローブポート 機能 [READ/WRITE] PORT Cリード/ライト bit 7: OBF#(Output Buffer Full) 0= プリンタデータ受付不可 1= プリンタデータ受付可能 * 外部には未接続。 bit 6: ACK#(Acknowledge Input) 0= データ受付完了 * プリンタコネクタのACKNLGに接続される。(リード時) bit 5,4: 未使用 bit 3: INT 16h出力(スレーブPIC IR6) * I/O 0042h bit 1に接続される。 bit 2: PSTB#出力 0= アクティブ 1= No Operation * プリンタポートのPSTB#信号 bit 1: RST287/RST387出力 0= CPUリセットでリセットしない 1= CPUリセットでリセットする * (287,387動作時のみ) bit 0: INPUT PRIME#出力 0= アクティブ 1= No Operation * プリンタポートのINPUT PRIME#信号 プリンタをリセットする。 解説 o プリンタのストローブを制御する。 o このポートは8255のPORT Cである。通常、上位4ビットはモード1、下位4ビット はモード0出力に設定される。 o 詳細は8255データシート参照。 関連 I/O 0046h I/O 0046h 名前 コントロールレジスタ 機能 [READ] なし [WRITE] コントロールレジスタライト 解説 o 8255のモード設定を行う。 o このポートは8255のPORT Cである。 通常、PORT Aはモード1出力、PORT Bはモード0入力、PORT Cの上位4ビットは モード1、下位4ビットはモード0出力に設定される。 o 詳細は8255データシート参照。 関連 I/O 0040h I/O 0042h I/O 0044h I/O 0448h 名前 プリンタインタフェイス拡張モードレジスタ 対象 PC-H98 機能 [READ] ステータスリード bit 7: IS INTステータス 1= INT要因発生(このポートをリードすると0になる) 0= INT要因なし bit 6,5: 未使用 bit 4: IE INTイネーブル 1= イネーブル 0= ディスエーブル bit 3: DMA DMA/INTモード 1= DMAモード 0= INTモード bit 2,1: 未使用 bit 0 : MOD プリンタモード 1= 拡張モード(フルセントロモード,DMA・DRSTを有効にする) 0= 互換モード(簡易セントロモード,DMA・DRSTを無効にする) [WRITE] ステータスセット bit 7: 未使用(0にする) bit 6: DRST DMA TC割り込みのリセット 1= DMATC割り込みのリセット 0= No Operation bit 5: 未使用(0にする) bit 4: IE INTイネーブル(割込がエッジモードのときは無効) 1= イネーブル 0= ディスエーブル bit 3: DMA DMA/INTモード設定 1= DMAモード 0= INTモード bit 2,1: 未使用(00bにする) bit 0: MOD プリンタモード設定 1= 拡張モード(フルセントロモード, DMA・DRSTを有効にする) 0= 互換モード(簡易セントロモード, DMA・DRSTを無効にする) 解説 o プリンタモードをフルセントロニクスモードに設定するか、簡易セントロ ニクスモードに設定するか選択する。 o PC-H98シリーズでは、このポートの操作を行うことでノーマルモードでも フルセントロニクスモードを使用することが可能である。 関連 INT 1Ah - Function 17h INT 1Ah - Function 1Ah ------------------------------------------------------------------------------- ■IEEE STD 1284インタフェース 対象 IEEE STD 1284搭載機 用語 o PC-9800シリーズのIEEE STD 1284搭載機では、36ピンの1284-Cコネクタを 使用している。各信号線は以下のように定義されている。 --------+------+-------------------------------------------------- ピン番号| 方向 |信号線の名称 | |コンパチブル |ニブル/バイト |ECP |EPP --------+------+---------+----------+---------------+------------- 1 | P→H |Busy |PtrBusy |PeriphAck |nWait 2 | P→H |Select |Xflag |Xflag |UserDef2 3 | P→H |nAck |PtrClk |PeriphClk |Intr 4 | P→H |nFault |nDataAvail|nPeriphRequest |UserDef2 5 | P→H |PError |AckDataReq|nAckReverse |UserDef1 6 |Bi-Dir|Data1 |Data1 |Data1 |AD1 7 |Bi-Dir|Data2 |Data2 |Data2 |AD2 8 |Bi-Dir|Data3 |Data3 |Data3 |AD3 9 |Bi-Dir|Data4 |Data4 |Data4 |AD4 10 |Bi-Dir|Data5 |Data5 |Data5 |AD5 11 |Bi-Dir|Data6 |Data6 |Data6 |AD6 12 |Bi-Dir|Data7 |Data7 |Data7 |AD7 13 |Bi-Dir|Data8 |Data8 |Data8 |AD8 14 | H→P |nInit |nInit |nReverseRequest|nInit 15 | H→P |nStrobe |HostClk |HostClk |nWrite 16 | H→P |nSelectIn|1284Active|1284Active |nAStrb 17 | H→P |nAutoFd |HostBusy |HostAck |nDStrb 18 | H→P | Host Logic High --------+------+-------------------------------------------------- 19 | | S-GND(Busy) 20 | | S-GND(Select) 21 | | S-GND(nAck) 22 | | S-GND(nFault) 23 | | S-GND(PError) 24 | | S-GND(Data1) 25 | | S-GND(Data2) 26 | | S-GND(Data3) 27 | | S-GND(Data4) 28 | | S-GND(Data5) 29 | | S-GND(Data6) 30 | | S-GND(Data7) 31 | | S-GND(Data8) 32 | | S-GND(nInit) 33 | | S-GND(nStrobe) 34 | | S-GND(nSelectIn) 35 | | S-GND(nAutoFd) 36 | P→H | S-GND(PeripheralLogicHigh) --------+------+-------------------------------------------------- * 各信号線の方向は P→H: 外部機器からホストへ H→P: ホストから外部機器へ Bi-Dir: 双方向 o ECPのためのインタフェースは、ISAバス上でのインプリメントとほぼ同等で ある。 o 16バイトのFIFOを搭載し、RLEの圧縮/伸長をハードウェアで行う。ただし、 インタフェース自体はいかなるプロトコルのネゴシエーションも行わない ので、プロトコルモードの変更時にはソフトウェアでネゴシエーションを 行っておく必要がある。 o IEEE P1284搭載機種のうち、PC-9821Ap2・As2・Bp・Bs・Be・Bf・Ts・Cs2・Ce2は ECPモードを搭載していない。ECPモード以外のFIFO等の機能は使用する ことが出来る。 ---------+--------------------------------------------------- ECPモード|機種名 ---------+--------------------------------------------------- なし |PC-9821Ap2・As2・Bp・Bs・Be・Bf・Ts・Cs2・Ce2 |PC-9801NS/A ---------+--------------------------------------------------- あり |PC-9821An・Ap3・As3・Xt・Xa・Xf・Xn・Xp・Xs・Xe・Cf・Cx・Cb | Xa16・Xa13・Xa12・Xa10・Xa9・Xa7・Xe10・Xt16・Xt13・St15 | Xv13・Xb10・V10・V7・Cx2・Cb2・Cx3・Cb3 |PC-9821Nf・Np・Ns・Ne2・Nd・Nm・Es・Ld・Lt・Ne3・Nd2・Na7・Nx・Lt2 |PC-9801BA3・BX3・BX4 ---------+--------------------------------------------------- 関連 0000:0458h bit 2,1 0000:05B3h bit 7,6,5 INT 1Ah - Function 17h INT 1Ah - Function 1Ah INT 1Ah - Function 1Bh INT 1Ah - Function 1Ch INT 1Ah - Function 1Dh I/O 0140h 名前 データポート Undocumented 機能 [READ/WRITE]■[スタンダードパラレルポートモード] * プリンタデータ出力と診断のための読みだし [READ/WRITE]■[PS/2パラレルポートモード] * 8bitデータ入出力ポート [WRITE]■[ECPモード] bit 7: カウント/アドレス 1= チャネルアドレス 0= ランレングスカウント bit 6〜0: カウント/アドレス * フォワードチャネルコマンド 解説 o IEEE STD 1284コネクタのD0〜D7に出力するデータを設定する。 o I/O 0149h bit 4が1の時のみ有効 関連 I/O 0149h bit 4 I/O 0141h 名前 デバイスステータスポート Undocumented 機能 [WRITE] なし [READ] bit 7: nBusy 1= インアクティブ 0= アクティブ * 1284Cコネクタの1番ピン bit 6: nAck 1= インアクティブ 0= アクティブ * 1284Cコネクタの3番ピン bit 5: PError 1= アクティブ 0= インアクティブ * 1284Cコネクタの5番ピン bit 4: Select 1= アクティブ 0= インアクティブ * 1284Cコネクタの2番ピン bit 3: nFault 1= インアクティブ 0= アクティブ * 1284Cコネクタの4番ピン bit 2: 未使用? bit 1: DC+5V 1= アクティブ 0= インアクティブ * 1284Cコネクタの36番ピン bit 0: 未使用 解説 o IEEE STD 1284コネクタの各種ステータス信号線の状態を読み取る。 u PC-9821As2・Ap2・Bp・Bs・Be・Bf・Cs2・Ce2・Ts,PC-9801NS/Aに付属のプリンタ インタフェース変換コネクタでは、データ出力のbit 7が+5Vに接続され ている。通常のプリンタでは、+5Vが動作中に変化することはないので、 +5Vが、データ出力のbit 7のに同期して変化するかどうかで変換コネクタ が装着されているかどうかを調べることが出来る。 o I/O 0149h bit 4が1の時のみ有効 関連 INT 1Ah - Function 12h I/O 0149h bit 4 I/O 0142h 名前 デバイスコントロールポート Undocumented 対象 IEEE STD 1284搭載機 機能 [READ/WRITE] bit 7,6: 未使用(常に00bにする) bit 5: Direction 1= INPUT方向 0= OUTPUT方向 * PS/2モードのみ有効 * 1284Cコネクタの6〜13番ピンの方向を設定する bit 4: ackIntEn. 1= Enable 0= Disable bit 3: SelectIn 1= High 0= Low * 1284Cコネクタの16番ピン bit 2: nInit 1= High 0= Low * 1284Cコネクタの14番ピン bit 1: AUTO FDxt 1= Low 0= High * 1284Cコネクタの17番ピン bit 0: storobe 1= Low 0= High * 1284Cコネクタの15番ピン 解説 o 各種ストローブ出力の状態を設定する。 o データ入力方向に設定するためには、I/O 014Eh bit 5でPS/2パラレルポート モードに設定されている必要がある。 o I/O 0149h bit 4が1の時のみ有効 関連 I/O 0149h bit 4 I/O 014Eh bit 5 I/O 0149h 名前 パラレルポートモード設定 Undocumented 対象 IEEE STD 1284搭載機 機能 [READ/WRITE] bit 7: 不明(常に0) bit 6: 不明 bit 5: 不明(常に0) bit 4: パラレルポートモード 0= 簡易セントロニクスモード 1= 拡張パラレルポートモード bit 3,2: 不明(常に00b) bit 1: 不明 bit 0: 不明 解説 o プリンタインタフェースモードを設定する。 o 起動時は簡易セントロニクスモードに設定されているので、I/O 0149h bit 4 は0である。拡張されたパラレルポート機能を使用するためにはこのビットを 1にする必要がある。このビットが0のときI/O 0140h,0141h,0142h,014Bh, 014Ch,014Dh,014Ehは無効である。 関連 INT 1Ah - Function 17h INT 1Ah - Function 1Ah 0000:05B3h bit 7 0000:0458h bit 2 I/O 0140h I/O 0141h I/O 0142h I/O 014Bh I/O 014Ch I/O 014Dh I/O 014Eh I/O 014Bh 名前 不明 Undocumented 対象 IEEE STD 1284搭載機 機能 [READ] bit 7〜0: 不明 解説 o 詳細不明 関連 I/O 0149h bit 4 I/O 014Ch 名前 Parallel Port Data FIFO Test FIFO Configuration Register A Undocumented 対象 IEEE STD 1284搭載機 機能 ■[パラレルポートFIFOモード] [WRITE]■[Direction=0のとき] [READ]■[Direction=1のとき] * パラレルポートからの入出力FIFO * 方向は、I/O 0142h bit 5のDirectionで設定される。 関連 I/O 0142h bit 5 ■[FIFOテストモード] [READ/WRITE] * FIFOのテストデータの書き込み、読みだし。 ■[コンフィギュレーションモード] [READ/WRITE] bit 7: 割り込みタイプ 1= レベルトリガ 0= エッヂトリガ * PC-9800シリーズではエッヂトリガを使用する bit 6〜4: インプリメントID 000b= 16ビットインプリメンテーション 001b= 8ビットインプリメンテーション 010b= 32ビットインプリメンテーション 011b : = リザーブ 111b * PC-9800シリーズでは8ビットインプリメンテーションさ れている。 bit 3: リザーブ bit 2: nByteInTransceiver * イベント35での動作 bit 1,0: FIFOリカバリ 00b= a complete PWord. 01b= only 1 valid byte. 10b= 2 valid bytes. 11b= 3 valid bytes. * PC-9800シリーズでは8ビットインプリメンテーションの ため、意味をもたない。 解説 o このポートは、I/O 014Eh bit 7〜5で設定されるモードによって4種類の 意味を持つ。 o パラレルポートFIFOモードでは、パラレルポートへのデータFIFOポートとして 機能する。READ/WRITEの方向は、I/O 0142h bit 5のDirectionビットで設定 された方向のみが有効である。 o TEST FIFOモードでは、FIFOのテスト機能のために用いられる。このポートは 書き込み、読みだしの両方が可能となり、書き込みを行った順にデータの 読みだしが可能となる。FIFOは16バイトの容量を持つ。 o コンフィギュレーションモードでは、インタフェースの状態を示すポートと して用いられる。読み出しのみ可能である。 関連 0000:05B3h bit 7 I/O 0142h bit 5 I/O 014Eh bit 7〜5 I/O 014Eh bit 1,0 I/O 014Dh 名前 Configuration Register B Undocumented 対象 IEEE STD 1284搭載機 機能 [READ] bit 7: compress bit 6: intrValue bit 5〜3: 割り込みアドレス 111b= IRQ5 110b= IRQ15 101b= IRQ14 100b= IRQ11 011b= IRQ10 010b= IRQ9 001b= IRQ7 000b= ジャンパされたIRQアドレス * PC-9800シリーズでは常に110bを返すが、実際にはIRQ14が使用 されている。 bit 2〜0: DMAチャネル 111b= DMAチャネル7(PC-9801シリーズでは無効) 110b= DMAチャネル6(PC-9801シリーズでは無効) 101b= DMAチャネル5(PC-9801シリーズでは無効) 100b= ジャンパされた16bitDMAチャネル(PC-9801シリーズでは無効) 011b= DMAチャネル3 010b= DMAチャネル2 001b= DMAチャネル1 000b= ジャンパされた8bitDMAチャネル * PC-9801シリーズではパラレルポートのためにDMAは使用されない ので、常に000bが返される。 解説 o このポートは、I/O 014Eh bit 7〜5でコンフィギュレーションモードに設定 されているときのみアクセス可能である。 o 関連 0000:05B3h bit 7 I/O 014Eh bit 7〜5 I/O 014Eh 名前 拡張コントロールレジスタ Undocumented 対象 IEEE STD 1284搭載機 機能 [READ/WRITE] bit 7〜5: パラレルインタフェースモード 000b= スタンダードパラレルポートモード 001b= PS/2パラレルポートモード 010b= パラレルポートFIFOモード 011b= ECPパラレルポートモード 100b= 不明(ベンダユニーク) 101b= 不明(ベンダユニーク) 110b= FIFOテストモード 111b= コンフィギュレーションモード bit 4: 割り込み許可 1= 割り込み無効 0= 割り込み有効 * nFault立ち下がりエッヂで割り込みを発生させるかどうか 設定する bit 3: DMA転送許可 1= 許可 0= 禁止 * PC-9800シリーズでは常に0 bit 2: DMA終了割り込み許可 1= 割り込み禁止 0= 割り込み許可 * PC-9800シリーズでは常に1 bit 1: FIFOフル 1= FIFOメモリにデータが16バイトある 0= FIFOメモリはまだデータを格納可能 bit 0: FIFOエンプティ 1= FIFOメモリにデータはない 0= FIFOメモリにデータが格納されている 解説 o IEEE STD 1284インタフェースの入力動作を許可する。 o パラレルインタフェースモードとしてECPモードを搭載していない機種と ECPモードを搭載している機種がある。ECPモードを搭載していない機種では、 bit 7〜5に011bを指定した書き込みを行っても、bit 7〜5の値は変化しない。 表: IEEE P1284を搭載し、ECPモードが使用できない機種 ----------------------------------------------------------------- PC-9821Ap2・As2・Bp・Bs・Be・Ts・Bf・Cs2・Ce2 PC-9801BA2・BS2・BX2 ----------------------------------------------------------------- 関連 I/O 0149h bit 4 I/O 014Ch I/O 014Dh