ユーティリティのFORMATやBACKUP が動かないのは、制御系プログラムのバグでした。
今の段階では、内蔵ドライブは完了。
外付けドライブは、以下のコマンドのみを実装してとりあえず完了とします。
00:Initialize
01:Write Disk
02:Read Disk
03:Transfer Buffer
05:Format
06:Command Status
07:Drive Status
その他のコマンドは、あまり実装の意味がないので、今回は見送りです。
2D/2DD のFDDを実装する時には、他のコマンド(11:Fast Write Disk/12:Fast Transfer Bufferなど)も実装する必要がありそうです。
大きな問題が見つからなければ、週末にリリース出来そうです。
2012年06月15日
2012年06月14日
ディスク関連(9)
μPD765A のコマンドで絶対必要なコマンドの分が終わりました。
実装したのは、
Read Data / Read Deleted Data
Write Data / Write Deleted Data
Write ID
Recalibrate
Seek
Sense Interrup Status
Sense Device Status
Specify(これはダミーで、実際には何も実行しない)
Invalid
Write ID(1トラックをフォーマットするコマンド)は、いろいろ条件を付ける事にしました。
あらかじめフォーマットしたディスクしか、再フォーマット出来ない仕様にしています(実使用上は問題ないはず)。
残りは、Read ID、Read Diagnostic、Scan系、ですが、多分使用しないコマンドなので実装は見送ろうかと考えています。
これでP66の内蔵ドライブは普通に動くはずです。
試しにユーティリティディスクの format プログラムを実行すると...
あれ?エラーが...フォーマットは出来てるんですけど。
ユーティリティの backup プログラムも実行すると、途中でエラーが出ます(これは途中で止まる)。
タイムアウトとかで引っ掛かってるような感じです。
実装したのは、
Read Data / Read Deleted Data
Write Data / Write Deleted Data
Write ID
Recalibrate
Seek
Sense Interrup Status
Sense Device Status
Specify(これはダミーで、実際には何も実行しない)
Invalid
Write ID(1トラックをフォーマットするコマンド)は、いろいろ条件を付ける事にしました。
あらかじめフォーマットしたディスクしか、再フォーマット出来ない仕様にしています(実使用上は問題ないはず)。
残りは、Read ID、Read Diagnostic、Scan系、ですが、多分使用しないコマンドなので実装は見送ろうかと考えています。
これでP66の内蔵ドライブは普通に動くはずです。
試しにユーティリティディスクの format プログラムを実行すると...
あれ?エラーが...フォーマットは出来てるんですけど。
ユーティリティの backup プログラムも実行すると、途中でエラーが出ます(これは途中で止まる)。
タイムアウトとかで引っ掛かってるような感じです。
2012年05月30日
ディスク関連(7)の2
外付けドライブで気になることが一つ。
実機の外付けドライブを持っていないので、何とも言えないんですが...
データ転送の速度、こんなに遅いんでしょうか?
1セクタ256バイトの転送に、0.5秒くらい掛かっている感じです。
どなたか知っている人がいれば、教えて下さい。
実機の外付けドライブを持っていないので、何とも言えないんですが...
データ転送の速度、こんなに遅いんでしょうか?
1セクタ256バイトの転送に、0.5秒くらい掛かっている感じです。
どなたか知っている人がいれば、教えて下さい。
ディスク関連(7)
外付けドライブのアクセスがやっと出来ました(途中ですが)。
内蔵ドライブで使っているμPD765A+バッファの回路をそのまま使い、その周辺に通信用の8255を2つ置く構成になります。
8255の1つは P6側で、もう一つは外付け側になります。
P6から見て、向こうの8255のさらに向こうにμPD756がつながり、そのμPD765A がフロッピー(=SDカード)をコントロールします。
FPGA版では、SDのコントロールとμPD765Aの一部の機能を、制御用のCPUが行っています。
さらに、外付けFDDの8255の制御も、制御用のCPUが行っています。
CMT の制御も、メニュー表示も、制御用のCPU が行っているため、この制御用のCPUのプログラムが大変な事になっています...
とりあえず、一度やってみたかった4ドライブ構成の実行例です。
PC-6601 で、内蔵FDD×2、外付けFDD×2の構成です。


files 4 が実行されていて、ちゃんと動いているのがわかります。
外付けFDD×4というのも作れば出来るんですが、ちょっと回路が増えそうなのでどうしようかなー、って所です。
内蔵ドライブで使っているμPD765A+バッファの回路をそのまま使い、その周辺に通信用の8255を2つ置く構成になります。
8255の1つは P6側で、もう一つは外付け側になります。
P6から見て、向こうの8255のさらに向こうにμPD756がつながり、そのμPD765A がフロッピー(=SDカード)をコントロールします。
FPGA版では、SDのコントロールとμPD765Aの一部の機能を、制御用のCPUが行っています。
さらに、外付けFDDの8255の制御も、制御用のCPUが行っています。
CMT の制御も、メニュー表示も、制御用のCPU が行っているため、この制御用のCPUのプログラムが大変な事になっています...
とりあえず、一度やってみたかった4ドライブ構成の実行例です。
PC-6601 で、内蔵FDD×2、外付けFDD×2の構成です。
files 4 が実行されていて、ちゃんと動いているのがわかります。
外付けFDD×4というのも作れば出来るんですが、ちょっと回路が増えそうなのでどうしようかなー、って所です。
2012年04月26日
ディスク関連(5)
μPD765 に関して、Read Data/Read Deleted Data を実装しました。
テストがちょっといい加減ですが、とりあえず動いているようです。
BASIC では、Read Data が動けば、ディスクに書き込みしない限り、大抵のソフトが動くようになるはずです。
で、起動させてみました。

