[Back to WIN-OS2 SWAG index]  [Back to Main SWAG index]  [Original]

{***********************************************************************}
PROGRAM Win3XInf;       {  Simple Detection routines for Windows 3.X    }
                        {  Last Updated April 28/93, Greg Estabrooks    }

FUNCTION Win3X :BOOLEAN;  ASSEMBLER;
                {  Routine to determine if Windows is currently running }
ASM
  Mov AX,$4680                          {  Win 3.x Standard check       }
  Int $2F                               {  Call Int 2F                  }
  Cmp AX,0                              {  IF AX = 0 Win in real mode   }
  JNE @EnhancedCheck                    {  If not check for enhanced mode}
  Mov AL,1                              {  Set Result to true           }
  Jmp @Exit                             {  Go to end of routine         }
@EnhancedCheck:                         {  Else check for enhanced mode }
  Mov AX,$1600                          {  Win 3.x Enhanced check       }
  Int $2F                               {  Call Int 2F                  }
  Cmp AL,0                              {  Check returned value         }
  Je @False                             {  If not one of the below it   }
  Cmp AL,$80                            {  is NOT installed             }
  Je @False
  Mov AL,1                              {  Nope it must BE INSTALLED    }
  Jmp @Exit
@False:
  Mov AL,0                              {  Set Result to False          }
@Exit:
END;{Win3X}

FUNCTION WinVer :WORD;  ASSEMBLER;
                {  Returns a word containing the version of Win Running }
                {  Should only be used after checking for Win installed }
                {  Or value returned will be meaning less               }
ASM
  Mov AX,$1600                     {    Enhanced mode check             }
  Int $2F                          {    Call Int 2F                     }
END;{WinVer}

BEGIN
  IF Win3X THEN                         {  If it is running say so      }
   BEGIN
    Writeln('Windows is Running! ');    {  Now display version running  }
    Writeln('Version Running is : ',Lo(WinVer),'.',Hi(WinVer));
   END
  ELSE                                  {  If not 'Just say NO!'        }
    Writeln('Windows is not Running!');
END.
{***********************************************************************}

[Back to WIN-OS2 SWAG index]  [Back to Main SWAG index]  [Original]