復活!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;$
;
|

; 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 ; |
