NEXTOR DDG 04 06 01

From Z80 Machines Wiki
Jump to: navigation, search

4.6.1. DEV_RW(4160h)

デバイスとの間で絶対セクタを読み書きします。

入力:Cy = 0、セクタを読み取る
               1セクタ書き込み
        A =デバイスインデックス、1〜7
        B =読み書きするセクタ数
        C =論理装置索引、1から7
        HL =転送元または転送先の非ページ1メモリアドレス
        DE = 4バイトのセクタ番号が格納されている非ページ1メモリアドレス 出力:A =エラーコード:              0:わかりました              .IDEVL:無効なデバイスまたは論理ユニット番号
             .NRDY:準備ができていません
             .DISK:一般的な不明なディスクエラー
             .DATA:読み込み時のCRCエラー
             .RNF:セクターが見つかりません
             .UFORM:未フォーマットディスク
             .WPROT:書き込み禁止メディア、または読み取り専用の論理ユニット
             .WRERR:書き込みエラー 
             .NCOMP:非互換ディスク
             .SEEK:シークエラー
         B =実際に読み取られたセクタ数(エラーの場合のみ)

このルーチンはデバイスから/への扇形の読み書きを許します。このルーチンがアクセスしなければならないのは、パーティションセクタではなく生の物理デバイスセクタです。ドライバはデバイスのパーティショニングについて何も知る必要はありません。

読み書きする最初のセクタの番号は32ビットの数であり、そのアドレスがDEによって示されるメモリ領域に供給されます。このアドレスは1ページ目には表示されないため、ドライバはページングについて心配する必要はなく、このデータに直接アクセスできます。セクタデータの送信元または送信先アドレスについても同様です。

利用可能なセクタ番号は、0から利用可能なセクタの数(LUN_INFOで報告される)から1を引いた値の範囲でなければなりません。 LUN_INFOが0の利用可能なセクタを報告する場合、ドライバ開発者が明示的にそれを文書化しない限り、利用可能なセクタの範囲は未定義です。

このルーチンはすべてのブロックデバイスに対して機能する必要があります。非ブロックデバイスがセクタの読み取りおよび/または書き込みをサポートしている場合、このルーチンはオプションでそのデバイスでも機能することがあります。

返されるエラーコードは、MSX-DOS 2プログラムインターフェイス仕様書の「ディスクエラー」カテゴリの下に表示されているMSX-DOS 2で使用されているものと同じです。 .IDEVLエラーはNextorの新機能で、コードはB5hです。 Nextorによって定義された新しいエラーコードの完全なリストは、Nextor 2.0プログラマーリファレンス文書にあります。