home *** CD-ROM | disk | FTP | other *** search
-
- (* module 3 *)
-
-
-
- procedure SearchFileCPM( FileName: Str20; var Error: integer; First: boolean );
- const
- SizeCPM_FCB = 32;
- SearchF = 17;
- SearchN = 18;
- SetDMAF = 26;
- var
- I,J: integer;
- begin
- BDos(SetDMAF,addr(CPM_Buf));
- ConvertName(FileName,CPM_FCB.Name,CPM_FCB.Extention);
- CPM_FCB.DriveCode:= CPM_Drive + 1;
- CPM_FCB.Extent:= 0;
- CPM_FCB.CR:= 0;
- if First then
- I:= BDos(SearchF,addr(CPM_FCB))
- else
- I:= BDos(SearchN,addr(CPM_FCB));
- if (I = $FF) then
- Error:= EODirectory
- else
- begin
- Error:= 0;
- I:= (((I and 3) * SizeCPM_FCB) + 1);
- for J:= 0 to (NameSize + TypeSize) do
- mem[addr( CPM_FCB ) + J]:= mem[ addr( CPM_Buf[I]) + J];
- end;
- end;
-
-
-
- procedure DirCPM;
- const
- First = true;
- Next = false;
- var
- ErrorCode,
- Count,
- I,N: integer;
- FileName: Str20;
- begin
- Count:= 0;
- ClrScr;
- writeln;
- write('Dir Mask: ');
- readln(FileName);
- writeln;
- SearchFileCPM(FileName,ErrorCode,First);
-
- if (ErrorCode = EODirectory) then
- begin
- write('No File, ');
- Continue;
- end
- else
- begin
- repeat
- if (count > 0) and (count mod 80 = 0) then begin
- writeln;
- continue;
- end;
- if ((Count mod 4) = 0) then
- writeln
- else
- write(' : ');
- write(CPM_DriveCh,':');
- for I:= 1 to NameSize do
- write(CPM_FCB.Name[I]);
- write('.');
- for I:= 1 to TypeSize do
- write(CPM_FCB.Extention[I]);
- Count:= Count + 1;
- SearchFileCPM(FileName,ErrorCode,Next);
- until (ErrorCode = EODirectory) or Break;
- writeln;
- writeln;
- writeln('File Count: ',Count);
- Continue;
- end;
- end;
-
-
- procedure chDir; {Die Systemvariable pathStr veraendern}
-
- var
- s: string [31]; {neuer Pfad, Eingabe}
- i: integer; {Zaehlvariable}
-
- begin
- clrscr;
- writeln;
- writeln ('Change MS-DOS Directory Path');
- writeln;
- writeln ('Path is "', pathStr, '"');
- write ('Change to: ');
- readln (s);
- if s <> '' then begin
- if s [1] = '\' then {vollstaendiger Pfadname}
- pathStr := s
- else if s = '..' then begin {in Parent Directory zurueck}
- if length (pathStr) > 1 then begin
- i := length (pathStr)-1;
- while (pathStr [i] <> '\') and (i > 1) do
- i := pred (i);
- pathStr [0] := chr (i) {Laenge des Strings neu setzen}
- end;
- end
- else
- pathStr := pathStr + s; {unvollstaendiger Pfadname}
- if pathStr [length (pathStr)] <> '\' then
- pathStr := pathStr+'\'
- end; {if s <> ''}
- writeln;
- writeln ('Path was changed to "', pathStr, '".');
- writeln;
- continue
- end;
-
-
- (* end module 3 *)