2012年06月15日

ディスク関連(10)

 ユーティリティの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など)も実装する必要がありそうです。


 大きな問題が見つからなければ、週末にリリース出来そうです。



posted by えすび at 23:22| Comment(0) | FPGA化:FDC周り | このブログの読者になる | 更新情報をチェックする

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 プログラムも実行すると、途中でエラーが出ます(これは途中で止まる)。


 タイムアウトとかで引っ掛かってるような感じです。


posted by えすび at 19:46| Comment(2) | FPGA化:FDC周り | このブログの読者になる | 更新情報をチェックする

2012年05月30日

ディスク関連(7)の2

 外付けドライブで気になることが一つ。

 実機の外付けドライブを持っていないので、何とも言えないんですが...


 データ転送の速度、こんなに遅いんでしょうか?

 1セクタ256バイトの転送に、0.5秒くらい掛かっている感じです。


 どなたか知っている人がいれば、教えて下さい。


posted by えすび at 19:27| Comment(0) | FPGA化:FDC周り | このブログの読者になる | 更新情報をチェックする

ディスク関連(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実行(1)

files実行(2)



 files 4 が実行されていて、ちゃんと動いているのがわかります。

 外付けFDD×4というのも作れば出来るんですが、ちょっと回路が増えそうなのでどうしようかなー、って所です。









posted by えすび at 19:23| Comment(0) | FPGA化:FDC周り | このブログの読者になる | 更新情報をチェックする

2012年04月26日

ディスク関連(5)

  μPD765 に関して、Read Data/Read Deleted Data を実装しました。

  テストがちょっといい加減ですが、とりあえず動いているようです。

  BASIC では、Read Data が動けば、ディスクに書き込みしない限り、大抵のソフトが動くようになるはずです。


  で、起動させてみました。



P66起動画面

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


コロニーオデッセイ起動画面

  コロニーオデッセイも動いています。しゃべりませんが...



  他に持っているソフトをいろいろと動かしましたが、大体問題なさそうです。

  ただ、2本ほど、動作がおかしいものがありました。

  1本はディスクアクセスが遅いもので、実機より遅い雰囲気です。
  これは単にこのソフトが顕著に出ているだけのようです。

  もう1本は、のりさん作のドルアーガです。起動時の読み込みに失敗している部分があるようで、一部のキャラが表示されません。
  これは、ドキュメントには、SR用と書いているので、そのせいかも知れません。



posted by えすび at 18:59| Comment(11) | FPGA化:FDC周り | このブログの読者になる | 更新情報をチェックする

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 にするようにしたら、一瞬で起動するようになりました。










posted by えすび at 20:07| Comment(0) | FPGA化:FDC周り | このブログの読者になる | 更新情報をチェックする