復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第39回]
●ファンクションコールを試す(1)
まだ仮システムですけれど、せっかくCP/Mが動き出したからには、さっそく何か試してみたくなります。
CP/Mにはファンクションコール(システムコールとも言います)という機能があります。
Cレジスタにコールbセットして、システムをコールする(アドレス0005Hをコールする)ことで、さまざまな処理を行なうことができます。
すでに何回か説明をしていますが、本来は0005Hをコールするのですが、まだメモリ増設基板を接続していない状態でのテストですから、0005Hの代わりに8005Hをコールします。
どのような種類のものがあるかについては、少しずつ整理しながら説明をしていくつもりですが、とりあえず、まずは手始めにファンクションコール 1 とファンクションコール 2 を使ってみることにします。
ファンクションコール 1 は、コンソール入力です。
コンソールというのはキーボードとディスプレイを備えた端末装置ですが、ND80ZVにインストールするCP/Mシステムでは、コンソールはND80ZVとUSB接続したWindowsパソコンのキーボードとDOSプロンプト画面になります。
Cレジスタに01をセットしてシステムをコールすると、キー入力した文字コードがAレジスタに入ってリターンします。
同時に画面にエコー表示が行なわれます。
実際にキー入力されるまでリターンせずに待っています。
ファンクションコール 2 は、コンソール出力です。
Eレジスタに出力したい文字コードをセットして、Cレジスタに02をセットしてシステムをコールすると、画面にその文字が表示されます。
テストプログラムです。
; BDOS function 1 & 2 test ; ORG $8100 FCALL=$8005 ; LOOP:LD E,3F;? LD C,02 CALL FCALL LD C,01 CALL FCALL CP 1A;^z? RET Z PUSH AF LD E,3D;= LD C,02 CALL FCALL POP AF LD D,A CALL HEX1 LD E,A LD A,D RRCA RRCA RRCA RRCA CALL HEX1 PUSH DE LD E,A LD C,02 CALL FCALL POP DE LD C,02 CALL FCALL LD E,0D LD C,02 CALL FCALL LD E,0A LD C,02 CALL FCALL JP LOOP HEX1:AND 0F ADD A,30 CP 3A RET C;0-9 ADD A,07;A-F RET ; |
説明に入ったばかりですが、本日は時間がなくなってしまいました。
いきなりちょっと長いプログラムですが、何をやっているのか、次回までに考えてみてください。
ワンボードマイコンでCP/Mを![第39回]
2012.2.20upload
前へ
次へ
ホームページトップへ戻る