趣味工房 HIRO-G



< CPM2.2_ST ROMの準備モニタープログラム >


 
 「FORMAT_ST ROM」の次は、メインの「CPM2.2_ST ROM」の詳細説明に入りますが、このROMの作成には、モニターとして以前、「CP/M 15」で報告しました「CP/M手作りマイコン2」のP48〜61に記載されている「リード/ライト テストプログラム」を使っていますので、先ずは、このプログラムの捕捉から説明します。 
 このプログラムは、「CP/M 15」で説明しました様に、元々は標準8インチ2D用のリード/ライト・テストプログラムですが、2DD用に変換して使っています。 変換後のダンプリストは次の通りです。
無断転記、転用は「CP/M手作りマイコン」著者の著作権に抵触しますのでご注意願います。

ダンプリスト:  FD_RW_TEST.docx

 ダンプリスト内の朱文字が変換した部分で、「CP/M 15」の説明と重複しますが、変換の主なポイントは次の通りです。 
@ リード/ライトのコマンドの構成。
  ・リード 2D: 06H  2DD: 46H
  ・ライト 2D: 05H  2DD: 45H
A 入出力のアドレス
  ・2D: 1EH、1FH   2DD: 2EH、2FH
B ステータス・レジスタへの書き込みコマンド
  ・2D: 3FH  2DD: 7FH
C 1セクタ
  ・2D: 80H  2DD: 00H
D 2000文字対応のCRTCパラメータ(HEX)
7E、50、61、38、20、03、19、1C、00、07、65、08、00、00

 今回、このプログラムで一連のテストをしました結果は、次の通りです。
 写真1は、「FORMAT_ST ROM」でテスト用のFD(2DD)をフォーマットする状況の写真で、写真2はフォーマットしたFDを使って「リード/ライト・テストプログラム」のテストを実施中の写真です。 
 写真3は「リード/ライト・テストプログラム」が立ち上がったスタート画面です。 このプログラムは、 R、W、D、X、T、Gの6つのコマンドを持っており、その機能は次の通りです。
 R: 任意の1セクタ分のデータを任意のアドレスへ読込む。
 W: 任意のアドレスから任意の1セクタにデータを書込む。
 D: 任意のアドレスの内容の表示と書換え。
 X: Dコマンド時に、表示アドレスを1番地分戻す。
 T: Dコマンド時に、スタートに戻る。
 G: 任意のアドレスからのプログラムの実行。

 写真4はリード/ライト・テストの実施例で、先ずROMの0000番地(リード/ライト・テストプログラム自体)から1セクタ分256バイトのデータを、0トラック、1セクタへ書込み、そのデータをRAM上の8000H番から1セクタ分を読込んだ結果の表示です。 各作業が正常に終了すると R/W END と表示されます。
 写真5は、Dコマンドで8000H番からの読み込んだ内容について8バイト分を表示させ、Tコマンドでスタートへ戻った結果の表示画面です。
 同様に写真6は、Dコマンドで表示後、Xコマンドで番地を戻り、Tコマンドでスタートへ戻った例で、写真7は、Gコマンドで0000番地から実行させる直前の画面で、実行後は当然スタートに戻る事になります。

 「リード/ライト テストプログラム」を応用すれば、Dコマンドで作成したマシン語のプログラムをFDへ保存し、保存したプログラムをメモリへロードして実行することができますので、いろいろためしてください。

 次回から「CPM2.2_ST ROMの」説明に入りたいと思いますが、なにしろ1年以上前の作業内容ですので、記憶を辿りながらまとめ作業を行っています。 で、スムースに作業が進みませんが悪しからずです。
 





写真1 テスト用FDのフォーマット




写真2 リード/ライト・テストプログラムのテスト状況





CP/M No40


CPM2.2_ST ROMの準備モニタープログラム 
2017年7月30日


写真3 スタート画面




写真4 リード/ライト・テストの実施例




写真5 D、Tコマンド実施例




写真6 Xコマンド実施例




写真7 Gコマンド実行直前画面