2015年1月10日土曜日

FDDエミュレーターのCRCエラーが直った

FDDエミュレーターのCRCエラーが直った。バッファへ書き込んでから書き込み位置を更新しなきゃならないところを、書き込む前に更新していたという単純な間違いだった。
これでどこのセクタを読んでも正常に読めるようになった。


X1実機でFDDエミュレーターのイメージファイルからBASICを起動しようとすると、「RUN"Start up.Bas"」の表示まで進むようになったけど、ここで止まる。
以前は「IPL is loading ~」までしか進まなかったんだけど、イメージファイルを独自形式にしてシークが少し速くなって本物のFDDに少し近づいたようです。

2015年1月9日金曜日

PICKIT 2 のファームウェアをダウンロードするのに苦労した

PICKIT 2 のファームウェアをダウンロードしようと microchip.com で "PICKIT 2" を検索しても「PICkit2は、PICkit™3の古いバージョンで、新しいデバイスをサポートしていません。」と出て、ドキュメントやファームウェアをダウンロードするリンクが出なくて困ったのですが、PICKIT 2 のパーツナンバー "PG164120" で検索するとドキュメントやファームウェアや書き込みソフトが出てきました。よかった。



FDDエミュレーターで 2D が読めなくなった件を少し調べた。
X1でセクタの内容を読んで表示するテストプログラムを作って動かしてみたら、トラックの最終セクタだけ CRCエラーが出ていた。データのおしりが欠落しているような感じかな?
あと、2HDでも最終セクタだけ CRCエラーが出ていた。

2015年1月8日木曜日

H8S 2144 20MHz で SDカードのリード速度

試作FDDエミュレーターの動作を早くする為に、SDカードのアクセスに H8S 内蔵のシリアルインターフェース (SCI) を使いたくてマニュアルを良く読んだんだけど、H8S 2144 の SCI のクロック同期モードはタイミングの変更ができないのと、内部クロックでは 1バイトごとの受信ができないので、SDカードのSPIモードでのアクセスには使用できないみたい。
I/Oポート (GPIO) をソフトウェアで操作したシリアル通信でSDカードから 10240 バイト読みだした場合の速度はこんな感じ。

mount time : 22 ms
10240 byte read
   1 byte block : 352 ms   29 kbyte/s
 512 byte block : 107 ms   95 kbyte/s
1024 byte block : 106 ms   96 kbyte/s
2048 byte block : 103 ms   99 kbyte/s
close : 0 ms

2HD のフロッピーディスクの転送速度は、クロックピットを入れると 1000kbps = 125kbyte/s なので、H8S でもハードウェアのシリアルI/Fが使えればバッファに蓄えずSDカードからデータを読んで直接 FD の READ DATA 信号を送出しても間に合いそうな感じ。
だいたい動きそうな様子になってきたので、SPIが使えるマイコンで作り直そうと思う。

その前に、使用するイメージファイルを D88 から独自形式に変更してから、なぜだか 2HD は読めるのに 2D が読めなくなってしまったので原因を調べなきゃ。