home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / PROG / PASCAL / MISCTI10.ZIP / TI228.ASC < prev    next >
Encoding:
Text File  |  1988-04-18  |  2.0 KB  |  70 lines

  1. PRODUCT : TURBO PASCAL     NUMBER : 228
  2. VERSION : 3.0xx
  3.      OS : PC-DOS
  4.    DATE : March 13, 1986
  5.  
  6.   TITLE : ACTIVATING SIDEKICK FROM WITHIN A TURBO PASCAL PROGRAM
  7.  
  8. This  program is an example of how a Turbo Pascal Program can  be 
  9. used  to  activate  the main menu of  SideKick.   It  works  with 
  10. SideKick 1.50 or later versions only,  and with TURBO PASCAL 3.01 
  11. IBM compatible systems only.
  12.  
  13.  
  14. program ActivateSidekick;
  15.  
  16. function Sidekick: Boolean;
  17. const
  18.   SKactOffset = $012D;
  19.   SKverOffset = $012A;
  20. type
  21.   RegPack     = record
  22.                   case Integer of
  23.                     1: (AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags:
  24. Integer);
  25.                     2: (AL,AH,BL,BH,CL,CH,DL,DH         : Byte);
  26.                 end;
  27.   Address     = record
  28.                   Offset : Integer;
  29.                   Segment: Integer;
  30.                 end;
  31.   SKstr       = array[1..2] of Char;
  32.   SKstrPtr    = ^SKstr;
  33. var
  34.   SKbios08Trap: Address absolute $0000:$0020  
  35.                    { Sidekick timer tick trap };
  36.   SKbios25Trap: Address absolute $0000:$0094  
  37.                    { Sidekick DOS int 25 trap };
  38.   SKfound     : Boolean;
  39.   SKstrCheck  : SKstrPtr;
  40.   R           : RegPack;
  41.  
  42. begin
  43.   with SKbios25Trap do SKstrCheck:=Ptr(Segment, Offset-2);
  44.   SKfound:=(SKstrCheck^ = 'SK');
  45.   if not SKfound then
  46.   begin
  47.     with SKbios08Trap do SKstrCheck:=Ptr(Segment, Offset-4);
  48.     SKfound:=(SKstrCheck^ = 'SK');
  49.   end;
  50.  
  51.   { Check Sidekick version number (must be >= 1.50) }
  52.   SKfound:=
  53.         (SKfound and (Mem[Seg(SKstrCheck^): SKverOffset] >= 1)
  54.                  and (Mem[Seg(SKstrCheck^): SKverOffset+1] >=
  55. 50));
  56.   if SKfound then
  57.   begin
  58.     Mem[Seg(SKstrCheck^): SKactOffset]:=1;  
  59.                    { Set Sidekick activate flag    }
  60.     Intr($28, R);                           
  61.                    { Turn control over to Sidekick }
  62.   end;
  63.   Sidekick:=SKfound;
  64. end  { Sidekick };
  65.  
  66. begin
  67.   if not Sidekick then Writeln('Sidekick 1.50 or later not
  68. loaded');
  69. end.
  70.