home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 01 / dirlib / dirmttyp.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-08-25  |  5.0 KB  |  86 lines

  1. (* ----------------------------------------------------------------------- *)
  2. (*                              DIRMTTYP.PAS                               *)
  3. (*              (c) 1987  Michael Ceol & PASCAL INT.                       *)
  4. (*  Typ-Definitionen fuer die MS-DOS/TOS Version der Directory-Bibliothek: *)
  5.   BYTE     = 0..255;
  6.   Dir_Chr0 = PACKED ARRAY[1..80] OF CHAR;         (* fuer System-Parameter *)
  7.   Dir_Str  = STRING[80];          (* der Typ wird fuer vieles verwendet... *)
  8.   Time_Str = STRING[6];           (* enthaelt Uhrzeit im Format "hhmmss"   *)
  9.   Date_Str = STRING[8];           (* enthaelt Datum im Format "yyyymmdd"   *)
  10.  
  11.   FCB_Rec = RECORD                            (* nur fuer MS-DOS relevant! *)
  12.               XFCB   : BYTE;                  (* erweiterter FCB - Ident.  *)
  13.               reserv : ARRAY[1..5] OF BYTE;   (* reserviert                *)
  14.               attr   : BYTE;
  15.                                                           (* normaler FCB: *)
  16.                        (* Laufwerknummer: 0-16. 0 => angemeldetes Laufwerk,
  17.                           1 => Laufwerk A, 2 => Laufwerk B, usw...         *)
  18.               drive  : BYTE;
  19.                        (* Dateiname [1..8], Dateityp[9..11]. Beides ASCII-
  20.                           Grossbuchstaben, mit Leerzeichen aufgefuellt:    *)
  21.               name   : ARRAY[1..11] OF CHAR;
  22.                        (* Gegenwaertige Blocknummer, relativ zum Dateian-
  23.                           fang, startend mit Null (wird beim eroeffnen auf
  24.                           Null gesetzt). Ein Block besteht aus 128 Records
  25.                           mit jeweils "reclen" Bytes:                      *)
  26.               curblk : INTEGER;
  27.                        (* logische Satzlaenge in Bytes, muss vom Benutzer
  28.                           gesetzt werden, falls ungleich 128 gewuenscht:   *)
  29.               reclen : INTEGER;
  30.                        (* Dateigroesse in Bytes:                           *)
  31.               szlo,
  32.               szhi   : INTEGER;
  33.                        (* Datum Dateierstellung bzw. letzte Aenderung:     *)
  34.               date   : INTEGER;
  35.                        (* Reserviert fuer Systemverwendung:                *)
  36.               system : ARRAY[1..10] OF BYTE;
  37.                        (* gegenwaertige relative Satznummer (0-127) des ge-
  38.                           genwaertigen Blockes. Muss vom Benutzer  v o r
  39.                           sequentiellen Schreib-/Leseoperationen gesetzt
  40.                           werden:                                          *)
  41.               currec : BYTE;
  42.                        (* relative Satznummer, startend mit Null, fuer wahl-
  43.                           freie Schreib-/Leseoperationen. Muss vom Benutzer
  44.                           gesetzt werden!                                  *)
  45.               recnlo,
  46.               recnhi : INTEGER;
  47.             END;
  48.   (* Struktur der "Disk-Transfer-Area" (Disketten-Uebertragungs-Bereich,
  49.      DTA), in die ein vom BS gefundener Directory-Eintrag uebertragen wird.
  50.      MS-DOS und TOS stimmen bis auf die Reihenfolge von "time" und "date"
  51.      (s.u.) ueberein, waehrend CP/M einen voellig anderen Weg geht (s.
  52.      DIRCPTYP.PAS). Aus Kompatibilitaetsgruenden folgt eine fuer Turbo-
  53.      isten ungewoehnlich Satzstruktur. "resv[21]" enthaelt die Attribute
  54.      des Directory-Eintrages (ging mit Pascal ST+ nicht anders!):          *)
  55.   DTA_Rec  = PACKED RECORD
  56.                resv : PACKED ARRAY[0..21] OF BYTE;
  57.                time,                   (* fuer ATARI ST/TOS muessen 'time' *)
  58.                date : INTEGER;         (* und 'date' vertauscht werden !!! *)
  59.                szlo,
  60.                szhi : INTEGER;
  61.                name : PACKED ARRAY[1..13] OF CHAR;
  62.              END;
  63.     (* aus Portabititaetsgruenden muss die DTA dynamisch verwaltet werden: *)
  64.   DTA_Ptr  = ^DTA_Rec;
  65.                              (* die von der Bibliothek verwendete, interne *)
  66.   Dir_Rec  = RECORD          (* Representation eines Dateieintrages:       *)
  67.                name : STRING[8];
  68.                ext  : STRING[3];
  69.                time : Time_Str;
  70.                date : Date_Str;
  71.                size : REAL;
  72.                attr : BYTE;
  73.              END;
  74.   Dir_Typ  = RECORD                         (* und ein ganzes Verzeichnis: *)
  75.                num   : 0..DirSizeMax;       (* Anz. gefundener Eintraege   *)
  76.                items : ARRAY[1..DirSizeMax] OF Dir_Rec;
  77.              END;
  78.   DSK_Info = RECORD     (* Ergebnis-Struktur der MS-DOS/TOS DFree-Funktion *)
  79.                FreeCluster,         (* Anzahl freier Cluster der Disk      *)
  80.                TotalCluster,        (* Anzahl Cluster insgesamt            *)
  81.                SectorSize,          (* Groesse eines phys. Sektor in Bytes *)
  82.                ClusterSize  : REAL  (* Anzahl Sektoren pro Cluster         *)
  83.              END;
  84. (* ----------------------------------------------------------------------- *)
  85. (*                              DIRMTTYP.PAS                               *)
  86.