復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第65回]
●ファイルサーチ(ファンクションコール11H&12H)
今回はファイルサーチのファンクションコールについて説明をします。
ファンクションコール11Hは「最初の」ファイルサーチです。
ファンクションコール12Hは「次の」ファイルサーチです。
ファイル名を指定して、ディレクトリから同じファイル名を抽出します。
「最初のファイルサーチ」はディレクトリの先頭からサーチします。
「次のファイルサーチ」は、その前に実行した「最初のファイルサーチ」または「次のファイルサーチ」で見つけたファイル名の次からサーチします。
ファンクションコール11H及び12Hを使ったテストプログラムです。
ソースプログラムリストです。
; BDOS TEST10 filename search function11,12 ;2012/3/19 ; ORG $8100 FCALL=$8005 FCB=$805C DMA=$8080 ; 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;$ ; |
2012/3/19 21:48 ftst10.txt END=818F ; BDOS TEST10 filename search function11,12 ;2012/3/19 ; ORG $8100 FCALL=$8005 FCB=$805C DMA=$8080 ; 8100 0E11 LD C,11;first file search 8102 115C80 LD DE,FCB 8105 CD0580 CALL FCALL 8108 FEFF CP FF 810A CA5C81 JP Z,NOFILE ; 810D 218080 LD HL,DMA 8110 112000 LD DE,$0020 8113 B7 OR A;dirctory code 00-03 8114 CA1C81 LOOP1: JP Z,NMDISP 8117 19 ADD HL,DE 8118 3D DEC A 8119 C31481 JP LOOP1 811C 23 NMDISP:INC HL;pass drive no. 811D 0608 LD B,08 811F 7E NMDISP2:LD A,(HL) 8120 FE20 CP 20 8122 CA2881 JP Z,NMDISP3 8125 CD7781 CALL ADP 8128 23 NMDISP3:INC HL 8129 05 DEC B 812A C21F81 JP NZ,NMDISP2 812D 3E2E LD A,2E;"." 812F CD7781 CALL ADP 8132 0603 LD B,03 8134 7E NMDISP4:LD A,(HL) 8135 CD7781 CALL ADP 8138 23 INC HL 8139 05 DEC B 813A C23481 JP NZ,NMDISP4 813D CD6B81 CALL CRLF ;next file search 8140 0E12 LD C,12;next file search 8142 115C80 LD DE,FCB 8145 CD0580 CALL FCALL 8148 FEFF CP FF 814A CA6281 JP Z,END 814D 218080 LD HL,DMA 8150 112000 LD DE,$0020 8153 B7 OR A;dirctory code 00-03 8154 CA1C81 NXTSRCH:JP Z,NMDISP 8157 19 ADD HL,DE 8158 3D DEC A 8159 C35481 JP NXTSRCH ; 815C 118281 NOFILE:LD DE,NFMSG 815F C36581 JP MSGDP ; 8162 118C81 END:LD DE,ENDMSG 8165 0E09 MSGDP:LD C,09 8167 CD0580 CALL FCALL 816A C9 RET ; ;CL & LF 816B 3E0D CRLF:LD A,0D 816D CD7781 CALL ADP 8170 3E0A LD A,0A 8172 C37781 JP ADP ;space disp 8175 3E20 SPDP:LD A,20 ;A disp 8177 C5 ADP:PUSH BC 8178 E5 PUSH HL 8179 5F LD E,A 817A 0E02 LD C,02 817C CD0580 CALL FCALL 817F E1 POP HL 8180 C1 POP BC 8181 C9 RET ; 8182 6E6F7420 NFMSG:"not " 8186 666F756E "foun" 818A 64 "d" 818B 24 DB 24;$ 818C 656E64 ENDMSG:"end" 818F 24 DB 24;$ ; ADP =8177 CRLF =816B DMA =8080 END =8162 ENDMSG =818C FCALL =8005 FCB =805C LOOP1 =8114 MSGDP =8165 NFMSG =8182 NMDISP =811C NMDISP2 =811F NMDISP3 =8128 NMDISP4 =8134 NOFILE =815C NXTSRCH =8154 SPDP =8175 |
logfile nd80zlog\03192148.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld ftst10.bin,8100 loading FTST10.BIN ...0090(144)bytes loaded,from 8100 to 818F >jp d233 a>save 1 ftst10.com a>dir A: FILLE5 COM : FTEST1 COM : FTEST2 COM : DM COM A: TEST COM : FTEST4 COM : FTEST4-1 TXT : FTEST4-2 COM A: FTEST4-3 COM : COPY COM : TESTDATA TXT : FILLFF COM A: TESTDAT2 TXT : CMP COM : FILL00 BIN : FTST7 COM A: FTST8 COM : FTST9 COM : FTST10 COM a>ftst10 copy.com COPY.COM end a>ftst10 ftest*.* FTEST1.COM FTEST2.COM FTEST4.COM FTEST4-1.TXT FTEST4-2.COM FTEST4-3.COM end a>ftst10 c?p*.* COPY.COM CMP.COM end a>^D>a>^D> ERR:23 >0000 00C3 - リモート接続を終了しました logfile closed at Mon Mar 19 21:53:38 2012 |
logfile nd80zlog\03192158.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >jp d233 a>dir A: FILLE5 COM : FTEST1 COM : FTEST2 COM : DM COM A: TEST COM : FTEST4 COM : FTEST4-1 TXT : FTEST4-2 COM A: FTEST4-3 COM : COPY COM : TESTDATA TXT : FILLFF COM A: TESTDAT2 TXT : CMP COM : FILL00 BIN : FTST7 COM A: FTST8 COM : FTST9 COM : FTST10 COM a>ren search.com=ftst10.com a>dir A: FILLE5 COM : FTEST1 COM : FTEST2 COM : DM COM A: TEST COM : FTEST4 COM : FTEST4-1 TXT : FTEST4-2 COM A: FTEST4-3 COM : COPY COM : TESTDATA TXT : FILLFF COM A: TESTDAT2 TXT : CMP COM : FILL00 BIN : FTST7 COM A: FTST8 COM : FTST9 COM : SEARCH COM a>search ftst*.* FTST7.COM FTST8.COM FTST9.COM end a>^D>a>^D> ERR:23 >0000 00C3 - リモート接続を終了しました logfile closed at Mon Mar 19 21:59:19 2012 |