質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Q&A

0回答

1022閲覧

フロッピーディスクからデータを読み込みたい①

kazuyakazuya

総合スコア193

アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

1グッド

1クリップ

投稿2020/11/23 13:01

ブートローダーを作成しています。
今までBIOSコールを使いフロッピーからプログラムを読み込みメモリへマップしていたのですが
そのBIOSコールだとメモリ0x10000以内の範囲でしか読み込んだプログラムを展開できないという制約があり、
大きくなってきた私のプログラムだとプログラムのすべてをメモリに展開することができなくなりました。

そこで直接フロッピーコントローラーにIOでアクセスしてフロッピーを制御し
プログラムをメモリへ展開できるようにしたいです。
(32bitプロテクトモードへ移行した後はBIOSコール使えないのでこうするしかない)

softwaretechnique
上記のサイトに細かい仕様が書かれていたので読んでいるのですが
そのなかで不明点があるので教えてください。
リンク内容
ここにコマンド一覧が載っています。

[概要]
コマンドの長さは1~9バイト。
IOポート0x3F5を使えばデータレジスタにアクセスでき、
そこへoutで書き込むことでフロッピーコントローラーに命令をすることができるようです。
コマンドは連続で書き込む必要があるようです。


コマンド一覧の中の"READ DATA(0x06)"を見ていきます。
これを使えば指定されたトラック上のセクターを読み出すことができるようですね。
コマンドを書き終えるとフロッピーコントローラーはコマンドに対応する処理を始める・・・らしいです。
問題はここからで・・・
以下のものはリンク先で書かれていたことなのですが

リンク先の文章

>コントローラはほとんどのコマンドに対してステータスをポートアドレス0x3F5のデータレジスターに
格納します。コントローラはステータスをデータレジスターに格納するとIRQ6を発生させます
格納されるステータスは制御コマンドに関係なく常に7バイトとなります。

(READ DATA(0x06)とREAD TRACKのステータスは同じです)
イメージ説明

>データレジスターに1バイト格納されるごとに
IRQ6が発生しますので、割り込みが入った後にデータレジスターから1バイト読み込む
ようにプログラムします。

質問
結局、READ DATA(0x06)を使って読み出したデータってのはどこに格納されるんですか?
データレジスタに1バイト格納されるごとにirq6が発生すると書かれていますが
表を見ても"フロッピーから読み出したデータらしきもの"が見当たりません。
(この1バイトってのはフロッピーから読み出した1バイト・・・?)

格納されるステータスは制御コマンドに関係なく常に7バイトとなります。
って書いてあるからこの"1バイト"ってのは格納されるステータス7バイトのどこかに入っているものだと思ったのですが
違うのですか?

これとは別のレジスタに読み込んだバイトが格納されるのかな?とでも思って確認したけど
それらしきものはありませんでした。

わからないので教えてください・・・

kokemomo.sour👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問