雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
2: 2007-01-21 (日) 14:28:34 ソース バックアップ No.2 を復元して編集 3: 2007-01-21 (日) 15:28:37 ソース バックアップ No.3 を復元して編集
Line 186: Line 186:
[[OS-Wiki:http://community.osdev.info/index.php?(FDC)765A]]にも資料があるな。 [[OS-Wiki:http://community.osdev.info/index.php?(FDC)765A]]にも資料があるな。
ん????。読み出したデータのおのおののビットに意味があるの??。つーことは、0X11って 10001でしょ?。 「&」って、読み出したデータをand演算しろってこと? ん????。読み出したデータのおのおののビットに意味があるの??。つーことは、0X11って 10001でしょ?。 「&」って、読み出したデータをand演算しろってこと?
 +
 +うーん。あってるかどうかわからんが、とにもかくにもコマンドラインにこんなコマンドを実装。
 +
 + /*FDの実験*/
 + void cmd_fdtest(struct CONSOLE *cons)
 + {
 +   char a;
 +   a = io_in8(0x03f4);
 +
 +     int s[70];
 +     sprintf(s, "0x03f4 = %d, 0x11 & = %d",a,a & 0x11);
 +  cons_putstr0(cons, s);
 +  cons_newline(cons);
 +  return;
 + }
 + /*---------------------*/
 +
 +結果、ほぼいつでも0であることがわかった。
 +
 +はりぼてWikiでは、この確認が終わったら
 + 次に以下を送信したいバイト数だけ繰り返します。
 +
 +   * io_in8(0x03f4) & 0xc0 が 0x80 になるのを待つ
 +   * io_out8(0x03f5, データ);
 +
 +とある。ええと。これはどういうことかな? たとえば、''シリンダ0へのシーク''を行いたい場合は、[07] [00] (INT) って書いてあるけど、これは
 +
 +-- io_in8(0x03f4) & 0xc0 が 0x80 になるのを待つ(まだかな〜?)
 +-- よし! 0x80になったぞ!!
 +-- io_out8(0x03f5, 0x07); でコマンドを送信!
 +-- 再びio_in8(0x03f4) & 0xc0 が 0x80 になるのを待つ(まだかな〜?)
 +-- よし! 0x80になったぞ!!
 +-- こんどはio_out8(0x03f5, 0x00); でコマンドを送信!
 +-- コマンドは送ったぞ。あとは、IRC6からお返事が来るまで待とう
 +-- よし!割り込みが来た! ステータスレジスタを見て、成功したか失敗かを確認しなくちゃ!
 +
 +・・・っとまあ、こういうことでいいのかなぁ????