OS Project Wiki の保存版 ヒデさん・アリスさんほか、OS部のみなさんが書いたものです。
2019年にサイトが消滅しました。当時あった211ページのうち、本文が残っていたのは86ページです。すべては復旧できていません。Common Crawl と Internet Archive に 残っていたものを組み直しています(最終取得 2019-05-24)。
編集・検索・添付などの機能は動きません。表示のみです。

検索

まずは、検索!

Index

人気の20件
最新の20件
2018-12-022018-01-092017-05-072017-04-252016-05-012015-02-242014-01-032013-06-252012-12-302012-12-292012-07-272012-07-162012-02-052012-01-292011-10-012011-09-18

ATA/ATAPI - I/Oポート、レジスタ

目次

I/Oポート、レジスタ

コマンドによって、レジスタのビットの意味が変わってくるので、詳しくはコマンドを参照してください。
いっそ、レジスタAとかにすればよかったのに。。

ATAのI/Oポートマップ

データ・レジスタ (Port:0x0170, 0x01f0)

bit1514131211109876543210
内容主に、PIOデータ転送時のデータ用レジスタ

エラー・レジスタ (Port:0x0171, 0x01f1)

bit76543210
内容コマンドによるABRTコマンドによる
ABRT (bit:2)
  • 0:アボートなし
  • 1:実行したコマンドが未定義かパラメータが間違っている。

フィーチャーズ・レジスタ (Port:0x0171, 0x01f1)

コマンドの特性を示すレジスタで、すべてのビットの意味がコマンドによって異なる。

bit76543210
内容コマンドによる

セクタ・カウント (Port:0x0172, 0x01f2)

PACKETコマンド以外
bit76543210
内容処理するセクタ数
PACKETコマンド→Interrupt Reasonレジスタ
bit76543210
内容TAGRELI/OC/D
C/D (bit:0)
I/O (bit:1)

データの転送方向を示す。

  • 0:ホスト→デバイス
  • 1:デバイス→ホスト
REL (bit:2)
TAG (bit:3-7)

セクタ・ナンバー (Port:0x0173, 0x01f3)

すべてのビットの意味がコマンドによって異なる。

bit76543210
内容コマンドによる

シリンダLow (Port:0x0174, 0x01f4)

bit76543210
内容CHS方式時:Cylinder Low
LBA方式時:LBA[0-7]
PACKETコマンド時:Byte Count LSB

シリンダHigh (Port:0x0175, 0x01f5)

bit76543210
内容CHS方式時:Cylinder High
LBA方式時:LBA[8-15]
PACKETコマンド時:Byte Count MSB

デバイス/ヘッド・レジスタ (Port:0x0176, 0x01f6)

bit76543210
内容廃止コマンドによる廃止DEVコマンドによる
Device select (bit:4)
  • 0:マスタ
  • 1:スレーブ

ステータス・レジスタ (Port:0x0177, 0x01f7)

bit76543210
内容BusyDRDYコマンドによるDRQ廃止廃止ERR
Error (bit:0)
  • 0:エラーなし
  • 1:エラーあり
Data Request (bit:3)
  • 0:データ転送要求なし
  • 1:データ転送要求中!
Device Ready (bit:6)
  • 0:デバイスの準備ができていない。
  • 1:デバイス準備OK
Busy (bit:7)
  • 0:アイドル状態
  • 1:ビジー状態

コマンド・レジスタ (Port:0x0177, 0x01f7)

bit76543210
内容コマンドコード

オールタネート・ステータス・レジスタ (Port:0x0376, 0x03f6)

基本的にステータス・レジスタと同じで、割り込みフラグを変更しないことだけが違う。

デバイス・コントロール・レジスタ (Port:0x0376, 0x03f6)

このレジスタは、マスタ、スレーブの両デバイスに書き込みを行うので注意。

bit76543210
内容予約SRSTnIEN0
Interrupt Enable (bit:1)
  • 0:割り込みをイネーブル
  • 1:割り込みをディセーブル
Software Reset (bit:2)
  • 0:何もしない。
  • 1:ソフトウェアリセットを実行

Since 2008 July. OS Project Wiki
保存 2019-04-21 ・ ページ一覧