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

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第204回]


●ファンクションコール11H(最初のファイルサーチ)、12H(次のファイルサーチ)

ファンクションコール11Hとファンクションコール12Hのテストは[第65回]で行ないました。
そこで作ったテストプログラムはFTST10です。
ファイル名を指定して、ディレクトリの中から該当するファイルを抽出します。

[第138回]ではRAMディスク版での動作テストをしています。

FTST10を64KBフルRAM用に一部を書き換えてファイル名をVFTST10にしました。
下はそのソースプログラムリストです。

●ソースプログラムVFTST10.TXT

; BDOS TEST10 filename search   function11,12
;2012/3/19 8/24
;
        ORG $0100
        FCALL=$0005
        FCB=$005C
        DMA=$0080
;
        LD C,11;first file search
        LD DE,FCB
        CALL FCALL
        CP FF
        JP Z,NOFILE
;       
        LD HL,DMA
        LD DE,$0020
        OR A;dirctory code 00-03
LOOP1:  JP Z,NMDISP
        ADD HL,DE
        DEC A
        JP LOOP1
NMDISP:INC HL;pass drive no.
        LD B,08
NMDISP2:LD A,(HL)
        CP 20
        JP Z,NMDISP3
        CALL ADP
NMDISP3:INC HL
        DEC B
        JP NZ,NMDISP2
        LD A,2E;"."
        CALL ADP
        LD B,03
NMDISP4:LD A,(HL)
        CALL ADP
        INC HL
        DEC B
        JP NZ,NMDISP4
        CALL CRLF
;next file search
        LD C,12;next file search
        LD DE,FCB
        CALL FCALL
        CP FF
        JP Z,END
        LD HL,DMA
        LD DE,$0020
        OR A;dirctory code 00-03
NXTSRCH:JP Z,NMDISP
        ADD HL,DE
        DEC A
        JP NXTSRCH
;
NOFILE:LD DE,NFMSG
        JP MSGDP        
;
END:LD DE,ENDMSG
MSGDP:LD C,09
        CALL FCALL
        RET
;
;CL & LF
CRLF:LD A,0D
        CALL ADP
        LD A,0A
        JP ADP
;space disp
SPDP:LD A,20
;A disp
ADP:PUSH BC
        PUSH HL
        LD E,A
        LD C,02
        CALL FCALL
        POP HL
        POP BC
        RET
;
NFMSG:"not "
        "foun"
        "d"
        DB 24;$
ENDMSG:"end"
        DB 24;$
;

●VFTST10の実行

[第138回]を開いてそれをバックにして、VFTST10を実行しました。
[第138回]ではFTST10.BINをSEARCH.COMの名前でセーブして実行しました。
A>SEARCH FTST*.*[Enter]
と入力して、該当するファイル名の抽出を行ないました。

今回は、
A>VFTST10 VFTST*.*[Enter]
と入力して、該当するファイル名の抽出を行ないました。



●ファンクションコール0BH(コンソールステータスチェック)

ファンクションコール0BHのテストプログラムは[第68回]で作りましたが、バグがあることがわかって、あとで訂正をしました。
ファンクションコール0BHはなかなか期待した通りの動作にはならず、最終的にはBIOSを直すことで解決できたのですが、その間にいくつか作ったテストプログラムは主にデバッグのためのものであったため、ファンクションコール0BHのためのテストプログラムとしては不向きなものでした。

そこで[第138回]ではRAMディスク版での動作テストのために、「応用CP/M」(村瀬康治著。アスキー出版局)で紹介されていたサンプルプログラムを参考にして簡単なテストプログラムFNC0BTを新たに作りました。

今回はそのFNC0BTを64KBフルRAM用に一部を書き換えてファイル名をFNC0BT−2にしました。
下はそのソースプログラムリストです。

●ソースプログラムFNC0BT−2.TXT

; BDOS function0B test(fnc0bt)
;2012/5/29 8/24
;
	ORG $0100
	FCALL=$0005
;
	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
;

[2013.4.8注記]
このプログラムにはバグがあります。
詳しくは[第363回]をご参照ください。(注記ここまで)

●FNC0BT−2の実行

[第138回]を開いてそれをバックにして、FNC0BT−2を実行しました。



ワンボードマイコンでCP/Mを![第204回]
2012.8.24upload
2013.4.8注記

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