ザビタン開発日記
2009
| 01
10月 20 (土曜日) 2007 | ||
20:08
|
FDアクセス:イメージ内で発見?
|
|
あっれえぇぇぇ?
論理セクター0(C1 H0 S0)を読み込んだはずだけど、 haribote.imgの0x4800〜を読み込んでるようだぞ??? おっかしいなぁ。論理0はブートセクタのはずだから、
のはずじゃね? なにこの
って?? ・・・・・まさか・・・・・ まさかねぇ・・・ ぎゃーーー! セクタが1から始まるのをシリンダと勘違いしてました・・・orz オレの二日間はなんだったんだああぁぁぁぁぁぁぁ! 直したらちゃんと読めた! おぉ! オレって天才じゃん!!!( ゜∀゜)アーヒャヒャヒャヒャヒャヒャ!!!! ↑ まぁとにかく!!!! FDのセクタを指定して読むことはできるよーーになったぞ!!! リビジョン26
|
||
18:29
|
番外:やっぱオレはアホだった・・・
|
|
苦労してメモリダンプのコマンドを作ったんだけどさ・・・
typeやcalcと同じように「アプリケーション」で作ったわけよ。 セグメントが違うじゃんかよーーーーー! (T▽T) リビジョン25
|
||
11:25
|
FDアクセス:成功?失敗?
|
|
さていろいろやって、とにもかくにもFDでセクタを読むことには
成功したっぽいです。 (発想の転換で、fifoを判断するforループを入れ子にしちゃったん ですよね。このタスクは基本的にはFDDコントロール専用だし) ・・・で! 読み込んだはずのデータを表示してみたんですけど、どうも合わない・・・。 論理セクタ0を読んだはずなんだけど、その値がharibote.img内のどこを 検索しても見当たらないんだよなぁ・・・ 読み込みがまずい? それともメモリ位置がおかしい? もう一度メモリマップを作り直して確実な読み込みバッファを 確保したほうがよさそうだなぁ。 それと、コマンドラインあたりから、メモリ内容をだーーっとダンプするような のがほしいな。コードで表示してると面倒でいかん・・・・ リビジョン23
|
||
11:17
|
ちょっとネタね
|
|
たははは。
ある意味ではこれはお笑いなので。(^^ いまオイラはFDを読む実験をしてるんだけど、これ、以前にもやったんですよ。 そのときもまあとりあえずはうまくいったんです。 でね? そのとき。 FDからのデータを読み込む場所をメモリに確保するでしょ? 何番地〜とか。 そのとき、なにをどう勘違いしたか、0xa0000番地にしてたのよ(^^; 実験はけっこううまく入ってて、「FD読めたー!わーい!」なんて思ってたら、 ふと気づくと画面上部にノイズが・・・ 「なんだこれは!? いつからだ! うむむーー!」ってなもんで ずいぶん悩んだんですよ。当時。 (こらぁもういわんでもわかるやろ?) 実はね。今回、何回かこれをワザとやったんですよ。 っというのは、バッファ等って、本当に書き込みがなされたかどうか とかを、すぐにパっと見てわからないじゃない。(表示するコード書いたりせんといかんし) なので、ワザと。 理由は二つあって、ここはvramの先頭であり、それ以外には絶対しようされないじゃない?。それを逆手に取れば、画面が乱れる以外 一切問題が生じない部分といえるでしょ? もうひとつは、画面の乱れ。理由がわかっていれば、この乱れが出た瞬間に、「あ、たしかにメモリに転送してるな」 ってのが解るともいえるのです。 ・・・まあ、大変幼稚で乱暴な方法ではありますがね。(^^; とりあえず、メモリへの転送は成功しているようです〜 |
||
10月 19 (金曜日) 2007 | ||
22:53
|
FDアクセス:とにかくセクタを読んでみる
|
|
最初からあまり仰々しいことやってもトーシローのオイラには無理なので、
まずは直線的な流れで、ベターーーっとあるセクターを読み込んでみよう!! じゃ、とりあえずは論理セクター0ね。(^^ まず、[3]を押すとシーク0のコマンドを発行し、完了すると画面に返事を書く。 そんなのを考える。 ・・・そうだ! 内部で最後に発行したコマンドを覚えておく変数を用意してfifoからのデータが3000ならそこで分岐させるってのはどうだろう?? ・・・いや、違うなぁ・・・ |
||
22:47
|
FDアクセス:モーターの憂鬱
|
|
はりぼてWikiによると、AT互換機のFDDは「今現在モーターが回っているか?」という情報を取得できないらしい・・・
なので、OS側で覚えておけということらしいが、疑問がある。 それは起動時のOSそのものの読み込み時に回転するモーターが、はたして今現在とまっているのかどうかという判断だ。 いまでこそサビビは小さいのでOSが動き出した時点ではたぶん止まっていると過程していいだろう。しかし、たとえば将来、設定ファイルや スタートアップアプリなどをサポートしたという場合、はたして・・・ さて、そんなことを今考えてもしょうがないので、とりあえずモーターは必ず止まっているということを前提として進めていこう。 |
||
20:18
|
FDアクセス:割り込み装備
|
|
[2]キーを押してコマンドが送信された。(送信しろというコード部は実行されたクサイ)
もしこれでOKなら、割り込みが発生するはず。 とりあえず割り込み部分でなにかアクションを行えるようにしてみよう。 ・・・おぉっとぉ! どうも割り込みがこないと思ったら、割り込みマスクをはずしておくの忘れてた!! (これ、前にもひっかかったんだよなぁ。俺ってマヌケ・・・)
bootpac.c内のこんなやつね・・・(^^; ここを修正してと・・・ よおっしゃぁぁぁぁぁぁ!!!! FDコントローラから割り込みが来るようになったぞ!!! さーて・・・ testtask内。FDを効率的にアクセスするにはどうしていったらいいだろう。 すこし組み立て(フローチャート?)を考えてみよう。 リビジョン21
|
||
19:29
|
FDアクセス:コマンド送信実験
|
|
えとえと・・・
まず、とにかくFDにコマンドが送れるようにしてみる。 testtask内で、[2]を押せばコマンド送信準備をする。現在の0x03f4の値を表示するようにしてみよう・・・
うーむ・・・・とりあえずはこれでいいみたいだなぁ・・・ 値もちゃんと0が帰ってくるようだ。 (ほんとは「待つ!」と書いてあるんでそうするのがいいんだけど、ちょっと手抜きで・・・) さらに、
・・・とのこと。どうしようかな。とりあえず「シリンダ0へのシーク」をやってみよう。そうすると・・・
こういうコードになるってことでいいのかな??? とりあえずコンパイラも通るようだし、成功??? いやでも、反応を見ることができないんじゃわからないよね? 割り込み処理に手を入れよう。 リビジョン20
|
||
17:17
|
メインFIFOに送信されるデータの整理
|
|
ここでちょっとメインfifoに送信されてくるデータを整理しておこう。えっと・・・
こっちにまとめるか・・・ よーし。とりあえずこんなところかな。 キリがいいのでFDD関係のfifoデータは3000〜4000ということにするか。 メインのタスクにもし3000〜4000が来たら、そのままFDDタスク(今はまあ、testtaskだけどね)のfifoに送信と! inthandler26の関数もあわせて変更・・・っと。 |
||
16:10
|
FDアクセス:IRQ06
|
|
おっとっと! 忘れてた! これが大事な概念。
こういうことですな。まずは割り込みの処理を設置しないと・・・ dsctbl.cに割り込みを設置する。
naskfunc.nas内に反応する関数を設置と・・・(P234を参考)
こんなところかな。 あとはここから呼び出される関数の本体を作る。 fd.cというファイルを追加。内容は
こんなところかな・・・ おぉぉっと! bootpac.hに今回設置した各関数を追加し、Makefileとかも直さないと・・・ おっしゃ! とにもかくにもコンパイルは通ったみたいだぞ!?? あとはinthandler26関数でtesttaskのfifoにデータを送信するように すればいいはず。ええと・・・どうしようかな?? リビジョン19
|
||
1 2 3 (4) 5 6 7 »  |
PopnupBlog V3 Denali created by Bluemoon inc. |