home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / zsys / znode-12 / a / cpmdir.lbr / CPMDIR.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1992-08-11  |  1.8 KB  |  62 lines

  1.  
  2. PROGRAM CPM80Dir;
  3.  
  4.   { This program gives a directory of the logged drive/user area. }
  5.   { Update log. Lee Bradley
  6.     6/24/86, Fixed treatment of drive byte and added user number
  7.              display.
  8.     6/27/86, Removed redundant code.
  9.     6/29/86, Made more efficient.  Capitalized key words.  Adding
  10.              formatting logic. }
  11.  
  12. CONST
  13.   Search_First         : integer = $11;
  14.   Search_Next          : integer = $12;
  15.   Set_DMA              : integer = $1A;
  16.   Return_Cur_Disk      : integer = $19;
  17.   Get_Cur_User         : integer = $20;
  18.  
  19. VAR
  20.   Error, Loop, Start   : integer;
  21.   FCB                  : ARRAY[0..25] OF byte ABSOLUTE $005C;
  22.   DMA                  : ARRAY[0..255] OF byte;
  23.   first_time           : boolean;
  24.   d,u                  : STRING[1];
  25.   i                    : integer;
  26.  
  27. BEGIN
  28.   first_time := true;
  29.   i := 0;
  30.   Error := BDos(Set_DMA,Addr(DMA));
  31.   FCB[0] := 0;
  32.   FOR Loop := 1 TO 11 DO
  33.     FCB[Loop] := ord('?');
  34.   d := Chr(BDos(Return_Cur_Disk)+65);
  35.   u := Chr(BDos(Get_Cur_User,$ff)+48);
  36.   Writeln;
  37.   Writeln('CPMDIR.PAS, Version 1.1, 6/29/86');
  38.   Writeln;
  39.   REPEAT
  40.     IF NOT first_time THEN Error := BDos(Search_Next)
  41.     ELSE
  42.       BEGIN
  43.         Error := BDos(Search_First,Addr(FCB));
  44.         first_time := false;
  45.       END;
  46.     Start := Error * 32;
  47.     IF Error <> 255 THEN
  48.       BEGIN
  49.         IF i = 4 THEN BEGIN Writeln; i := 0; END;
  50.         IF i <> 0 THEN Write(' | ');
  51.         Write(d,u,': ');
  52.         FOR Loop:= Start+1 TO Start+8 do
  53.           Write(Chr(Mem[Addr(DMA)+Loop]));
  54.         Write('.');
  55.         FOR Loop:= Start+9 TO Start+11 DO
  56.           Write(Chr(Mem[Addr(DMA)+Loop]));
  57.         i := i + 1
  58.       END
  59.   UNTIL Error=255;
  60.   Writeln
  61. END. { CPM80Dir }
  62.