現在地

FDCボード (テスト編 その4)


テーマ:

カテゴリー:

前回「つづく」とか書いておきながら気づくと一月以上経ってしまいました。

その間、電卓やらROMエミュレータとそれを使ってZ8モニタやらと寄り道をしていたわけですが、このFDCボードについても少しずつですが進めていました。

  1. クロック切り替え
    前回最後にちょっと書いたFDCクロック、とりあえずジャンパで切り替え可能にしました。ソフトウェア切り替えにするにはセレクタが必要ですが、基板上にロジックICはあと一つしか載せられないので躊躇しています。簡単なのは74LS157ですが必要なのは1/4で、切り替えピン共通なので残り3/4は無駄になってしまいます。
  2. DEND
    DMAを使わない限りいらないと思っていましたが、これがないとREAD DATAコマンドが常にエラー終了となってしまいます。ステータスをチェックして無視すれば済むといえば済むのですが、線一本なので接続しました。
  3. CIコマンド
    CI(READ IDを実行する)コマンドにヘッド指定のパラメータを追加しました。
  4. CRコマンド
    CR(READ DATAを実行する)コマンドにセクタ番号指定のパラメータを追加しました。また実行後に読んだセクタ内容を自動的にIntel HEX形式で出力するようにしました。

この中でも大きいのは3,4で、これで普通のフォーマットなら任意のセクタが読めるようになります。
セクタ読んでみる
CSコマンドでヘッドをトラック30に移動したあとの部分からです。

まずは「Ci 1」でヘッド1(裏面)に対してREAD IDを実行します。「07 00 00」はドライブ3,ヘッド1に対して正常終了したことを示します。続く「1E 01 04 02」は最初に見つけたセクタのIDで、μPD765風に書くとC,H,R,N=1EH,01H,04H,02Hということです。1EHは30でトラックと一致し、次の01Hもヘッド1とあっています。R=04HはどのセクタのIDが読まれるかは時の運です。

次に「cr 1」でセクタ1をREAD DATAするわけですが、C,H,Nについては最後のCIコマンドで読まれた値が使われます。

単に複数のパラメータをパースするのが面倒だっただけですが、通常のフォーマットであればこれで十分です。
どうしてもということであればワークエリアをSコマンドで書き換えるつもり。

リザルトステータスではCが+1されていますが、これはDENDで正常終了させた時の仕様です。当初DENDを接続していなかったのでESN=Rとして止めていたのですが、トラックの最後のセクタということで自動的に次を指すようにインクリメントされます。ここではR=01Hだったのでわかりませんが、Rも自動的に01Hに戻ります。
その後セクタ内容をIntel HEX形式でダンプして終了です。

あとはディスク全体のダンプができれば当初の目的を達成できます。

  1. このボードのソフトウェアを変更して、ループしながら全セクタをダンプする機能を追加する。
  2. ボードのソフトウェアはこのままで、PC上でループしながら各セクタのダンプ命令を出すツールを作成する。
  3. PC上でループさせるのは上と一緒だが、テキスト形式ではなくバイナリ形式のコマンドを追加する。

最初は最後の3.を予定していたのですが、1.も良いかなと思い始めています。

参考文献・関連図書: 
HD63265ユーザーズマニュアル, Hitachi.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。