MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第113回]
●ファンクション0E
ファンクション0Eはディスクドライブセレクトです。
カレントディスクドライブを変更します。
Eレジスタに入れた値(Aドライブ=00、Bドライブ=01、Cドライブ=02、Dドライブ=03)によって、ファンクション0Eの実行後は、そこで指定したドライブがカレントディスクドライブになります。
ただしその効果はユーザープログラム内だけで有効で、プログラムを終了すると、プログラム開始時のカレントドライブに戻ります。
ファンクション0Eは「ワンボードマイコンでCP/Mを!」[第206回]で説明をしています。
そこでテストに使ったプログラムはVFTST102です。
いつものようにVFTST102をインテルニーモニックに書き換えてMFTST102を作りました。
●テストプログラムMFTST102
MFTST102のソースプログラムです。
; BDOS TEST10 filename search function0e,11,12 ;2012/3/19 4/4 8/27 ; ORG $0100 FCALL=$0005 FCB=$005C DMA=$0080 ; LOOP:LXI D,INPMSG CALL MSGDP MVI C,01 CALL FCALL CPI 1A;^z RZ CPI 30 JZ DNOPASS ANI 0F DCR A MOV E,A MVI C,0E CALL FCALL DNOPASS:CALL CRLF 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 CALL MSGDP JMP LOOP ; END:LXI D,ENDMSG CALL MSGDP JMP LOOP ; 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 ; INPMSG:"drvn" "o." DB 3F;? DB 24;$ NFMSG:"not " "foun" "d" DB 0D DB 0A DB 24;$ ENDMSG:"end" DB 0D DB 0A DB 24;$ ; |
2015/1/27 20:50 mftst102.txt END=01C3 ; BDOS TEST10 filename search function0e,11,12 ;2012/3/19 4/4 8/27 ; ORG $0100 FCALL=$0005 FCB=$005C DMA=$0080 ; 0100 11AA01 LOOP:LXI D,INPMSG 0103 CD8D01 CALL MSGDP 0106 0E01 MVI C,01 0108 CD0500 CALL FCALL 010B FE1A CPI 1A;^z 010D C8 RZ 010E FE30 CPI 30 0110 CA1C01 JZ DNOPASS 0113 E60F ANI 0F 0115 3D DCR A 0116 5F MOV E,A 0117 0E0E MVI C,0E 0119 CD0500 CALL FCALL 011C CD9301 DNOPASS:CALL CRLF 011F 0E11 MVI C,11;first file search 0121 115C00 LXI D,FCB 0124 CD0500 CALL FCALL 0127 FEFF CPI FF 0129 CA7B01 JZ NOFILE ; 012C 218000 LXI H,DMA 012F 112000 LXI D,$0020 0132 B7 ORA A;dirctory code 00-03 0133 CA3B01 LOOP1:JZ NMDISP 0136 19 DAD D 0137 3D DCR A 0138 C33301 JMP LOOP1 013B 23 NMDISP:INX H;pass drive no. 013C 0608 MVI B,08 013E 7E NMDISP2:MOV A,M 013F FE20 CPI 20 0141 CA4701 JZ NMDISP3 0144 CD9F01 CALL ADP 0147 23 NMDISP3:INX H 0148 05 DCR B 0149 C23E01 JNZ NMDISP2 014C 3E2E MVI A,2E;"." 014E CD9F01 CALL ADP 0151 0603 MVI B,03 0153 7E NMDISP4:MOV A,M 0154 CD9F01 CALL ADP 0157 23 INX H 0158 05 DCR B 0159 C25301 JNZ NMDISP4 015C CD9301 CALL CRLF ;next file search 015F 0E12 MVI C,12;next file search 0161 115C00 LXI D,FCB 0164 CD0500 CALL FCALL 0167 FEFF CPI FF 0169 CA8401 JZ END 016C 218000 LXI H,DMA 016F 112000 LXI D,$0020 0172 B7 ORA A;dirctory code 00-03 0173 CA3B01 NXTSRCH:JZ NMDISP 0176 19 DAD D 0177 3D DCR A 0178 C37301 JMP NXTSRCH ; 017B 11B201 NOFILE:LXI D,NFMSG 017E CD8D01 CALL MSGDP 0181 C30001 JMP LOOP ; 0184 11BE01 END:LXI D,ENDMSG 0187 CD8D01 CALL MSGDP 018A C30001 JMP LOOP ; 018D 0E09 MSGDP:MVI C,09 018F CD0500 CALL FCALL 0192 C9 RET ; ;CL & LF 0193 3E0D CRLF:MVI A,0D 0195 CD9F01 CALL ADP 0198 3E0A MVI A,0A 019A C39F01 JMP ADP ;space disp 019D 3E20 SPDP:MVI A,20 ;A disp 019F C5 ADP:PUSH B 01A0 E5 PUSH H 01A1 5F MOV E,A 01A2 0E02 MVI C,02 01A4 CD0500 CALL FCALL 01A7 E1 POP H 01A8 C1 POP B 01A9 C9 RET ; 01AA 6472766E INPMSG:"drvn" 01AE 6F2E "o." 01B0 3F DB 3F;? 01B1 24 DB 24;$ 01B2 6E6F7420 NFMSG:"not " 01B6 666F756E "foun" 01BA 64 "d" 01BB 0D DB 0D 01BC 0A DB 0A 01BD 24 DB 24;$ 01BE 656E64 ENDMSG:"end" 01C1 0D DB 0D 01C2 0A DB 0A 01C3 24 DB 24;$ ; ADP =019F CRLF =0193 DMA =0080 DNOPASS =011C END =0184 ENDMSG =01BE FCALL =0005 FCB =005C INPMSG =01AA LOOP =0100 LOOP1 =0133 MSGDP =018D NFMSG =01B2 NMDISP =013B NMDISP2 =013E NMDISP3 =0147 NMDISP4 =0153 NOFILE =017B NXTSRCH =0173 SPDP =019D |
logfile mycpu80log\01272118.txt open mzbdos3o 2015.1.21 by Chunichidenko MYCPU80に接続しました(19200bps) 0001 001E - z 1000 00C3 - *** mycpu80 zb3basic **** >/cpm loading mcpm5e.bin ...19be(6590)bytes loaded,from CC00 to E5BD inbf[0]=3E,inbf[1]=01 drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>copy z:mftst102.com MFTST102COM to MFTST102COM.. done A>dir A: MBASIC COM : STARTREK BAS : PIP COM : ESC4 MAC A: MFTST102 COM : VFDUMP1 COM : VFDUMP2 COM : VFDUMP COM A: VFD05 COM : STARTRK2 BAS : TREKINST BAS : VFTST11 COM A: VFTST12 COM A>dir b: B: MBASIC COM : STARTREK BAS : PIP COM : ESC4 MAC B: VFTST6 TXT : VFDUMP1 COM : VFDUMP2 COM : VFDUMP COM B: VFD05 COM : STARTRK2 BAS : TREKINST BAS : VFTST12 COM B: TEST TXT A>dir c: C: ABTEST1 TXT : ABTEST2 TXT : TEST3XYZ TXT A>mftst102 *.* drvno.?a MBASIC.COM STARTREK.BAS PIP.COM ESC4.MAC MFTST102.COM VFDUMP1.COM VFDUMP2.COM VFDUMP.COM VFD05.COM STARTRK2.BAS TREKINST.BAS VFTST11.COM VFTST12.COM end drvno.?c ABTEST1.TXT ABTEST2.TXT TEST3XYZ.TXT end drvno.?0 ABTEST1.TXT ABTEST2.TXT TEST3XYZ.TXT end drvno.? A> |
A>c: C>a:mftst102 *.* drvno.?0 ABTEST1.TXT ABTEST2.TXT TEST3XYZ.TXT end drvno.?a MBASIC.COM STARTREK.BAS PIP.COM ESC4.MAC MFTST102.COM VFDUMP1.COM VFDUMP2.COM VFDUMP.COM VFD05.COM STARTRK2.BAS TREKINST.BAS VFTST11.COM VFTST12.COM end drvno.?0 MBASIC.COM STARTREK.BAS PIP.COM ESC4.MAC MFTST102.COM VFDUMP1.COM VFDUMP2.COM VFDUMP.COM VFD05.COM STARTRK2.BAS TREKINST.BAS VFTST11.COM VFTST12.COM end drvno.? C>/exit > 0000 00C3 - リモート接続を終了しました logfile closed at Tue Jan 27 21:24:25 2015 |