ザビタン開発日記
2009
| 01
10月 30 (火曜日) 2007 | ||
23:57
|
FDアクセス:番外
|
|
いままでここをベタ〜っと写していたのだがすこし意味などをお勉強。
資料を探していたら・・・あったあった!。ここ! ここ!。 ・・・でもやっぱしKタンのサイトなのね・・・(^^ うっわあぁぁぁ・・・・むずかしいなぁ。 とりあえずオイラお得意の「まず大雑把に法則化」といきますか!
ステータスレジスタ現在、FDD、FDCがどういう状態なのか?を示す。 各ビットに意味がある。 bit4が0ならIdle-Phase つまりこういう状態。 ???0??? FDCに対してコマンドを発行したい場合、 「io_in8(0x03f4) & 0x11 の値が0になるのを待ちます」 とある。これはどういうことなのかというと、bit0とbit7以外は0である必要があるということ。 ・・・・だめだなこりゃ。ここいらあたりにまとめよう。 |
||
23:21
|
FDアクセス:実機はアカン?
|
|
Kタンからアドバイスがあった。
・・・これはどういうことなのだろう? オイラが参考にしているここによると、割り込み状態取得とある。 これはいったいなんなのだろう?。割り込みの後やらなければならないとある。 割り込みが発生した場合にはかならず一回行うことが前提となるもの のようだ。もしかしてこのST0やもうひとつの戻り値であるCなどから なにかを判断しなければいけないのだろうか?。 また、これはどんな場合でもIRQ6が発生した場合には行うべきこと なのだろうか? (たとえばシークでは必要だが書き込み時はいらないとかそういうの) ・・・まあとりあえず、一発実験してみる・・・ そう思ってこんなコードを書いたのだが
やはりどうもこの(1)あたりで引っかかってしまう。 「割り込みが来た瞬間」に必要なのかとも思い、inthandler26内に 仕込む等も行ってみたのだが、whileを抜け出せないようで固まって しまうのと同じになってしまう。 (相変わらずQEMUではツルっと通過してくれるのだが) やはりこれは、各コマンドやSTの意味などの資料を探さねばいけないかなぁ〜。 |
||
17:46
|
FDアクセス:実機はアカン?
|
|
まいったなぁ・・・
初心に戻ってと思い、こんなベタなコードを試してみたんだけど
実機A、実機B共に1のところで止まったキリになっちゃう・・・ (もちろんエミュではOKなのだが・・・) |
||
13:34
|
FDアクセス:実機はアカン?
|
|
ちょっと変化がありました。
実機Aは相変わらずなんですが、実機Bで初めて「ぶっ!」っと音が出ました。 ・・・実はオイラはこれまでシークやリセットは搭載していなかったんです。 もしかしてこれかなぁと思い、シークを搭載してみたら変化が。 読み取りコマンド前にシークやリセットを挟み込んでさらに実験・・・ むむむ・・・ 実機Aではあいかわらずだが、実機Bではリザルトが0x40、つまりコマンドの 異常終了になるようになった。 これははたして進歩だろうか・・・orz・・・ |
||
09:41
|
FDアクセス:実機はアカン?
|
|
整理する。
オイラが書いたコードqemu: リザルトは0x00 実機A(ダイナブックGT475):0x80 実機B(自作機・Celelon700):0xc0 VMWareイメージFD:0x00 VMWare実FD:0x00 コマンド間違い意図的にコマンドを間違える。S(セクタ)をありえない数値(99)にしてみる qemu: 0x40 実機A(ダイナブックGT475):0x80 実機B(自作機・Celelon700):0xc0 VMWareイメージFD:回復不能なエラーで落ちた VMWare実FD:回復不能なエラーで落ちた コマンド中抜き意図的にコマンドのひとつを抜く。じゃ、02の送信を抜く qemu: 0x00 実機A(ダイナブックGT475):0x80 実機B(自作機・Celelon700):0xc0 VMWareイメージFD:0xc0 VMWare実FD:0xc0 コマンド中抜き2意図的にコマンドを抜く。02、さらに12も抜いてみるく qemu: 0x00 実機A(ダイナブックGT475):0x80 実機B(自作機・Celelon700):0xc0 VMWareイメージFD:0x00 VMWare実FD:0x00 DMAを開けないDMAを開ける関数を無効化 qemu: 0xc0 実機A(ダイナブックGT475):0x80 実機B(自作機・Celelon700):0xc0 VMWareイメージFD:回復不能なエラーで落ちた VMWare実FD:回復不能なエラーで落ちた DMAを開け、コマンドを送信しないDMAを開ける関数を無効化 qemu: 0x00 実機A(ダイナブックGT475):0x00 実機B(自作機・Celelon700):0x00 VMWareイメージFD:回復不能なエラーで落ちた VMWare実FD:回復不能なエラーで落ちた DMAも開けず、コマンドも送信しないDMAを開ける関数を無効化し、リードコマンドも送信しない qemu: 0x00 実機A(ダイナブックGT475):0x00 実機B(自作機・Celelon700):0x00 VMWareイメージFD:回復不能なエラーで落ちた VMWare実FD:回復不能なエラーで落ちた 分析してみる・・・(ノД`)・・・
新たな疑問。 この実験では実機の場合、なにも送信しなければ0x00である。 ・・・っということは、0x08なり0x0cなりになるのはどの時点か?
リビジョン52
|
||
(1)  |
PopnupBlog V3 Denali created by Bluemoon inc. |