home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
files
/
bbs
/
pibterm
/
pibt3sp1
/
initovly.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1985-09-09
|
7KB
|
176 lines
(*----------------------------------------------------------------------*)
(* InitOvly --- initialize PibTerm overlays *)
(*----------------------------------------------------------------------*)
PROCEDURE InitOvly;
(*----------------------------------------------------------------------*)
(* *)
(* PROCEDURE: InitOvly *)
(* *)
(* Purpose: Initializes PibTerm directory for overlay searches *)
(* *)
(* Calling Sequence: *)
(* *)
(* InitOvly; *)
(* *)
(* Remarks: *)
(* *)
(* The PibTerm directory should have been set by a previous *)
(* SET PIBTERM= DOS specification. *)
(* *)
(*----------------------------------------------------------------------*)
VAR
Ovr_Dir : AnyStr;
Ierr : INTEGER;
(*----------------------------------------------------------------------*)
(* GetPibTermSpec --- get PibTerm directory from environment *)
(*----------------------------------------------------------------------*)
FUNCTION GetPibTermSpec: AnyStr;
(*----------------------------------------------------------------------*)
(* *)
(* Function: GetPibTermSpec *)
(* *)
(* Purpose: Get PibTerm directory from DOS enviroment area *)
(* *)
(* Calling Sequence: *)
(* *)
(* PibTermDir := GetPibTermSpec : AnyStr; *)
(* *)
(* PibTermDir --- the PIBTERM= string from the DOS enviroment *)
(* area, or the null string if not found. *)
(* *)
(* Remarks: *)
(* *)
(* The PibTerm directory must have been set by a previous *)
(* SET PIBTERM= DOS specification. *)
(* *)
(*----------------------------------------------------------------------*)
TYPE
DosEnv = ARRAY[0..32767] OF CHAR;
VAR
EnvPtr: ^DosEnv;
EnvStr: AnyStr;
Done : BOOLEAN;
I : INTEGER;
BEGIN (* GetPibTermSpec *)
(* Get address of DOS environment area *)
EnvPtr := Ptr( MemW[ CSeg:$002C ] , 0 );
(* Begin loop looking for 'PIBTERM=' *)
I := 0;
Done := FALSE;
EnvStr := '';
GetPibTermSpec := '';
REPEAT
IF EnvPtr^[I] = CHR( 0 ) THEN
BEGIN
(* Environment area ends with two *)
(* successive 0 bytes. *)
IF ( EnvPtr^[I+1] = CHR( 0 ) ) THEN
Done := TRUE;
(* See if we have 'PIBTERM='. If so, *)
(* extract the directory information. *)
IF ( COPY( EnvStr , 1 , 8 ) = 'PIBTERM=' ) THEN
BEGIN
GetPibTermSpec := COPY( EnvStr, 9, LENGTH( EnvStr ) - 8 );
Done := TRUE;
END;
(* Set current environment string to null *)
EnvStr := '';
END
ELSE
(* Not CHR(0) --- append to current *)
(* environment string being extracted. *)
EnvStr := EnvStr + EnvPtr^[I];
I := I + 1;
UNTIL Done;
END (* GetPibTermSpec *);
(*----------------------------------------------------------------------*)
BEGIN (* InitOvly *)
(* Search DOS environment for *)
(* PIBTERM= definition. *)
Ovr_Dir := GetPibTermSpec;
(* See if environment string *)
(* makes sense. *)
IF ( LENGTH( Ovr_Dir ) > 0 ) THEN
IF ( NOT ( Ovr_Dir[1] IN ['A'..'Z','a'..'z'] ) ) THEN
Ovr_Dir := '';
IF ( LENGTH( Ovr_Dir ) > 0 ) THEN
BEGIN
(* PIBTERM= found in environment --- *)
(* set home drive and directory *)
IF ( Ovr_Dir[2] = ':' ) THEN
BEGIN
Home_Drive := UpCase( Ovr_Dir[1] );
IF LENGTH( Ovr_Dir ) > 2 THEN
Home_Dir_Path := COPY( Ovr_Dir, 3, LENGTH( Ovr_Dir ) - 2 )
ELSE
Home_Dir_Path := '';
END
ELSE
BEGIN
Home_Drive := Dir_Get_Default_Drive;
Home_Dir_Path := Ovr_Dir;
END;
IF ( LENGTH( Home_Dir_Path ) > 0 ) THEN
IF ( Home_Dir_Path[ LENGTH( Home_Dir_Path ) ] = '\' ) THEN
IF LENGTH( Home_Dir_Path ) > 1 THEN
Home_Dir_Path := COPY( Home_Dir_Path, 1,
LENGTH( Home_Dir_Path ) - 1 )
ELSE
Home_Dir_Path := '';
IF ( LENGTH( Home_Dir_Path ) > 0 ) THEN
IF ( Home_Dir_Path[ 1 ] = '\' ) THEN
IF LENGTH( Home_Dir_Path ) > 1 THEN
Home_Dir_Path := COPY( Home_Dir_Path, 2,
LENGTH( Home_Dir_Path ) - 1 )
ELSE
Home_Dir_Path := '';
END
ELSE
BEGIN
(* No PIBTERM= in environment --- *)
(* get current drive and directory *)
Home_Drive := Dir_Get_Default_Drive;
Ierr := Dir_Get_Current_Path( Home_Drive, Home_Dir_Path );
END;
(* Make PibTerm files findable *)
IF ( Home_Dir_Path <> '') THEN
Home_Dir := Home_Drive + ':\' + Home_Dir_Path + '\'
ELSE
Home_Dir := Home_Drive + ':';
OvrPath( Home_Drive + ':\' + Home_Dir_Path );
END (* InitOvly *);ə