home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* EXPAND.PAS *)
- (* (c) 1991 Niels Rump, Andreas Brostmeyer & TOOLBOX *)
- (* ------------------------------------------------------ *)
- {$R-,S-,I-,D-}
-
- USES Dos;
-
- VAR
- Regs : Registers;
- Segment : WORD;
- Offset : WORD;
- Nr : BYTE;
- Pfad : PathStr;
-
- BEGIN
- GetDir(0, Pfad);
- Nr := Ord(Pfad[1])-65;
- Regs.ah := $52; { Undokumentierte DOS-Funktion: }
- Intr($21, Regs); { Hole Zeiger auf DOS-Info-Block }
-
- WITH Regs DO BEGIN
- { Aus dem DIB wird der Anfang der Pfad- }
- { Tabelle bestimmt und die Adresse des }
- Offset := MemW[es:bx+$16]+Nr*88; { Eintrags }
- Segment := MemW[es:bx+$18]; { berechnet }
- END;
-
- Pfad := ''; { Der neue Pfad wird aus der }
- { Tabelle aufgebaut }
- WHILE Mem[Segment:Offset] <> 0 DO BEGIN
- Pfad := Pfad+Chr(Mem[Segment:Offset]);
- INC(Offset);
- END;
-
- ChDir(Pfad); { In den neuen Pfad wechseln }
-
- END.
- (* ------------------------------------------------------ *)
- (* Ende von EXPAND.PAS *)
-