home *** CD-ROM | disk | FTP | other *** search
/ Crazy Collection 1 / CC-01.iso / GAMES_1 / BEER / DATA.A00 / TRAIN.C < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-11  |  1.9 KB  |  95 lines

  1. # include <dos.h>
  2. # include <mem.h>
  3. # include <process.h>
  4. # include <conio.h>
  5.  
  6. static void interrupt (*old_vec_10) (void);
  7.  
  8. static char enable_st = 1;
  9.  
  10. extern unsigned _heaplen = 512;
  11. extern unsigned _stklen  = 1024;
  12.  
  13. static void interrupt vec_10 (void)
  14. {
  15.   unsigned PSP;
  16.  
  17.   char huge *p;
  18.  
  19.   static char mask [] = { 0xff, 0x0e, 0xc6, 0x1e };
  20.  
  21.   static char mask_st [] = { 0x74, 0x2c, 0x6a, 0x00 };
  22.  
  23.   enable ();
  24.  
  25.   _AH = 0x62; geninterrupt (0x21);
  26.  
  27.   PSP = _BX;
  28.  
  29.   for (p = MK_FP (PSP,0x100);
  30.        p < (char huge *)MK_FP (*(unsigned far *)MK_FP (0,0x413) * 0x40,0); p++)
  31.     if (*p == mask [0])
  32.     {
  33.       char huge *p1 = p + 1;
  34.  
  35.       register unsigned i = 1;
  36.  
  37.       while (i < sizeof (mask) && *p1++ == mask [i++]) ;
  38.  
  39.       if (i == sizeof (mask))
  40.       {
  41.         *p++ = 0x90; *p++ = 0x90; *p++ = 0x90; *p++ = 0x90;
  42.  
  43.         break;
  44.       }
  45.     }
  46.  
  47.   if (enable_st)
  48.     for (p = MK_FP (PSP,0x100);
  49.          p < (char huge *)MK_FP (*(unsigned far *)MK_FP (0,0x413) * 0x40,0); p++)
  50.       if (*p == mask_st [0])
  51.       {
  52.         char huge *p1 = p + 1;
  53.  
  54.         register unsigned i = 1;
  55.  
  56.         while (i < sizeof (mask_st) && *p1++ == mask_st [i++]) ;
  57.  
  58.         if (i == sizeof (mask_st))
  59.         {
  60.           *p = 0xeb;
  61.  
  62.           break;
  63.         }
  64.       }
  65.  
  66.   setvect (0x10,old_vec_10);
  67.  
  68.   *(unsigned far *)MK_FP (_SS,_BP + 18) -= 2;
  69. }
  70.  
  71. void main (int ac, char **av)
  72. {
  73.   if (ac == 2 && (av [1][0] == '-' || av [1][0] == '/') &&
  74.                  (av [1][1] == 'g' || av [1][1] == 'G'))
  75.     enable_st = 0;
  76.  
  77.   cputs ("\r\nBeer Trainer   (C) 1994 Dangerous Software\r\n\n");
  78.  
  79.   if (enable_st) cputs ("(to disable God Mode run TRAIN -G)\r\n\n");
  80.  
  81.   sleep (3);
  82.  
  83.   cputs ("Have a nice beer!\r\n\n");
  84.  
  85.   sleep (3);
  86.  
  87.   old_vec_10 = getvect (0x10);
  88.  
  89.   setvect (0x10,vec_10);
  90.  
  91.   spawnl (P_WAIT,"beer.exe","beer.exe",NULL);
  92.  
  93.   setvect (0x10,old_vec_10);
  94. }
  95.