home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* DIRMTTYP.PAS *)
- (* (c) 1987 Michael Ceol & PASCAL INT. *)
- (* Typ-Definitionen fuer die MS-DOS/TOS Version der Directory-Bibliothek: *)
- BYTE = 0..255;
- Dir_Chr0 = PACKED ARRAY[1..80] OF CHAR; (* fuer System-Parameter *)
- Dir_Str = STRING[80]; (* der Typ wird fuer vieles verwendet... *)
- Time_Str = STRING[6]; (* enthaelt Uhrzeit im Format "hhmmss" *)
- Date_Str = STRING[8]; (* enthaelt Datum im Format "yyyymmdd" *)
-
- (* fuer MS-DOS wird ab jetzt auch ein richtiger File Control Block (FCB) *)
- (* benoetigt: *)
-
- FCB_Rec = RECORD (* nur fuer MS-DOS relevant! *)
- (* Idendifikation eines erweiterter FCBs (XFCB).
- Muss vor dem Aufruf einer diesen FCB-Typ verwen-
- denten MS-DOS-Funktion mit dem Wert 255(dez.)
- initialisiert werden, damit er als solcher er-
- kannt wird: *)
- XFCB : BYTE;
- reserv : ARRAY[1..5] OF BYTE; (* reserviert *)
- (* das Attribut-Byte dient z.B. zum aendern des-
- selbigen einer Datei (kriegen wir noch): *)
- attr : BYTE;
-
- (* ab hier der n o r m a l e FCB: *)
- (* Laufwerknummer: 0-16. 0 => angemeldetes Laufwerk,
- 1 => Laufwerk A, 2 => Laufwerk B, usw... *)
- drive : BYTE;
- (* Dateiname [1..8], Dateityp[9..11]. Beides ASCII-
- Grossbuchstaben, mit Leerzeichen aufgefuellt: *)
- name : ARRAY[1..11] OF CHAR;
- (* Gegenwaertige Blocknummer, relativ zum Dateian-
- fang, startend mit Null (wird beim eroeffnen auf
- Null gesetzt). Ein Block besteht aus 128 Records
- mit jeweils "reclen" Bytes: *)
- curblk : INTEGER;
- (* logische Satzlaenge in Bytes, muss vom Benutzer
- gesetzt werden, falls ungleich 128 gewuenscht: *)
- reclen : INTEGER;
- (* Dateigroesse in Bytes: *)
- szlo,
- szhi : INTEGER;
- (* Datum Dateierstellung bzw. letzte Aenderung: *)
- date : INTEGER;
- (* Reserviert fuer Systemverwendung: *)
- system : ARRAY[1..10] OF BYTE;
- (* gegenwaertige relative Satznummer (0-127) des ge-
- genwaertigen Blockes. Muss vom Benutzer v o r
- sequentiellen Schreib-/Leseoperationen gesetzt
- werden: *)
- currec : BYTE;
- (* relative Satznummer, startend mit Null, fuer wahl-
- freie Schreib-/Leseoperationen. Muss vom Benutzer
- gesetzt werden! *)
- recnlo,
- recnhi : INTEGER;
- END;
-
- (* Struktur der "Disk-Transfer-Area" (Disketten-Uebertragungs-Bereich,
- DTA), in die ein vom BS gefundener Directory-Eintrag uebertragen wird.
- MS-DOS und TOS stimmen bis auf die Reihenfolge von "time" und "date"
- (s.u.) ueberein, waehrend CP/M einen voellig anderen Weg geht (s.
- DIRCPTYP.PAS). Aus Kompatibilitaetsgruenden folgt eine fuer Turbo-
- isten ungewoehnlich Satzstruktur. "resv[21]" enthaelt die Attribute
- des Directory-Eintrages (ging mit Pascal ST+ nicht anders!): *)
- DTA_Rec = PACKED RECORD
- resv : PACKED ARRAY[0..21] OF BYTE;
- time, (* fuer ATARI ST/TOS muessen 'time' *)
- date : INTEGER; (* und 'date' vertauscht werden !!! *)
- szlo,
- szhi : INTEGER;
- name : PACKED ARRAY[1..13] OF CHAR;
- END;
- (* aus Portabititaetsgruenden muss die DTA dynamisch verwaltet werden: *)
- DTA_Ptr = ^DTA_Rec;
- (* die von der Bibliothek verwendete, interne *)
- Dir_Rec = RECORD (* Representation eines Dateieintrages: *)
- name : STRING[8];
- ext : STRING[3];
- time : Time_Str;
- date : Date_Str;
- size : REAL;
- attr : BYTE;
- END;
- Dir_Typ = RECORD (* und ein ganzes Verzeichnis: *)
- num : 0..DirSizeMax; (* Anz. gefundener Eintraege *)
- items : ARRAY[1..DirSizeMax] OF Dir_Rec;
- END;
-
- (* und noch die Ergebnis-Struktur der MS-DOS/TOS DFree-Funktion.
- REAL wurde verwendet, um auch bei Festplatten anstaendige Er-
- gebnisse zu erzielen: *)
- DSK_Info = RECORD
- FreeCluster, (* Anzahl freier Cluster der Disk *)
- TotalCluster, (* Anzahl Cluster insgesamt *)
- SectorSize, (* Groesse eines phys. Sektor in Bytes *)
- ClusterSize : REAL (* Anzahl Sektoren pro Cluster *)
- END;
- (* ----------------------------------------------------------------------- *)
- (* DIRMTTYP.PAS *)