'===========================================================================
' Subject: RETURN NETWORK ID                  Date: 05-22-92 (12:20)       
'  Author: Tony Elliott                       Code: QB, PDS                
'  Origin: RETURN,NETWORK,ID                Packet: NETWORK.ABC
'===========================================================================
'> Does anybody have a routine to check either the network node ID or the
'> card id on a NetBios based network, such as LanTastic?

'Here's a little routine you can use to return the machine name and ID
'on NetBios compatible networks. It'll return a null string if a
'compatible network is not running. Hope it helps.

'-------------------
DEFINT A-Z

DECLARE FUNCTION MachineName$ (MachineNumber%)
REM $INCLUDE: 'QB.BI'                           'Use QB.BI for QB4.x

ThisMachine$ = MachineName$(MachineNumber%)
IF LEN(ThisMachine$) THEN
    PRINT "Machine Name: "; ThisMachine$
    PRINT "   Machine #:"; MachineNumber%
ELSE
    PRINT "NetBIOS compatible network not installed."
END IF

'-------------

FUNCTION MachineName$ (MachineNumber%)

    'If a NetBIOS compatible network is installed, this function returns
    'the machine name as a result of the function and the machine's NetBIOS
    'ID number in the MachineNumber% parameter.

    'If a network is not detected, the function returns a null string.

    DIM Reg AS RegTypeX                 'In QB.BI (or QBX.BI if using PDS)
    DIM Temp AS STRING * 16             'Buffer to hold machine name
    MachineNumber% = 0                  'Make sure it is zero
    Reg.ax = 0                          'Use function 0 of interrupt 2ah
    CALL INTERRUPTX(&H2A, Reg, Reg)
    IF Reg.ax AND &HFF00 THEN           'If AH <> 0 then network was found
	   Reg.ax = &H5E00
	   Reg.ds = VARSEG(Temp)
	   Reg.dx = VARPTR(Temp)
	   CALL INTERRUPTX(&H21, Reg, Reg)
	   IF Reg.flags AND 1 THEN         'Did an error occur?
		  EXIT FUNCTION
	   END IF
	   MachineNumber% = Reg.cx AND &HFF    'Machine # in CL
	   MachineName$ = RTRIM$(Temp)
    END IF

END FUNCTION

