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周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。