復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第138回]
●ファンクションコール11H(最初のファイルサーチ)、12H(次のファイルサーチ)
ファイル名サーチ(ファンクションコール11H&12H)のテストは[第65回]で行ないました。
そこで作ったテストプログラムはFTST10です。
ファイル名を指定して、ディレクトリの中から該当するファイルを抽出します。
そのために最初だけ使うのがファンクションコール11Hで、その次からはファンクションコール12Hを使います。
[第65回]では、FTST10.BINをトランジェントエリアにロードしたあと、CP/Mを起動して、SEARCH.COMのファイル名でAドライブにセーブしました。
今回もそれと同じことをしてみましたがディスクが一杯で(なにしろ6KBしかありませんから)、エラーになってしまいました。
まだデバッグ中なのでエラーメッセージも簡単にただ’err’とだけ表示します。
とりあえずテストが終わって不要になったファイルを削除してから、セーブしました。

[第65回]と同じように、
search ftst*.*[Enter]
と入力してみました。
ftstで始まるファイルが全てリストアップされました。
●ファンクションコール0BH(コンソールステータスチェック)
ファンクションコール0BHのテストプログラムは[第68回]で作りました。
しかしそのテストプログラムにはバグがあることがわかって、あとで訂正をしています。
ところが、このファンクションコール0BHはなかなか期待した通りの動作にはならず、その後かなりの回を費やして、いろいろなテストプログラムを作って、動作の解明をしました。
結局はBIOSを直すことで解決できたのですが、いくつか作ったテストプログラムは主にデバッグのためのものであったため、ファンクションコール0BHのためのテストプログラムとしては不向きなものになってしまいました。
そこで今回は、「応用CP/M」(村瀬康治著。アスキー出版局)で紹介されていたサンプルプログラムを参考にして簡単なテストプログラムを作りました。
こちらがソースプログラムです。
; BDOS function0B test(fnc0bt) ;2012/5/29 ; ORG $8100 FCALL=$8005 ; LD E,2D LOOP:LD C,02 CALL FCALL LD C,0B CALL FCALL OR A JP Z,LOOP LD C,01 CALL FCALL CP 1A;Ctrl+Z RET Z JP LOOP ; |
2012/5/29 9:39 fnc0bt.txt
END=811A
; BDOS function0B test(fnc0bt)
;2012/5/29
;
ORG $8100
FCALL=$8005
;
8100 1E2D LD E,2D
8102 0E02 LOOP:LD C,02
8104 CD0580 CALL FCALL
8107 0E0B LD C,0B
8109 CD0580 CALL FCALL
810C B7 OR A
810D CA0281 JP Z,LOOP
8110 0E01 LD C,01
8112 CD0580 CALL FCALL
8115 FE1A CP 1A;Ctrl+Z
8117 C8 RET Z
8118 C30281 JP LOOP
;
FCALL =8005 LOOP =8102
|
