Changes

NEXTOR DDG 04 05 01

2,351 bytes added, 03:46, 26 January 2019
Created page with " ===4.5.1。 DRV_DSKIO(4160h) === 特定のドライバユニットに関連付けられている大容量記憶装置からセクタを読み書きします。..."

===4.5.1。 DRV_DSKIO(4160h) ===

特定のドライバユニットに関連付けられている大容量記憶装置からセクタを読み書きします。

入力:A = 0から始まるドライバユニット         読み取りセクタの場合はCy = 0、書き込みセクタの場合は1         B =読み書きするセクタ数         ビット7が設定されていない場合、C =読み書きする最初のセクター番号(ビット22から16)              ビット7が設定されている場合はメディアIDバイト         DE =読み書きする先頭セクタ番号(ビット15〜0)         HL =転送元/宛先アドレス 出力:成功するとCy = 0、エラーとなると1         A =エラーコード(エラー時のみ):              0書き込み禁止              2準備ができていません              4データ(CRC)エラー              6シークエラー              8レコードが見つかりません              10書き込みエラー              12その他のエラー         B =実際に読み取られたセクタ数(エラーの場合のみ)

古いMSX-DOSドライバのこのルーチンの対応物とは異なり、このルーチンはページ1との間のデータ転送要求を決して受け取りません。カーネルコードがページ1へのデータ転送を必要とする場合、転送を複数に分割します。 1ページ転送し、3ページの一時バッファを使用します。ドライバコードはこれを心配する必要はなく、常にメモリとの直接転送を行うことができます。

NextorがドライブにFAT16ファイルシステムが含まれていることを検出した場合、レジスタCはセクタ番号のビット22〜16を保持するために使用されます。したがって、完全なセクタ番号はレジスタCDEによる23ビット値の保持になります。そうでなければ、レジスタCは装置メディアID(常にそのMSBをセットさせる)を含み、完全なセクタ番号はレジスタDEによって保持される16ビット値となる。