Statusレジスタを空読みする。ラベル2:Statusレジスタを読む。ここでエラーを検出したら、エラー終了。DRQが1になっていなかったら、ラベル2に戻る(割り込みを利用している場合は、このチェックは不要)。本来はポーリングでもこのチェックは不要なはずだけど、まあ念のためってことで。Dataレジスタをリードして、メモリに書き込む。これを1セクタ分だけ繰り返す。Dataレジスタのリードに当たって、いちいちStatusなどをチェックする必要はない。Countレジスタが2以上だったなどで、複数のセクタを処理する場合は、ラベル1に戻る。全部のセクタを処理しおわったら、下に進む。Statusレジスタを空読みする。Statusレジスタを読む。†デバイスセレクションプロトコルを実行。No-Dataのところの説明を参照。レジスタにパラメータをセット。書く順序は決まっていないが、Commandレジスタにコマンド番号を書くのは最後にしなければいけないので、まだ書かない。Commandレジスタにコマンド番号を書いて、400ns以上待つ。割り込みを利用する場合であっても、このポーリングをやる(デバイスが壊れていなければ、そう待たさせることはない)。この時点でエラーが検出された場合、割り込みが有効になっていれば割り込みが発生する。Statusレジスタのリードを使うとか、そういう工夫をすること。エラーが起きていないかどうかをチェック。割り込みでエラーを検出した場合は、Statusレジスタリードしておしまい。Statusレジスタを空読みして、それからStatusレジスタをリードして、それでおしまい。Statusレジスタをリードして、もしDRQが1になっていなかったら、ラベル1に戻る。