FILES でちゃんとファイルが表示されているので、多分問題なさそうです。

コロニーオデッセイも動いています。しゃべりませんが...
他に持っているソフトをいろいろと動かしましたが、大体問題なさそうです。
ただ、2本ほど、動作がおかしいものがありました。
1本はディスクアクセスが遅いもので、実機より遅い雰囲気です。
これは単にこのソフトが顕著に出ているだけのようです。
もう1本は、のりさん作のドルアーガです。起動時の読み込みに失敗している部分があるようで、一部のキャラが表示されません。
これは、ドキュメントには、SR用と書いているので、そのせいかも知れません。
テストがちょっといい加減ですが、とりあえず動いているようです。
BASIC では、Read Data が動けば、ディスクに書き込みしない限り、大抵のソフトが動くようになるはずです。
で、起動させてみました。
FILES でちゃんとファイルが表示されているので、多分問題なさそうです。
コロニーオデッセイも動いています。しゃべりませんが...
他に持っているソフトをいろいろと動かしましたが、大体問題なさそうです。
ただ、2本ほど、動作がおかしいものがありました。
1本はディスクアクセスが遅いもので、実機より遅い雰囲気です。
これは単にこのソフトが顕著に出ているだけのようです。
もう1本は、のりさん作のドルアーガです。起動時の読み込みに失敗している部分があるようで、一部のキャラが表示されません。
これは、ドキュメントには、SR用と書いているので、そのせいかも知れません。
2012年04月23日
ディスク関連(4)
ディスク周りのハードを実装中です。
FDC のμPD765 以外に、DMA用のバッファやI/Oも必要になります。
FDC に関しては、SDカードが関連するディスクのリード、ライト以外のコマンドは実装が完了し、DMA用のバッファやI/Oも実装が完了しました。
また、フロッピーの選択画面やフロッピードライブの使用ドライブ数の選択も実装済みです。
μPD765 に関しては15のコマンドがあり、一応全部実装しようかと思っています。
実装済み
Recalibrate/Seek
Sense Interrupt Status
Sense Device Status
Specify(設定された値はダミー)
Invalid
実装中
Read Data/Read Deleted Data
Write Data/Write Deleted Data
Read ID/Write ID
Read Diagnostic
Scan Equal/Scan Low or Equal/Scna High or Equal
BASIC で使っているコマンドは、この内の数個なんですが、一応全部実装しようかと考えています。
ここまで実装出来ると、P66 のBASIC-ROM が立ち上がるはずなので試してみました。
ドライブ数を0にすると普通に立ち上がります(Recalibrate でエラーを返すとドライブ数0と判断する)。
ドライブ数を1にした場合、ファイルを選択しないと(フロッピーを入れないと)ずっと起動しません。
これは、Read Data のコマンドを投げて、値が返っているのを待っているためです。
とりあえず、Read Data のダミーを作って試してみましたが、ナゼか起動しない。
...起動しないじゃなくて、起動にすごく時間が掛かっているようでした(5分くらい)。
原因は、ディスクのモータON の時の時間待ちルーチンでした。
0xD4 にディスクのモータの状態を調べるI/Oポートがありますが、これを実装していないため、常にモータOFF の状態だと判断したようです。
そのため、モータOFF と判断→ モータON → 時間待ち を何度も繰り返すため、起動に5分くらい掛かっていたようでした。
0xD4 を常に モータON にするようにしたら、一瞬で起動するようになりました。
FDC のμPD765 以外に、DMA用のバッファやI/Oも必要になります。
FDC に関しては、SDカードが関連するディスクのリード、ライト以外のコマンドは実装が完了し、DMA用のバッファやI/Oも実装が完了しました。
また、フロッピーの選択画面やフロッピードライブの使用ドライブ数の選択も実装済みです。
μPD765 に関しては15のコマンドがあり、一応全部実装しようかと思っています。
実装済み
Recalibrate/Seek
Sense Interrupt Status
Sense Device Status
Specify(設定された値はダミー)
Invalid
実装中
Read Data/Read Deleted Data
Write Data/Write Deleted Data
Read ID/Write ID
Read Diagnostic
Scan Equal/Scan Low or Equal/Scna High or Equal
BASIC で使っているコマンドは、この内の数個なんですが、一応全部実装しようかと考えています。
ここまで実装出来ると、P66 のBASIC-ROM が立ち上がるはずなので試してみました。
ドライブ数を0にすると普通に立ち上がります(Recalibrate でエラーを返すとドライブ数0と判断する)。
ドライブ数を1にした場合、ファイルを選択しないと(フロッピーを入れないと)ずっと起動しません。
これは、Read Data のコマンドを投げて、値が返っているのを待っているためです。
とりあえず、Read Data のダミーを作って試してみましたが、ナゼか起動しない。
...起動しないじゃなくて、起動にすごく時間が掛かっているようでした(5分くらい)。
原因は、ディスクのモータON の時の時間待ちルーチンでした。
0xD4 にディスクのモータの状態を調べるI/Oポートがありますが、これを実装していないため、常にモータOFF の状態だと判断したようです。
そのため、モータOFF と判断→ モータON → 時間待ち を何度も繰り返すため、起動に5分くらい掛かっていたようでした。
0xD4 を常に モータON にするようにしたら、一瞬で起動するようになりました。

