home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 10 / dosfunc / dirmt.psp < prev    next >
Encoding:
Text File  |  1987-08-04  |  2.4 KB  |  41 lines

  1. (* ----------------------------------------------------------------------- *)
  2. (*                             DIRMT.PSP                                   *)
  3. (*              (c) 1987  Michael Ceol & PASCAL INT.                       *)
  4. (*  System- und Compiler-spezifischer Teil der Directory-Bibliothek fuer   *)
  5. (*                    ATARI TOS in Pascal ST Plus                          *)
  6. (*       programmiert und getestet auf einem ST 1040 mit ROM-BS            *)
  7. (* ----------------------------------------------------------------------- *)
  8. (*       neue DTA-Adresse setzen bzw. aktuelle DTA-Adresse holen:          *)
  9. PROCEDURE FSetDTA (DTA: DTA_Ptr); GEMDOS($1A);
  10. FUNCTION FGetDTA: DTA_Ptr; GEMDOS($2F);
  11. (* ----------------------------------------------------------------------- *)
  12. (*             ersten Directory-Eintrag bzw. naechsten suchen:             *)
  13. FUNCTION FSFirst (VAR search: Dir_Chr0; attr: INTEGER): INTEGER; GEMDOS($4E);
  14. FUNCTION FSNext: INTEGER; GEMDOS($4F);
  15. (* ----------------------------------------------------------------------- *)
  16. (*              zwei Compiler-abhaengige Bit-Funktionen:                   *)
  17. (* Die Bits von "value" um "n" Stellen nach rechts shiften (verschieben):  *)
  18. FUNCTION ShiftR (value, n: INTEGER): INTEGER;
  19. BEGIN  ShiftR := SHR(value,n)  END;
  20. (*              Die Bits von "val1" und "val2" undieren:                   *)
  21. FUNCTION AndInt (val1, val2: INTEGER): INTEGER;
  22. BEGIN  AndInt := val1 & val2  END;
  23. (* ----------------------------------------------------------------------- *)
  24. (*     nochmal zwei eventuell anzupassende Routinen, die hier aber fuer    *)
  25. (*              Turbo Pascal und Pascal ST Plus gleich sind:               *)
  26. (* Integer-Wert zu einer 'n'-stelligen Zeichenkette mit fuehrenden Nullen: *)
  27. PROCEDURE IntStr (value, n: INTEGER; VAR s: Dir_Str);
  28. VAR i : INTEGER;  Ch: CHAR;
  29. BEGIN
  30.   s := '';
  31.   FOR i := 1 TO n DO BEGIN
  32.     s := Concat(Chr((value MOD 10)+Ord('0')),s);  value := value DIV 10;
  33.   END;
  34. END;
  35. (* wg. negativen Integer-Werten bei grossen Dateigroessen selbigen Wert zu *)
  36. (*                 einem positiven Real-Wert konvertieren:                 *)
  37. FUNCTION IntCard (i: INTEGER): REAL;
  38. BEGIN IF i < 0 THEN IntCard := 65536.0 + i ELSE IntCard := i; END;
  39. (* ----------------------------------------------------------------------- *)
  40. (*                             DIRMT.PSP                                   *)
  41.