復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第134回]
●ファンクションコール9(文字列出力)
ファンクションコール2は、コンソール画面に文字を1文字だけ表示しますが、ファンクションコール9は文字列を表示するのに使います。
ファンクションコール9のテストプログラムは[第41回]で作りました。
FTEST2.COMです。
おお。
あれからもう3ヶ月以上経ってしまいました。
むむ。
急がなくてはいけません。
これはもう、ごく基本的なファンクションですから問題はありませんでしょう。
ファンクションコール0Aをチェックするのに、何回もCP/M2.2とCP/M互換DOSをND80ZVにインストールし直してきました。
その操作をなるべく簡単に行なえるように、仮RAMディスクとDOS、BIOSのエリアを一括してバックアップしておいて、必要に応じて再ロードするようにしてきました。
/ld bdos88−df5.bin,8800
は、そのようにしてハードディスクに保存しておいた仮RAMディスク+互換DOSを、ND80ZVに再ロードするための操作です。
そのあとのcmコマンドでは仮RAMディスクのディスクパラメータを確認しています。
何回もテストを繰り返しながらバックアップをしてきたことをふまえて、念の為にディスクパラメータの設定を確認したのです。
その後に
/ld ftest2.bin,8100[Enter]
で、FTEST2.BINをロードしたあと、
jp d233[Enter]
で互換DOSを起動して、
save 1 ftest2.com[Enter]
でFTEST2.COMというファイル名で仮RAMディスクに保存したあとで、それを実行しました。
実行の結果は[第41回]の実行結果と同じで、
Hello World
と表示されました。
●ファンクションコール0FH(ファイルオープン)とファンクションコール14H(シーケンシャルリード)
この2つの機能は、上でFTEST2.COMを実行する過程で行なわれた同ファイルのオープンと、メモリへのロードによって、事実上はすでに検証済みの機能だといってもよいと思うのですが、それでも念の為に、CP/M2.2で行なったと同じテストをしてみます。
そのテストは[第46回]で作成したFTEST4.COMを使って行ないます。
実際にはFTEST4.COMの実行は、その前の必要な準備を含めて[第49回]で行なっています。
今回のテストも[第49回]と同様に行なってみました。
前準備のFILL00.BINのロードとその実行から、次にFTEST4−1.TXTのロードとそのセーブ、そしてFTEST4−1.BINのロードと、それをFTEST4.COMというファイル名で保存するところまでを、[第49回]と全く同じように行ないました。
下は、そのあと
FTEST4 FTEST4−1.TXT[Enter]
を入力して、FTEST4−1.TXTの中味の表示が完了したあとの画面です。
以上の操作をログファイルでお見せします。
logfile nd80zlog\05262216.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld fill00.bin,8080 loading FILL00.BIN ...0010(16)bytes loaded,from 8080 to 808F >jp 8080 >/ld ftest4-1.txt,8100 loading FTEST4-1.TXT ...02c3(707)bytes loaded,from 8100 to 83C2 >jp d233 A>save 3 ftest4-1.txt A>end of ZBDOS >/ld ftest4-1.bin,8100 loading FTEST4-1.BIN ...0042(66)bytes loaded,from 8100 to 8141 >jp d233 A>save 1 ftest4.com A>dir A: FTEST1 COM : BSTEST COM : BSTEST2 COM : FTST9 COM A: LFTEST COM : LFTEST CPP : FTEST2 COM : FTEST4-1 TXT A: FTEST4 COM A>ftest4 ftest4-1.txt ; BDOS TEST4 TYPE ;2012/2/28 ; ORG $8100 FCALL=$8005 FCB=$805C RECNO=$807C DMA=$8080 ; LD C,0F;open LD DE,FCB CALL FCALL INC A;if FFH? JP Z,ERR XOR A LD (RECNO),A ; LOOP1: LD C,14;read LD DE,FCB CALL FCALL OR A RET NZ;read end ; LD HL,DMA LOOP2:LD E,(HL) LD C,02 PUSH HL CALL FCALL POP HL INC L JP NZ,LOOP2 JP LOOP1 ; ERR:LD DE,ERRMSG LD C,09 CALL FCALL RET ERRMSG:"can'" "t op" "en" DB 0D DB 0A DB 24;$ ; A>end of ZBDOS >0000 00C3 - リモート接続を終了しました logfile closed at Sat May 26 22:20:30 2012 } |