home *** CD-ROM | disk | FTP | other *** search
-
- UNIT DETECTRD;
- {
- FESTSTELLEN DER INSTALLIERTEN RAMDISK(S)
- FESTSTELLEN LAUFWERKSBEZEICHNER UND KAPAZITÄT DER GRÖßTEN VON GGF.
- MEHREREN RAMDISKS
-
- DETECTRD IST ZU BENUTZEN IN VERBINDUNG MIT SELECTD.
- EINE TEMPORÄRE DATEI ERHÄLT DANN DEN NAMEN RAMDRIVE+'DATEINAME' -
- DIE WIRD AUTOMATISCH AUF EINE RAMDISK GELEGT, FALLS EINE VORHANDEN IST,
- ANSONSTEN HAT AUF DEM DIRECTORY DES HAUPTPROGRAMMS.
-
- RAMDISKS WERDEN AM VOLUMEID ERKANNT, FOLGENDE VOLUMEIDS SIND BEKANNT :
- 'VDISK' IN DEN 1. 5 BUCHSTABEN = MDOS < 4.0 UND DRDOS
- 'MS-RAMDR.IVE' = MSDOS 4.0
- }
- {$F+}
-
- INTERFACE
-
-
- USES DOS,TPDOS;
-
-
- {
- RAMDRIVES ENTHÄLT GGF. MEHRERE LAUFWERKSBEZEICHNER FÜR RAMDISKS OHNE ':'
- }
- CONST RAMDRIVES : STRING[8] = '';
-
- {
- RAMDRIVE ENTHÄLT DEN LAUFWERKSBEZEICHNER DER GRÖßTEN RAMDISK INCLUSIV ':'
- RAMDKAP ENTHÄLT DIE KAPAZITÄT IN k BYTES DER GRÖßTEN RAMDISK
- }
- VAR RAMDRIVE : STRING[2];
- RAMDKAP : WORD;
-
-
- IMPLEMENTATION
-
-
- TYPE SOF = RECORD O,S : WORD; END;
- BYTEARR = ARRAY[1..20] OF BYTE;
-
- VAR R : REGISTERS;
- F : SEARCHREC;
- DRVCNT,I,NBD : BYTE;
- HP : ^BYTEARR;
- CLAV,CLTO,BPS,SPC : WORD;
- L1 : LONGINT;
-
-
- BEGIN
- DRVCNT := 0;
- RAMDRIVE := '';
- RAMDKAP := 0;
- NBD := 0;
-
- R.AH := $52;
- MSDOS(R);
- {
- ZUERST DIE ANZAHL BLOCKDEVICES FESTSTELLEN - NUMBEROFDRIVES IST
- HIERFÜR UNGEEIGNET
- }
- HP := POINTER(MEML[R.ES:R.BX+12]);
- WHILE (SOF(HP).O <> $FFFF) DO BEGIN
- IF ((HP^[6] AND $80) = 0) THEN INC(NBD,HP^[11]);
- HP := POINTER(MEML[SOF(HP).S:SOF(HP).O]);
- END; { WHILE }
- {
- DIE BLOCKDEVICES MIT TREIBERKOPF AUßERHALB SEGMENT $70 AUF VOLUMEIDS
- ABKLOPFEN, DIE RAMDISKS MARKIEREN
- }
- HP := POINTER(MEML[R.ES:R.BX+12]);
- WHILE (SOF(HP).O <> $FFFF) AND (SOF(HP).S <> $70) DO BEGIN
- IF HP^[11] < 27 THEN BEGIN
- I := SUCC(NBD - DRVCNT - HP^[11]);
-
- INC(DRVCNT,HP^[11]);
- FINDFIRST(CHR(I+$40)+':\*.*',VOLUMEID,F);
- IF (DOSERROR = 0) AND
- ((COPY(F.NAME,1,5) = 'VDISK') OR
- (F.NAME = 'MS-RAMDR.IVE') ) THEN BEGIN
- INSERT(CHR(I+$40),RAMDRIVES,1);
- IF GETDISKINFO(I,CLAV,CLTO,BPS,SPC) THEN BEGIN
- L1 := CLAV; L1 := L1*BPS*SPC DIV 1024;
- IF L1 > RAMDKAP THEN BEGIN
- RAMDRIVE := CHR(I+$40)+':';
- RAMDKAP := L1;
- END; { IF L1 > RAMDKAP }
- END; { IF GETDISKINFO }
- END;
- END;
- HP := POINTER(MEML[SOF(HP).S:SOF(HP).O]);
- END; { WHILE }
- END.
-
-