MZ-700 1Z-009A ROMモニタコマンド ================================ MZ-700 OWNER'S MANUAL から引用。200Pから記述がある。 第6章 モニタコマンドとサブルーチンの使い方 ------------------------------------------ 注 : この章は、モニタ(ROM)の解説であり、 S-BASIC、Hu-BASICのモニタ内容(150ページ)とは異なっていますので、注意が必要です。 ### 6.1 モニタコマンド 電源スイッチONによってモニタプログラムがスタートし、モニタコマンド待ちの状態となります。 モニタコマンドには次のものがあります。 なお [CR] は、キャリッジリターンキーを押すことを意味しています。 * Lコマンド : カセットテープファイルをロードする。(Load) * Pコマンド : プリンタへ任意の文字を印字する。(Printer) * Mコマンド : メモリの内容を書き替える。(Memory correction) * Jコマンド : 任意のアドレスにコントロールを移す。プログラムの実行。(Jump) * Sコマンド : メモリブロックの内容をカセットテープファイルにセーブする。(Save) * Vコマンド : メモリブロックの内容とカセットテープファイルの内容を比較する。(Verify) * #コマンド : RAM領域へ実行を移す。 * Bコマンド : 1キー入力ごとにベル音を鳴らす。ベル音を止めたい時には、もう1度Bを入力する。(Bell) #### モニタワークエリアの構成 * $0000 : モニタ * $1000 : スタックエリア * $10F0 : カセットテープヘッダエリア * $1170 : 変数エリア * $11A3 : モニタ用キー入力エリア * $1200 : フリーエリア ### 6.2 モニタコマンドの機能と使い方 この項では、8個のモニタコマンドについて、それぞれの機能と使い方の解説を行います。 コマンド、あるいはデータのキー入力は、所定の欄に正しく行い、 [CR]キーを押すことによって実行されます。 スペースなどの不必要なデータをまじえたキー入力をすると モニタコマンドはそのデータを受け付けません。 コマンドを修飾するデータ入力、あるいはデータ表示は、全て16進数表示で行われます。 したがって、1バイトデータは16進2桁、1つのアドレスデータは16進4桁で扱われます。 例えば表示データが "15" であったとすれば、16進数$15(10進数の21)を表しており、 キー入力を行う場合、例えば10進数の10をデータとして入力する場合は、 所定の位置に "0A" ときちんと桁数を合わせてキー入力しなければなりません。 (上位桁の "0" を省略することはできません) ファイル名の指定などで、モニタが受け付ける以上の文字数を入力した場合、 その数を越す文字列は無効となります。 各コマンドのアクセス範囲には、プロテクションが一切ありません。 したがって、モニタプログラム自身の変更などの操作が自由に行えることになりますが、 逆に、システムコントロールを行うプログラムを壊してしまい、 CPUの暴走を引き起こすことも充分あり得ることになり、 そのような操作を行う場合は細心な配慮を払う必要があります。 #### 6.2.1 Lコマンド ##### 書式 L ##### 機能 セットされたカセットテープの先頭の機械語プログラムのローディングを行います。 例えば、S-BASIC という機械語のプログラムをローディングするときには、 *L[CR] とキー入力しますと、画面に ↓ PLAY の表示が出るので、「PLAY」ボタンを押すとファイルを読みます。 S-BASICがみつかると、次のように表示されます。 LOADING S-BASIC #### 6.2.2 Pコマンド (P : Printer) ##### 機能 プロッタプリンタへ印字させる命令で、次のような命令があります。 *PABC[CR] ABCという文字を印字します。 *P&T[CR] テストパターンを印字します。 *P&S[CR] 文字桁数を、80文字/行に変更します。 *P&L[CR] 文字桁数を、40文字/行に変更します。 *P&G[CR] GRAPHモードへ変更します。 *P&C[CR] PENを、次の色位置のペンに色替えします。 #### 6.2.3 Mコマンド (M : Memory Correction) ##### 書式 Mhhhh * hhhh : 先頭アドレス ##### 機能 指定するアドレスから順々に1バイトずつメモリコレクション(データ書き換え)を行います。 メモリブロック $C000 ~ $C003 の内容を全部 $FF とし、$C010 ~ $C013 の内容を全て $88 とした例。 *MC000[CR] C000 00 FF[CR] C001 00 FF[CR] C002 00 FF[CR] C003 00 FF[CR] C004 00 [SHIFT + BREAK] *MC010[CR] C010 00 88[CR] C011 00 88[CR] C012 00 88[CR] C013 00 88[CR] C014 00 [SHIT + BREAK] * Mコマンドをキャンセルしてモニタコマンドへ戻るには、[SHIFT + BREAK]キーを入力します。 #### 6.2.4 Jコマンド (J : Jump) ##### 書式 Jhhhh * hhhh : ジャンプするアドレス ##### 機能 指定するアドレスへコントロールを映します。正確にいうと、指定するアドレスをCPUのプログラムカウンタに与えることになります。 *J1200[CR] ... $1200番地へジャンプします。 #### 6.2.5 Sコマンド (S : Save) ##### 書式 Sxxxxyyyyzzzz * xxxx : 開始アドレス * yyyy : 最終アドレス * zzzz : 実行アドレス ##### 機能 指定するメモリブロックの内容を、ファイル名を付けてカセットテープ上に記録します。 ファイル名 "MFILE" の機械語プログラムが $6000~$60A3 までにあり、実行アドレスが $6050 のときに、このプログラムをカセットテープにセーブするには、次のように入力します。 *S600060A36050[CR] FILENAME? MFILE[CR] ↓ RECORD.PLAY ここでデータレコーダに新しいカセットテープがあることを確認し、「RECORD」ボタンを押します。 カセットテープのライトプロテクト(誤録音禁止)の爪が折ってある場合は、「RECORD」ボタンが押せないので、新しいカセットテープに変えてください。 SAVEするプログラムは、機械語プログラムにかぎります。 WRITING MFILE OK! 注 : 書き込みを途中でやめたいときは、「SHIFT + BREAK」キーを押しつづけてください。コマンド待ちとなります。 #### 6.2.6 Vコマンド (V : Verify) ##### 書式 V ##### 機能 カセットテープにセーブされたデータが、そのもとのメモリブロック上のデータと同じであるかどうか調べます。 Sコマンドの項で "MFILE" をカセットテープ上へ作成しましたが、このファイルとメモリブロックをベリファイ(比較)する目的で使います。 *V[CR] ↓ PLAY OK ファイル名をキー入力すると、↓ PLAY と画面に表示し、ベリファイするカセットテープを読み込ませます。 ベリファイ終了後、カセットファイルデータとメモリブロックのデータが同じであれば "OK" と表示され、異なれば "CHECK SUM ERROR" が表示されます。 Sコマンドを実行したら、つづけてこのVコマンドを実行しておくように心がけることをおすすめします。 #### 6.2.7 #コマンド ##### 書式 # ##### 機能 RESETスイッチを押したのち、 *#[CR] と#コマンドを入力すると、CTRLキーを押しながらRESETスイッチを押した状態と同じになります。 #### 6.2.8 Bコマンド (B : Bell) ##### 書式 B ##### 機能 *B[CR] とBコマンドを入力すると、キーを押すごとにベル音を鳴らします。 ベル音を止めたいときはもう1度Bコマンドを入力します。