home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / caddy.zip / CADDY.PAS < prev   
Pascal/Delphi Source File  |  1988-03-08  |  4KB  |  132 lines

  1. {$M 17000,0,0}
  2. program caddy;
  3. uses Crt, Dos;
  4.  
  5. const
  6.    F1: boolean = false;
  7.    F1KEY = $3B;
  8.  
  9. var
  10.    ScreenBuf: array[1..16384] of byte;
  11.    OldInt9: pointer;
  12.    Signature: pointer;
  13.    Option: string;
  14.  
  15. procedure GolfHelpProc(flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:word);
  16. Interrupt;
  17. var
  18.    counter: word;
  19.    MemPtr: integer;
  20.    ch: char;
  21.  
  22. begin
  23.    INLINE(
  24.    $9C/              {PUSHF}
  25.    $E4/$60/          {IN     AL,$60 ; read keyboard port}
  26.    $3C/<F1KEY/       {COM    AL,<F1KEY}
  27.    $74/$04/          {JZ     Delete_Pressed}
  28.    $EB/$06/          {CONTINUE IF NOT}
  29.    (* Set F1 to true if F1 key pressed *)
  30.    {Delete_Pressed}
  31.    $C6/$06/>F1/$01); {SET F1 TO TRUE}
  32.  
  33.    if F1 then
  34.    begin
  35.            MemPtr:= $0000;
  36.            for counter := 1 to 16384 do
  37.            begin
  38.                ScreenBuf[counter] := Mem[$B800:MemPtr];
  39.                MemPtr := MemPtr + 1;
  40.            end {for};
  41.            GotoXY(5,1);
  42.            write('Online Caddy by Michael Taylor ');
  43.            GotoXY(5,2);
  44.            write('                               ');
  45.            GotoXY(5,3);
  46.            write('         Full   Short   Dotted ');
  47.            GotoXY(5,4);
  48.            write('                               ');
  49.            GotoXY(5,5);
  50.            write('Driver   265     250     141   ');
  51.            GotoXY(5,6);
  52.            write('3 Wood   242     232     129   ');
  53.            GotoXY(5,7);
  54.            write('4 Wood   231     216     116   ');
  55.            GotoXY(5,8);
  56.            write('2 Iron   221     207     115   ');
  57.            GotoXY(5,9);
  58.            write('3 Iron   204     190     108   ');
  59.            GotoXY(5,10);
  60.            write('4 Iron   198     187      97   ');
  61.            GotoXY(5,11);
  62.            write('5 Iron   185     170      93   ');
  63.            GotoXY(5,12);
  64.            write('6 Iron   175     159      87   ');
  65.            GotoXY(5,13);
  66.            write('7 Iron   165     150      75   ');
  67.            GotoXY(5,14);
  68.            write('8 Iron   147     136      65   ');
  69.            GotoXY(5,15);
  70.            write('9 Iron   136     122      57   ');
  71.            GotoXY(5,16);
  72.            write('P Wedge  120     113      52   ');
  73.            GotoXY(5,17);
  74.            write('                               ');
  75.            GotoXY(5,18);
  76.            Delay(8000);
  77.            MemPtr := $0000;
  78.            for counter := 1 to 16384 do
  79.            begin
  80.                Mem[$B800: MemPtr] := ScreenBuf[counter];
  81.                MemPtr := MemPtr + 1;
  82.            end {for};
  83.      end {if};
  84.      Inline(
  85.             $9D/                   {POPF      ;Restore the Flags}
  86.             $A1/>OldInt9+2/        {MOV  AX,[>OldInt9+2] ; Old vector set to AX}
  87.             $8B/$1E/>OldInt9/      {MOV  BX,[>OldInt9] ; Old vector ofset to BX}
  88.             $87/$5E/$0E/           {XCHG BX,[BP+$0E] ;Swap ofs w/ ret address}
  89.             $87/$46/$10/           {XCHG AX,[BP+$10] ;Swap seg w/ ret address}
  90.             $89/$EC/               {MOV  SP,BP ; Undo procedure's entry code}
  91.             $5D/                   {POP BP}
  92.             $07/                   {POP ES}
  93.             $1F/                   {POP DS}
  94.             $5F/                   {POP DI}
  95.             $5E/                   {POP SI}
  96.             $5A/                   {POP DX}
  97.             $59/                   {POP CX}
  98.             $CB);                  {RETF ; Jump to Old Vector}
  99. end {procedure};
  100.  
  101. Begin
  102.    GetIntVec(67, Signature);
  103.    if Signature = pointer($ffffffff) then
  104.    begin
  105.         writeln('Caddy is already installed.');
  106.         Halt;
  107.    end;
  108.  
  109.    DirectVideo := false;
  110.    Option := ParamStr(1);
  111.    {$V+}
  112.    if (Option = 'off') then
  113.    {$V-}
  114.    begin
  115.         SetIntVec(9, OldInt9);
  116.    end
  117.    else
  118.    begin
  119.         GetIntVec(9, OldInt9);
  120.         SetIntVec(9, @GolfHelpProc);
  121.         Signature := pointer($ffffffff);
  122.         SetIntVec(67, Signature);
  123.         writeln('Online Caddie');
  124.         writeln('   ver 1.1   ');
  125.         writeln('     by      ');
  126.         writeln('Michael Taylor');
  127.         writeln(' ');
  128.         writeln('When running Mean-18, press F1 to activate Caddie');
  129.         Keep(0);
  130.    end;
  131. End.
  132.