home *** CD-ROM | disk | FTP | other *** search
- #include "windows.h"
- #include "stdlib.h"
- #include "stdio.h"
- #include "bios.h"
-
- #include "elkins.h"
-
- static unsigned short s[3]={100, 1000, 10000};
- static unsigned short f[3]={179, 183, 182};
- static unsigned short m[3]={32771, 32779, 32783};
-
-
-
- static void Randomize(void)
- {
- unsigned long ulTime;
-
- _bios_timeofday(_TIME_GETCLOCK, (long *) &ulTime);
-
- s[0]=(unsigned short) (ulTime&0xFF);
- if (s[0]==0)
- {
- s[0]=0x55;
- }
- s[1]=(unsigned short) ((ulTime>>8)&0xFF);
- if (s[1]==0)
- {
- s[1]=0x66;
- }
- s[2]=(unsigned short) ((ulTime>>16)&0xFF);
- if (s[2]==0)
- {
- s[2]=0x77;
- }
- }
-
- unsigned short _export __far __pascal GetRandom(unsigned short usMod)
- {
- int fRedo, i;
- unsigned short usVal, usDivRest;
-
- do
- {
- fRedo=0;
- usVal=0;
- for(i=0; i<3; i++)
- {
- usDivRest=(unsigned short) (((unsigned long) s[i]*f[i])%m[i]);
- s[i]=usDivRest;
- usDivRest-=1;
- fRedo|=(usDivRest>=32767);
- usVal+=usDivRest;
- }
- } while(fRedo);
-
- usVal&=32767;
- return usVal%usMod;
- }
-
- int FAR PASCAL LibMain( HINSTANCE hInstance, WORD wDataSegment,
- WORD wHeapSize, LPSTR lpszCmdLine )
- {
- if ( wHeapSize != 0 )
- UnlockData( 0 );
-
- Randomize();
- return 1;
- }
-
- int FAR PASCAL WEP ( int bSystemExit )
- {
- return 1;
- }
-