home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / lan1 / tech.lzh / TECH.DOC
Text File  |  1990-06-13  |  49KB  |  1,541 lines

  1.  
  2.         LANtastic (tm) Network Operating System
  3.               Technical Reference Manual
  4.        =================================================
  5.  
  6. Introduction
  7. ************
  8.  
  9. This manual is intended for programer who wish to make use of the
  10. network services of the LANtastic Network Operating System (LANOS). 
  11. LANOS services described in this manual are for version 3.00 or above.
  12. LANOS services fall into two catagories: Standard MS-DOS compatible
  13. network functions and Extended network functions.  Since LANOS runs
  14. on any NETBIOS compatible LAN, NETBIOS functions are also available
  15. although they are intrisic to the underlying NETBIOS implementation. 
  16.  
  17. This manual assumes that the reader is familiar with 8088/8xx6
  18. assembly language and DOS system functions.  Since the standard
  19. MS-DOS compatible network functions are described in the DOS
  20. technical reference manual, we will not go into great detail in this
  21. manual. 
  22.  
  23. Throughout this manual references will be made to network paths. 
  24. LANOS network paths are fully compatibly with MS-DOS network paths. 
  25. Network paths are similar to file paths except that they reference
  26. files through the network.  The general syntax for network path is
  27.  
  28.     \\server-name\path-name
  29.  
  30. where
  31.     server-name    is 1 to 15 character name of a network file server
  32.     path-name    is a DOS path on the server
  33.  
  34. For example,
  35.  
  36.     \\MAIN-MACHINE\PROGS\DATA\FROG.TXT
  37.  
  38. refers to a file located on server MAIN-MACHINE.  The path required
  39. to access the file is PROGS\DATA\FROG.TXT.  The directory PROGS is a
  40. shared network directory and may not actually exist on the server. It
  41. may in fact be an entire disk.
  42.  
  43. MS-NET compatible networks (e.g. IBM-PC LAN) do not fully support
  44. full paths for all systems calls (in particular Find FIrst).  LANOS,
  45. however, supports full paths for all system calls that can take a
  46. path argument.  This means that many public domain directory
  47. utilities will operate with a network path.  Refer to the "Other
  48. useful system calls" section for example uses of find-first/next.
  49.  
  50.  
  51. Indirect Files
  52. **************
  53.  
  54. As of version 3.00 of LANOS, a new type of file has been created for
  55. use on the network.  This file type, know as an indirect file,
  56. resides on a server and is accessable to all users with the 'I' ACL
  57. privilege.  An indirect file contains server relative path
  58. information that is expanded in place of the file's name when a path
  59. is parsed by the server.  In other words, an indirect file points to
  60. another file or directory.  Whenever you refer to the indirect file,
  61. its name is replaced by the file or directry it refers to.
  62.  
  63. The folowing examples illustrate the operation of indirect files.
  64.  
  65. Given the following indirect files
  66.  
  67.     Indirect file            Contents
  68.     -------------------        ---------------------
  69.     \ROOT\A                \ROOT\AUTOEXEC.BAT
  70.     \MISC\C                \ROOT\CONFIG.SYS
  71.     \ROOT\SOURCES\WIN.H        ..\INCLUDE\WINDOW.H
  72.     \ROOT\DOC            \MISC\MANUALS\NEW\DOC
  73.  
  74. Some sample path expansions would be
  75.  
  76.     Path                Expansion
  77.     --------------------        --------------------------------
  78.     \ROOT\A                \ROOT\AUTOEXEC.BAT
  79.     \MISC\C                \ROOT\CONFIG.SYS
  80.     \ROOT\SOURCES\WIN.H        \ROOT\INCLUDE\WINDOW.H
  81.     \ROOT\DOC\INTRO            \MISC\MANUALS\NEW\DOC\INTRO
  82.     \ROOT\DOC\CHAPTERS\1        \MISC\MANUALS\NEW\DOC\CHAPTERS\1
  83.  
  84. As you can see from the above examples, indirect files can be used to
  85. point to other files or directories.  The advantage of indirect files
  86. is that the actual files or directories that they point to can reside
  87. on one area while multiple indirect file can reference them with a
  88. variety of names while residing in another directory.
  89.  
  90. Since the concept of indirect files does not exists under DOS. 
  91. Indirect files are not available directly from DOS.  To use indirect
  92. files you must reference them through the network.
  93.  
  94. System calls that are useful for the manipulation of indirect files
  95. are
  96.  
  97.     5FB3H    Translate path
  98.     5FB4H    Create indirect file
  99.     5FB5H    Get indirect file contents
  100.  
  101.  
  102.  
  103. Error Codes
  104. ***********
  105.  
  106. All MS-DOS compatible system calls and all LANOS specific system calls
  107. return error codes.  The error code number is always returned in AX. 
  108. When an error occurs the carry flag (CY) is set.  LANOS provides a
  109. mechanism for expanding the error code number into a text string.  The
  110. following is a list of error codes which may be returned by LANOS:
  111.  
  112. Error
  113. Number    Meaning
  114. ------    -------
  115. 01H    Invalid function number
  116. 02H    File not found
  117. 03H    Path not found
  118. 04H    File open limit has been exceeded or no handles left
  119. 05H    Access denied
  120. 06H    Invalid handle
  121. 07H    Memory control blocks destroyed
  122. 08H    The memory limit has been exceeded
  123. 09H    Invalid memory block address
  124. 0AH    Invalid environment
  125. 0BH    Invalid format
  126. 0CH    Invalid access code
  127. 0DH    Invalid data
  128. 0EH    RESERVED
  129. 0FH    Invalid drive was specified
  130. 10H    Attempt to remove current directory
  131. 11H    Not same device
  132. 12H    No more files
  133. 13H    Attempt to write on write protected disk
  134. 14H    Unknown unit
  135. 15H    Drive not ready
  136. 16H    Unknown command
  137. 17H    Data CRC error
  138. 18H    Bad req stuc length
  139. 19H    Seek error
  140. 1AH    Unknown media
  141. 1BH    Sector not found
  142. 1CH    No paper
  143. 1DH    Write fault
  144. 1EH    Read fault
  145. 1FH    General failure
  146. 20H    Sharing violation
  147. 21H    Lock violation
  148. 22H    Invalid disk change
  149. 23H    FCB unavailable
  150. 24H    Sharing buffer overflow
  151. 25H    RESERVED
  152. 26H    Cannot complete file operation
  153. 27H-31H    RESERVED
  154. 32H    Network request not supported
  155. 33H    Network node ??????????????? is not listening
  156. 34H    The name already exists on the network
  157. 35H    Cannot locate network name
  158. 36H    The network is busy
  159. 37H    Server connection to network node ??????????????? broken
  160. 38H    The NETBIOS command limit has been exceeded
  161. 39H    The network adapter has malfunctioned
  162. 3AH    Incorrect response received from network node ???????????????
  163. 3BH    Unexpected network error from network node ???????????????
  164. 3CH    Incompatible network node ???????????????
  165. 3DH    Print queue full on network node ???????????????
  166. 3EH    No room for print file on network node ???????????????
  167. 3FH    The print file has been deleted on network node ???????????????
  168. 40H    The network name has been deleted
  169. 41H    You have been denied access on network node ???????????????
  170. 42H    Invalid network device
  171. 43H    The network name was not found
  172. 44H    The network name limit has been exceeded
  173. 45H    The session limit has been exceeded
  174. 46H    Network node ? has been temporarily paused
  175. 47H    The network request to network node ? was denied
  176. 48H    Print or disk redirection is paused on network node ???????????????
  177. 49H    Invalid network version
  178. 4AH    Account has expired
  179. 4BH    Password has expired
  180. 4CH    Login attempt invalid at this time
  181. 4DH    Disk limit has been exceeded on network node ???????????????
  182. 4EH    Not logged in to network node ???????????????
  183. 4FH    RESERVED
  184. 50H    The file already exists
  185. 51H    RESERVED
  186. 52H    Cannot make directory entry
  187. 53H    Failure on critical error
  188. 54H    Too many redirections or logins to network node ???????????????
  189. 55H    Duplicate redirection or login to network node ???????????????
  190. 56H    Invalid username or password
  191. 57H    Invalid parameter
  192. 58H    Network data fault
  193. 59H    Function not supported on network
  194. 5AH    Required system component not installed
  195.  
  196. When you expand the error code into a text string the above question
  197. marks are expanded to the name of the node you were refering to.  To
  198. expand an error code into a text string you will need to issue a
  199. multiplex interrupt (2FH).  The calling sequence is
  200.  
  201. INPUT    AH    5
  202.     AL    0    For installation check
  203.         #    for error code (in pre DOS 4.00)
  204.         1 or 2    for error code in DOS 4.00
  205.     BX    in    Error code
  206. OUTPUT    FLAGS    NC if error code converted to text
  207.         CY is error code can't be converted
  208.     ES:DI    Pointer to ASCIZ text buffer containing error text. 
  209.         This is a read only text buffer and you    must not alter
  210.         the text in this buffer.
  211.  
  212. If the error code is RESERVED it is expanded to "General failure".  The
  213. maximum width for the question mark fields is 15 characters.  The error
  214. text is automatically adjusted so that extra spaces are not in the text
  215. buffer.  For example the error text
  216.  
  217.     Network node ??????????????? is not listening
  218.  
  219. would be 
  220.  
  221.     Network node HOST is not listening
  222.  
  223. for node HOST.
  224.  
  225. When coding for LANOS the following code sequence will work for both
  226. DOS 4.x and DOS 3.x:
  227.  
  228.     mov    ax, error_number        ; Get error number
  229.     mov    bx, ax                ; Place in BX also
  230.     mov    ah, 5
  231.     int    2fh
  232.     ; ES:DI now points to error string.
  233.  
  234. NOTE: LANOS does not check AL when running under DOS 4.00 and thus
  235. the values in AL are not important.  The value in AL is important if
  236. you are running on another network operating system such as IBM PC
  237. LAN.
  238.  
  239.  
  240. Testing for the Existance of the NETBIOS
  241. ****************************************
  242.  
  243. Before NETBIOS calls may be performed the NETBIOS must be installed. 
  244. The folowing code fragment illustates how you should test for the
  245. existance of the NETBIOS.
  246.  
  247.  
  248.     ; An illegal NCB used to determine if the NETBIOS is present
  249.     ;
  250.     illegal_NCB    db 7fh                 ; Illegal command
  251.             db 63 dup (0)        ; Rest of NCB is 0
  252.  
  253.  
  254.     ; NETBIOS_PRESENT - Determine if we have a NETBIOS present
  255.     ;
  256.     ; DS    in    Current Data segment
  257.     ; ES    in    Current Data segment
  258.     ; AX    out    Destroyed
  259.     ; BX    out    Destroyed
  260.     ; FLAGS    out    NO CARRY if present
  261.     ;        CARRY if not present
  262.     ;
  263.     NETBIOS_present    proc
  264.         push    es
  265.         mov    ax, 355cH     ; Get 5C vector
  266.         int    21H
  267.         mov    ax, es
  268.         pop    es
  269.         cmp    ax, 0F000h    ; Pointing into BIOS?
  270.         je    no_vector    ; Yes - Then no real 5C
  271.         or    ax, bx        ; Test for 0
  272.         jnz    have_vector    ; Non-zero - Have 5C int
  273.     no_vector:
  274.         stc            ; Show not present
  275.         ret
  276.  
  277.     ; We have a legal 5C vector.  Now perform an illegal NCB
  278.     ; request to make sure that it is a legal NETBIOS.
  279.     ;
  280.     have_vector:
  281.         mov    al, 0
  282.         mov    bx, offset illegal_NCB
  283.         int    5cH
  284.         test    al, al        ; Will get changed on illegal cmd
  285.         jz    no_vector
  286.         clc
  287.         ret
  288.     NETBIOS_present    endp
  289.  
  290.  
  291.  
  292. Testing for the Existance of the Redirector, Server and LANPUP
  293. **************************************************************
  294.  
  295. You can issue a multiplex interrupt (2FH) to determine if the
  296. redirector, server or LANPUP software is installed.
  297.  
  298. INPUT    AX    B800H
  299. OUTPUT    AL    0    If neither redirector or server installed
  300.         NZ    Redirector, server or LANPUP installed
  301.     BL    Contains bits indicating which software is installed
  302.         (several bits will be set when serveral peices of software
  303.         is running)
  304.         10000000b    Redirector has pop up receive message
  305.                 capability.
  306.         01000000b    Server is installed
  307.         00001000b    Redirector is installed
  308.         00000010b    LANPUP is installed
  309.  
  310.  
  311. Determining Network Software Version
  312. ************************************
  313.  
  314. You can issue a multiplex interrupt to determine which version of the
  315. network software is running.
  316.  
  317. INPUT    AX    B809H
  318. OUTPUT    AH    Major version number.
  319.     AL    Minor version number.
  320.  
  321. NOTE:    The version numbers are returned as decimal numbers.  For
  322.     example, version 3.00 would be
  323.  
  324.         AH    2
  325.         AL    53 decimal or 35 hex
  326.  
  327.  
  328. The Alternate NETBIOS Interface
  329. *******************************
  330.  
  331. The normal interface to the NETBIOS is via interrupt 5CH; the
  332. alternate interrupt to the NETBIOS is via interrupt 2AH.  The 2A
  333. interface is provided by the LANtastic redirector. Some NETBIOS
  334. programs do not use the standard 5C interface but rather the
  335. alternate 2A interface. 
  336.  
  337. The alternate interface (2A) was originally designed as a "higher"
  338. level interface to network communications rather than the "low" level
  339. interface (5C) provided by the NETBIOS.  The 2A interface, however,
  340. does not support any higher level functions than does the 5C
  341. interface and therefore has not become a defacto standard as has the
  342. 5C interface. 
  343.  
  344. The REDIR intercepts 2A interrupts and reformats them to 5C
  345. interrupts, thereby providing a 2A interface to the NETBIOS.  A list
  346. of the 2A interface functions that are supported are described below.
  347.  
  348. 2A interrupt functions are invoked by loading the AH or AX register
  349. with a function code and then issuing a software interrupt 2A.  For
  350. example,
  351.  
  352.     mov    ah, 0        ; Installation check
  353.     int    2AH        ; Call alternate NETBIOS interface
  354.  
  355. ---------
  356. FUNCTION:    Installation check
  357.  
  358. DESCRIPTION:    Checks to see if a 2A interface is installed.
  359.  
  360. INPUTS:        AH     in    0
  361.  
  362. OUTPUTS:    AH     out    0 if not installed
  363.         AH        NZ if installed
  364.  
  365. ---------
  366. FUNCTION:    Execute NETBIOS with no error retry
  367.  
  368. DESCRITION:    Executes a NETBIOS command (similar to 5C interface). 
  369.         The NETBIOS command may be optionaly retried on certain
  370.         error conditions.
  371.  
  372. INPUTS:        AX    01xxH or 0401H to execute NETBIOS with
  373.             no error retry 
  374.             0400H to execute NETBIOS with error retry. 
  375.             Error codes that are automatically retried are
  376.               No sessions resources (09H)
  377.               No listen (12H)
  378.               Interface busy (21H)
  379.         ES:BX     Pointer to NCB
  380.  
  381. OUTPUTS:    AL    NETBIOS error code
  382.         AH    0 if no error
  383.             1 if error
  384.  
  385. ---------
  386. FUNCTION:     Get resource information
  387.  
  388. DESCRITION:    Return NETBIOS resources which are available for use.
  389.  
  390. INPUTS:        AH    5
  391.  
  392. OUTPUTS:    BX    Available names (16 - names in use)
  393.         CX    Available NCBs (free NCBs)
  394.         DX    Available sessions (max sessions -
  395.             pending sessions)
  396.  
  397.  
  398. Controlling redirected printer streams
  399. **************************************
  400.  
  401. You can control how output is sent to redirected printers in three ways:
  402.  
  403.     1. You can set a "combine" mode which does not separate multiple
  404.        print jobs when programs terminate or when the printer is
  405.        opened or closed.
  406.     2. You can set a "separate" mode which seperates print jobs when
  407.        a program terminates or when the printer is opened and closed.
  408.     3. You can "flush" redirected output, thereby forcing the printer
  409.        to begin printing.
  410.  
  411. The above three functions may be performed using the NET LPT COMBINE
  412. NET LPT SEPARATE and  NET LPT FLUSH commands.  Often these commands
  413. need to be performed within programs.  Two software interfaces are
  414. provided to allow you to control these functions.  These interfaces
  415. consist of 2AH interrupt interface and a standard 21H system call
  416. interrupt interface.
  417.  
  418. NOTE: The DOS COMMAND.COM program always sets redirected printer
  419.       separate mode when it prompts for command input and therfore
  420.       these interrupts are ineffective accross multiple program
  421.       invocations performed through COMMAND.COM.  The only exception
  422.       to this is inside batch files, since COMMAND.COM does not prompt
  423.       for command input.
  424.  
  425. 2AH interrupt interface
  426. -----------------------
  427.  
  428. FUNCTION:    Set spooled output to combine mode
  429.  
  430. DESCRIPTION:    All printer output is combined into 1 print job regardless
  431.         of the printer being opened or closed or programs
  432.         terminating.
  433.  
  434. INPUTS:        AX    0601H
  435.  
  436. OUTPUTS:    none
  437.  
  438. ---------
  439. FUNCTION:     Set spooled output in speparate mode
  440.  
  441. DESCRIPTION:    Printer output is not combined when multiple programs are
  442.         run or when the printer is opened or closed.  This command
  443.         implicitly starts a new print job.
  444.  
  445. INPUTS:        AX    0602H
  446.  
  447. OUTPUTS:    none
  448.  
  449. ---------
  450. FUNCTION:    Flush printer output
  451.  
  452. DESCRIPTION:    Printer output is flushed and a new print job is started.
  453.         If no output exists to be flush then this function has no
  454.         effect.
  455.  
  456. INPUTS:        AX    0603H
  457.  
  458. OUTPUTS:    none
  459.  
  460.  
  461. 21H Interrupt interface
  462. -----------------------
  463.  
  464. FUNCTION:    Return redirected printer mode
  465.  
  466. DESCRIPTION:    The current printer mode (either printer output
  467.         combined or printer output separated) is returned.
  468.  
  469. INPUTS:        AX    5D07H
  470.  
  471. OUTPUTS:    DL    0 Redirected output is being combined
  472.             1 Redirected output is being separated
  473.  
  474. ---------
  475. FUNCTION:    Set redirected printer mode (either printer output
  476.  
  477. DESCRIPTION:    The current printer mode (either printer output
  478.         combined or printer output seprated) can be set.
  479.  
  480. INPUTS:        AX    5D08H
  481.         DL    0 Set redirected output to be combined
  482.             1 Set redirected output to be separated.  This
  483.             command implicitly starts a new print job.
  484. OUTPUTS:    none
  485.  
  486. ---------
  487. FUNCTION:    Flush printer output
  488.  
  489. DESCRIPTION:    Printer output is flushed and a new print job is started.
  490.         If no output exists to be flush then this function has no
  491.         effect.
  492.  
  493. INPUTS:        AX    5D09H
  494.  
  495. OUTPUTS:    none
  496.  
  497.  
  498. MS-DOS Compatible Network Functions
  499. ***********************************
  500.  
  501. All MS-DOS network system call functions with the exception of GET and
  502. SET printer setup string (5E02 and 5E03) are fully supported.  The
  503. reason that these functions are not fully supported is that printer
  504. setup strings are set by the system administrator and are stored on
  505. the server.  The printer setup strings are only changeable using the
  506. NET_MGR program.
  507.  
  508. A quick reference list of the MS-DOS compatible network functions is
  509. provided at the end this manual.  The following network functions are in
  510. numerical order.
  511.  
  512. 5E00H    Get Machine Name
  513. ------------------------
  514.  
  515. INPUT    AX    5E00H
  516.     DS:DX    Pointer to 16 byte buffer where ASCIZ machine name is
  517.         returned
  518.  
  519. OUTPUT    FLAGS    NC If no error
  520.         CY If error occured
  521.     AX    Error code if error
  522.     CL    NETBIOS name number of machine name.
  523.     CH    0 If machine name is not set
  524.         Not zero if machine name has been set
  525.     DS:DX    ASCIZ machine name
  526.  
  527. Get Machine Name returns the name which your computer is known by on
  528. the network.  This name is specified when you run the redirector. You
  529. may use the name and NETBIOS name number returned by this function to
  530. perform NETBIOS commands.  You must not use any other names added by
  531. LANOS.
  532.  
  533.  
  534. 5E02H    Set Printer Setup
  535. -------------------------
  536.  
  537. INPUT    AX    5E02H
  538.     BX    Redirection list index.
  539.     CX    Setup string size
  540.     DS:SI    Pointer to printer setup string
  541.  
  542. OUTPUT    FLAGS    NC If no error
  543.         CY If error occured
  544.     AX    Error code if error
  545.  
  546. Set printer setup sets a setup string to be sent to the network printer
  547. whenever a file is queued to the printer.
  548.  
  549. NOTE: LANOS does not process this request since printer setup strings
  550.       are controlled by the system administer using the NET_MGR program. 
  551.       The system call DOES NOT return an error, however.
  552.  
  553.  
  554. 5E03H    Get Printer Setup
  555. -------------------------
  556.  
  557. INPUT    AX    5E03H
  558.     BX    Redirection entry index.
  559.     ES:DI    Pointer to area to contain setup string
  560.  
  561. OUTPUT    FLAGS    NC If no error
  562.         CY If error occured
  563.     AX    Error code if error
  564.     CX    Length of setup string.
  565.  
  566. Get setup string will return the setup string set with 5E02H (Set
  567. Printer Setup) above.
  568.  
  569. NOTE: LANOS does not process this request since printer setup strings
  570.       are controlled by the system administer using the NET_MGR program.
  571.       The system call DOES NOT return an error, however, and the length
  572.       of the setup string (CX) is 0.
  573.  
  574.  
  575. 5F02H    Get Redirected Device Entry
  576. -----------------------------------
  577.  
  578. INPUT    AX    5F02H
  579.     BX    Redirection entry index.  Index 0 specifies the first entry.
  580.     DS:SI    Pointer to 16 byte area which will receive the ASCIZ device
  581.         name which the redirection index corresponds with.
  582.     ES:DI    Pointer to 128 byte area which will receive the ASCIZ
  583.         network path that the redirected device refers to.
  584.  
  585. OUTPUT    FLAGS    NC If no error
  586.         CY If error occured
  587.     AX    Error code if error
  588.     BL    Type of device
  589.         3 Printer device
  590.         4 Disk device
  591.     BH    Device status
  592.         Bit  0=0 If device is valid
  593.              0=1 If device is not valid
  594.         Bits 1-7 reserved
  595.     CX    Value stored by 5F03 call.  Should be 0 for compatiblity with
  596.         LANOS.
  597.     DX    May be destroyed
  598.     BP    May be destroyed
  599.     DS:SI    Filled ASCIZ device name
  600.     ES:DI    Filled ASCIZ network path
  601.  
  602. Get Redirected Device Entry returns information about a single
  603. redirected device (see 5F03 Redirect Device).  This function may be
  604. used to scan the list of redirected devices.
  605.  
  606.  
  607. 5F03H    Redirect device
  608. -----------------------
  609.  
  610. INPUT    AX    5F03H
  611.     BL    Type of device
  612.         3 Printer device
  613.         4 Disk device
  614.     CX    Value to store with redirected device.  Set this to 0
  615.         for compatiblity with LANOS.
  616.     DS:SI    Pointer to ASCIZ device name to redirect. For printer
  617.         device specify: PRN, LPT1, LPT2, LPT3
  618.         For disk devices specify A:, B:, C:, etc.
  619.     ES:DI    Pointer to network path to redirect the device to.
  620.  
  621. OUTPUT    FLAGS    NC If no error
  622.         CY If error occured
  623.     AX    Error code if error
  624.  
  625. Redirect device allows you to connect local devices to network paths. 
  626. For example you can connect your LPT1 to a printer on another node. 
  627. References to LPT1 are routed to the network.
  628.  
  629.  
  630. 5F04H    Cancel Device Redirection
  631. ---------------------------------
  632.  
  633. INPUT    AX    5F04
  634.     DS:SI    Pointer to device name to cancel redirection for.
  635.  
  636. OUTPUT    FLAGS    NC If no error
  637.         CY If error occured
  638.     AX    Error code if error
  639.  
  640. Cancel device redirection allows you to remove a device redirection so
  641. that the device is restored to its former state.
  642.  
  643.  
  644. LANOS Extended Network Functions
  645. ********************************
  646.  
  647. LANOS provides an extended set of network system calls which allow
  648. further network control which is not provided by the standard MS-DOS
  649. compatible network requests.
  650.  
  651. 5F80H    Get Login Entry
  652. -----------------------
  653.  
  654. INPUT    AX    5F80H
  655.     BX    Login entry index (0 based).
  656.     ES:DI    Pointer to 16 byte buffer which will receive computer name that
  657.         you are logged into.
  658.  
  659. OUTPUT    FLAGS    NC If no error
  660.         CY If error occured
  661.     AX    Error code if error
  662.     BX    Next login entry index.  BX-1 is the current login entry
  663.         index.  You can use BX-1 in future Get Login Entry calls
  664.         to reread the login entry.
  665.     DL    Adapter number logged in through
  666.     ES:DI    Pointer to filled ASCIZ buffer.  The logged in machine name
  667.         DOES NOT include the \\ prefix.
  668.  
  669. 5F81H    Login to a Server
  670. -------------------------
  671.  
  672. INPUT    AX    5F81H
  673.     ES:DI    Pointer to login path and password in the following form
  674.         \\computer-name\username<0>password<0>
  675.         Passwords may be omiited blank but binary 0's (<0>) are
  676.         still needed
  677.     BL    Adapter number to login into through
  678.         0ffh    To try all valid adapters
  679.         0-3    To try adapter 0-3 explicitly
  680. OUTPUT    FLAGS    NC If no error
  681.         CY If error occured
  682.     AX    Error code if error
  683.  
  684. 5F82H    Logout of a Server
  685. --------------------------
  686.  
  687. INPUT    ES:DI    Pointer to server name to log out of in the form
  688.         \\computer-name<0>
  689.  
  690. OUTPUT    FLAGS    NC If no error
  691.         CY If error occured
  692.     AX    Error code if error
  693.  
  694.  
  695. 5F83H    Get username entry
  696. --------------------------
  697.  
  698. INPUT    AX    5F83H
  699.     BX    Login entry index (0 based).
  700.     ES:DI    Pointer to 16 byte buffer which will receive user name that
  701.         you are logged into.
  702.  
  703. OUTPUT    FLAGS    NC If no error
  704.         CY If error occured
  705.     AX    Error code if error
  706.     BX    Next login entry index.  BX-1 is the current login entry
  707.         index.  You can use BX-1 in future Get Username Entry calls
  708.         to reread the suername entry.
  709.     DL    Adapter number logged in through
  710.     ES:DI    Pointer to filled buffer.
  711.  
  712.  
  713. 5F84H    Get inactive server entry
  714. ---------------------------------
  715.  
  716. INPUT    AX    5F84H
  717.     BX    Non-logged in server index.
  718.     ES:DI    Pointer to 16 byte buffer which will receive a server name
  719.         that you are NOT logged into but is avaliable to for logging
  720.         in.
  721.  
  722. OUTPUT    FLAGS    NC If no error
  723.          CY If error occured
  724.     AX    Error code if error
  725.     DL    Adapter number the non-logged in server is on.  This number
  726.         may be used as input "Login to Server" (5F81) system call.
  727.     ES:DI    Pointer to filled ASCIZ buffer.  The non-logged in server
  728.         name DOES NOT include the \\ prefix.
  729.  
  730.  
  731. 5F85H    Change password
  732. -----------------------
  733.  
  734. INPUT    AX    5F85H
  735.     ES:DI    Pointer to \\computer-name\old-password<0>new_password<0>
  736.         You must be logged into computer-name
  737.  
  738. OUTPUT    FLAGS    NC If no error
  739.         CY If error occured
  740.     AX    Error code if error
  741.  
  742. CHANGE PASSWORD changes a password given an old (current) and new
  743. password.
  744.  
  745.  
  746.  
  747. 5F86H    Disable account
  748. -----------------------
  749.  
  750. INPUT    AX    5F86H
  751.     ES:DI    Pointer to machine name and password in the form
  752.         \\machine-name\password<0>
  753.         You must be logged into the machine before this system
  754.         call will work.
  755.  
  756. OUTPUT    FLAGS    NC If no error
  757.         CY If error occured
  758.     AX    Error code if error
  759.  
  760. DISABLE ACCOUNT disables a user's currently logged in account. 
  761. Applies only when concurrent login entries are set at 1 (by
  762. NET_MGR).  Requires system manager to reenable account.
  763.  
  764.  
  765.  
  766. 5F87H    Get account
  767. -------------------
  768.  
  769. INPUT    AX    5F87H
  770.     DS:SI    Pointer to 128 byte buffer to receive account
  771.         information.
  772.     ES:DI    Pointer to machine name in the form \\machine-name<0>
  773.         You must be logged into the machine before this system
  774.         call will work.
  775.  
  776. OUTPUT    FLAGS    NC If no error
  777.         CY If error occured
  778.     BX    Destroyed
  779.     AX    Error code if error
  780.  
  781. Get Account returns the account record for your the account you are
  782. currently logged into the server with.
  783.  
  784. ; User account structure
  785. ;
  786. user_account    struc
  787.   UA_name        db 16 dup (?)        ; Blank padded username
  788.   UA_internal1        db 16 dup (0)
  789.   UA_description    db 32 dup (?)        ; Full user description
  790.   UA_privilege        db ?            ; Privilege bits
  791.   UA_concurrent        db ?            ; Maximum concurent users
  792.   UA_allowed_times    db 42 dup (?)        ; 1 bit for each half hour
  793.                         ; 7 days a week
  794.                         ; Begins on Sunday. 0
  795.                         ; means allowed
  796.   UA_internal2        dw 2
  797.   UA_last_login_time    dw 2 dup (?)        ; Last time logged in
  798.   UA_account_expiration    dw 2 dup (?)        ; Expiration date (MSDOS-format)
  799.                         ; Year, Month:Day
  800.   UA_password_expiration dw 2 dup (?)        ; Expiration date (as above)
  801.                         ; 0 - Means no expiration date
  802.   UA_password_extension    db ?            ; 1-31 Number of days to
  803.                         ; reextend password after change
  804.                         ; 0 - No extension required
  805.   UA_internal        db 5 dup (?)
  806. user_account    ends
  807.  
  808. ; Privilege bits set for UA_password above
  809. ;
  810. UA_privilege_superACL    equ 10000000b        ; Bypass ACLs
  811. UA_privilege_superqueue    equ 01000000b        ; Bypass queue protection
  812. UA_privilege_peer    equ 00100000b        ; Treat as local process
  813. UA_privilege_supermail    equ 00010000b        ; Bypass mail protection
  814. UA_privilege_audit    equ 00001000b        ; Allow create of audit entry
  815. UA_privilege_system    equ 00000100b        ; System manager
  816.  
  817.  
  818.  
  819. 5F97H    Copy file
  820. -----------------
  821.  
  822. INPUT    AX    5F97H
  823.     CX:DX    Amount to copy (set to FFFF:FFFF to copy whole file)
  824.     SI    Source handle
  825.     DI    Destination handle
  826.  
  827. OUTPUT    FLAGS    NC If no error
  828.         CY If error occured
  829.     AX    Error code if error
  830.     AX:DX    Amount copied
  831.  
  832. COPY FILE copies the source file (designated by the input handle) to the
  833. destination file (designated by the output handle).  The copy is performed
  834. by the server and requires not workstation resources.
  835.  
  836. 5F98H    Send unsolicited message
  837. --------------------------------
  838.  
  839. INPUT    AX    5F98H
  840.     DS:SI    Pointer to message buffer.  Format of buffer is
  841.         described below
  842.  
  843. OUTPUT    FLAGS    NC If no error
  844.         CY If error occured
  845.     AX    Error code if error
  846.         NOTE: currently no errors are returned
  847.  
  848.   ; Format of DG_message command.  The 16 byte name fields are null
  849.   ; terminated and contain the first n characters to be matched. For
  850.   ; example AB<0> will match ABxxxxxx...
  851.   ;
  852.   message_buffer    struc
  853.    MB_reserved     db ?        ; Reserved field used by system call
  854.    MB_type     db ?        ; User defined message type
  855.    MB_machine     db 16 dup (?)    ; Machine name that message is destined for
  856.    MB_server     db 16 dup (?)    ; User must be logged into this server
  857.    MB_user     db 16 dup (?)    ; User must be using this username
  858.    MB_originator db 16 dup (?)    ; Originator's machine name. Filled in
  859.                 ; when message is received
  860.    MB_text     db 80 dup (?)    ; Message text
  861.   message_buffer    ends
  862.  
  863.   ; Message buffer type.  The values 0-7fh are reserved for LANOS use.  Other
  864.   ; message types are user defined.  You may, however, use message
  865.   ; MBT_general since this is the message type that NET and LANPUP use
  866.   ; to the send rude messages.
  867.   ;
  868.   MBT_general    equ 0        ; General message used by NET, LANPUP
  869.                 ; and others
  870.   MBT_warning    equ 1        ; Server warning message.
  871.  
  872.  
  873. 5F99H    Get last received unsolicited message
  874. ---------------------------------------------
  875.  
  876. INPUT    AX    5F98H
  877.     ES:DI    Pointer to message buffer.  Format of buffer is
  878.         described above for 5F98H system call.
  879.  
  880. OUTPUT    FLAGS    NC If no error
  881.         CY If error occured
  882.     AX    Error code if error (or no message pending)
  883.  
  884.  
  885. 5F9AH    Get message processing flag
  886. -----------------------------------
  887.  
  888. INPUT    AX    5F9AH
  889.  
  890. OUTPUT    DL    Bits which describe what processing should be done when
  891.         an unsolicited message is received.
  892.     FLAGS    NC If no error
  893.         CY If error occured
  894.     AX    Error code if error
  895.  
  896.  
  897.   ; Message processing bits
  898.   ;
  899.   MPB_beep      equ 00000001b        ; Beep before message delivered
  900.   MPB_deliver      equ 00000010b        ; Deliver message to message service
  901.   MPB_auto_pop_up equ 00000100b        ; Pop up messages automatically
  902.  
  903.  
  904. 5F9BH    Set message processing flag
  905. -----------------------------------
  906.  
  907. INPUT    AX    5F9BH
  908.     DL    Bits which describe what processing should be done when
  909.         an unsolicited message is received.  See 5F9AH system
  910.         call for list of bits.
  911.  
  912.  
  913. OUTPUT    FLAGS    NC If no error
  914.         CY If error occured
  915.     AX    Error code if error
  916.  
  917.  
  918. 5F9CH    Pop up last received message
  919. ------------------------------------
  920.  
  921. INPUT    AX    5F9CH
  922.     CX    Amount of time in ticks to leave message on the screen
  923.     DH    Line number of where message will be placed.  Not value
  924.         checkd.  0 Based.
  925.  
  926. OUTPUT    FLAGS    NC If no error
  927.         CY If error occured
  928.     AX    Error code if error.  The Only erro currently returned is
  929.         0BH (Invalid format).  This error is returned if the screen
  930.         is not currently in a text mode and the pop-up message can't
  931.         be displayed.
  932.         
  933. Pop up last received message displays the last received message on the
  934. screen.  The message is placed at a given line and displayed for a given
  935. amount of time.  When the message is removed the original screen contents
  936. are restored.  The message may be removed before the display time elapses
  937. by pressing Esc.
  938.  
  939.  
  940. 5FA0H    Get queue entry
  941. -----------------------
  942.  
  943. INPUT    AX    5FA0H
  944.     BX    Queue entry index (0 for first entry)
  945.     DS:SI    Pointer to memory block to transfer queue entry into.
  946.     ES:DI    Pointer to ASCIZ server name in the form \\name<0>
  947.  
  948. OUTPUT    FLAGS    NC If no error
  949.         CY If error occured
  950.     AX    Error code if error
  951.     BX    Next queue entry index to use to find next entry.
  952.         BX-1 is the current queue entry index.  You can use BX-1
  953.         in future Get Queue Entry calls to reread the queue
  954.         entry.
  955.     DS:SI    Filled memory block with queue entry info.
  956.  
  957. ; Definition of a queue entry.
  958. ;
  959. queue_entry    struc
  960.  QE_status        db ?        ; Status of queue entry
  961.  QE_size        dd ?        ; Size of spooled file
  962.  QE_type        db ?        ; Type of queue entry
  963.  QE_output_control    db ?        ; Control of despooled file
  964.  QE_copies        dw 1        ; Copies
  965.  QE_sequence        dd ?        ; Sequence number of queue entry
  966.  QE_spooled_file    db 48 dup (?)    ; Pathname of spooled file
  967.  QE_user        db 16 dup (?)    ; Username who spooled file
  968.  QE_machine        db 16 dup (?)    ; Machine name user was on
  969.  QE_date        dw ?        ; Date file spooled (MS-DOS format)
  970.  QE_time        dw ?        ; Time file spooled (MS-DOS format)
  971.  QE_destination        db 17 dup (?)    ; ASCIZ Device name or username destined for
  972.  QE_comment        db 48 dup (?)    ; Comment field
  973. queue_entry    ends
  974.  
  975. ; Different queue entry statuses
  976. ;
  977. QE_status_free        equ 0        ; The queue entry is empty
  978. QE_status_update    equ 1        ; The queue entry is being updated
  979. QE_status_hold        equ 2        ; The queue entry is held
  980. QE_status_wait        equ 3        ; The queue entry is waiting for despool
  981. QE_status_active    equ 4        ; The queue entry is being despooled
  982. QE_status_cancel    equ 5        ; The queue has been canceled
  983. QE_status_file_error    equ 6        ; The spooled file could not be accessed
  984. QE_status_spool_error    equ 7        ; The destination could not be accessed
  985. QE_status_rush        equ 8        ; Rush this job
  986.  
  987. ; Different types of queue entries
  988. ;
  989. QE_type_print        equ 0        ; Spooled printer queue file
  990. QE_type_message        equ 1        ; Spooled message (mail)
  991. QE_type_local_file    equ 2        ; Spooled local file
  992. QE_type_remote_file    equ 3        ; Spooled remote file
  993. QE_type_modem        equ 4        ; Spooled to remote modem
  994. QE_type_batch        equ 5        ; Spooled batch processor file
  995.  
  996. ; Bit definitions for output control
  997. ;
  998. QE_OC_keep    equ    01000000b    ; Keep after despooling (don't delete)
  999.                     ; For mail - allow delete only by owner
  1000. QE_OC_voice    equ    00100000b    ; For mail - Mail file contains voice
  1001.                     ; mail.
  1002. 5FA1H    Set queue entry
  1003. -----------------------
  1004.  
  1005. INPUT    AX    5FA1H
  1006.     BX    Handle of opened queue entry
  1007.     DS:SI    Pointer to queue information buffer.  The buffer must be
  1008.         formatted as above.
  1009.     
  1010. OUTPUT    FLAGS    NC If no error
  1011.         CY If error occured
  1012.     AX    Error code if error
  1013.  
  1014. Set queue entry allows you to change certain fields in a queue entry. 
  1015. The queue entry must be currently open and you must have a handle to it.
  1016. The only fields that are looked at and altered are:
  1017.  
  1018.     QE_output_control
  1019.     QE_copies
  1020.     QE_destination            (only for MAIL queue entries)
  1021.     QE_comment
  1022.  
  1023.  
  1024. 5FA2H    Control queue
  1025. ---------------------
  1026.  
  1027. INPUT    AX    5FA2
  1028.     BL    Queue control command
  1029.     CX:DX    Sequence number to control. (CANCEL HOLD RELEASE
  1030.         RUSH)
  1031.     DX    Physical printer number. (START HALT HALT_EOJ PAUSE
  1032.         SINGLE RESTART)
  1033.         0..2  LPT1..LPT2
  1034.         3..4  COM1..COM2
  1035.         other All printers
  1036.     ES:DI    ASCIZ computer name
  1037.  
  1038. OUTPUT    FLAGS    NC If no error
  1039.         CY If error occured
  1040.     AX    Error code if error
  1041.  
  1042. Control queue allows you to alter print jobs and manipulate the
  1043. physical printer despooling if you have privileges.  You can control
  1044. despooling for selected printers or all printers.
  1045.  
  1046. ; Control queue commands.  Stared (*) entry are prived. commands which
  1047. ; require Q privilege.
  1048. ;
  1049. CQ_start    equ    0    ;* Start despooling
  1050. CQ_halt        equ    1    ;* Halt despooling
  1051. CQ_halt_EOJ    equ    2    ;* Halt despooling at end of job
  1052. CQ_pause    equ    3    ;* Pause the despooler at end of job
  1053. CQ_single    equ    4    ;* Print single job
  1054. CQ_restart    equ    5    ;* Restart the current print job
  1055. CQ_cancel    equ    6    ; Cancel the currenly printing job
  1056. CQ_hold        equ    7    ; Hold the queue entry
  1057. CQ_release    equ    8    ; Release a held queue entry
  1058. CQ_rush        equ    9    ;* Make the queue entry a rushed job
  1059.  
  1060.  
  1061. 5FA3H    Get Printer Status
  1062. --------------------------
  1063.  
  1064. INPUT    AX    5FA3H
  1065.     BX    Physical printer number
  1066.         0..2 LPT1..LPT3
  1067.         3..4 COM1..COM2
  1068.     DS:SI    Pointer to buffer to receive printer status
  1069.         information
  1070.     ES:DI    ASCIZ server name (\\name format)
  1071.  
  1072.  
  1073. OUTPUT    FLAGS    NC If no error
  1074.         CY If error occured
  1075.     AX    Error code if error
  1076.     BX    Next physical printer number
  1077.  
  1078. Get printer status returns the status of a physical printer on the
  1079. server.  If the printer is actively printing then more detailed
  1080. information is also returned.
  1081.  
  1082.  
  1083. ; Printer status record
  1084. ;
  1085. PS    struc
  1086.  PS_state     db ?    ; Printer state (defined below)
  1087.  PS_index     dw ?    ; Queue index correspnding to print job being
  1088.             ; despooled.  (-1 if not despooling ignore
  1089.             ; rest of fields)
  1090.  PS_CPS         dw ?    ; Actual characters per second being output
  1091.  PS_output_chars dd ?    ; Characters actually output so far
  1092.  PS_read_chars     dd ?    ; Characters actually read from spooled file
  1093.             ; so far. May be used to compute % completed.
  1094.  PS_copies     dw ?    ; Copies remaining to print
  1095. PS    ends
  1096.  
  1097. ; Printer states.
  1098. ;
  1099. printer_state    record    PS_state_pause:1, PS_state_value:7
  1100. PS_state_disabled    equ 0        ; Printer is disabled
  1101. PS_state_single_job    equ 1           ; Printer will stop at end of job
  1102. PS_state_multijob    equ 2        ; Printer should print multiple jobs
  1103.  
  1104.  
  1105. 5FA4H    Get Stream Info
  1106. -----------------------
  1107.  
  1108. INPUT    AX    5FA4H
  1109.     BX    Stream index number (0 based)
  1110.     DS:SI    In Pointer to buffer to receive stream information
  1111.         (see defintion below)
  1112.     ES:DI    Pointer to machine name in \\machine-name<0> form
  1113.  
  1114. OUTPUT    FLAGS    NC If no error
  1115.         CY If error occured
  1116.     AX    Error code if error
  1117.     BX    Next stream number
  1118.  
  1119. Get Stream Info returns the information about a logical printer
  1120. stream.  Both the state of the stream and the stream template are
  1121. returned.
  1122.  
  1123. ; Definition of a logical printer stream.  Each stream contains a logical
  1124. ; printer resource template and a flag that indicates if jobs printed for
  1125. ; that logical printer resource should be queued or not.
  1126. ;
  1127. logical_stream    struc
  1128.  LS_queue    db ?            ; 0 Disabled, /= 0 Enabled
  1129.  LS_template    db 11 dup (?)        ; Template may contain ?'s
  1130. logical_stream    ends
  1131.  
  1132.  
  1133. 5FA5H    Set Stream Info
  1134. -----------------------
  1135.  
  1136. INPUT    AX    5FA5H
  1137.     BX    Stream index number (0 based)
  1138.     DS:SI    In Pointer to buffer to set stream information from
  1139.         (see defintion above)
  1140.     ES:DI    Pointer to machine name in \\machine-name<0> form
  1141.  
  1142. OUTPUT    FLAGS    NC If no error
  1143.         CY If error occured
  1144.     AX    Error code if error
  1145.  
  1146. Set Stream Info allows you to set a particular stream's state and
  1147. template.
  1148.  
  1149. 5FA7H    Create User Audit Entry
  1150. -------------------------------
  1151.  
  1152. INPUT    AX    5FA7H
  1153.     DS:DX    ASCIZ Reason code (up to 8 characters)
  1154.     DS:SI    ASCIZ Variable reason code (up to 128 characters)
  1155.     ES:DI    Pointer to ASCIZ machine name in the form \\server<0>
  1156.  
  1157. OUTPUT    FLAGS    NC If no error
  1158.         CY If error occured
  1159.     AX    Error code if error
  1160.  
  1161.  
  1162. 5FB0H    Get Active User information
  1163. -----------------------------------
  1164.  
  1165. INPUT    AX    5FB0H
  1166.     BX    Server login entry index to return information about
  1167.         (0 based)
  1168.     DS:SI    Pointer to user buffer for a single server login entry
  1169.     ES:DI    Pointer to ASCIZ machine name in the form \\server<0>
  1170.  
  1171. OUTPUT    FLAGS    NC If no error
  1172.         CY If error occured
  1173.     AX    Error code if error
  1174.     BX    Updated login index - Used to retrieve next succesive
  1175.         user.
  1176.     DS:SI    Filled buffer with login entry information.
  1177.  
  1178. Get active user information returns a server's information about a
  1179. currently active user.
  1180.  
  1181. ; Definition of active user entry
  1182. ;
  1183. active_user_entry    struc
  1184.  AUE_VCID    dw 0            ; Virtual circuit number
  1185.  AUE_state    db ?            ; Login state defined below
  1186.  AUE_command    db ?            ; Last command issued
  1187.  AUE_IO        db 5 dup (?)        ; Number of I/O bytes (40 bit number)
  1188.  AUE_requests    db 3 dup (?)        ; Number of server requests 24 bit num
  1189.  AUE_name    db 16 dup (?)        ; Name of user who is logged in
  1190.  AUE_machine    db 16 dup (?)        ; Name of remote logged in machine
  1191. active_user_entry    ends
  1192.  
  1193. ; Definition of the various login states and privilege.
  1194. ;
  1195. AUE_state_starting      equ 00000000b    ; We are in the middle of a login
  1196. AUE_state_in            equ 00000001b    ; We are fully logged in
  1197. AUE_state_RPL             equ 00000010b    ; Remote program load login
  1198.  
  1199. AUE_privilege_superACL     equ 10000000b    ; Bypass ACLs
  1200. AUE_privilege_superqueue equ 01000000b    ; Bypass queue protection
  1201. AUE_privilege_peer     equ 00100000b    ; Treat as local process
  1202. AUE_privilege_supermail     equ 00010000b    ; Bypass mail protection
  1203. AUE_privilege_audit     equ 00001000b    ; The user can create audit entries
  1204.  
  1205. ; Active user entry commands
  1206. ;
  1207. AUEC_login        equ    0    ; Login into a server
  1208. AUEC_terminate        equ    1    ; Process termination
  1209. AUEC_open        equ    2    ; Open a file
  1210. AUEC_close        equ    3    ; Close a file
  1211. AUEC_create        equ    4    ; Create a file if it's there or not
  1212. AUEC_new        equ    5    ; Create a new file that is not there
  1213. AUEC_unique        equ    6    ; Create a unique file
  1214. AUEC_commit        equ    7    ; Commit disk data to disk
  1215. AUEC_read        equ    8    ; Read from file
  1216. AUEC_write        equ    9    ; Write to file
  1217. AUEC_delete        equ    10    ; Delete file
  1218. AUEC_set_attr        equ    11    ; Set file attributes
  1219. AUEC_lock        equ    12    ; Lock byte range
  1220. AUEC_unlock        equ    13    ; Unlock byte range
  1221. AUEC_create_dir        equ    14    ; Create a subdirectory
  1222. AUEC_delete_dir        equ    15    ; Delete a subdirectory
  1223. AUEC_rename_file    equ    16    ; Rename a file
  1224. AUEC_find_first        equ    17    ; Find first matching file
  1225. AUEC_find_next        equ    18    ; Find the next matching file
  1226. AUEC_disk_free        equ    19    ; Get disk free space
  1227. AUEC_get_queue        equ    20    ; Get a queue entry
  1228. AUEC_set_queue        equ    21    ; Set a queue entry
  1229. AUEC_control_queue    equ    22    ; Control the queue
  1230. AUEC_get_login        equ    23    ; Return login information
  1231. AUEC_get_link        equ    24    ; Return link description
  1232. AUEC_seek        equ    25    ; Seek to a file position
  1233. AUEC_get_time        equ    26    ; Get server's time
  1234. AUEC_audit        equ    27    ; Create audit entry
  1235. AUEC_multi_open        equ    28    ; Open file in a multitude of modes
  1236. AUEC_change_password    equ    29    ; Change a password
  1237. AUEC_disable_account    equ    30    ; Disable account from further log ins
  1238. AUEC_copy_file        equ    31    ; Local server file copy
  1239. AUEC_get_username    equ    32    ; Get a username from account file
  1240. AUEC_translate_path    equ    33    ; Translate a server's logical path
  1241. AUEC_create_indirect    equ    34    ; Make indirect file
  1242. AUEC_get_indirect    equ    35    ; Get indirect file text
  1243. AUEC_printer_status    equ    36    ; Get physical printer stats
  1244. AUEC_get_stream        equ    37    ; Get logical print stream information
  1245. AUEC_set_stream        equ    38    ; Set logical print stream information
  1246. AUEC_get_account    equ    39    ; Get user's account record
  1247.  
  1248. 5FB1H    Get Shared directory information
  1249. ----------------------------------------
  1250.  
  1251. INPUT    AX    5FB1H
  1252.     DS:SI    Pointer to 64 byte buffer to receive link description
  1253.     ES:DI    Pointer to ASCIZ machine name and shared directory in form
  1254.         \\server\shared-resource<0>
  1255.  
  1256. OUTPUT    FLAGS    NC If no error
  1257.         CY If error occured
  1258.     AX    Error code if error
  1259.     CX    ACL privilege bits for requesting user
  1260.     DS:SI    Filled buffer with ASCIZ description of shared
  1261.         resource
  1262.  
  1263.  
  1264. ; ACL bit definition
  1265. ;
  1266. ACL_read      equ 1000000000000000b    ; (R) Allow open for read and reading
  1267. ACL_write      equ 0100000000000000b    ; (W) Allow open for write and writing
  1268. ACL_create_file      equ 0010000000000000b    ; (C) Allow file creation
  1269. ACL_create_dir      equ 0001000000000000b    ; (M) Allow directory creation
  1270. ACL_lookup      equ 0000100000000000b    ; (L) Allow file/directory lookups
  1271. ACL_delete_file      equ 0000010000000000b    ; (D) Allow file deletion
  1272. ACL_delete_dir      equ 0000001000000000b ; (K) Allow directory deletion
  1273. ACL_rename      equ 0000000100000000b    ; (N) Allow file renaming
  1274. ACL_execute      equ 0000000010000000b    ; (E) Allow program execution
  1275. ACL_physical      equ 0000000001000000b    ; (P) Allow physical access to device
  1276. ACL_attribute      equ 0000000000100000b ; (A) Allow attribute changing
  1277.     
  1278.  
  1279. 5FB2H    Get username from account file
  1280. --------------------------------------
  1281.  
  1282. INPUT    AX    5FB2H
  1283.     BX    Username entry index (0 for first entry)
  1284.     DS:SI    Pointer to memory block receive 16 character username
  1285.     ES:DI    Pointer to ASCIZ server name (\\name format)
  1286.  
  1287. OUTPUT    FLAGS    NC If no error
  1288.         CY If error occured
  1289.     AX    Error code if error
  1290.     BX    Next queue entry index to use to find next entry.
  1291.     DS:SI    16 Character username retrived from server's account file
  1292.  
  1293. 5FB3H    Translate path
  1294. ----------------------
  1295.  
  1296. INPUT    AX    5FB3H
  1297.     DS:SI    Pointer to 128 byte buffer to receive ASCIZ information
  1298.     ES:DI    Pointer to full ASCIZ path (including servre name).  E.g.
  1299.         "\\SERVER\ROOT\LOOPER\FILE.EXT<0>"
  1300.     DX    Type of translation to be performed.  (The OR of the
  1301.         following bits)
  1302.         00000001b Expand bottom path as indirect file
  1303.         00000010b Translate to server's physical disk.  Actual path
  1304.               relative to server's disk.  (e.g C:\AUTOEXEC.BAT)
  1305.  
  1306. OUTPUT    FLAGS    NC If no error
  1307.         CY If error occured
  1308.     AX    Error code if error
  1309.     DS:SI    Buffer pointed to by DS:SI updated
  1310.  
  1311. Translate path translates the full network path by expanding any indirect
  1312. files.  This system call is useful when you want to determine what an
  1313. indirect file is going to expand into before you use it.  Optionally
  1314. you can also expand the last file in the path as an indirect file or you
  1315. can return the server's physical path.
  1316.  
  1317. 5FB4H    Create indirect file
  1318. ----------------------------
  1319.  
  1320. INPUT    AX    5FB4H
  1321.     DS:SI    Pointer to 128 byte ASCIZ area which contains the indirect
  1322.         file's contents.  The file contains may contain any valid
  1323.         server relative path.
  1324.     ES:DI    Pointer to full ASCIZ path of indirect file to create.  E.g.
  1325.         "\\SERVER\ROOT\LINKFILE<0>"
  1326.  
  1327. OUTPUT    FLAGS    NC If no error
  1328.         CY If error occured
  1329.     AX    Error code if error
  1330.  
  1331. Create indirect file allows you to create an indirect file on a server,
  1332. Whenever the server referneces the indirect file, the contents of the
  1333. indirect file will be used instead of the indirect file's name.  For
  1334. example, if the indirect file \\SERVER\ROOT\LINKFILE contained
  1335. \MISC\TEXT.DAT, then whenever the file \\SERVER\ROOT\LINKFILE was
  1336. referenced, the path \MISC\TEXT.DAT would be substituted.
  1337.  
  1338.  
  1339. 5FB5H    Get indirect file contents
  1340. ----------------------------------
  1341.  
  1342. INPUT    AX    5FB6H
  1343.     DS:SI    Pointer to 128 byte area to receive ASCIZ indirect file
  1344.         contents
  1345.     ES:DI    Pointer to full network path of indirect file.
  1346.  
  1347. OUTPUT    FLAGS    NC If no error
  1348.         CY If error occured
  1349.     AX    Error code if error
  1350.     DS:SI    The buffer area has been filled
  1351.  
  1352. Get indirect file contents will return the contents of an indirect file.
  1353. This system call can be used to determine what was placed into the
  1354. indirect file by create indirect file.
  1355.  
  1356.  
  1357. 5FC0H    Get Server's time
  1358. -------------------------
  1359.  
  1360. INPUT    AX    5FC0H
  1361.     DS:SI    Pointer to 8 byte time block
  1362.     ES:DI    Pointer to ASCIZ server name to get time from.
  1363.  
  1364. OUTPUT    FLAGS    NC If no error
  1365.         CY If error occured
  1366.     AX    Error code if error
  1367.     DS:SI    Filled buffer with time information
  1368.  
  1369. time_block    struc
  1370.  TB_year    dw ?                ; Year
  1371.  TB_day        db ?                : Day of month (1-31)
  1372.  TB_month    db ?                ; Month (1-12)
  1373.  TB_minutes    db ?                ; Minutes (0-59)
  1374.  TB_hour    db ?                ; Hour (0-23)
  1375.  TB_hundreths    db ?                ; Hundreths of seconds (0-99)
  1376.  TB_seconds    db ?                ; Seconds (0-59)
  1377. time_block    ends
  1378.  
  1379.  
  1380. 5FD0H    Get redirected lineprinter timeout
  1381. ------------------------------------------
  1382.  
  1383. INPUT    AX    5FD0H
  1384.  
  1385. OUTPUT    FLAGS    NC If no error
  1386.         CY If error occured
  1387.     AX    Error code if error
  1388.     CX    Redirected line printer timeout in ticks (1 tick = 1/18.2
  1389.         seconds).  A value of 0 means timeouts are disabled.
  1390.  
  1391.  
  1392. 5FD1H    Set Redirected lineprinter timeouts
  1393. -------------------------------------------
  1394.  
  1395. INPUT    AX    5FD1H
  1396.     CX    Printer timeout in ticks (1/18.2 second).  A value of 0
  1397.         disables timeouts.
  1398. OUTPUT    FLAGS    NC If no error
  1399.         CY If error occured
  1400.     AX    Error code if error
  1401.  
  1402. 5FE0H    Get DOS service vector
  1403. ------------------------------
  1404.  
  1405. INPUT    AX    5FE0H
  1406.  
  1407. OUTPUT    FLAGS    NC If no error
  1408.         CY If error occured
  1409.     AX    Error code if error
  1410.     ES:BX    Pointer to current DOS service routine
  1411.  
  1412.  
  1413. 5FE1H    Set DOS service vector
  1414. ------------------------------
  1415.  
  1416. INPUT    AX    5FE1H
  1417.     ES:BX    New DOS service vector location.  To chain into the DOS
  1418.         service vector you must obtain the old vector (5FE0) and
  1419.         save it.  When your service routine is called you will
  1420.         need to call the old vector before beginning your
  1421.         processing.
  1422.  
  1423. OUTPUT    FLAGS    NC If no error
  1424.         CY If error occured
  1425.     AX    Error code if error
  1426.  
  1427. 5FE2H    Get message service vector
  1428. ----------------------------------
  1429.  
  1430. INPUT    AX    5FE2H
  1431.  
  1432. OUTPUT    FLAGS    NC If no error
  1433.         CY If error occured
  1434.     AX    Error code if error
  1435.     ES:BX    Pointer to current message service routine
  1436.  
  1437. 5FE3H    Set message service vector
  1438. ----------------------------------
  1439.  
  1440. INPUT    AX    5FE3H
  1441.     ES:BX    New message service vector location.  To chain into the
  1442.         message service vector you must obtain the old vector 
  1443.         (5FE2) and save it.  When your service routine is called
  1444.         you will need to call the old vector before beginning your
  1445.         processing.
  1446.         (NOTE: when a service routine is called ES:BX will point to
  1447.          the currently received message)
  1448.  
  1449. OUTPUT    FLAGS    NC If no error
  1450.         CY If error occured
  1451.     AX    Error code if error
  1452.  
  1453.  
  1454. Other useful system calls
  1455. *************************
  1456.  
  1457. Obtaining a list of shared resources
  1458. ------------------------------------
  1459.  
  1460. The server's shared resources appear as directories or files in the
  1461. server's root directory (i.e. \\SERVER).  To obtain a list of the server's
  1462. shared resources you can issue a find first system call (4EH) with a path
  1463. to the server's network control directory (e.g. \\SERVER\*.*).
  1464.  
  1465. For example, to return all shared resources
  1466.  
  1467. search_path    db "\\server\*.*",0
  1468.     ...
  1469.     mov    ah, 4eh            ; Find first system call
  1470.     mov    cx, 11h            ; Include read-only &directory
  1471.     mov    dx, search_path
  1472.     int    21h
  1473.     ...
  1474.     mov    ah, 3fh            ; Find next system call
  1475.     int    21h            
  1476.  
  1477. To return just printer resources
  1478.  
  1479. search_path    cb "\\server\@*.*",0
  1480.     ...
  1481.     mov    ah, 4eh            ; Find first system call
  1482.     mov    cx, 01h            ; Include read-only
  1483.     mov    dx, search_path
  1484.     int    21h
  1485.     ...
  1486.     mov    ah, 3fh
  1487.     int    21h
  1488.  
  1489.  
  1490.  
  1491. Quick Reference list of MS-DOS compatible Network System Calls
  1492. **************************************************************
  1493.  
  1494. 5E00H    Get Machine Name
  1495. 5E02H    Set Printer Setup
  1496. 5E03H    Get Printer Setup
  1497. 5F02H    Get Redirected Device Entry
  1498. 5F03H    Redirect device
  1499. 5F04H    Cancel Device Redirection
  1500.  
  1501.  
  1502.  
  1503. Quick Reference List of LANtastic NOS Only Network System Calls
  1504. ***************************************************************
  1505.  
  1506. 5F80H    Get Login Entry
  1507. 5F81H    Login to a Server
  1508. 5F82H    Logout of a Server
  1509. 5F83H    Get username entry
  1510. 5F84H    Get inactive server entry
  1511. 5F85H    Change password
  1512. 5F86H    Disable account
  1513. 5F87H    Get account
  1514. 5F97H    Copy file
  1515. 5F98H    Send unsolicited message
  1516. 5F99H    Get last received unsolicited message
  1517. 5F9AH    Get message processing flag
  1518. 5F9BH    Set message processing flag
  1519. 5F9CH    Pop up last received message
  1520. 5FA0H    Get queue entry
  1521. 5FA1H    Set queue entry
  1522. 5FA2H    Control queue
  1523. 5FA3H    Get Printer Status
  1524. 5FA4H    Get Stream Info
  1525. 5FA5H    Set Stream Info
  1526. 5FA7H    Create User Audit Entry
  1527. 5FB0H    Get Active User information
  1528. 5FB1H    Get Shared directory information
  1529. 5FB2H    Get username from account file
  1530. 5FB3H    Translate path
  1531. 5FB4H    Create indirect file
  1532. 5FB5H    Get indirect file contents
  1533. 5FC0H    Get Server's time
  1534. 5FD0H    Get redirected lineprinter timeout
  1535. 5FD1H    Set Redirected lineprinter timeouts
  1536. 5FE0H    Get DOS service vector
  1537. 5FE1H    Set DOS service vector
  1538. 5FE2H    Get message service vector
  1539. 5FE3H    Set message service vector
  1540.  
  1541.