2012.7.29
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第184回]


●ND80ZVをご紹介いただきました

今年3月にND80ZV組立キットをご購入いただいたお客様からメールをいただきました。
「デジタル時計プログラムを作ってみました」とのことで、ホームページのリンクがついておりましたので、さっそく訪問させていただきました。

実はこのお客様のホームページは今年3月に[第51回]でご紹介させていただいたのですが、今回訪問させていただきましたら、その後ND80ZVにもいろいろ手を加えてみえて、なかなかに格好いいボードになっておりました。

ホームページには、ご自身でお作りになったデジタル時計プログラムのソースプログラムリストも公開されています。
また実際にプログラムを実行しているところを動画で紹介されていて、YouTubeにもUPされています。

「TK−80のサンプル動画を参考にして良く似たものを作ってみました」ということで、そのプログラムリストと、実行しているところの動画も公開されています。

うーん。
確かに動画で見るとよくわかりますね。

今年3月に[第51回]でご紹介させていただいたときとはホームページのURLが変わっているようです。
今回ご案内いただきましたのは、こちらのホームページです。

SINTA様。有難うございました。
今後ともよろしくお願いいたします。

●RT(リターン)プログラム

前回も書きましたが、このところ多忙でなかなか落ち着いて書くための時間が取れません。
3日ぶりの更新になってしまいました。

前々回、前回とブレークポイントの設定プログラムと、ブレークしてから後の処理プログラムについて説明をしました。

ユーザープログラムにブレークポイントを設定して、その設定したアドレスでブレークすると、そのアドレスでユーザープログラムが中断した状態になります。
プログラムをブレークして、そこでレジスタ内容を確認して、それで処理を打ち切ってしまって、そのままプログラムを終わってしまう、ということもあります。
このとき、ユーザープログラムは中断されたままになりますが、そこでそのまま何もしないでおいても構いません。
Windowsのように、メモリ資源を余分に消費するというようなことはありません。

しかし、ブレークしたところから(さらに次のブレークポイントを設定して)、実行を再開するのが一般的だと思います。

ブレークしたところから、ユーザープログラムの実行を再開するマシン語コマンドはRT(リターン)です。
RT[Enter]
と入力すると、その直前にブレークしたときに保存したCPUレジスタの値をもとの通りにレジスタに戻して、ブレークしたアドレスに戻って、そこからプログラムの実行を再開します。

下はND80ZVのモニタROMに書き込まれているZB3BASICのRTプログラム部分です。

              ;;;RETURN
1B9E F3       RT:DI
1B9F 2100ED   LD HL,STCWK
1BA2 1100F5   LD DE,STC
1BA5 010003   LD BC,$0300
1BA8 EDB0     LDIR
1BAA 3A83F0   LD A,(BRKCK)
1BAD B7       OR A
1BAE CABA1B   JP Z,RT2
1BB1 FE80     CP 80
1BB3 CABA1B   JP Z,RT2
1BB6 F680     OR 80
1BB8 D301     OUT (01),A
1BBA 3184F0   RT2:LD SP,HLBF2   
1BBD E1       POP HL
1BBE D1       POP DE
1BBF C1       POP BC
1BC0 D9       EXX
1BC1 F1       POP AF
1BC2 08       EX AF,AF'
1BC3 E1       POP HL
1BC4 D1       POP DE
1BC5 C1       POP BC
1BC6 F1       POP AF
1BC7 FDE1     POP IY
1BC9 DDE1     POP IX
1BCB ED7B99F0 LD SP,(SPBF)
1BCF F5       PUSH AF
1BD0 3AE6FE   LD A,(EIMK)
1BD3 B7       OR A
1BD4 CAD81B   JP Z,RET22
1BD7 FB       EI
1BD8 F1       RET22:POP AF
1BD9 228CF0   LD (HLBF1),HL   
1BDC 2A9BF0   LD HL,(PCL)   
1BDF E5       PUSH HL
1BE0 2A8CF0   LD HL,(HLBF1)   
1BE3 C9       RET
              ;;;

またちょっと時間がなくなってしまいました。
ここで何をやっているかという説明は、次回にすることにいたします。
もっとも、ここでしていることは、前回説明しましたブレーク時の処理の逆の作業をしているだけですから、前回をお読みいただければ、何をやっているかはご理解いただけることと思います。

ワンボードマイコンでCP/Mを![第184回]
2012.7.29upload

前へ
次へ
ホームページトップへ戻る