復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第81回]
●ファンクションコール06(E=FE)のデバッグ(2)
前回からの続きです。
ブレーク中にレジスタを書き換えるにはCR(チェンジレジスタ)コマンドを使います。
この操作はちょっとログファイルでは再現がむつかしいので、画面コピーで説明をすることにいたします。
CR[Enter]と入力すると、ブレークしたときと同じようにレジスタダンプが行なわれます。
一見すると全く同じように見えます。
上側がブレーク後のレジスタダンプで、下側がCRコマンドによるレジスタダンプです。
しかし、ブレークしたときのレジスタダンプと違って、CRコマンドによるレジスタダンプの場合には、表示後にプロンプトマーク(>)が表示されません。
カーソルマーク _ だけが表示されています。
CR(チェンジレジスタ)モードの実行中であることを示しています。
[↑][→]キーを使ってカーソルを変更したい値のところまで移動します。
今回はAレジスタの値を書き換えますから、Aレジスタの値20のところまでカーソルを移動します。
そこで数値を入力します。
’a’の文字コード61を入力しました。
書き換えが済んだら、そこで[Enter]を入力します。
下に変更後のレジスタダンプが表示されます。
今度はその下にプロンプトマーク>が表示され、CRモードを終了したことを示しています。
今回はAレジスタを書き換えましたが、他のレジスタも同じようにして変更することが可能です。
また同時に複数のレジスタを変更することもできます。
2つ以上のレジスタの値を変更するときは、1レジスタ毎に[Enter]を入力する必要はありません。
必要な変更を全て行なった後、最後に[Enter]を入力すれば、そのときに表示されているままの値が全て入力されます。
PC(プログラムカウンタ)やSP(スタックポインタ)も変更することができますが、不用意に変更すると、RT[Enter]を入力したときに暴走してしまうこともありますから、十分理解した上ですることが必要です。
さて、これでAレジスタの内容を変更して、文字’a’が入力されたことにしましたから、次のブレークポイントを設定します。
前回はアドレスD297でブレークしました(下にプログラムリストを再掲します)。
; ;CONSOLE STATUS ; D28F 3E07 CONSTJ:LD A,07 D291 CDAB10 CALL SOUT D294 CDAE10 CALL SIN D297 FE20 CP 20H D299 C29ED2 JP NZ,CONSTJ2 D29C AF XOR A D29D C9 RET D29E 3207BB CONSTJ2:LD (CONSTDT),A D2A1 F601 OR 01 D2A3 C9 RET ; |
>bp d299 >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 6122 00FE D1FE C6D4 0044 0000 0000 0000 D299 C73F 0044 F1A1 FF 00100010 |
; ;CONSOLE STATUS ; D28F 3E07 CONSTJ:LD A,07 D291 CDAB10 CALL SOUT D294 CDAE10 CALL SIN D297 FE20 CP 20H D299 C29ED2 JP NZ,CONSTJ2 D29C AF XOR A D29D C9 RET D29E 3207BB CONSTJ2:LD (CONSTDT),A D2A1 F601 OR 01 D2A3 C9 RET ; |
>bp d2a3 >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 6324 00FE D1FE C6D4 0044 0000 0000 0000 D2A3 C73F 0044 F1A1 FF 00100100 >cm bb07 BB07 62- |
>dm c730,c74f C730 10 A6 06 81 11 10 10 A6-06 81 11 FE 00 D4 C6 74 .ヲ.....ヲ.....ヤニt C740 D1 00 00 FE D1 00 00 21-0B C4 5E 23 56 EB E9 0C ム...ム..!.ト^#V... |
>bp d174 >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 6324 00FE D1FE C6D4 0044 0000 0000 0000 D174 C741 0044 F1A1 FF 00100100 >cm d1de D1DE 00- |
>cm d1de D1DE 00- >bp d177 >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0024 00FE D1FE C6D4 0044 0000 0000 0000 D177 C741 0044 F1A1 FF 00100100 > |