趣味工房 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年以上前の作業内容ですので、記憶を辿りながらまとめ作業を行っています。 で、スムースに作業が進みませんが悪しからずです。
5
写真1 テスト用FDのフォーマット
写真2 リード/ライト・テストプログラムのテスト状況
・CPM2.2_ST ROMの準備モニタープログラム |
2017年7月30日 |
写真3 スタート画面
写真4 リード/ライト・テストの実施例
写真5 D、Tコマンド実施例
写真6 Xコマンド実施例
写真7 Gコマンド実行直前画面
|