MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第117回]
●ファンクション11、12
ファンクション11は最初のファイルサーチです。
ファンクション12は次のファイルサーチです。
上記のファンクションは「ワンボードマイコンでCP/Mを!」[第204回]でテストをしています。
テストプログラムはVFTST10です。
ファイル名を指定して、ディレクトリ(ドライブ)の中から該当するファイルを抽出します。
もとになったプログラムの説明は「ワンボードマイコンでCP/Mを!」[第65回]でしています。
いつものようにVFTST10のソースプログラムをインテルニーモニックに書き直してMFTST10を作りました。
●テストプログラムMFTST10
MFTST10のソースプログラムです。
; BDOS TEST10 filename search function11,12 ;2012/3/19 8/24 ; ORG $0100 FCALL=$0005 FCB=$005C DMA=$0080 ; MVI C,11;first file search LXI D,FCB CALL FCALL CPI FF JZ NOFILE ; LXI H,DMA LXI D,$0020 ORA A;dirctory code 00-03 LOOP1:JZ NMDISP DAD D DCR A JMP LOOP1 NMDISP:INX H;pass drive no. MVI B,08 NMDISP2:MOV A,M CPI 20 JZ NMDISP3 CALL ADP NMDISP3:INX H DCR B JNZ NMDISP2 MVI A,2E;"." CALL ADP MVI B,03 NMDISP4:MOV A,M CALL ADP INX H DCR B JNZ NMDISP4 CALL CRLF ;next file search MVI C,12;next file search LXI D,FCB CALL FCALL CPI FF JZ END LXI H,DMA LXI D,$0020 ORA A;dirctory code 00-03 NXTSRCH:JZ NMDISP DAD D DCR A JMP NXTSRCH ; NOFILE:LXI D,NFMSG JMP MSGDP ; END:LXI D,ENDMSG MSGDP:MVI C,09 CALL FCALL RET ; ;CL & LF CRLF:MVI A,0D CALL ADP MVI A,0A JMP ADP ;space disp SPDP:MVI A,20 ;A disp ADP:PUSH B PUSH H MOV E,A MVI C,02 CALL FCALL POP H POP B RET ; NFMSG:"not " "foun" "d" DB 24;$ ENDMSG:"end" DB 24;$ ; |
2015/1/29 11:31 mftst10.txt END=018F ; BDOS TEST10 filename search function11,12 ;2012/3/19 8/24 ; ORG $0100 FCALL=$0005 FCB=$005C DMA=$0080 ; 0100 0E11 MVI C,11;first file search 0102 115C00 LXI D,FCB 0105 CD0500 CALL FCALL 0108 FEFF CPI FF 010A CA5C01 JZ NOFILE ; 010D 218000 LXI H,DMA 0110 112000 LXI D,$0020 0113 B7 ORA A;dirctory code 00-03 0114 CA1C01 LOOP1:JZ NMDISP 0117 19 DAD D 0118 3D DCR A 0119 C31401 JMP LOOP1 011C 23 NMDISP:INX H;pass drive no. 011D 0608 MVI B,08 011F 7E NMDISP2:MOV A,M 0120 FE20 CPI 20 0122 CA2801 JZ NMDISP3 0125 CD7701 CALL ADP 0128 23 NMDISP3:INX H 0129 05 DCR B 012A C21F01 JNZ NMDISP2 012D 3E2E MVI A,2E;"." 012F CD7701 CALL ADP 0132 0603 MVI B,03 0134 7E NMDISP4:MOV A,M 0135 CD7701 CALL ADP 0138 23 INX H 0139 05 DCR B 013A C23401 JNZ NMDISP4 013D CD6B01 CALL CRLF ;next file search 0140 0E12 MVI C,12;next file search 0142 115C00 LXI D,FCB 0145 CD0500 CALL FCALL 0148 FEFF CPI FF 014A CA6201 JZ END 014D 218000 LXI H,DMA 0150 112000 LXI D,$0020 0153 B7 ORA A;dirctory code 00-03 0154 CA1C01 NXTSRCH:JZ NMDISP 0157 19 DAD D 0158 3D DCR A 0159 C35401 JMP NXTSRCH ; 015C 118201 NOFILE:LXI D,NFMSG 015F C36501 JMP MSGDP ; 0162 118C01 END:LXI D,ENDMSG 0165 0E09 MSGDP:MVI C,09 0167 CD0500 CALL FCALL 016A C9 RET ; ;CL & LF 016B 3E0D CRLF:MVI A,0D 016D CD7701 CALL ADP 0170 3E0A MVI A,0A 0172 C37701 JMP ADP ;space disp 0175 3E20 SPDP:MVI A,20 ;A disp 0177 C5 ADP:PUSH B 0178 E5 PUSH H 0179 5F MOV E,A 017A 0E02 MVI C,02 017C CD0500 CALL FCALL 017F E1 POP H 0180 C1 POP B 0181 C9 RET ; 0182 6E6F7420 NFMSG:"not " 0186 666F756E "foun" 018A 64 "d" 018B 24 DB 24;$ 018C 656E64 ENDMSG:"end" 018F 24 DB 24;$ ; ADP =0177 CRLF =016B DMA =0080 END =0162 ENDMSG =018C FCALL =0005 FCB =005C LOOP1 =0114 MSGDP =0165 NFMSG =0182 NMDISP =011C NMDISP2 =011F NMDISP3 =0128 NMDISP4 =0134 NOFILE =015C NXTSRCH =0154 SPDP =0175 |