復活!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 ;;; |