復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第85回]
●ファンクションコール0Eテストプログラム(2)
前回からの続きです。
ファンクションコール0Eは、デフォルトのドライブ(カレントドライブ?)を変更するための機能のはずなのですが、簡単なプログラムを作って試してみたところ、プログラムの実行前と後とでカレントドライブは変更されませんでした。
そこで今回はもう少しましなプログラムを書いて、テストをしてみることにいたします。
[第65回]で作ったファイル名サーチプログラム(FTST10.TXT)をもとにして、そこにファンクションコール0Eを追加しました。
下はそのようにして作ったプログラム(FTST10−2.TXT)のソースリストです。
FTST10.TXTの先頭にドライブb入力する部分を追加しました。
LOOP:からDNOPASS:までです。
; BDOS TEST10 filename search function0e,11,12
;2012/3/19 4/4
;
ORG $8100
FCALL=$8005
FCB=$805C
DMA=$8080
;
LOOP:LD DE,INPMSG
CALL MSGDP
LD C,01
CALL FCALL
CP 1A;^z
RET Z
CP 30
JP Z,DNOPASS
AND 0F
DEC A
LD E,A
LD C,0E
CALL FCALL
DNOPASS:CALL CRLF
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
CALL MSGDP
JP LOOP
;
END:LD DE,ENDMSG
CALL MSGDP
JP LOOP
;
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
;
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;$
;
|
2012/4/4 23:3 ftst10-2.txt
END=81C3
; BDOS TEST10 filename search function0e,11,12
;2012/3/19 4/4
;
ORG $8100
FCALL=$8005
FCB=$805C
DMA=$8080
;
8100 11AA81 LOOP:LD DE,INPMSG
8103 CD8D81 CALL MSGDP
8106 0E01 LD C,01
8108 CD0580 CALL FCALL
810B FE1A CP 1A;^z
810D C8 RET Z
810E FE30 CP 30
8110 CA1C81 JP Z,DNOPASS
8113 E60F AND 0F
8115 3D DEC A
8116 5F LD E,A
8117 0E0E LD C,0E
8119 CD0580 CALL FCALL
811C CD9381 DNOPASS:CALL CRLF
811F 0E11 LD C,11;first file search
8121 115C80 LD DE,FCB
8124 CD0580 CALL FCALL
8127 FEFF CP FF
8129 CA7B81 JP Z,NOFILE
;
812C 218080 LD HL,DMA
812F 112000 LD DE,$0020
8132 B7 OR A;dirctory code 00-03
8133 CA3B81 LOOP1: JP Z,NMDISP
8136 19 ADD HL,DE
8137 3D DEC A
8138 C33381 JP LOOP1
813B 23 NMDISP:INC HL;pass drive no.
813C 0608 LD B,08
813E 7E NMDISP2:LD A,(HL)
813F FE20 CP 20
8141 CA4781 JP Z,NMDISP3
8144 CD9F81 CALL ADP
8147 23 NMDISP3:INC HL
8148 05 DEC B
8149 C23E81 JP NZ,NMDISP2
814C 3E2E LD A,2E;"."
814E CD9F81 CALL ADP
8151 0603 LD B,03
8153 7E NMDISP4:LD A,(HL)
8154 CD9F81 CALL ADP
8157 23 INC HL
8158 05 DEC B
8159 C25381 JP NZ,NMDISP4
815C CD9381 CALL CRLF
;next file search
815F 0E12 LD C,12;next file search
8161 115C80 LD DE,FCB
8164 CD0580 CALL FCALL
8167 FEFF CP FF
8169 CA8481 JP Z,END
816C 218080 LD HL,DMA
816F 112000 LD DE,$0020
8172 B7 OR A;dirctory code 00-03
8173 CA3B81 NXTSRCH:JP Z,NMDISP
8176 19 ADD HL,DE
8177 3D DEC A
8178 C37381 JP NXTSRCH
;
817B 11B281 NOFILE:LD DE,NFMSG
817E CD8D81 CALL MSGDP
8181 C30081 JP LOOP
;
8184 11BE81 END:LD DE,ENDMSG
8187 CD8D81 CALL MSGDP
818A C30081 JP LOOP
;
818D 0E09 MSGDP:LD C,09
818F CD0580 CALL FCALL
8192 C9 RET
;
;CL & LF
8193 3E0D CRLF:LD A,0D
8195 CD9F81 CALL ADP
8198 3E0A LD A,0A
819A C39F81 JP ADP
;space disp
819D 3E20 SPDP:LD A,20
;A disp
819F C5 ADP:PUSH BC
81A0 E5 PUSH HL
81A1 5F LD E,A
81A2 0E02 LD C,02
81A4 CD0580 CALL FCALL
81A7 E1 POP HL
81A8 C1 POP BC
81A9 C9 RET
;
81AA 6472766E INPMSG:"drvn"
81AE 6F2E "o."
81B0 3F DB 3F;?
81B1 24 DB 24;$
81B2 6E6F7420 NFMSG:"not "
81B6 666F756E "foun"
81BA 64 "d"
81BB 0D DB 0D
81BC 0A DB 0A
81BD 24 DB 24;$
81BE 656E64 ENDMSG:"end"
81C1 0D DB 0D
81C2 0A DB 0A
81C3 24 DB 24;$
;
ADP =819F CRLF =8193 DMA =8080
DNOPASS =811C END =8184 ENDMSG =81BE
FCALL =8005 FCB =805C INPMSG =81AA
LOOP =8100 LOOP1 =8133 MSGDP =818D
NFMSG =81B2 NMDISP =813B NMDISP2 =813E
NMDISP3 =8147 NMDISP4 =8153 NOFILE =817B
NXTSRCH =8173 SPDP =819D
|
logfile nd80zlog\04070812.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld ftst10-2.bin,8100 loading FTST10-2.BIN ...00c4(196)bytes loaded,from 8100 to 81C3 >jp d233 a>save 1 ftst10-2.com a>dir A: FNC0E-1 COM : FTST10 COM : FTST10-2 COM a>b: b>dir B: FNC0E-0 COM |
b>a:ftst10-2 *.* drvno.?a FNC0E-1.COM FTST10.COM FTST10-2.COM end drvno.?b FNC0E-0.COM end drvno.?c Bdos Err On C: Select |
a>ftst10-2 *.* drvno.?1 FNC0E-1.COM FTST10.COM FTST10-2.COM end drvno.?2 FNC0E-0.COM end drvno.? a> |
a>b: b>a:ftst10-2 *.* drvno.?a FNC0E-1.COM FTST10.COM FTST10-2.COM end drvno.? b> |