home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol256 / trans-03.inc < prev    next >
Encoding:
Text File  |  1986-03-22  |  1.4 KB  |  86 lines

  1.  
  2. (* module 3 *)
  3.  
  4.  
  5.  
  6. procedure SearchFileCPM( FileName: Str20; var Error: integer; First: boolean );
  7. const
  8.   SizeCPM_FCB = 32;
  9.   SearchF = 17;
  10.   SearchN = 18;
  11.   SetDMAF = 26;
  12. var
  13.   I,J: integer;
  14. begin
  15. BDos(SetDMAF,addr(CPM_Buf));
  16. ConvertName(FileName,CPM_FCB.Name,CPM_FCB.Extention);
  17. CPM_FCB.DriveCode:= CPM_Drive + 1;
  18. CPM_FCB.Extent:= 0;
  19. CPM_FCB.CR:= 0;
  20. if First then
  21.   I:= BDos(SearchF,addr(CPM_FCB))
  22. else
  23.   I:= BDos(SearchN,addr(CPM_FCB));
  24. if (I = $FF) then
  25.   Error:= EODirectory
  26. else
  27.   begin
  28.   Error:= 0;
  29.   I:= (((I and 3) * SizeCPM_FCB) + 1);
  30.   for J:= 0 to (NameSize + TypeSize)  do
  31.     mem[addr( CPM_FCB ) + J]:= mem[ addr( CPM_Buf[I]) + J];
  32.   end;
  33. end;
  34.  
  35.  
  36.  
  37. procedure DirCPM;
  38. const
  39.   First = true;
  40.   Next  = false;
  41. var
  42.   ErrorCode,
  43.   Count,
  44.   I,N:      integer;
  45.   FileName: Str20;
  46. begin
  47. Count:= 0;
  48. ClrScr;
  49. writeln;
  50. write('Dir Mask: ');
  51. readln(FileName);
  52. writeln;
  53. SearchFileCPM(FileName,ErrorCode,First);
  54.  
  55. if (ErrorCode = EODirectory) then
  56.   begin
  57.   write('No File, ');
  58.   Continue;
  59.   end
  60. else
  61.   begin
  62.   repeat
  63.     if ((Count mod 4) = 0) then
  64.       writeln
  65.     else
  66.       write('  :  ');
  67.     write(CPM_DriveCh,':');
  68.     for I:= 1 to NameSize do
  69.       write(CPM_FCB.Name[I]);
  70.     write('.');
  71.     for I:= 1 to TypeSize do
  72.       write(CPM_FCB.Extention[I]);
  73.     Count:= Count + 1;
  74.     SearchFileCPM(FileName,ErrorCode,Next);
  75.     until (ErrorCode = EODirectory) or Break;
  76.   writeln;
  77.   writeln;
  78.   writeln('File Count: ',Count);
  79.   Continue;
  80.   end;
  81. end;
  82.  
  83.  
  84.  
  85. (* end module 3 *)
  86.