Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO ■DMAコントローラ 対象 ノーマル,ハイレゾ チップ 8237A相当品 解説 o PC-9800(PC-H98,PC-98LT・HA,DB-P1を除く)では、DMAコントローラとして 8237A(相当品)を使用している。 PC-H98は、8237A上位互換の独自32bit DMAコントローラを使用している。 u PC-98LT・HA,DB-P1は、V50内蔵DMAU(DMA Unit)を使用している。V50内蔵 DMAUはμPD71071のサブセットで、8237Aとは互換性がない。DB-P1で使用 しているV50HLのDMAUは8237A互換モードも備えているが、μPD71071モードで 使用している。 o DMAチャネルの使用方法は機種毎に差異がある。 [PC-9801初代・E・F・M・VM2・VF・U・UV2・UV21] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |なし *1 |DACK00,DRQ00信号 1 |メモリ リフレッシュ |なし 2 |両用FD I/F *2 |DACK20,DRQ20信号(最終スロットのみ) |(1MB I/Fモード時) | 3 |両用FD I/F *2 |DACK30,DRQ30信号(最終スロット以外) |(640KB I/Fモード時)| --------+-----------------+----------------------------------- *1:PC-9801F3・M3・VM4は、内蔵SASI I/Fが使用する。 *2:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で 設定する。内蔵FD I/Fが使用しないチャネルは拡張スロットで使用可能。 [PC-9801T・DA・DS・DX・CS・FA・FS・FX,PC-9821Aシリーズ,PC-98GS,PC-98RL(ノーマル)] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |内蔵HD I/F *1 |DACK00,DRQ00信号 1 |内蔵HD I/F *2 |なし 2 |両用FD I/F *3 |なし |(1MB I/Fモード時) | 3 |両用FD I/F *3 |DACK30,DRQ30信号 |(640KB I/Fモード時)| --------+-----------------+----------------------------------- *1:DIP SW 3-3がOFFのとき、内蔵HDのI/FがCH#0を使用する。このとき 拡張スロットでCH#0は使用できない。 *2:DIP SW 3-3がONのとき、内蔵HDのI/FがCH#1を使用する。このとき 拡張スロットでCH#0が使用できる。 *3:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で 設定する。1MB I/Fモード時は、CH#3が拡張スロットで使用可能。 [PC-H98 ノーマルモード] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |なし |DRQ00信号(Cバス,Eバス) 1 |両用FD I/F |DRQ10(Eバス) 2 |両用FD I/F *1 |DRQ20(Eバス) |(1MB I/Fモード時) | 3 |両用FD I/F *1 |DRQ30信号(Cバス,Eバス) |(640KB I/Fモード時)| 4 |なし |DRQ40(Eバス) 5 |なし |DRQ50(Eバス) 6 |なし |DRQ60(Eバス) --------+-----------------+----------------------------------- *1:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で 設定する。内蔵FD I/Fが使用しないチャネルは拡張スロットで使用可能。 * 内蔵ハードディスク,NESA用HD I/Fは、使用するDMAチャネルを マニュアルセットアップで設定可能。 * DMAチャネル7は使用不可。 [その他の機種のノーマルモード] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |なし *1 |DACK00,DRQ00信号 1 |なし |なし 2 |両用FD I/F *1 |なし |(1MB I/Fモード時) | 3 |両用FD I/F *1 |DACK30,DRQ30信号 |(640KB I/Fモード時)| --------+-----------------+----------------------------------- *1:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で 設定する。1MB I/Fモード時は、CH#3が拡張スロットで使用可能。 [PC-98XA] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |なし |DACK00,DRQ00信号(スロット#1,2,3,5のみ) 1 |両用FD I/F |DACK10,DRQ10信号(スロット#1のみ) *1 2 |なし |DACK20,DRQ20信号(スロット#2のみ) 3 |なし *2 |DACK30,DRQ30信号(スロット#3,4,5のみ) --------+-----------------+----------------------------------- *1:スロット#1には標準で両用FD I/Fが実装されている。 *2:PC-98XA model 3・31は、内蔵SASI I/Fが使用する。 [PC-98XL・XL^2 ハイレゾモード] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |なし *1 |DACK00,DRQ00信号 1 |両用FD I/F |なし 2 |なし |なし 3 |なし |DACK30,DRQ30信号 --------+-----------------+----------------------------------- *1:PC-98XL model4,PC-98XL^2は、内蔵SASI I/Fが使用する。 [PC-98RL ハイレゾモード] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |内蔵HD I/F *1 |DACK00,DRQ00信号 1 |両用FD I/F |なし 2 |内蔵HD I/F *2 |なし 3 |なし |DACK30,DRQ30信号 --------+-----------------+----------------------------------- *1:DIP SW 3-3がOFFのとき、内蔵HDのI/FがCH#0を使用する。このとき 拡張スロットでCH#0は使用できない。 *2:DIP SW 3-3がONのとき、内蔵HDのI/FがCH#2を使用する。このとき 拡張スロットでCH#0が使用できる。 関連 0000:0484h bit 7,6 [PC-H98 ハイレゾモード] --------+-----------------+----------------------------------- DMAチャネル |使用する内蔵装置 |拡張スロット --------+-----------------+----------------------------------- 0 |なし |DRQ00信号(Cバス,Eバス) 1 |両用FD I/F |DRQ10(Eバス) 2 |なし |DRQ20(Eバス) 3 |なし |DRQ30信号(Cバス,Eバス) 4 |なし |DRQ40(Eバス) 5 |なし |DRQ50(Eバス) 6 |なし |DRQ60(Eバス) --------+-----------------+----------------------------------- * 内蔵ハードディスク,NESA用HD I/Fは、使用するDMAチャネルを マニュアルセットアップで設定可能。 * DMAチャネル7は使用不可。 o DMA制御関連のI/Oアドレスは以下の通り。 -----------+----+---+------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+------------------------------------------------- 0001h |BYTE|R/W|チャネル0 カレントアドレスレジスタ 0003h |BYTE|R/W|チャネル0 カレントワードレジスタ 0005h |BYTE|R/W|チャネル1 カレントアドレスレジスタ 0007h |BYTE|R/W|チャネル1 カレントワードレジスタ 0009h |BYTE|R/W|チャネル2 カレントアドレスレジスタ 000Bh |BYTE|R/W|チャネル2 カレントワードレジスタ 000Dh |BYTE|R/W|チャネル3 カレントアドレスレジスタ 000Fh |BYTE|R/W|チャネル3 カレントワードレジスタ 0021h |BYTE| W |DMAチャネル1 バンクアドレス 0023h |BYTE| W |DMAチャネル2 バンクアドレス 0025h |BYTE| W |DMAチャネル3 バンクアドレス 0027h |BYTE| W |DMAチャネル0 バンクアドレス 002Bh |BYTE|R/W|32bit DMA CONTROLLER(インデックス) 002Dh |BYTE|R/W|32bit DMA CONTROLLER(データ) 0E05h |BYTE| W |DMAチャネル0 拡張バンクアドレス 0E07h |BYTE| W |DMAチャネル1 拡張バンクアドレス 0E09h |BYTE| W |DMAチャネル2 拡張バンクアドレス 0E0Bh |BYTE| W |DMAチャネル3 拡張バンクアドレス -----------+----+---+------------------------------------------------- 関連 I/O 0259h,0A59h - 74h,75h 0000:0484h bit 7,6 0000:0591h 0000:05ADh bit 5 I/O 0001h,0005h,0009h,000Dh 名前 カレントアドレスレジスタの設定 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 -----------+----+---+------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+------------------------------------------------- 0001h |BYTE|R/W|チャネル0 カレントアドレスレジスタ 0005h |BYTE|R/W|チャネル1 カレントアドレスレジスタ 0009h |BYTE|R/W|チャネル2 カレントアドレスレジスタ 000Dh |BYTE|R/W|チャネル3 カレントアドレスレジスタ -----------+----+---+------------------------------------------------- 解説 o DMACのカレントアドレスレジスタ(転送開始アドレス)を設定する。 o 1度目のアクセスではbit 7〜0を、2度目のアクセスではbit 15〜8を扱う。 関連 I/O 0019h I/O 0003h,0007h,000Bh,000Fh 名前 カレントワードレジスタの設定 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 -----------+----+---+------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+------------------------------------------------- 0003h |BYTE|R/W|チャネル0 カレントワードレジスタ 0007h |BYTE|R/W|チャネル1 カレントワードレジスタ 000Bh |BYTE|R/W|チャネル2 カレントワードレジスタ 000Fh |BYTE|R/W|チャネル3 カレントワードレジスタ -----------+----+---+------------------------------------------------- 解説 o DMACのカレントワードレジスタ(転送数)を設定する。 o 1度目のアクセスではbit 7〜0を、2度目のアクセスではbit 15〜8を扱う。 関連 I/O 0019h I/O 0011h 名前 リードステータス,ライトコマンド 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] リードステータス bit 7〜4: RQ3〜RQ0 1= リクエストあり 0= リクエストなし * リクエスト中のDMAチャネルに対応するビットがセットされる bit 3〜0: TC3〜TC0 1= TCに到達した 0= TCに到達していない * TC(Terminal Count)に到達したDMAチャネルに対応するビットが セットされる [WRITE] ライトコマンド bit 7: KS * PC-9800では0を設定する(DACKアクティブLOW) bit 6: DS * PC-9800では1を設定する(DREQアクティブLOW) bit 5: WS * PC-9800では0を設定する(遅れライト選択) bit 4: PR * PC-9800では0を設定する(固定優先順位) bit 3: TM * PC-9800では0を設定する(通常タイミング) bit 2: CE 1= コントローラ禁止 0= コントローラ許可 bit 1: AH * PC-9800では0を設定する(チャネル0アドレスホールド禁止)。 ただし、bit 0=0なので実際にはこのビットはDon't Care。 bit 0: MM * PC-9800では0を設定する(メモリ-メモリ転送禁止) 解説 o DMACのステータスレジスタの読み出し、コマンドレジスタへの書き込みを 行う。 関連 I/O 0019h I/O 0013h 名前 ライトリクエスト 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] 禁止 [WRITE] bit 7〜3: Don't Care bit 2: RB 1= リクエストセット 0= リクエストクリア bit 1,0: CS1,CS0 11b= チャネル3 10b= チャネル2 01b= チャネル1 00b= チャネル0 解説 o 指定したDMAチャネルのリクエストビットを設定する。 関連 I/O 0015h 名前 ライトシングルマスクレジスタビット 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] なし [WRITE] bit 7〜3: Dont' Care bit 2: MK 1= マスクセット 0= マスククリア bit 1,0: CS1,CS0 11b= チャネル3 10b= チャネル2 01b= チャネル1 00b= チャネル0 解説 o 指定したDMAチャネルのマスクを設定する。 関連 I/O 0017h 名前 ライトモード 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] 禁止 [WRITE] bit 7,6: MS1,MS0 * PC-9800では01b(シングルモード)に固定 bit 5: ID 1= アドレスデクリメント 0= アドレスインクリメント bit 4: AT 1= オートイニシャライズ許可 0= オートイニシャライズ禁止 bit 3,2: TR1,TR0 11b= 禁止 10b= リード転送(メモリ→I/O) 01b= ライト転送(I/O→メモリ) 00b= ベリファイ転送 bit 1,0: CS1,CS0 11b= チャネル3 10b= チャネル2 01b= チャネル1 00b= チャネル0 解説 o 指定したDMAチャネルの転送モードを指定する。 I/O 0019h 名前 クリアバイトポインタフリップフロップ 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] 禁止 [WRITE] bit 7〜0: 任意の値 解説 o バイトポインタフリップフロップをクリアする。I/O 0001〜000Fhでは 16ビットの値を下位・上位に分けて扱うが、このI/Oポートに出力したあとの I/O 0001〜000Fhのアクセスは、下位8ビットのデータと見なされる。 関連 I/O 0001〜000Fh I/O 001Bh 名前 リードテンポラリレジスタ,マスタクリア 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] リードテンポラリレジスタ [WRITE] マスタクリア bit 7〜0: 任意の値 解説 o テンポラリレジスタは、メモリ-メモリ間転送時に、最後に転送した データを保持している。PC-9800はメモリ-メモリ転送をサポートして いないので、このレジスタを読み出すことは無意味。 o このポートに出力(マスタクリア)すると、DMACはハードウェアリセット されたのと同じ状態になる。 関連 I/O 001Dh 名前 クリアマスクレジスタ 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] 禁止 [WRITE] クリアマスクレジスタ bit 7〜0: Don't Care 解説 o 全チャネルのマスクを解除する。 関連 I/O 001Fh 名前 ライトオールマスクレジスタビット 対象 ノーマル,ハイレゾ チップ μPD8237A相当 機能 [READ] 禁止 [WRITE] ライトオールマスクレジスタビット bit 7〜4: Don't Care bit 3〜0: MB3〜MB0 1= マスクセット 0= マスククリア 解説 o DMAチャネル0〜3のマスクを同時に設定する。各チャネルに対応したビットを 設定する。 I/O 0021h,0023h,0025h,0027h 名前 バンクアドレス設定 対象 ノーマル,ハイレゾ チップ DMA周辺 機能 -----------+----+---+------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+------------------------------------------------- 0021h |BYTE| W |DMAチャネル1 バンクアドレス 0023h |BYTE| W |DMAチャネル2 バンクアドレス 0025h |BYTE| W |DMAチャネル3 バンクアドレス 0027h |BYTE| W |DMAチャネル0 バンクアドレス -----------+----+---+------------------------------------------------- * bit 7〜0=A23〜A16 解説 o μPD8237Aは8ビットCPU用DMACであるため、DMAC自身では16ビット幅の アドレス(64Kバイト)しか制御できない。このため、PC-9800では外部に レジスタを設けて、24ビット幅(16Mバイト)までのアドレスを扱えるように している。 o 8086,V30,V33機では、A19〜A16(bit 3〜0)のみ有効。 PC-98XAでは、A22〜A16(bit 6〜0)のみ有効。 o このポートをリードしても設定値を読み出すことはできない。 u 16Mバイトを超えるメモリ空間に対してDMA転送する場合は、I/O 0E05〜0E0Bhを 使用する。 関連 I/O 0029h I/O 0439h bit 2 I/O 0E07h I/O 0E09h I/O 0E0Bh I/O 0E05h I/O 0029h 名前 バンクアドレスオートインクリメントモードレジスタ 対象 80286以上のCPU搭載機 チップ DMA周辺 機能 [READ] なし [WRITE] bit 7〜4: 0000bを設定する bit 3,2: M1,M0 インクリメントモード 11b= 16Mバイト境界(PC-98XAは設定不可) 10b= 設定禁止 01b= 1Mバイト境界 00b= 64Kバイト境界 bit 1,0: CS1,CS0 11b= チャネル3 10b= チャネル2 01b= チャネル1 00b= チャネル0 解説 o カレントアドレスレジスタ(転送アドレス)がラップアラウンドしたときの 動作を設定する。 o インクリメントモードが64Kバイト境界のときは、物理アドレスxxFFFFhを 跨ぐような転送はできない。インクリメントモードを1Mバイト,16Mバイト 境界にすれば、DMACがラップアラウンドしたとき、バンクアドレスが自動的に インクリメントされる。 u 起動時のDMAバンクインクリメント境界は64Kバイト。 関連 I/O 0021h,0023h,0025h,0027h I/O 0439h 名前 DMAアクセス制御等 対象 80286以上のCPU搭載機(PC-98XAを除く) チップ DMA周辺 機能 [READ/WRITE] bit 7: プリンタI/F選択■[PC-9821Ap・As・Ae・Af・Ap2・As2・An・Ap3・As3] ■Undocumented 1= 本体内蔵のプリンタインターフェース 0= 98ハイレゾボード上のプリンタインターフェース 解説 o PC-9821Ap・As・Ae・Af・Ap2・As2・An・Ap3・As3に98ハイレゾボード (PC-9821-E02)を搭載したとき、本体内蔵プリンタインターフェースと 98ハイレゾボード上のプリンタインターフェースのどちらかを 使用するか選択できる。通常は98ハイレゾボード上のプリンタ インターフェースを使用する。 u このポートは、PC-9821Ne・Bf・Bp・Bs・Be・Xt・Xa・Xn・Xp・Xs・Xe, PC-9801BA2・BS2・BX2・BA3・BX3等にも存在する。0を出力すると 本体内蔵のプリンタインターフェースが切り離される。 bit 6: 未使用(?) bit 5: 不明 ■Undocumented bit 4: 不明 ■Undocumented bit 3: 未使用(?) bit 2: DMAアドレスマスクレジスタ 1= 1Mバイト以上のアドレスへのDMAアクセス禁止 0= 1Mバイト以上のアドレスへのDMAアクセス許可 解説 o 1Mバイト以上の空間でのDMA転送の禁止/許可を設定する。 o ノーマルモードの起動時設定は1、ハイレゾモードの起動時設定は0。 bit 1: 高速グラフLIOサポートBIOS■[PC-9801VX21] ■Undocumented 1= 使用する 0= 使用しない bit 0: 不明 ■Undocumented ■[PC-9821Ap・As・Ae・Af・Ap2・As2・An・Ap3・As3] 1= ハイレゾモード 0= ノーマルモード 解説 o bit 2以外はUndocumented。 関連 0000:0480h bit 6 I/O 002Bh,002Dh 名前 32bit DMAコントローラ Undocumented 対象 PC-H98 チップ ORBIT 機能 -----------+----+---+------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+------------------------------------------------- 002Bh |BYTE|R/W|32bit DMA CONTROLLER(インデックス) 002Dh |BYTE|R/W|32bit DMA CONTROLLER(データ) -----------+----+---+------------------------------------------------- 解説 o PC-H98はDMA機能が大幅に拡張されている。 従来のPC-9800互換のチャネル0〜4と、新設のチャネル5〜7の合計8チャネルを サポートしている。DMA転送可能なメモリ空間は4Gバイト、データ転送幅は 8/16/32ビットから選択できる。 o PC-H98の32bit DMAコントローラは、Intel i82380(High Performance 32bit DMA Controller with Integrated System Support Peripherals)のDMAC部分を ベースにしている模様。μPD8237A互換機能やPC-9800用のDMA周辺回路などが 追加されている。このため、チャネル0〜4にアクセスする場合は、従来の DMAC用I/Oポートも使用できる。 o I/O 002Bhで32bit DMAコントローラのレジスタ番号を指定し、I/O 002Dhで レジスタの読み書きを行う。 u PC-H98以外の16MB超メモリ搭載可能機では、16MBを超えるメモリ空間に DMA転送する方法はPC-H98と異なる。 関連 0000:0458h bit 7 I/O 0001〜0029h I/O 0E05h,0E07h,0E09h,0E0Bh 表 32bit DMAコントローラのレジスタ一覧 ----------------+---------------------------------------------- レジスタ番号 |内容 ----------------+---------------------------------------------- 00h |DMA#0 TargetAddress(A7〜A0,A15〜A8) ----------------+---------------------------------------------- 01h |DMA#0 ByteCount(C7〜C0,C15〜C8) ----------------+---------------------------------------------- 02h |DMA#1 TargetAddress(A7〜A0,A15〜A8) ----------------+---------------------------------------------- 03h |DMA#1 ByteCount(C7〜C0,C15〜C8) ----------------+---------------------------------------------- 04h |DMA#2 TargetAddress(A7〜A0,A15〜A8) ----------------+---------------------------------------------- 05h |DMA#2 ByteCount(C7〜C0,C15〜C8) ----------------+---------------------------------------------- 06h |DMA#3 TargetAddress(A7〜A0,A15〜A8) ----------------+---------------------------------------------- 07h |DMA#3 ByteCount(C7〜C0,C15〜C8) ----------------+---------------------------------------------- 08h |DMA#0〜3 Status/Commnad Register ----------------+---------------------------------------------- 09h |DMA#0〜3 Software Request Register ----------------+---------------------------------------------- 0Ah |DMA#0〜3 Set-Reset Mask Register ----------------+---------------------------------------------- 0Bh |DMA#0〜3 Mode Register I ----------------+---------------------------------------------- 0Ch |DMA#0〜3 Write Clear Byte-Pointer FF ----------------+---------------------------------------------- 0Dh |DMA#0〜3 Write DMA master clear ----------------+---------------------------------------------- 0Eh |DMA#0〜3 Write DMA#0〜3 Clear Mask Register ----------------+---------------------------------------------- 0Fh |DMA#0〜3 Mask Regiser ----------------+---------------------------------------------- 10h |DMA#0 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- 11h |DMA#0 拡張カウント(C23〜C16) ----------------+---------------------------------------------- 12h |DMA#1 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- 13h |DMA#1 拡張カウント(C23〜C16) ----------------+---------------------------------------------- 14h |DMA#2 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- 15h |DMA#2 拡張カウント(C23〜C16) ----------------+---------------------------------------------- 16h |DMA#3 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- 17h |DMA#3 拡張カウント(C23〜C16) ----------------+---------------------------------------------- 18h |DMA#0〜3 DMA幅,サイクル設定 |bit 7〜4: BS3,BS2,BS1,BS0 | 1111b= 8bit | 1010b= 16bit | 0101b= 32bit | これ以外は設定禁止 |bit 3,2: TY1,TY0 | 00b= 互換サイクル | 01b= タイプA | 10b= タイプB | 11b= リザーブ |bit 1,0: DMAチャンネル | 00b= ch0 | 01b= ch1 | 10b= ch2 | 11b= ch3 ----------------+---------------------------------------------- 19h |DMA#0〜3 Chaining Register ----------------+---------------------------------------------- 1Ah |DMA#0〜3 Commnad Regiser II ----------------+---------------------------------------------- 1Bh |DMA#0〜3 Mode Regiser II ----------------+---------------------------------------------- 1Ch |Refresh Control Register ----------------+---------------------------------------------- 75h |Refresh Wait State Register ----------------+---------------------------------------------- 7Fh |DMA#4〜7 バンクアドレスオートインクリメントモードレジスタ | * 指定方法はI/O 0029hと同じ。 ----------------+---------------------------------------------- 89h |DMA#6 バンク(A23〜A16) ----------------+---------------------------------------------- 8Ah |DMA#7 バンク(A23〜A16) ----------------+---------------------------------------------- 8Bh |DMA#5 バンク(A23〜A16) ----------------+---------------------------------------------- 8Fh |DMA#4 バンク(A23〜A16) ----------------+---------------------------------------------- C0h |DMA#4 アドレス(A7〜A0),(A15〜A8) ----------------+---------------------------------------------- C1h |DMA#4 カウント(C7〜C0),(C15〜C8) ----------------+---------------------------------------------- C2h |DMA#5 アドレス(A7〜A0),(A15〜A8) ----------------+---------------------------------------------- C3h |DMA#5 カウント(C7〜C0),(C15〜C8) ----------------+---------------------------------------------- C4h |DMA#6 アドレス(A7〜A0),(A15〜A8) ----------------+---------------------------------------------- C5h |DMA#6 カウント(C7〜C0),(C15〜C8) ----------------+---------------------------------------------- C6h |DMA#7 アドレス(A7〜A0),(A15〜A8) ----------------+---------------------------------------------- C7h |DMA#7 カウント(C7〜C0),(C15〜C8) ----------------+---------------------------------------------- C8h |DMA#4〜7 ライトコマンド/リードステータス | * 指定方法はI/O 0011hと同じ。 ----------------+---------------------------------------------- C9h |DMA#4〜7 ライトリクエスト | * 指定方法はI/O 0013hと同じ。 ----------------+---------------------------------------------- CAh |DMA#4〜7 ライトシングルマスクレジスタビット | * 指定方法はI/O 0015hと同じ。 ----------------+---------------------------------------------- CBh |DMA#4〜7 ライトモード | * 指定方法はI/O 0017hと同じ。 ----------------+---------------------------------------------- CCh |DMA#4〜7 クリアバイトポインタフリップフロップ | * 指定方法はI/O 0019hと同じ。 ----------------+---------------------------------------------- CDh |DMA#4〜7 マスタクリア | * 指定方法はI/O 001Bhと同じ。 ----------------+---------------------------------------------- CEh |DMA#4〜7 クリアマスクレジスタ | * 指定方法はI/O 001Dhと同じ。 ----------------+---------------------------------------------- CFh |DMA#4〜7 ライトオールマスクレジスタビット | * 指定方法はI/O 001Fhと同じ。 ----------------+---------------------------------------------- D0h |DMA#4 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- D1h |DMA#4 拡張カウント(C23〜C16) ----------------+---------------------------------------------- D2h |DMA#5 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- D3h |DMA#5 拡張カウント(C23〜C16) ----------------+---------------------------------------------- D4h |DMA#6 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- D5h |DMA#6 拡張カウント(C23〜C16) ----------------+---------------------------------------------- D6h |DMA#7 拡張アドレスバンク(A31〜A24) ----------------+---------------------------------------------- D7h |DMA#7 拡張カウント(C23〜C16) ----------------+---------------------------------------------- D8h |DMA#4〜7 DMA幅,サイクル設定 |bit 7〜4: BS3,BS2,BS1,BS0 | 1111b= 8bit | 1010b= 16bit | 0101b= 32bit | これ以外は設定禁止 |bit 3,2: TY1,TY0 | 00b= 互換サイクル | 01b= タイプA | 10b= タイプB | 11b= リザーブ |bit 1,0: DMAチャンネル | 00h= ch4 | 01h= ch5 | 10h= ch6 | 11h= ch7 ----------------+---------------------------------------------- D9h |DMA#4〜7 不明 | * 詳細不明 ----------------+---------------------------------------------- DBh |DMA#4〜7 不明 | * 詳細不明 ----------------+---------------------------------------------- I/O 0E05h,0E07h,0E09h,0E0Bh 名前 DMA 拡張バンクレジスタ Undocumented 対象 16Mバイト超メモリ搭載可能機(PC-H98を除く) チップ DMAC周辺 機能 -----------+----+---+------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+------------------------------------------------- 0E05h |BYTE| W |DMAチャネル0 拡張バンクアドレス 0E07h |BYTE| W |DMAチャネル1 拡張バンクアドレス 0E09h |BYTE| W |DMAチャネル2 拡張バンクアドレス 0E0Bh |BYTE| W |DMAチャネル3 拡張バンクアドレス -----------+----+---+------------------------------------------------- 解説 o 使用方法の詳細は不明。 o μPD8237Aは8ビットCPU用DMACであるため、DMAC自身では16ビット幅の アドレス(64Kバイト)しか制御できない。このため、PC-9800では外部に DMAバンクレジスタ(I/O 0021〜0029h)を設けて、24ビット幅(16Mバイト) までのアドレスにDMA転送できるように拡張していた。16Mバイト超の メモリを搭載可能な機種では、DMA転送可能なアドレス空間をさらに拡張する ために、拡張DMAバンクレジスタを搭載している。 関連 I/O 0439h bit 2 I/O 0021〜0029h I/O 002Bh,002Dh