home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_BAS / PRO98SRC.ZIP / WINAPI.BAS < prev    next >
BASIC Source File  |  1993-12-07  |  1KB  |  63 lines

  1. ' Based on WinFuncs fax from David Hackamack
  2. ' (say that 10 times fast)
  3. ' PowerBASIC (06/15/93) Erik Olson
  4.  
  5. ' These routines are not implemented in PROZOL 1, however they may be
  6. ' inserted where desired.
  7.  
  8. DECLARE SUB StartWinCriticalCode()
  9. DECLARE SUB EndWinCriticalCode()
  10. DECLARE SUB GiveUpTimeSlice()
  11. DECLARE FUNCTION WinDozeActive%(Ver!)
  12. DECLARE FUNCTION GetCurrentWindowsVM%()
  13.  
  14.  
  15. SUB EndWinCriticalCode
  16.     REG 1, &H1682
  17.     CALL INTERRUPT &H2F
  18. END SUB
  19.  
  20. FUNCTION GetCurrentWinDozeVM%
  21.     ' gets current virtual machine ID under windoZe
  22.         BXI%=0
  23.         !MOV AX,&H1683
  24.         !INT &H2F
  25.     !MOV BXI%,BX
  26.     GetCurrentWinDozeVM% = BXI%
  27. END FUNCTION
  28.  
  29. SUB GiveUpTimeSlice
  30.     REG 1,&H1680
  31.     CALL INTERRUPT &H2F
  32. END SUB
  33.  
  34. SUB StartWinCriticalCode
  35.     REG 1, &H1681
  36.     CALL INTERRUPT &H2F
  37. END SUB
  38.  
  39. FUNCTION WinDozeActive%(Ver!)
  40.     'determines whether windows is active and which version
  41.     REG 1, &H1600
  42.     CALL INTERRUPT &H2F
  43.     IF (REG(1) AND &HFF<>0) AND (REG(1) AND &HFF <>&H80) AND (REG(1) <> &H1600) THEN
  44.         WinDozeActive%=-1
  45.         Ver!=(((REG(1) AND &HFF) * 100)+REG(1)\&HFF)/100
  46.     ELSE
  47.         REG 2,0
  48.         REG 6,0
  49.         REG 9,0
  50.         REG 1, &H4B02
  51.         CALL INTERRUPT &H2F
  52.  
  53.         IF REG(9) OR REG(6) THEN
  54.             WindozeActive%=1
  55.  
  56.         ELSE
  57.             IF LEN(ENVIRON$("windir")) THEN WindozeActive%=2
  58.         END IF
  59.     END IF
  60. END FUNCTION
  61.  
  62.  
  63.