復活!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 ................ |