'===========================================================================
' Subject: DETECT OS/2                        Date: 07-29-97 (09:48)       
'  Author: Christopher Butler                 Code: QB, PDS                
'  Origin: FidoNet QUIK_BAS Echo            Packet: DOS.ABC
'===========================================================================
DECLARE FUNCTION OS2Inst! ()
DECLARE SUB SetOS2VMTitle (Title$)
'$INCLUDE: 'C:\QB\QB.BI'

IF NOT OS2Inst THEN             ' Just check >:)
    PRINT "OS/2 not running!"   ' D'oh!
ELSE
    SetOS2VMTitle "It works!"   ' Set Virtual Machine title
    PRINT "Press any key..."
    DO: LOOP UNTIL LEN(INKEY$)
    SetOS2VMTitle ""            ' Reset it!
END IF

FUNCTION OS2Inst
    DIM InRegs AS RegType, OutRegs AS RegType

    InRegs.ax = &H4010

    CLS

    CALL INTERRUPT(&H2F, InRegs, OutRegs)

    IF OutRegs.ax = &H4010 THEN
	   OS2Inst = 0
	   EXIT FUNCTION
    ELSE
	   OS2Inst = -1
	   EXIT FUNCTION
    END IF
    OS2Inst = 0
END FUNCTION

SUB SetOS2VMTitle (Title$)
    DIM TitleBuf AS STRING * 12

    TitleBuf$ = LEFT$(Title$, 12)
    DIM InRegs AS RegTypeX, OutRegs AS RegTypeX

    InRegs.ax = &H6400
    InRegs.dx = &H1
    InRegs.cx = &H636C
    InRegs.bx = &H0
    InRegs.es = VARSEG(TitleBuf$)
    InRegs.di = VARPTR(TitleBuf$)

    CALL INTERRUPTX(&H21, InRegs, OutRegs)
END SUB
