標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第529回]
●USB(HID)応用 リモートプログラム(4)
今回もリモートプログラムの説明です。
前回までのところで、ND80Zモニタの機能によって、プログラムをステップ動作させたときに、レジスタダンプがUSB経由でホスト(DOS/Vパソコン)のDOS窓に表示されることなどを説明いたしました。
C を入力すると、リモートで[CONT]キーを入力したことになって、入力するたびに1命令ずつステップ実行され、そのときのレジスタの値がDOS窓に表示されます。
なお、現在のリモートプログラムでは[C]キーを入力すると[CONT]キー入力として動作するように作ってあるのですが、それではちょっとまずいことに気が付きました。
前回の表示例のようにレジスタダンプの直後に[C]キーを入力するのは構わないのですが、[ADRSSET]を操作して、どこかのアドレスを参照して、そこにCXというデータを書こうとしても、データの[C]ではなくて、[CONT]の意味になってしまいます。
これについては、なんとか対策を考えてみます。
お話をもとに戻します。
そのようにして(今のところは)[C]を入力するたびに、1ステップずつ実行させることができるのですが、もう少し効率よく連続してステップ動作をさせてみたいというときもあると思います。
そのような目的のために、ND80Zモニタにはトレースの機能が用意されています。
この機能ももともとはプリンタに連続してレジスタダンプを行うというものなのですが、これについても、USB経由でDOS窓に結果を表示させられるようにしました。
トレースを有効にするためには、ディップスイッチのAUTO/STEP切り換えスイッチをステップ側にしておいたうえで、/Tと入力します。
/Tまたは/tと入力すると、トレースが有効になって、トレース設定レジスタアドレスのFFD1が表示され、trace onと表示されます。
このようにしたあとで、r(またはR) または c(またはC) を入力すると、普通は1ステップだけ実行されるところが、一度に連続して16ステップ実行されます。
さらに続いてトレースしたい場合には、同じように/tを入力したあとで cまたはC を入力します。
するとまたその次の16ステップが連続して実行されます。
さてさて、今回作成したリモートプログラムにはもっとすごい機能があるのです。
その機能とは何でしょうか?
上の画面をよーくご覧いただきますと、おおおっ、ひょっとして、これは?
とお気づきいただけるのではないか、と期待しております。
実は、[第526回]でリモートプログラムの最初のエントリ部分をお見せしましたときに、エントリした最初の行がスクロールして消えてしまっていました。
その消えてしまった行には、
logfile nd80zlog\06162115.txt open
という表示があったのです。
●LOGファイル
リモートであれこれ操作して、今まで説明しましたようなステップ動作やトレース動作などをさせて、レジスタダンプをさせることができれば、そりゃあ便利ですけれど、これが結果を紙にプリントアウトできるならば、あとからじっくり検討したり、デバッグすることもできます。
しかし、画面に表示されるだけで、どんどんスクロールして消えてしまう、というのは。
いやあ、それは、ちょっと、といいますか、非常に困る。おおいに困ります。
そういうことならば、これはもうなんとかするしかない、です。
で、作ってしまいました。
そんなわけで、実はこのリモートプログラムには起動したときから終了したときまでを忠実に記録するログ機能が働いているのです。
ログファイルはリモートプログラムが置かれているフォルダ内に作られたnd80zlogフォルダ(存在しないときは自動的に新たに作成されます)に、そのリモートプログラムが起動されたときの、月日時分を名前とするtxtファイルとしてopenされます。
ですから1年経つと日付が重なってしまいます。
てきとうなところでフォルダ内を整理するか、ログフォルダを適当な名前で保存してしまうとよいでしょう。
1年以内なら同じ名前のログファイルは作られることはありません。
もっとも1分以内に2回以上リモートプログラムを起動−終了すれば話は別なのですけれど。
まあ、そんな場合のログファイルには見るべき価値はないのではありませんでしょうか?
下にお見せしますのは、今回の説明のために行いましたリモートプログラムの操作を記録したログファイルです。
各説明のところでお見せしましたDOS窓の表示内容と比べてみてください。
logfile nd80zlog\06162115.txt open ND80ZVに接続しました send[read+] 0001 0000 - 8000[ADRSSET] 8000 003E - [RD+] 8001 3E03 - [RD+] 8002 0332 - [RD+] 8003 32FF - [RD+] 8004 FFEF - [RD-] 8003 EFFF - [RD-] 8002 FF32 - /l music2.btk [LOAD] music2.btk send data 229(=e5) bytes 8000 80E0 - /l neko3.btk [LOAD] neko3.btk send data 501(=1f5) bytes 8100 82F0 - r [RUN] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0000 0000 0000 0000 F800 8101 0000 0000 0000 0000 0000 0000 FF35 00000000 00 8000[ADRSSET] 8000 003E - r [RUN] 8000 003E - 8030/d[MEMORY DUMP] 8000 3E 03 32 FF EF 21 00 81 3A FD EF 4F 7E FE FF CA >.2..!..:..O~..ハ 8010 0F 08 B7 CA 6A 80 FE 1E D2 83 80 F5 B9 CC 88 80 ..キハj...メ...ケフ.. 8020 23 46 23 F1 E5 21 A5 80 87 5F 16 00 19 56 23 5E #F#..!・.._...V#^ 8030 3A FF EF 6F 60 7B 32 FE EF 4A 3E FF D3 98 E5 E5 :..o`{2..J>.モ... 8000[ADRSSET] 8000 003E - 8020/a[DIS ASM] 8000 3E03 LD A,03 8002 32FFEF LD ($EFFF),A 8005 210081 LD HL,$8100 8008 3AFDEF LD A,($EFFD) 800B 4F LD C,A 800C 7E LD A,(HL) 800D FEFF CP FF 800F CA0F08 JP Z,$080F 8012 B7 OR A 8013 CA6A80 JP Z,$806A 8016 FE1E CP 1E 8018 D28380 JP NC,$8083 801B F5 PUSH AF 801C B9 CP C 801D CC8880 CALL Z,$8088 8020 23 INC HL 8A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 7F50 05E9 FF00 FFF8 FFB7 0D7D 0000 0000 0583 0000 0000 0000 FF01 01010000 00 8000[ADRSSET] 8000 003E - r [RUN] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0350 05E9 FF00 FFF8 FFB7 8002 0000 0000 0583 0000 0000 0000 FF69 01010000 00 c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0350 05E9 FF00 FFF8 FFB7 8005 0000 0000 0583 0000 0000 0000 FF42 01010000 00 c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0350 05E9 FF00 8100 FFB7 8008 0000 0000 0583 0000 0000 0000 FF41 01010000 00 c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC EA50 05E9 FF00 8100 FFB7 800B 0000 0000 0583 0000 0000 0000 FF10 01010000 00 c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC EA50 05EA FF00 8100 FFB7 800C 0000 0000 0583 0000 0000 0000 FF54 01010000 00 /r *** REGISTER mode entry *** [ AF ] FFEA EA50 - [RD+] [ BC ] FFE8 05EA - [RD+] [ DE ] FFE6 FF00 - [RD+] [ HL ] FFE4 8100 - [RD+] [ SP ] FFE2 FFB7 - [RD+] [ PC ] FFE0 800C - 8016[WR+] [ IX ] FFDE 0000 - [RD-] [ PC ] FFE0 8016 - /a[ AF ] FFEA EA50 - 0000[WR+] [ BC ] FFE8 05EA - [RD-] [ AF ] FFEA 0000 - /0 *** REGISTER mode end *** FFEA 0000 - c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 009B 05EA FF00 8100 FFB7 8018 0000 0000 0583 0000 0000 0000 FF54 10011011 00 c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 009B 05EA FF00 8100 FFB7 801B 0000 0000 0583 0000 0000 0000 FF4F 10011011 00 /t[TRACE SET] FFD1 9B10 - trace on c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 009B 05EA FF00 8100 FFB5 801C 0000 0000 0583 0000 0000 0000 FF20 10011011 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 003B 05EA FF00 8100 FFB5 801D 0000 0000 0583 0000 0000 0000 FF4B 00111011 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 003B 05EA FF00 8100 FFB5 8020 0000 0000 0583 0000 0000 0000 FF78 00111011 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 003B 05EA FF00 8101 FFB5 8021 0000 0000 0583 0000 0000 0000 FF4F 00111011 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 003B 02EA FF00 8101 FFB5 8022 0000 0000 0583 0000 0000 0000 FF4E 00111011 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 003B 02EA FF00 8102 FFB5 8023 0000 0000 0583 0000 0000 0000 FF17 00111011 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0BCD 02EA FF00 8102 FFB7 8024 0000 0000 0583 0000 0000 0000 FF5F 11001101 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0BCD 02EA FF00 8102 FFB5 8025 0000 0000 0583 0000 0000 0000 FF3D 11001101 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0BCD 02EA FF00 80A5 FFB5 8028 0000 0000 0583 0000 0000 0000 FF50 11001101 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1610 02EA FF00 80A5 FFB5 8029 0000 0000 0583 0000 0000 0000 FF1C 00010000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1610 02EA FF16 80A5 FFB5 802A 0000 0000 0583 0000 0000 0000 FF0A 00010000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1610 02EA 0016 80A5 FFB5 802C 0000 0000 0583 0000 0000 0000 FF42 00010000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1600 02EA 0016 80BB FFB5 802D 0000 0000 0583 0000 0000 0000 FF6F 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1600 02EA 4716 80BB FFB5 802E 0000 0000 0583 0000 0000 0000 FF47 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1600 02EA 4716 80BC FFB5 802F 0000 0000 0583 0000 0000 0000 FF4E 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1600 02EA 471C 80BC FFB5 8030 0000 0000 0583 0000 0000 0000 FF11 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0300 02EA 471C 80BC FFB5 8033 0000 0000 0583 0000 0000 0000 FF2C 00000000 00 /t[TRACE SET] FFD1 0010 - trace on c [CONT] A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0300 02EA 471C 8003 FFB5 8034 0000 0000 0583 0000 0000 0000 FF7E 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 0300 02EA 471C 0203 FFB5 8035 0000 0000 0583 0000 0000 0000 FF76 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1C00 02EA 471C 0203 FFB5 8036 0000 0000 0583 0000 0000 0000 FF41 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1C00 02EA 471C 0203 FFB5 8039 0000 0000 0583 0000 0000 0000 FF0E 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC 1C00 0247 471C 0203 FFB5 803A 0000 0000 0583 0000 0000 0000 FF47 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF00 0247 471C 0203 FFB5 803C 0000 0000 0583 0000 0000 0000 FF44 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF00 0247 471C 0203 FFB5 803E 0000 0000 0583 0000 0000 0000 FF21 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF00 0247 471C 0203 FFB3 803F 0000 0000 0583 0000 0000 0000 FF74 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF00 0247 471C 0203 FFB1 8040 0000 0000 0583 0000 0000 0000 FF27 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF00 0247 471C FFD1 FFB3 8041 0000 0000 0583 0000 0000 0000 FF03 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF00 0247 471C 0003 FFB5 8042 0000 0000 0583 0000 0000 0000 FF11 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF00 0247 471C 0003 FFB5 8043 0000 0000 0583 0000 0000 0000 FF20 00000000 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF02 0246 471C 0003 FFB5 8044 0000 0000 0583 0000 0000 0000 FF6E 00000010 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF02 0246 471C 0003 FFB5 803E 0000 0000 0583 0000 0000 0000 FF55 00000010 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF02 0246 471C 0003 FFB3 803F 0000 0000 0583 0000 0000 0000 FF3A 00000010 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF02 0246 471C 0003 FFB1 8040 0000 0000 0583 0000 0000 0000 FF02 00000010 00 A F B C D E H L SP PC IX IY A'F' B'C' D'E' H'L' I R SZ H PNC BRC FF02 0246 471C FFD1 FFB3 8041 0000 0000 0583 0000 0000 0000 FF64 00000010 00 ndremote.exeを終了しました logfile closed at Wed Jun 16 21:15:30 2010