2015.1.12

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

MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!


[第99回]


●ファンクション01およびファンクション02

やっとCP/Mのテストに入りました。
今回はその手始めにファンクション01とファンクション02のテストを行ないます。
ファンクション01はコンソール入力です。
ファンクション02はコンソール出力です。
ファンクションをナンバー順にしますと最初にファンクション0が来ますが、ファンクション0については説明の都合で次回に説明することにします。
前回の/BATコマンドもそうでしたが、今回も含めて次回以降にも行なう予定のCP/MファンクションのテストはND80Z3.5(ND80ZV)用のZB3DOS(CP/M互換DOS)で全てテストを行なっています。
そのテストの詳細については「ワンボードマイコンでCP/Mを!」の各記事の中で説明をしています。
今回以降のテストも以前の記事を参照しつつ、同じ要領で進めていきます。

ファンクション01とファンクション02は「ワンボードマイコンでCP/Mを!」[第197回]でテストプログラムVFTST1を使ってテストを行ないました。
今回もそのときと同じように、VFTST1を使ってMYCPU80でテストをしてみます。

●テストプログラムVFTST1

VFTST1のプログラムリストです。

; BDOS function 1 & 2 test for ZBDOS
;12/6/12
;
     ORG $0100
     FCALL=$0005
;
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     
;


プログラムの説明はVFTST1のもとになったプログラムについて「ワンボードマイコンでCP/Mを!」[第40回]で説明していますので、そちらを参照願います。

下はVFTST1を実行中の画面です。



VFTST1を実行すると ? が表示されて入力待ちになります。
画面に普通に表示できる文字(半角英数)を入力するとその文字がエコー表示されたあと、=に続いてその文字コード(ASCIIコード)が16進数で表示されます。

ファンクション01では表示文字以外に[BackSpace][Enter][Tab]も入力できます。
そこで上の入力に続いて[BackSpace]、[Enter]、[Tab]を入力してみました。



[BackSpace]の文字コードは08です。
入力後にカーソルが1文字前に戻されたため ? が = で上書きされました。
[Enter]の文字コードは0Dです。
カーソルが行の先頭に戻ります(ファンクション01では改行は行なわれません)。
今回のテストでは[BackSpace]と[Enter]が同じ結果になりましたが、[BackSpace]は一文字戻る、[Enter]は行の先頭に戻る、という違いがあります。
[Tab]の文字コードは09です。

[Ctrl]+アルファベットキーで文字コード01〜を直接入力することができます。
そこで[Tab]のあと、[Ctrl]+[A]〜[Ctrl]+[N]まで入力してみました。
[Ctrl]+[H]は文字コード08なので[BackSpace]と同じ動作になりました。
[Ctrl]+[I]は文字コード09なので[Tab]と同じ動作になりました。
[Ctrl]+[J]は文字コード0Aです。
CP/Mでは0Aは「改行」動作ですが、ZB3DOSではプログラム上の都合からCR(Carriage Return:復帰、コード0D)とLF(Line Feed:改行、コード0A)が同時に行なわれます。
[Ctrl]+[M]は文字コード0Dなので[Enter]と同じ動作になりました。
そのほかのコード(01〜07、0B、0C、0E〜19)を入力しても、ファンクション01ではコードがそのままAレジスタに入るだけでそれ以外の動作はしません(=XXの表示はファンクション02によって行なわれています)。
ファンクション01では[Ctrl]+[C](コード03)を入力してもブレークしません。

続いて[Ctrl]+[O](コード0F)から[Ctrl]+[Z](コード1A)までを入力してみました(下の画面)。



コード0F〜19までは入力してもファンクション02によってコード(=XX)が表示されること以外の動作はありませんが[Ctrl]+[Z](コード1A)の入力ではブレークしてシステムに戻りました。
これはファンクション01の機能ではなくて、VFTST1でそのようにプログラムしてあるからです。

MYCPU80でCP/Mを![第99回]
2015.1.12upload

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