home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 11 / dirlib / dirmttyp.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-08-30  |  5.8 KB  |  102 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. (*  fuer MS-DOS wird ab jetzt auch ein richtiger File Control Block (FCB)  *)
  12. (*                                benoetigt:                               *)
  13.  
  14.   FCB_Rec = RECORD                            (* nur fuer MS-DOS relevant! *)
  15.                        (* Idendifikation eines erweiterter FCBs (XFCB).
  16.                           Muss vor dem Aufruf einer diesen FCB-Typ verwen-
  17.                           denten MS-DOS-Funktion mit dem Wert 255(dez.)
  18.                           initialisiert werden, damit er als solcher er-
  19.                           kannt wird:                                      *)
  20.               XFCB   : BYTE;
  21.               reserv : ARRAY[1..5] OF BYTE;   (* reserviert                *)
  22.                        (* das Attribut-Byte dient z.B. zum aendern des-
  23.                           selbigen einer Datei (kriegen wir noch):         *)
  24.               attr   : BYTE;
  25.  
  26.                        (* ab hier der   n o r m a l e   FCB:               *)
  27.                        (* Laufwerknummer: 0-16. 0 => angemeldetes Laufwerk,
  28.                           1 => Laufwerk A, 2 => Laufwerk B, usw...         *)
  29.               drive  : BYTE;
  30.                        (* Dateiname [1..8], Dateityp[9..11]. Beides ASCII-
  31.                           Grossbuchstaben, mit Leerzeichen aufgefuellt:    *)
  32.               name   : ARRAY[1..11] OF CHAR;
  33.                        (* Gegenwaertige Blocknummer, relativ zum Dateian-
  34.                           fang, startend mit Null (wird beim eroeffnen auf
  35.                           Null gesetzt). Ein Block besteht aus 128 Records
  36.                           mit jeweils "reclen" Bytes:                      *)
  37.               curblk : INTEGER;
  38.                        (* logische Satzlaenge in Bytes, muss vom Benutzer
  39.                           gesetzt werden, falls ungleich 128 gewuenscht:   *)
  40.               reclen : INTEGER;
  41.                        (* Dateigroesse in Bytes:                           *)
  42.               szlo,
  43.               szhi   : INTEGER;
  44.                        (* Datum Dateierstellung bzw. letzte Aenderung:     *)
  45.               date   : INTEGER;
  46.                        (* Reserviert fuer Systemverwendung:                *)
  47.               system : ARRAY[1..10] OF BYTE;
  48.                        (* gegenwaertige relative Satznummer (0-127) des ge-
  49.                           genwaertigen Blockes. Muss vom Benutzer  v o r
  50.                           sequentiellen Schreib-/Leseoperationen gesetzt
  51.                           werden:                                          *)
  52.               currec : BYTE;
  53.                        (* relative Satznummer, startend mit Null, fuer wahl-
  54.                           freie Schreib-/Leseoperationen. Muss vom Benutzer
  55.                           gesetzt werden!                                  *)
  56.               recnlo,
  57.               recnhi : INTEGER;
  58.             END;
  59.  
  60.   (* Struktur der "Disk-Transfer-Area" (Disketten-Uebertragungs-Bereich,
  61.      DTA), in die ein vom BS gefundener Directory-Eintrag uebertragen wird.
  62.      MS-DOS und TOS stimmen bis auf die Reihenfolge von "time" und "date"
  63.      (s.u.) ueberein, waehrend CP/M einen voellig anderen Weg geht (s.
  64.      DIRCPTYP.PAS). Aus Kompatibilitaetsgruenden folgt eine fuer Turbo-
  65.      isten ungewoehnlich Satzstruktur. "resv[21]" enthaelt die Attribute
  66.      des Directory-Eintrages (ging mit Pascal ST+ nicht anders!):          *)
  67.   DTA_Rec  = PACKED RECORD
  68.                resv : PACKED ARRAY[0..21] OF BYTE;
  69.                time,                   (* fuer ATARI ST/TOS muessen 'time' *)
  70.                date : INTEGER;         (* und 'date' vertauscht werden !!! *)
  71.                szlo,
  72.                szhi : INTEGER;
  73.                name : PACKED ARRAY[1..13] OF CHAR;
  74.              END;
  75.     (* aus Portabititaetsgruenden muss die DTA dynamisch verwaltet werden: *)
  76.   DTA_Ptr  = ^DTA_Rec;
  77.                              (* die von der Bibliothek verwendete, interne *)
  78.   Dir_Rec  = RECORD          (* Representation eines Dateieintrages:       *)
  79.                name : STRING[8];
  80.                ext  : STRING[3];
  81.                time : Time_Str;
  82.                date : Date_Str;
  83.                size : REAL;
  84.                attr : BYTE;
  85.              END;
  86.   Dir_Typ  = RECORD                         (* und ein ganzes Verzeichnis: *)
  87.                num   : 0..DirSizeMax;       (* Anz. gefundener Eintraege   *)
  88.                items : ARRAY[1..DirSizeMax] OF Dir_Rec;
  89.              END;
  90.  
  91.           (* und noch die Ergebnis-Struktur der MS-DOS/TOS DFree-Funktion.
  92.              REAL wurde verwendet, um auch bei Festplatten anstaendige Er-
  93.              gebnisse zu erzielen:                                         *)
  94.   DSK_Info = RECORD
  95.                FreeCluster,         (* Anzahl freier Cluster der Disk      *)
  96.                TotalCluster,        (* Anzahl Cluster insgesamt            *)
  97.                SectorSize,          (* Groesse eines phys. Sektor in Bytes *)
  98.                ClusterSize  : REAL  (* Anzahl Sektoren pro Cluster         *)
  99.              END;
  100. (* ----------------------------------------------------------------------- *)
  101. (*                              DIRMTTYP.PAS                               *)
  102.