countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2011 年 11 月 15 日
X68000 LIBRARY > ソフトウェアライブラリ > 特定のハードウェア用のソフトウェア > 060turbo 関連 > 060dmap.x > 060dmap.x の説明

060dmap.x の説明

説明

060dmap.x の添付ドキュメントです。末尾に記載されている連絡先は無効です。

060dmap.doc
────────────────────────────────────

     DMA 転送開始前に勝手にデータキャッシュをプッシュしてみるテスト

                060dmap.x v0.01 (1998.01.28) by M.Kamada

────────────────────────────────────

●このプログラムの機能

 68060 の MMU を使って、DMA 転送開始前にデータキャッシュをプッシュしま

す。

 具体的には、DMAC レジスタ($00E84000〜$00E840FF)のアクセスで一時的に

ページフォルトを発生させ、チャンネルコントロールレジスタのアクセスならば、

アクセスの前に勝手にデータキャッシュをプッシュします。

 DMAC レジスタのアクセスは read/write 共にアクセスの前後を合わせて実測

で約 6 μs遅延します(DMAC による転送動作そのものが毎回遅延するわけでは

ありません)。

 古い音源ドライバの中には、ADPCM のデータがデータキャッシュにダーティデ

ータとして残っていてもそれををプッシュせずに DMA 転送しようとするために

コピーバックモードでは正常に音が鳴らないことがあります。このプログラムを

組み込むことによって DMA 転送開始前に自動的にデータキャッシュがプッシュ

されるので、ADPCM が正常に鳴るようになることがあります。

 特殊な FD ドライバや、メモリ→メモリ転送に DMAC を使っているプログラム

にも効果が期待できます。


●動作環境

 060turbo の 68060 モードで動作します。


●使用法

 デバイスドライバまたはコマンドラインで常駐します。

        DEVICE = 060dmap.x

                または

        > 060dmap.x

 機能停止状態で常駐させたいときは、パラメータに off を指定して組み込ん

で下さい。

        DEVICE = 060dmap.x off

                または

        > 060dmap.x off

 常駐後は、コマンドラインで機能の on/off が可能です。

        > 060dmap.x on

                または

        > 060dmap.x off

 解除するときは -r を指定して実行して下さい。

        > 060dmap.x -r


●注意

 チャンネルコントロールレジスタのアクセスの内容が転送開始のオペレーショ

ンかどうかの判断はしていないので、継続や中止の際にもデータキャッシュがプ

ッシュされます。

 バスマスタ(Mach-2 など)によるデータ転送は監視できないので対象外です。

 アクセスフォルトのベクタが衝突するため、デバッガと共存できません。デバ

ッガを起動する前に、必ずウェイトを解除して下さい(常駐を解除する必要はあ

りません)。ウェイトを入れたままデバッガを起動すると、以下のような影響が

出ます。

 ・デバッガ上で DMAC レジスタをアクセスできなくなります。

 ・DMAC を使うプログラムをデバッガ上で実行することができなくなります。

 DMAC レジスタをユーザモードでアクセスしようとするとハングアップします。

 DMAC レジスタを MOVES 命令でアクセスできなくなります。

 $00E84000〜$00E85FFF の範囲に DMAC レジスタ以外のポートを増設している

場合、そのポートをアクセスできなくなります。


●お約束

 正しく動作することを期待して作成しましたが、このプログラムの動作は無保

証です。


●連絡先

        Mankai Special X680x0 user's Net: MKSX0109:かまだ


(EOF)