' Here's some neat stuff you can do with INT 21h function 5F (Network) ' by Erik Olson ' Donated the Public Domain ' Last Update: August 2, 1994 IF NOT NetBios% THEN PRINT "NetBIOS Not Installed." ELSE PRINT "NetBIOS is installed." '.......................................... Get the Local Machine Name Q% = NetName%(Machine$) PRINT "Current machine name is: "; Machine$ END IF PRINT "Current Network Redirection List" '............................................ List current redirections Index% = 0 DO GetDevice Index%, D$, N$ IF D$ = "" THEN EXIT DO PRINT D$; " is redirected to "; N$ INCR Index% LOOP END PRINT '................................ Redirect/Cancel redirection of device PRINT "R)edirect, C)ancel redirection, or Q)uit: "; DO:Z$=UCASE$(INKEY$):LOOP WHILE Z$="" PRINT Z$ SELECT CASE Z$ CASE "R" LINE INPUT "Local Drive/Device: ",ReDir$ LINE INPUT " \\server\device: ", SPath$ INPUT "3=Printer, 4=Drive: ",DevType% Redirect DevType%, ReDir$, SPath$ IF DevType% > 0 THEN PRINT "Error"; DevType%;" - no redirection performed." ELSE PRINT "Redirection successful." END IF CASE "C": LINE INPUT "Local Drive/Device: ";DevName$ Z% = NetCancel%(DevName$) IF Z% > 0 THEN PRINT "Error"; Z%; " - unable to cancel redirection." ELSE PRINT "Redirection successfully cancelled." END IF PRINT CASE "Q", CHR$(27): END END SELECT RUN '=========================== NETWORK SUBROUTINES ============================= SUB GetDevice (DeviceNum%, DevName$, NetPath$) DevNam$ = SPACE$(16) NetPat$ = SPACE$(128) REG 1, &H5F02 REG 2, DeviceNum% REG 8, STRSEG(DevNam$) 'DS REG 5, STRPTR(DevNam$) 'SI REG 9, STRSEG(NetPat$) 'ES REG 6, STRPTR(NetPat$) 'DI CALL INTERRUPT &H21 DevName$=REMOVE$(DevNam$, ANY CHR$(0,32)) NetPath$=REMOVE$(NetPat$, ANY CHR$(0,32)) END SUB FUNCTION NetBios% ' ..........................Determine if NetBios is present. REG 1, 0 CALL INTERRUPT &H2A AH = REG(1) \ 256 IF AH = 0 THEN NetBios% = 0 ELSE NetBios% = -1 END IF END FUNCTION FUNCTION NetCancel% (DevName$) ' ...................Cancel device redirection. Reg 1, &H5F04 Reg 8, STRSEG(DevName$) 'DS Reg 5, STRPTR(DevName$) 'SI CALL INTERRUPT &H21 IF (REG(0) AND 1) THEN NetCancel% = REG(1) ELSE NetCancel% = 0 END IF END FUNCTION FUNCTION NetName% (Machine$) ' ......................Get current machine name. MName$ = SPACE$(16) REG 1, &H5E00 REG 8, STRSEG(MName$) 'DS REG 4, STRPTR(MName$) 'DX (that's right) CALL INTERRUPT &H21 IF (REG(0) AND 1) THEN ' Carry flag is Error NetName% = 0 LSET MName$ = "N/A" Machine$=REMOVE$(Mname$, ANY CHR$(0,32)) EXIT FUNCTION END IF CH = REG(3) \ 256 IF CH = 0 THEN NetName% = 0 EXIT FUNCTION END IF NetName% = REG(3) - (CH * 256) ' CL Machine$=REMOVE$(Mname$, ANY CHR$(0,32)) END FUNCTION SUB Redirect (DevType%, DevName$, NetPath$) ' ...............Redirect a device DevNam$ = DevName$ + CHR$(0,0,0) NetPat$ = NetPath$ + CHR$(0,0,0) REG 1, &H5F03 REG 2, DevType% REG 3, 0 REG 8, STRSEG(DevNam$) ' DS REG 5, STRPTR(DevNam$) ' SI REG 9, STRSEG(NetPat$) ' ES REG 6, STRPTR(NetPat$) ' DI CALL INTERRUPT &H21 DevType% = 0 IF (REG(0) AND 1) THEN ' Carry flag is error. DevType%=REG(1) END IF END SUB