復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第98回]
●ファイルアトリビュート表示プログラム
前回からの続きです。
前回はファイルアトリビュートについて説明をしました。
今回はファイルのアトリビュートを表示するプログラムを作ります。
[第88回]で作成したFTST10−4.TXT(DIR表示プログラム)をもとにして、アトリビュートを表示する部分を追加します。
そのようにして作成したFTST10−7.TXTのソースリストです。
; BDOS TEST10 filename search function0e,11,12
;2012/3/19 4/4
; 4/7 4/9 dir disp
; 4/14 display file attribute
;
ORG $8100
FCALL=$8005
FCB=$805C
DMA=$8080
;
LD HL,FCB
INC HL
LD A,(HL)
CP 20;no fcb data
JP NZ,LOOP
LD B,0B;=11
LD A,3F;'?'
FILL3F:LD (HL),A
INC HL
DEC B
JP NZ,FILL3F
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)
CALL ADP
NMDISP3:INC HL
DEC B
JP NZ,NMDISP2
CALL SPDP
LD B,03
PUSH HL
NMDISP4:LD A,(HL)
AND 7F
CALL ADP
INC HL
DEC B
JP NZ,NMDISP4
CALL SPDP
POP HL
PUSH HL
LD A,(HL)
RLCA
JP C,ROSET
LD DE,RWT
JP RODSP
ROSET:LD DE,ROT
RODSP:CALL MSGDP
CALL SPDP
POP HL
INC HL
LD A,(HL)
RLCA
JP C,SYSSET
LD DE,DIRT
JP SYSDSP
SYSSET:LD DE,SYST
SYSDSP:CALL MSGDP
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;$
RWT:"RW"
DB 24;$
ROT:"RO"
DB 24;$
DIRT:"DIR"
DB 24;$
SYST:"SYS"
DB 24;$
;
|
2012/4/14 22:12 ftst10-7.txt
END=820D
; BDOS TEST10 filename search function0e,11,12
;2012/3/19 4/4
; 4/7 4/9 dir disp
; 4/14 display file attribute
;
ORG $8100
FCALL=$8005
FCB=$805C
DMA=$8080
;
8100 215C80 LD HL,FCB
8103 23 INC HL
8104 7E LD A,(HL)
8105 FE20 CP 20;no fcb data
8107 C21481 JP NZ,LOOP
810A 060B LD B,0B;=11
810C 3E3F LD A,3F;'?'
810E 77 FILL3F:LD (HL),A
810F 23 INC HL
8110 05 DEC B
8111 C20E81 JP NZ,FILL3F
8114 11E681 LOOP:LD DE,INPMSG
8117 CDC981 CALL MSGDP
811A 0E01 LD C,01
811C CD0580 CALL FCALL
811F FE1A CP 1A;^z
8121 C8 RET Z
8122 FE30 CP 30
8124 CA3081 JP Z,DNOPASS
8127 E60F AND 0F
8129 3D DEC A
812A 5F LD E,A
812B 0E0E LD C,0E
812D CD0580 CALL FCALL
8130 CDCF81 DNOPASS:CALL CRLF
8133 0E11 LD C,11;first file search
8135 115C80 LD DE,FCB
8138 CD0580 CALL FCALL
813B FEFF CP FF
813D CAB781 JP Z,NOFILE
;
8140 218080 LD HL,DMA
8143 112000 LD DE,$0020
8146 B7 OR A;dirctory code 00-03
8147 CA4F81 LOOP1: JP Z,NMDISP
814A 19 ADD HL,DE
814B 3D DEC A
814C C34781 JP LOOP1
814F 23 NMDISP:INC HL;pass drive no.
8150 0608 LD B,08
8152 7E NMDISP2:LD A,(HL)
8153 CDDB81 CALL ADP
8156 23 NMDISP3:INC HL
8157 05 DEC B
8158 C25281 JP NZ,NMDISP2
815B CDD981 CALL SPDP
815E 0603 LD B,03
8160 E5 PUSH HL
8161 7E NMDISP4:LD A,(HL)
8162 E67F AND 7F
8164 CDDB81 CALL ADP
8167 23 INC HL
8168 05 DEC B
8169 C26181 JP NZ,NMDISP4
816C CDD981 CALL SPDP
816F E1 POP HL
8170 E5 PUSH HL
8171 7E LD A,(HL)
8172 07 RLCA
8173 DA7C81 JP C,ROSET
8176 110082 LD DE,RWT
8179 C37F81 JP RODSP
817C 110382 ROSET:LD DE,ROT
817F CDC981 RODSP:CALL MSGDP
8182 CDD981 CALL SPDP
8185 E1 POP HL
8186 23 INC HL
8187 7E LD A,(HL)
8188 07 RLCA
8189 DA9281 JP C,SYSSET
818C 110682 LD DE,DIRT
818F C39581 JP SYSDSP
8192 110A82 SYSSET:LD DE,SYST
8195 CDC981 SYSDSP:CALL MSGDP
8198 CDCF81 CALL CRLF
;next file search
819B 0E12 LD C,12;next file search
819D 115C80 LD DE,FCB
81A0 CD0580 CALL FCALL
81A3 FEFF CP FF
81A5 CAC081 JP Z,END
81A8 218080 LD HL,DMA
81AB 112000 LD DE,$0020
81AE B7 OR A;dirctory code 00-03
81AF CA4F81 NXTSRCH:JP Z,NMDISP
81B2 19 ADD HL,DE
81B3 3D DEC A
81B4 C3AF81 JP NXTSRCH
;
81B7 11EE81 NOFILE:LD DE,NFMSG
81BA CDC981 CALL MSGDP
81BD C31481 JP LOOP
;
81C0 11FA81 END:LD DE,ENDMSG
81C3 CDC981 CALL MSGDP
81C6 C31481 JP LOOP
;
81C9 0E09 MSGDP:LD C,09
81CB CD0580 CALL FCALL
81CE C9 RET
;
;CL & LF
81CF 3E0D CRLF:LD A,0D
81D1 CDDB81 CALL ADP
81D4 3E0A LD A,0A
81D6 C3DB81 JP ADP
;space disp
81D9 3E20 SPDP:LD A,20
;A disp
81DB C5 ADP:PUSH BC
81DC E5 PUSH HL
81DD 5F LD E,A
81DE 0E02 LD C,02
81E0 CD0580 CALL FCALL
81E3 E1 POP HL
81E4 C1 POP BC
81E5 C9 RET
;
81E6 6472766E INPMSG:"drvn"
81EA 6F2E "o."
81EC 3F DB 3F;?
81ED 24 DB 24;$
81EE 6E6F7420 NFMSG:"not "
81F2 666F756E "foun"
81F6 64 "d"
81F7 0D DB 0D
81F8 0A DB 0A
81F9 24 DB 24;$
81FA 656E64 ENDMSG:"end"
81FD 0D DB 0D
81FE 0A DB 0A
81FF 24 DB 24;$
8200 5257 RWT:"RW"
8202 24 DB 24;$
8203 524F ROT:"RO"
8205 24 DB 24;$
8206 444952 DIRT:"DIR"
8209 24 DB 24;$
820A 535953 SYST:"SYS"
820D 24 DB 24;$
;
ADP =81DB CRLF =81CF DIRT =8206
DMA =8080 DNOPASS =8130 END =81C0
ENDMSG =81FA FCALL =8005 FCB =805C
FILL3F =810E INPMSG =81E6 LOOP =8114
LOOP1 =8147 MSGDP =81C9 NFMSG =81EE
NMDISP =814F NMDISP2 =8152 NMDISP3 =8156
NMDISP4 =8161 NOFILE =81B7 NXTSRCH =81AF
RODSP =817F ROSET =817C ROT =8203
RWT =8200 SPDP =81D9 SYSDSP =8195
SYSSET =8192 SYST =820A
|
logfile nd80zlog\04142212.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld ftst10-7.bin,8100 loading FTST10-7.BIN ...010e(270)bytes loaded,from 8100 to 820D >jp d233 a>b: b>save 2 ftst10-7.com b>dir B: TEST COM : TEST1 COM : FTST10-7 COM b> |
b>ftst10-7 drvno.?a FNC0E-1 COM RW DIR FTST10 COM RO DIR FTST10-2 COM RW SYS FTST10-4 COM RO SYS FTST10-5 COM RW DIR FTST11 COM RW DIR FTST12 COM RW DIR FTST13 COM RW DIR FTST14 COM RW DIR FTST15 COM RW DIR FTST16 COM RW DIR FTST10-6 COM RW DIR end drvno.?b TEST COM RW DIR TEST1 COM RW DIR FTST10-7 COM RW DIR end drvno.? b>^D end of CP/M >0000 00C3 - リモート接続を終了しました logfile closed at Sat Apr 14 22:13:49 2012 |
logfile nd80zlog\04131311.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld ftst10-6.bin,8100 loading FTST10-6.BIN ...0178(376)bytes loaded,from 8100 to 8277 >JP D233 a>save 2 ftst10-6.com No space a>dir A: FNC0E-1 COM : FTST10 COM : FTST10-2 COM : FTST10-4 COM A: FTST10-5 COM : FTST11 COM : FTST12 COM : FTST13 COM A: FTST14 COM : FTST15 COM : FTST16 COM : FTST10-6 COM a> |
>dm 8900,89ff 8900 00 46 54 53 54 31 34 20-20 43 4F 4D 00 00 00 02 .FTST14 COM.... 8910 09 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 46 54 53 54 31 35 20-20 43 4F 4D 00 00 00 02 .FTST15 COM.... 8930 0A 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 46 54 53 54 31 36 20-20 43 4F 4D 00 00 00 02 .FTST16 COM.... 8950 0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 46 54 53 54 31 30 2D-36 43 4F 4D 00 00 00 00 .FTST10-6COM.... 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |