Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO ■PCMCIA(JEIDA)ソケット制御 対象 PC-98HA,PC-9801P・NX/C,PC-9821Ne チップ MECIA 解説 o PC-9800シリーズ独自のPCMCIAコントローラであるMECIAには、IBM PC/AT 互換機用のPCカードを使用するため、カードが使用するI/Oポートを変換 する機構が実装されている。 o 基本アドレス変換モードは、カードが使用するI/Oポートの数が16個以下の 時に使用できる。CPUのI/O空間上の連続した16バイトにカードのI/Oポート を割り付ける事ができる。 o 拡張アドレス変換モードは、カードが使用するI/Oポートの数が128個以下の 時に使用できる。CPUのI/O空間上には、16バイトずつ8ヶ所にカードのI/O ポートが現れる事になる。 図:基本アドレス変換 --------------------------------+------------------------------------ CPUがアクセスするI/Oアドレス | XXXX XXXX XXXX AAAA | | | | カードに出力されるI/Oアドレス | YYYY YYYY YYYY AAAA --------------------------------+------------------------------------ * XXXX XXXX XXXX ???? の値はI/O 4A8Ehで任意に設定可能 通常SSDRV.SYSはI/O ??D?hのユーザー開放I/Oエリアを設定する * YYYY YYYY YYYY ???? の値はI/O 5A8Ehで任意に設定可能 図:拡張アドレス変換 --------------------------------+------------------------------------ CPUがアクセスするI/Oアドレス | XXXX XBBB XXXX AAAA | \ | | \ | カードに出力されるI/Oアドレス | YYYY YYYY YBBB AAAA --------------------------------+------------------------------------ * XXXX X??? XXXX ???? の値はI/O 4A8Ehで任意に設定可能 通常SSDRV.SYSはI/O ??D?hのユーザー開放I/Oエリアを設定する * YYYY YYYY Y??? ???? の値はI/O 5A8Ehで任意に設定可能 表:I/Oポートリスト --------+----+---+------------------------------------------- I/Oアドレス| 幅 |R/W|名前 --------+----+---+------------------------------------------- 0A8Eh |BYTE|R/W|PCMCIAソケット選択 1A8Eh |BYTE|R/W|PCMCIAソケットステータス 2A8Eh |BYTE|R/W|PCMCIA各種コントロール 3A8Eh |BYTE|R/W|IRQレベル設定 4A8Eh |BYTE|R/W|PCカードI/O投影アドレス設定 5A8Eh |BYTE|R/W|PCカードI/Oアドレス設定 6A8Eh |BYTE|R/W|不明 7A8Eh |BYTE|R/W|PCカード電源状態 8A8Eh |BYTE|R/W|PCMCIAソケットコントロール 0E8Eh |WORD|R/W|ページアドレス指定 --------+----+---+------------------------------------------- I/O 0A8Eh 名前 PCMCIAソケット選択 Undocumented 機能 [READ/WRITE] bit 7〜4: 未使用(つねに0を指定する) bit 3〜0: ソケット番号 * 通常は、000bを指定する 解説 o PCMCIAソケットを選択する。 o PCMCIA非搭載機種ではこのI/Oポートから常にFFhが返ってくる事を利用して PCMCIA搭載機種かどうかを判別することができる。ただし、MECIA3以外の PCMCIAコントローラを搭載した機種でもFFhが帰ってくる。 関連 I/O 1A8Eh 名前 PCMCIAソケットステータス Undocumented 機能 [READ/WRITE] bit 7〜4: 不明 bit 3: カード有無 1= あり 0= なし bit 2: ライトプロテクト 1= あり 0= なし,カードなし * bit 3が1のとき有効。 bit 1: RAM/ROMカード識別 1= RAM/ROMカード 0= その他 * bit 5=0(カード識別後)のとき有効 bit 0: EMSカード識別 1= EMSカード 0= その他 解説 o PCMCIAソケットの各種ステータスを得る。 関連 I/O 2A8Eh 名前 PCMCIA各種コントロール Undocumented 機能 [READ/WRITE] bit 7: I/Fタイプ選択 1= I/Oインターフェース 0= メモリインターフェース bit 6: アドレス変換モード 1= アドレススルーモード(I/Oポートアドレスを変換しない) 0= アドレス変換モード bit 5: バス幅 1= 8ビットバスモード 0= 16ビットバスモード bit 4: アドレス変換方式 1= 拡張アドレス変換方式 0= 基本アドレス変換方式 bit 3: 不明 bit 2: PCカードのRDY/BSY信号 0= メモリカードREADY状態 1= メモリカードBUSY状態 bit 1: PCカードへのVcc電圧リクエスト 1= 3.3V 0= 5.0V * カードにCPUが要求する動作電圧を通知する bit 0: PCカードのVcc電圧応答 1= 3.3V 0= 5.0V * カードが実際に動作する電圧を返す 解説 o PCカードとのインタフェースを設定する。 o PCカードに供給する電源電圧を設定する。 関連 I/O 3A8Eh 名前 IRQレベル設定 Undocumeted 機能 [READ/WRITE] bit 7〜3: 未使用 bit 2〜0: IRQレベル設定 000b= INT0(IRQ3 001b= INT1(IRQ5) 010b= INT2(IRQ6) 011b= 設定不可 100b= INT4(IRQ10) 101b= INT5(IRQ12) 110b= 設定不可 111b= 割り込み非使用 解説 o PCカードの割り込みをどのIRQレベルに割り当てるか設定する。 o 本体内や拡張ボードで使用される割り込みと衝突しないように設定する 必要がある。 関連 I/O 0002h I/O 000Ah I/O 4A8Eh 名前 PCカードI/O投影アドレス設定 Undocumented 機能 [READ/WRITE] bit 15〜0: PCカードのI/Oポートを投影するI/Oアドレス 解説 o I/Oアドレス変換時、I/O 5A8Ehで設定したPCカードのI/Oポートを本体側の どのI/Oポートに投影するかを設定する。下位4bitには0000bを設定する。 通常下位8bitはD0h(ユーザー開放I/Oエリア)を指定する。 o 本体内や拡張ボードで使用されるI/Oアドレスと衝突しないように設定する 必要がある。 o 拡張アドレス変換モード時はbit 11〜8,3〜0は全て0に設定する。 関連 INT 1Fh - Function CF01h I/O 2A8Eh I/O 5A8Eh I/O 5A8Eh 名前 PCカードI/Oアドレス設定 Undocumented 機能 [READ/WRITE] bit 15〜0: PCカードのI/Oアドレス 解説 o I/Oアドレス変換時、I/O 4A8Ehで設定したI/Oアドレスに投影するPCカード のI/Oポートのベースアドレスを設定する。ここで指定されたI/Oアドレスが PCカードへ出力される。 o 基本アドレス変換モード時は下位4bitには0000bを設定する。 o 拡張アドレス変換モード時は下位7bitには0000000bを設定する。 関連 INT 1Fh - Function CF01h I/O 2A8Eh I/O 4A8Eh I/O 6A8Eh 名前 不明 Undocumented 機能 [READ/WRITE] bit 15〜0: 不明 解説 o 詳細不明 I/O 7A8Eh 名前 PCカード電源状態 Undocumented 機能 [READ/WRITE] bit 7: PCカードのBVD1信号 1= PCカードの電池消耗(データは保証されない) 0= 通常 bit 6: PCカードのBVD2信号 1= PCカードの電池消耗(データは保証されている) 0= 通常 bit 5: アトリビュート/コモン選択 1= アトリビュートメモリ 0= コモンメモリ bit 4: PCカードのVpp電圧制御 1= 12V 0= 5.0V bit 3,2: 未使用 bit 1: カードアクセス 1= カードアクセス中 0= カードアクセスしない bit 0: ローバッテリLED 1= LED ON 0= LED OFF * カードのLOWバッテリLEDの制御を行う。 解説 o 電源電圧を変更した後には、180μsec程度のウェイトが必要である。 関連 I/O 2A8Eh I/O 8A8Eh 名前 PCMCIAソケットコントロール Undocumented 機能 [READ/WRITE] bit 7〜4: 未使用 bit 3: カード有無 1= あり 0= なし * READのみ bit 2: 未使用 bit 1: PCMCIAコントローラリセット 1= リセットする 0= リセットしない bit 0: 未使用 解説 o PCMCIAコントローラのリセットを行う。 o PCカードが挿入されているかどうか調べる。 関連 I/O 0E8Eh 名前 ページアドレス設定 Undocumented 機能 [READ/WRITE] bit 15〜0: DA00hバンクに投影するページアドレス 解説 o JEIDAウィンドウに投影するページを8KB単位で選択する。 o このI/Oは、RAMドライブのアドレス指定にも使用されるので、使用後は 元の値を復帰させる必要がある。 関連 I/O 1E8Eh I/O 1E8Eh 名前 ウィンドウ選択 Undocumented 機能 [READ/WRITE] bit 7〜0: DA00hバンクに統制するメモリ種別 80h= ROM指定 81h= BANK RAM指定 84h= PCMCIA window指定 解説 o DAバンクの内容を切り替える o このI/Oは、RAMドライブ用バンクメモリの指定などにも使用されるので、 使用後は元の値を復帰させる必要がある。 関連 I/O 0E8Eh ------------------------------------------------------------------------------- ■PCMCIAコントローラ 対象 PC-9821Np・Ns・Ne2・Nd・Es・Ld・Lt・Nf・Nm・Ne3・Nd2・Na7・Nx・Xa10/C12,PC-9801NL/A PC-9821N-P02,PC-9801-102,PC-9821XA-E01,PC-9821XE-E01 チップ CL-PD6720 解説 o こららの機種では、PCMCIAコントローラとしてCirrusLogic社のCL-PD6720が 使用されている。 o CL-PD6720は1チップで2ソケットまでしか制御を行うことができないので、 98NOTEベイに装着するPCMCIAソケットユニットPC-9821N-P02にもCL-PD6720 が使用されている。 o PCMCIAコントローラCL-PD6720はI/O 03E0h,03E1hのユーザー開放I/Oアドレス に接続されている。こららのPCMCIA搭載機種ではではこのアドレスをユーザー が使用することはできないので注意が必要である。 u I/O 03E0h,03E1hはIBM PC/AT互換機のPCMCIAコントローラが使用するI/O アドレスと同じである。 o PCMCIAソケットの制御は極力ソケットサービスを使用することが望ましい。 関連 F8E8:0004h bit 0 I/O 03E0h 名前 PCMCIAコントローラ制御[INDEX] Undocumented 機能 [READ/WRITE] bit 7: Device Index 0= 内蔵PCMCIAコントローラ 1= 増設PCMCIAコントローラ bit 6: Socket Index 0= ソケット#0/#2選択 1= ソケット#1/#3選択 bit 5〜0: Register Index 解説 o PCMCIAコントローラのレジスタ番号を指定する。 o bit 7,6でPCMCIAソケットを選択する。ただし、このI/Oからの読み出しは 内蔵PCMCIAコントローラからのみ行われる。増設PCMCIAコントローラを 指定している時は、このI/Oからの読み出しは無効である。 関連 I/O 03E1h I/O 03E1h 名前 PCMCIAコントローラ制御[DATA] Undocumented 機能 [READ/WRITE] bit 7〜0: データ入出力 --------+----------------------------------------------- レジスタ|内容 --------+----------------------------------------------- 00h |Chip Revision |* PC-9821Np・Ns・Ne2・Nd・Esでは82hが返される | 98NOTEベイに内蔵する増設PCMCIAソケット用の | コントローラでも同じ。 01h |Interface Status 02h |Power Control 03h |Interrupt and General Control 04h |Card Status Change 05h |Management Interrupt Configuration 06h |Mapping Enable 07h |I/O Windows Control 08h |I/O Map 0 Start Address Low 09h |I/O Map 0 Start Address High 0Ah |I/O Map 0 End Address Low 0Bh |I/O Map 0 End Address High 0Ch |I/O Map 1 Start Address Low 0Dh |I/O Map 1 Start Address High 0Eh |I/O Map 1 End Address Low 0Fh |I/O Map 1 End Address High --------+----------------------------------------------- 10h |Memory Map 0 Start Address Low 11h |Memory Map 0 Start Address High 12h |Memory Map 0 End Address Low 13h |Memory Map 0 End Address High 14h |Memory Map 0 Address Offset Low 15h |Memory Map 0 Address Offset High 16h |Misc Control 1 17h |FIFO Control 18h |Memory Map 1 Start Address Low 19h |Memory Map 1 Start Address High 1Ah |Memory Map 1 End Address Low 1Bh |Memory Map 1 End Address High 1Ch |Memory Map 1 Address Offset Low 1Dh |Memory Map 1 Address Offset High 1Eh |Misc Control 2 1Fh |Chip Infomation --------+----------------------------------------------- 20h |Memory Map 2 Start Address Low 21h |Memory Map 2 Start Address High 22h |Memory Map 2 End Address Low 23h |Memory Map 2 End Address High 24h |Memory Map 2 Address Offset Low 25h |Memory Map 2 Address Offset High 26h |ATA Control 27h |Reserved 28h |Memory Map 3 Start Address Low 29h |Memory Map 3 Start Address High 2Ah |Memory Map 3 End Address Low 2Bh |Memory Map 3 End Address High 2Ch |Memory Map 3 Address Offset Low 2Dh |Memory Map 3 Address Offset High 2Eh |Extension Index 2Fh |Extension Data --------+----------------------------------------------- 30h |Memory Map 4 Start Address Low 31h |Memory Map 4 Start Address High 32h |Memory Map 4 End Address Low 33h |Memory Map 4 End Address High 34h |Memory Map 4 Address Offset Low 35h |Memory Map 4 Address Offset High 36h |I/O Map 0 Address Offset Low 37h |I/O Map 0 Address Offset High 38h |I/O Map 1 Address Offset Low 39h |I/O Map 1 Address Offset High 3Ah |Setup Timing 0 3Bh |Commnad Timing 0 3Ch |Recovery Timing 0 3Dh |Setup Timing 1 3Eh |Commnad Timing 1 3Fh |Recovery Timing 1 --------+----------------------------------------------- 解説 o I/O 03E0h bit5〜0で指定されたレジスタを読み書きする。 関連 I/O 03E1h -------------------------------------------------------------------------------