[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]

    {
    > Is there a way to detect if a system is running under Novell
    > Netware? There must be an interrupt to do that, but wich one?

         Yes there is.  Although this is in assembly, I'm sure you can dig
    out what you need and convert it to Pascal or inline ASM. I've also
    included for the more common multitaskers. I always try to check for
    each at the beginning of a program so I can code to take advantage of
    the features of whatever system it's operating under, or at least
    prevent problems.
    }

    ;*****************************************************************
    ;*    Check to see if we are running under a Novell Network      *
    ;*****************************************************************
    .public     chk_novell
    .proc       chk_novell  auto
        .push   es,di               ; Protect the registers well use
        xor     ax,ax               ; and clear them
        push    ax
        push    ax
        .pop    es,di
        mov     ax,07A00H           ; Novel Netware installation check
        int     2FH                 ; Check it
        or      al,al               ; If installed, al = 0FFH
                                    ;  ES:DI ptr -> far entry point for
                                    ;  routines otherwise accessed through
                                    ;  INT 21H
        jnz     double_check        ; Appears to be installed, see if there
                                    ;  is a far address in ES:DI
        stc                         ; Set carry to indicate no network
        .pop    es,di               ; restore what we used
        ret                         ; and exit
    double_check:
        push    di                  ; Check
        pop     ax
        or      ax,ax               ; Is it empty
        jnz     in_novell           ; No has pointer so were in a network
        push    es
        pop     ax
        or      ax,ax               ; Is it empty
        jnz     in_novell           ; No has pointer
        stc                         ; No pointer to far address so no network
                                    ;  Chance of a ptr to 0000:0000 are
                                    ;  basically non-existant
    in_novell:
        .pop    es,di               ; Clean up after ourselves
        ret                         ; and go home
    .endp       chk_novell
    ;***********************************************************************
    ;* Check to see if we are running under Desqview, TopView, or TaskView *
    ;***********************************************************************
    .public     chk_desq
    .proc       chk_desq  auto
        .push   ax,bx               ; Save registers we will use
        mov     ax,1022H            ; This is the get version function
                                    ;  that TopView installs for Int 15H.
                                    ;  Most TopView compatibles use the
                                    ;  same function so we can check for
                                    ;  several with just one call
        xor     dx,dx               ; Clear dx
        int     15H                 ; Make the call
        cmp     bx,0a01H            ; DesqView 2.x returns 0A01H
        jnz     try_task            ; Did we get it
        mov     @dataseg:Desqview,1 ; YES, save it and go home
        jmp     short No_View
    try_task:                       ; No, Try TaskView
        cmp     bx,0001H            ; TaskView Returns 0001H
        jnz     try_top             ; Get it
        mov     @dataseg:TaskView,1 ; Yes
        jmp     short No_View
    try_top:                        ; No, try TopView. Top View returns it's
        or      bx,bx               ; version so just test for non-zero
        jz      No_View             ; is it non-zero
        mov     @dataseg:TopView,1  ; Yes, save it
    No_View:
        .pop    ax,bx               ; Restore regs and go home
        ret
    .endp       chk_desq

    {
       Hope this helps. BTW, I don't know about the later versions of
    Windows, but the older versions respected the Desqview installation
    check.
    }

[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]