Dec 282017
 
This text manual is intended for programer who wish to make use of the network services of the LANtastic Network Operating System (LANOS).
File TECH3.ZIP from The Programmer’s Corner in
Category Network Files
This text manual is intended for programer who wish to make use of the network services of the LANtastic Network Operating System (LANOS).
File Name File Size Zip Size Zip Type
TECH.DOC 49013 13712 deflated

Download File TECH3.ZIP Here

Contents of the TECH.DOC file



LANtastic (tm) Network Operating System
Technical Reference Manual
=================================================

Introduction
************

This manual is intended for programer who wish to make use of the
network services of the LANtastic Network Operating System (LANOS).
LANOS services described in this manual are for version 3.00 or above.
LANOS services fall into two catagories: Standard MS-DOS compatible
network functions and Extended network functions. Since LANOS runs
on any NETBIOS compatible LAN, NETBIOS functions are also available
although they are intrisic to the underlying NETBIOS implementation.

This manual assumes that the reader is familiar with 8088/8xx6
assembly language and DOS system functions. Since the standard
MS-DOS compatible network functions are described in the DOS
technical reference manual, we will not go into great detail in this
manual.

Throughout this manual references will be made to network paths.
LANOS network paths are fully compatibly with MS-DOS network paths.
Network paths are similar to file paths except that they reference
files through the network. The general syntax for network path is

\\server-name\path-name

where
server-nameis 1 to 15 character name of a network file server
path-nameis a DOS path on the server

For example,

\\MAIN-MACHINE\PROGS\DATA\FROG.TXT

refers to a file located on server MAIN-MACHINE. The path required
to access the file is PROGS\DATA\FROG.TXT. The directory PROGS is a
shared network directory and may not actually exist on the server. It
may in fact be an entire disk.

MS-NET compatible networks (e.g. IBM-PC LAN) do not fully support
full paths for all systems calls (in particular Find FIrst). LANOS,
however, supports full paths for all system calls that can take a
path argument. This means that many public domain directory
utilities will operate with a network path. Refer to the "Other
useful system calls" section for example uses of find-first/next.



Indirect Files
**************

As of version 3.00 of LANOS, a new type of file has been created for
use on the network. This file type, know as an indirect file,
resides on a server and is accessable to all users with the 'I' ACL
privilege. An indirect file contains server relative path
information that is expanded in place of the file's name when a path
is parsed by the server. In other words, an indirect file points to
another file or directory. Whenever you refer to the indirect file,
its name is replaced by the file or directry it refers to.

The folowing examples illustrate the operation of indirect files.

Given the following indirect files

Indirect fileContents
----------------------------------------
\ROOT\A\ROOT\AUTOEXEC.BAT
\MISC\C\ROOT\CONFIG.SYS
\ROOT\SOURCES\WIN.H..\INCLUDE\WINDOW.H
\ROOT\DOC\MISC\MANUALS\NEW\DOC

Some sample path expansions would be

PathExpansion
----------------------------------------------------
\ROOT\A\ROOT\AUTOEXEC.BAT
\MISC\C\ROOT\CONFIG.SYS
\ROOT\SOURCES\WIN.H\ROOT\INCLUDE\WINDOW.H
\ROOT\DOC\INTRO\MISC\MANUALS\NEW\DOC\INTRO
\ROOT\DOC\CHAPTERS\1\MISC\MANUALS\NEW\DOC\CHAPTERS\1

As you can see from the above examples, indirect files can be used to
point to other files or directories. The advantage of indirect files
is that the actual files or directories that they point to can reside
on one area while multiple indirect file can reference them with a
variety of names while residing in another directory.

Since the concept of indirect files does not exists under DOS.
Indirect files are not available directly from DOS. To use indirect
files you must reference them through the network.

System calls that are useful for the manipulation of indirect files
are

5FB3HTranslate path
5FB4HCreate indirect file
5FB5HGet indirect file contents



Error Codes
***********

All MS-DOS compatible system calls and all LANOS specific system calls
return error codes. The error code number is always returned in AX.
When an error occurs the carry flag (CY) is set. LANOS provides a
mechanism for expanding the error code number into a text string. The
following is a list of error codes which may be returned by LANOS:

Error
NumberMeaning
-------------
01HInvalid function number
02HFile not found
03HPath not found
04HFile open limit has been exceeded or no handles left
05HAccess denied
06HInvalid handle
07HMemory control blocks destroyed
08HThe memory limit has been exceeded
09HInvalid memory block address
0AHInvalid environment
0BHInvalid format
0CHInvalid access code
0DHInvalid data
0EHRESERVED
0FHInvalid drive was specified
10HAttempt to remove current directory
11HNot same device
12HNo more files
13HAttempt to write on write protected disk
14HUnknown unit
15HDrive not ready
16HUnknown command
17HData CRC error
18HBad req stuc length
19HSeek error
1AHUnknown media
1BHSector not found
1CHNo paper
1DHWrite fault
1EHRead fault
1FHGeneral failure
20HSharing violation
21HLock violation
22HInvalid disk change
23HFCB unavailable
24HSharing buffer overflow
25HRESERVED
26HCannot complete file operation
27H-31HRESERVED
32HNetwork request not supported
33HNetwork node ??????????????? is not listening
34HThe name already exists on the network
35HCannot locate network name
36HThe network is busy
37HServer connection to network node ??????????????? broken
38HThe NETBIOS command limit has been exceeded
39HThe network adapter has malfunctioned
3AHIncorrect response received from network node ???????????????
3BHUnexpected network error from network node ???????????????
3CHIncompatible network node ???????????????
3DHPrint queue full on network node ???????????????
3EHNo room for print file on network node ???????????????
3FHThe print file has been deleted on network node ???????????????
40HThe network name has been deleted
41HYou have been denied access on network node ???????????????
42HInvalid network device
43HThe network name was not found
44HThe network name limit has been exceeded
45HThe session limit has been exceeded
46HNetwork node ? has been temporarily paused
47HThe network request to network node ? was denied
48HPrint or disk redirection is paused on network node ???????????????
49HInvalid network version
4AHAccount has expired
4BHPassword has expired
4CHLogin attempt invalid at this time
4DHDisk limit has been exceeded on network node ???????????????
4EHNot logged in to network node ???????????????
4FHRESERVED
50HThe file already exists
51HRESERVED
52HCannot make directory entry
53HFailure on critical error
54HToo many redirections or logins to network node ???????????????
55HDuplicate redirection or login to network node ???????????????
56HInvalid username or password
57HInvalid parameter
58HNetwork data fault
59HFunction not supported on network
5AHRequired system component not installed

When you expand the error code into a text string the above question
marks are expanded to the name of the node you were refering to. To
expand an error code into a text string you will need to issue a
multiplex interrupt (2FH). The calling sequence is

INPUTAH5
AL0For installation check
#for error code (in pre DOS 4.00)
1 or 2for error code in DOS 4.00
BXinError code
OUTPUTFLAGSNC if error code converted to text
CY is error code can't be converted
ES:DIPointer to ASCIZ text buffer containing error text.
This is a read only text buffer and youmust not alter
the text in this buffer.

If the error code is RESERVED it is expanded to "General failure". The
maximum width for the question mark fields is 15 characters. The error
text is automatically adjusted so that extra spaces are not in the text
buffer. For example the error text

Network node ??????????????? is not listening

would be

Network node HOST is not listening

for node HOST.

When coding for LANOS the following code sequence will work for both
DOS 4.x and DOS 3.x:

movax, error_number; Get error number
movbx, ax; Place in BX also
movah, 5
int2fh
; ES:DI now points to error string.

NOTE: LANOS does not check AL when running under DOS 4.00 and thus
the values in AL are not important. The value in AL is important if
you are running on another network operating system such as IBM PC
LAN.


Testing for the Existance of the NETBIOS
****************************************

Before NETBIOS calls may be performed the NETBIOS must be installed.
The folowing code fragment illustates how you should test for the
existance of the NETBIOS.


; An illegal NCB used to determine if the NETBIOS is present
;
illegal_NCBdb 7fh ; Illegal command
db 63 dup (0); Rest of NCB is 0


; NETBIOS_PRESENT - Determine if we have a NETBIOS present
;
; DSinCurrent Data segment
; ESinCurrent Data segment
; AXoutDestroyed
; BXoutDestroyed
; FLAGSoutNO CARRY if present
;CARRY if not present
;
NETBIOS_presentproc
pushes
movax, 355cH ; Get 5C vector
int21H
movax, es
popes
cmpax, 0F000h; Pointing into BIOS?
jeno_vector; Yes - Then no real 5C
orax, bx; Test for 0
jnzhave_vector; Non-zero - Have 5C int
no_vector:
stc; Show not present
ret

; We have a legal 5C vector. Now perform an illegal NCB
; request to make sure that it is a legal NETBIOS.
;
have_vector:
moval, 0
movbx, offset illegal_NCB
int5cH
testal, al; Will get changed on illegal cmd
jzno_vector
clc
ret
NETBIOS_presentendp



Testing for the Existance of the Redirector, Server and LANPUP
**************************************************************

You can issue a multiplex interrupt (2FH) to determine if the
redirector, server or LANPUP software is installed.

INPUTAXB800H
OUTPUTAL0If neither redirector or server installed
NZRedirector, server or LANPUP installed
BLContains bits indicating which software is installed
(several bits will be set when serveral peices of software
is running)
10000000bRedirector has pop up receive message
capability.
01000000bServer is installed
00001000bRedirector is installed
00000010bLANPUP is installed


Determining Network Software Version
************************************

You can issue a multiplex interrupt to determine which version of the
network software is running.

INPUTAXB809H
OUTPUTAHMajor version number.
ALMinor version number.

NOTE:The version numbers are returned as decimal numbers. For
example, version 3.00 would be

AH2
AL53 decimal or 35 hex


The Alternate NETBIOS Interface
*******************************

The normal interface to the NETBIOS is via interrupt 5CH; the
alternate interrupt to the NETBIOS is via interrupt 2AH. The 2A
interface is provided by the LANtastic redirector. Some NETBIOS
programs do not use the standard 5C interface but rather the
alternate 2A interface.

The alternate interface (2A) was originally designed as a "higher"
level interface to network communications rather than the "low" level
interface (5C) provided by the NETBIOS. The 2A interface, however,
does not support any higher level functions than does the 5C
interface and therefore has not become a defacto standard as has the
5C interface.

The REDIR intercepts 2A interrupts and reformats them to 5C
interrupts, thereby providing a 2A interface to the NETBIOS. A list
of the 2A interface functions that are supported are described below.

2A interrupt functions are invoked by loading the AH or AX register
with a function code and then issuing a software interrupt 2A. For
example,

movah, 0; Installation check
int2AH; Call alternate NETBIOS interface

---------
FUNCTION:Installation check

DESCRIPTION:Checks to see if a 2A interface is installed.

INPUTS:AH in0

OUTPUTS:AH out0 if not installed
AHNZ if installed

---------
FUNCTION:Execute NETBIOS with no error retry

DESCRITION:Executes a NETBIOS command (similar to 5C interface).
The NETBIOS command may be optionaly retried on certain
error conditions.

INPUTS:AX01xxH or 0401H to execute NETBIOS with
no error retry
0400H to execute NETBIOS with error retry.
Error codes that are automatically retried are
No sessions resources (09H)
No listen (12H)
Interface busy (21H)
ES:BX Pointer to NCB

OUTPUTS:ALNETBIOS error code
AH0 if no error
1 if error

---------
FUNCTION: Get resource information

DESCRITION:Return NETBIOS resources which are available for use.

INPUTS:AH5

OUTPUTS:BXAvailable names (16 - names in use)
CXAvailable NCBs (free NCBs)
DXAvailable sessions (max sessions -
pending sessions)


Controlling redirected printer streams
**************************************

You can control how output is sent to redirected printers in three ways:

1. You can set a "combine" mode which does not separate multiple
print jobs when programs terminate or when the printer is
opened or closed.
2. You can set a "separate" mode which seperates print jobs when
a program terminates or when the printer is opened and closed.
3. You can "flush" redirected output, thereby forcing the printer
to begin printing.

The above three functions may be performed using the NET LPT COMBINE
NET LPT SEPARATE and NET LPT FLUSH commands. Often these commands
need to be performed within programs. Two software interfaces are
provided to allow you to control these functions. These interfaces
consist of 2AH interrupt interface and a standard 21H system call
interrupt interface.

NOTE: The DOS COMMAND.COM program always sets redirected printer
separate mode when it prompts for command input and therfore
these interrupts are ineffective accross multiple program
invocations performed through COMMAND.COM. The only exception
to this is inside batch files, since COMMAND.COM does not prompt
for command input.

2AH interrupt interface
-----------------------

FUNCTION:Set spooled output to combine mode

DESCRIPTION:All printer output is combined into 1 print job regardless
of the printer being opened or closed or programs
terminating.

INPUTS:AX0601H

OUTPUTS:none

---------
FUNCTION: Set spooled output in speparate mode

DESCRIPTION:Printer output is not combined when multiple programs are
run or when the printer is opened or closed. This command
implicitly starts a new print job.

INPUTS:AX0602H

OUTPUTS:none

---------
FUNCTION:Flush printer output

DESCRIPTION:Printer output is flushed and a new print job is started.
If no output exists to be flush then this function has no
effect.

INPUTS:AX0603H

OUTPUTS:none


21H Interrupt interface
-----------------------

FUNCTION:Return redirected printer mode

DESCRIPTION:The current printer mode (either printer output
combined or printer output separated) is returned.

INPUTS:AX5D07H

OUTPUTS:DL0 Redirected output is being combined
1 Redirected output is being separated

---------
FUNCTION:Set redirected printer mode (either printer output

DESCRIPTION:The current printer mode (either printer output
combined or printer output seprated) can be set.

INPUTS:AX5D08H
DL0 Set redirected output to be combined
1 Set redirected output to be separated. This
command implicitly starts a new print job.
OUTPUTS:none

---------
FUNCTION:Flush printer output

DESCRIPTION:Printer output is flushed and a new print job is started.
If no output exists to be flush then this function has no
effect.

INPUTS:AX5D09H

OUTPUTS:none


MS-DOS Compatible Network Functions
***********************************

All MS-DOS network system call functions with the exception of GET and
SET printer setup string (5E02 and 5E03) are fully supported. The
reason that these functions are not fully supported is that printer
setup strings are set by the system administrator and are stored on
the server. The printer setup strings are only changeable using the
NET_MGR program.

A quick reference list of the MS-DOS compatible network functions is
provided at the end this manual. The following network functions are in
numerical order.

5E00HGet Machine Name
------------------------

INPUTAX5E00H
DS:DXPointer to 16 byte buffer where ASCIZ machine name is
returned

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
CLNETBIOS name number of machine name.
CH0 If machine name is not set
Not zero if machine name has been set
DS:DXASCIZ machine name

Get Machine Name returns the name which your computer is known by on
the network. This name is specified when you run the redirector. You
may use the name and NETBIOS name number returned by this function to
perform NETBIOS commands. You must not use any other names added by
LANOS.


5E02HSet Printer Setup
-------------------------


INPUTAX5E02H
BXRedirection list index.
CXSetup string size
DS:SIPointer to printer setup string

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

Set printer setup sets a setup string to be sent to the network printer
whenever a file is queued to the printer.

NOTE: LANOS does not process this request since printer setup strings
are controlled by the system administer using the NET_MGR program.
The system call DOES NOT return an error, however.


5E03HGet Printer Setup
-------------------------

INPUTAX5E03H
BXRedirection entry index.
ES:DIPointer to area to contain setup string

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
CXLength of setup string.

Get setup string will return the setup string set with 5E02H (Set
Printer Setup) above.

NOTE: LANOS does not process this request since printer setup strings
are controlled by the system administer using the NET_MGR program.
The system call DOES NOT return an error, however, and the length
of the setup string (CX) is 0.


5F02HGet Redirected Device Entry
-----------------------------------

INPUTAX5F02H
BXRedirection entry index. Index 0 specifies the first entry.
DS:SIPointer to 16 byte area which will receive the ASCIZ device
name which the redirection index corresponds with.
ES:DIPointer to 128 byte area which will receive the ASCIZ
network path that the redirected device refers to.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BLType of device
3 Printer device
4 Disk device
BHDevice status
Bit 0=0 If device is valid
0=1 If device is not valid
Bits 1-7 reserved
CXValue stored by 5F03 call. Should be 0 for compatiblity with
LANOS.
DXMay be destroyed
BPMay be destroyed
DS:SIFilled ASCIZ device name
ES:DIFilled ASCIZ network path

Get Redirected Device Entry returns information about a single
redirected device (see 5F03 Redirect Device). This function may be
used to scan the list of redirected devices.


5F03HRedirect device
-----------------------

INPUTAX5F03H
BLType of device
3 Printer device
4 Disk device
CXValue to store with redirected device. Set this to 0
for compatiblity with LANOS.
DS:SIPointer to ASCIZ device name to redirect. For printer
device specify: PRN, LPT1, LPT2, LPT3
For disk devices specify A:, B:, C:, etc.
ES:DIPointer to network path to redirect the device to.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

Redirect device allows you to connect local devices to network paths.
For example you can connect your LPT1 to a printer on another node.
References to LPT1 are routed to the network.


5F04HCancel Device Redirection
---------------------------------

INPUTAX5F04
DS:SIPointer to device name to cancel redirection for.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

Cancel device redirection allows you to remove a device redirection so
that the device is restored to its former state.


LANOS Extended Network Functions
********************************

LANOS provides an extended set of network system calls which allow
further network control which is not provided by the standard MS-DOS
compatible network requests.

5F80HGet Login Entry
-----------------------

INPUTAX5F80H
BXLogin entry index (0 based).
ES:DIPointer to 16 byte buffer which will receive computer name that
you are logged into.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BXNext login entry index. BX-1 is the current login entry
index. You can use BX-1 in future Get Login Entry calls
to reread the login entry.
DLAdapter number logged in through
ES:DIPointer to filled ASCIZ buffer. The logged in machine name
DOES NOT include the \\ prefix.

5F81HLogin to a Server
-------------------------

INPUTAX5F81H
ES:DIPointer to login path and password in the following form
\\computer-name\username<0>password<0>
Passwords may be omiited blank but binary 0's (<0>) are
still needed
BLAdapter number to login into through
0ffhTo try all valid adapters
0-3To try adapter 0-3 explicitly
OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

5F82HLogout of a Server
--------------------------

INPUTES:DIPointer to server name to log out of in the form
\\computer-name<0>

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error


5F83HGet username entry
--------------------------

INPUTAX5F83H
BXLogin entry index (0 based).
ES:DIPointer to 16 byte buffer which will receive user name that
you are logged into.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BXNext login entry index. BX-1 is the current login entry
index. You can use BX-1 in future Get Username Entry calls
to reread the suername entry.
DLAdapter number logged in through
ES:DIPointer to filled buffer.


5F84HGet inactive server entry
---------------------------------

INPUTAX5F84H
BXNon-logged in server index.
ES:DIPointer to 16 byte buffer which will receive a server name
that you are NOT logged into but is avaliable to for logging
in.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
DLAdapter number the non-logged in server is on. This number
may be used as input "Login to Server" (5F81) system call.
ES:DIPointer to filled ASCIZ buffer. The non-logged in server
name DOES NOT include the \\ prefix.


5F85HChange password
-----------------------

INPUTAX5F85H
ES:DIPointer to \\computer-name\old-password<0>new_password<0>
You must be logged into computer-name

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

CHANGE PASSWORD changes a password given an old (current) and new
password.



5F86HDisable account
-----------------------

INPUTAX5F86H
ES:DIPointer to machine name and password in the form
\\machine-name\password<0>
You must be logged into the machine before this system
call will work.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

DISABLE ACCOUNT disables a user's currently logged in account.
Applies only when concurrent login entries are set at 1 (by
NET_MGR). Requires system manager to reenable account.



5F87HGet account
-------------------

INPUTAX5F87H
DS:SIPointer to 128 byte buffer to receive account
information.
ES:DIPointer to machine name in the form \\machine-name<0>
You must be logged into the machine before this system
call will work.

OUTPUTFLAGSNC If no error
CY If error occured
BXDestroyed
AXError code if error

Get Account returns the account record for your the account you are
currently logged into the server with.

; User account structure
;
user_accountstruc
UA_namedb 16 dup (?); Blank padded username
UA_internal1db 16 dup (0)
UA_descriptiondb 32 dup (?); Full user description
UA_privilegedb ?; Privilege bits
UA_concurrentdb ?; Maximum concurent users
UA_allowed_timesdb 42 dup (?); 1 bit for each half hour
; 7 days a week
; Begins on Sunday. 0
; means allowed
UA_internal2dw 2
UA_last_login_timedw 2 dup (?); Last time logged in
UA_account_expirationdw 2 dup (?); Expiration date (MSDOS-format)
; Year, Month:Day
UA_password_expiration dw 2 dup (?); Expiration date (as above)
; 0 - Means no expiration date
UA_password_extensiondb ?; 1-31 Number of days to
; reextend password after change
; 0 - No extension required
UA_internaldb 5 dup (?)
user_accountends

; Privilege bits set for UA_password above
;
UA_privilege_superACLequ 10000000b; Bypass ACLs
UA_privilege_superqueueequ 01000000b; Bypass queue protection
UA_privilege_peerequ 00100000b; Treat as local process
UA_privilege_supermailequ 00010000b; Bypass mail protection
UA_privilege_auditequ 00001000b; Allow create of audit entry
UA_privilege_systemequ 00000100b; System manager



5F97HCopy file
-----------------

INPUTAX5F97H
CX:DXAmount to copy (set to FFFF:FFFF to copy whole file)
SISource handle
DIDestination handle

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
AX:DXAmount copied

COPY FILE copies the source file (designated by the input handle) to the
destination file (designated by the output handle). The copy is performed
by the server and requires not workstation resources.

5F98HSend unsolicited message
--------------------------------

INPUTAX5F98H
DS:SIPointer to message buffer. Format of buffer is
described below

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
NOTE: currently no errors are returned

; Format of DG_message command. The 16 byte name fields are null
; terminated and contain the first n characters to be matched. For
; example AB<0> will match ABxxxxxx...
;
message_bufferstruc
MB_reserved db ?; Reserved field used by system call
MB_type db ?; User defined message type
MB_machine db 16 dup (?); Machine name that message is destined for
MB_server db 16 dup (?); User must be logged into this server
MB_user db 16 dup (?); User must be using this username
MB_originator db 16 dup (?); Originator's machine name. Filled in
; when message is received
MB_text db 80 dup (?); Message text
message_bufferends

; Message buffer type. The values 0-7fh are reserved for LANOS use. Other
; message types are user defined. You may, however, use message
; MBT_general since this is the message type that NET and LANPUP use
; to the send rude messages.
;
MBT_generalequ 0; General message used by NET, LANPUP
; and others
MBT_warningequ 1; Server warning message.


5F99HGet last received unsolicited message
---------------------------------------------

INPUTAX5F98H
ES:DIPointer to message buffer. Format of buffer is
described above for 5F98H system call.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error (or no message pending)


5F9AHGet message processing flag
-----------------------------------

INPUTAX5F9AH

OUTPUTDLBits which describe what processing should be done when
an unsolicited message is received.
FLAGSNC If no error
CY If error occured
AXError code if error


; Message processing bits
;
MPB_beep equ 00000001b; Beep before message delivered
MPB_deliver equ 00000010b; Deliver message to message service
MPB_auto_pop_up equ 00000100b; Pop up messages automatically


5F9BHSet message processing flag
-----------------------------------

INPUTAX5F9BH
DLBits which describe what processing should be done when
an unsolicited message is received. See 5F9AH system
call for list of bits.


OUTPUTFLAGSNC If no error

CY If error occured
AXError code if error


5F9CHPop up last received message
------------------------------------

INPUTAX5F9CH
CXAmount of time in ticks to leave message on the screen
DHLine number of where message will be placed. Not value
checkd. 0 Based.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error. The Only erro currently returned is
0BH (Invalid format). This error is returned if the screen
is not currently in a text mode and the pop-up message can't
be displayed.

Pop up last received message displays the last received message on the
screen. The message is placed at a given line and displayed for a given
amount of time. When the message is removed the original screen contents
are restored. The message may be removed before the display time elapses
by pressing Esc.


5FA0HGet queue entry
-----------------------

INPUTAX5FA0H
BXQueue entry index (0 for first entry)
DS:SIPointer to memory block to transfer queue entry into.
ES:DIPointer to ASCIZ server name in the form \\name<0>

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BXNext queue entry index to use to find next entry.
BX-1 is the current queue entry index. You can use BX-1
in future Get Queue Entry calls to reread the queue
entry.
DS:SIFilled memory block with queue entry info.

; Definition of a queue entry.
;
queue_entrystruc
QE_statusdb ?; Status of queue entry
QE_sizedd ?; Size of spooled file
QE_typedb ?; Type of queue entry
QE_output_controldb ?; Control of despooled file
QE_copiesdw 1; Copies
QE_sequencedd ?; Sequence number of queue entry
QE_spooled_filedb 48 dup (?); Pathname of spooled file
QE_userdb 16 dup (?); Username who spooled file
QE_machinedb 16 dup (?); Machine name user was on
QE_datedw ?; Date file spooled (MS-DOS format)
QE_timedw ?; Time file spooled (MS-DOS format)
QE_destinationdb 17 dup (?); ASCIZ Device name or username destined for
QE_commentdb 48 dup (?); Comment field
queue_entryends

; Different queue entry statuses
;
QE_status_freeequ 0; The queue entry is empty
QE_status_updateequ 1; The queue entry is being updated
QE_status_holdequ 2; The queue entry is held
QE_status_waitequ 3; The queue entry is waiting for despool
QE_status_activeequ 4; The queue entry is being despooled
QE_status_cancelequ 5; The queue has been canceled
QE_status_file_errorequ 6; The spooled file could not be accessed
QE_status_spool_errorequ 7; The destination could not be accessed
QE_status_rushequ 8; Rush this job

; Different types of queue entries
;
QE_type_printequ 0; Spooled printer queue file
QE_type_messageequ 1; Spooled message (mail)
QE_type_local_fileequ 2; Spooled local file
QE_type_remote_fileequ 3; Spooled remote file
QE_type_modemequ 4; Spooled to remote modem
QE_type_batchequ 5; Spooled batch processor file

; Bit definitions for output control
;
QE_OC_keepequ01000000b; Keep after despooling (don't delete)
; For mail - allow delete only by owner
QE_OC_voiceequ00100000b; For mail - Mail file contains voice
; mail.
5FA1HSet queue entry
-----------------------

INPUTAX5FA1H
BXHandle of opened queue entry
DS:SIPointer to queue information buffer. The buffer must be
formatted as above.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

Set queue entry allows you to change certain fields in a queue entry.
The queue entry must be currently open and you must have a handle to it.
The only fields that are looked at and altered are:

QE_output_control
QE_copies
QE_destination(only for MAIL queue entries)
QE_comment


5FA2HControl queue
---------------------

INPUTAX5FA2
BLQueue control command
CX:DXSequence number to control. (CANCEL HOLD RELEASE
RUSH)
DXPhysical printer number. (START HALT HALT_EOJ PAUSE
SINGLE RESTART)
0..2 LPT1..LPT2
3..4 COM1..COM2
other All printers
ES:DIASCIZ computer name

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

Control queue allows you to alter print jobs and manipulate the
physical printer despooling if you have privileges. You can control
despooling for selected printers or all printers.

; Control queue commands. Stared (*) entry are prived. commands which
; require Q privilege.
;
CQ_startequ0;* Start despooling
CQ_haltequ1;* Halt despooling
CQ_halt_EOJequ2;* Halt despooling at end of job
CQ_pauseequ3;* Pause the despooler at end of job
CQ_singleequ4;* Print single job
CQ_restartequ5;* Restart the current print job
CQ_cancelequ6; Cancel the currenly printing job
CQ_holdequ7; Hold the queue entry
CQ_releaseequ8; Release a held queue entry
CQ_rushequ9;* Make the queue entry a rushed job


5FA3HGet Printer Status
--------------------------

INPUTAX5FA3H
BXPhysical printer number
0..2 LPT1..LPT3
3..4 COM1..COM2
DS:SIPointer to buffer to receive printer status
information
ES:DIASCIZ server name (\\name format)


OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BXNext physical printer number

Get printer status returns the status of a physical printer on the
server. If the printer is actively printing then more detailed
information is also returned.


; Printer status record
;
PSstruc
PS_state db ?; Printer state (defined below)
PS_index dw ?; Queue index correspnding to print job being
; despooled. (-1 if not despooling ignore
; rest of fields)
PS_CPS dw ?; Actual characters per second being output
PS_output_chars dd ?; Characters actually output so far
PS_read_chars dd ?; Characters actually read from spooled file
; so far. May be used to compute % completed.
PS_copies dw ?; Copies remaining to print
PSends

; Printer states.
;
printer_staterecordPS_state_pause:1, PS_state_value:7
PS_state_disabledequ 0; Printer is disabled
PS_state_single_jobequ 1 ; Printer will stop at end of job
PS_state_multijobequ 2; Printer should print multiple jobs


5FA4HGet Stream Info
-----------------------

INPUTAX5FA4H
BXStream index number (0 based)
DS:SIIn Pointer to buffer to receive stream information
(see defintion below)
ES:DIPointer to machine name in \\machine-name<0> form

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BXNext stream number

Get Stream Info returns the information about a logical printer
stream. Both the state of the stream and the stream template are
returned.

; Definition of a logical printer stream. Each stream contains a logical
; printer resource template and a flag that indicates if jobs printed for
; that logical printer resource should be queued or not.
;
logical_streamstruc
LS_queuedb ?; 0 Disabled, /= 0 Enabled
LS_templatedb 11 dup (?); Template may contain ?'s
logical_streamends


5FA5HSet Stream Info
-----------------------

INPUTAX5FA5H
BXStream index number (0 based)
DS:SIIn Pointer to buffer to set stream information from
(see defintion above)
ES:DIPointer to machine name in \\machine-name<0> form

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

Set Stream Info allows you to set a particular stream's state and
template.

5FA7HCreate User Audit Entry
-------------------------------

INPUTAX5FA7H
DS:DXASCIZ Reason code (up to 8 characters)
DS:SIASCIZ Variable reason code (up to 128 characters)
ES:DIPointer to ASCIZ machine name in the form \\server<0>

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error


5FB0HGet Active User information
-----------------------------------

INPUTAX5FB0H
BXServer login entry index to return information about
(0 based)
DS:SIPointer to user buffer for a single server login entry
ES:DIPointer to ASCIZ machine name in the form \\server<0>

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BXUpdated login index - Used to retrieve next succesive
user.
DS:SIFilled buffer with login entry information.

Get active user information returns a server's information about a
currently active user.

; Definition of active user entry
;
active_user_entrystruc
AUE_VCIDdw 0; Virtual circuit number
AUE_statedb ?; Login state defined below
AUE_commanddb ?; Last command issued
AUE_IOdb 5 dup (?); Number of I/O bytes (40 bit number)
AUE_requestsdb 3 dup (?); Number of server requests 24 bit num
AUE_namedb 16 dup (?); Name of user who is logged in
AUE_machinedb 16 dup (?); Name of remote logged in machine
active_user_entryends

; Definition of the various login states and privilege.
;
AUE_state_starting equ 00000000b; We are in the middle of a login
AUE_state_in equ 00000001b; We are fully logged in
AUE_state_RPL equ 00000010b; Remote program load login

AUE_privilege_superACL equ 10000000b; Bypass ACLs
AUE_privilege_superqueue equ 01000000b; Bypass queue protection
AUE_privilege_peer equ 00100000b; Treat as local process
AUE_privilege_supermail equ 00010000b; Bypass mail protection
AUE_privilege_audit equ 00001000b; The user can create audit entries

; Active user entry commands
;
AUEC_loginequ0; Login into a server
AUEC_terminateequ1; Process termination
AUEC_openequ2; Open a file
AUEC_closeequ3; Close a file
AUEC_createequ4; Create a file if it's there or not
AUEC_newequ5; Create a new file that is not there
AUEC_uniqueequ6; Create a unique file
AUEC_commitequ7; Commit disk data to disk
AUEC_readequ8; Read from file
AUEC_writeequ9; Write to file
AUEC_deleteequ10; Delete file
AUEC_set_attrequ11; Set file attributes
AUEC_lockequ12; Lock byte range
AUEC_unlockequ13; Unlock byte range
AUEC_create_direqu14; Create a subdirectory
AUEC_delete_direqu15; Delete a subdirectory
AUEC_rename_fileequ16; Rename a file
AUEC_find_firstequ17; Find first matching file
AUEC_find_nextequ18; Find the next matching file
AUEC_disk_freeequ19; Get disk free space
AUEC_get_queueequ20; Get a queue entry
AUEC_set_queueequ21; Set a queue entry
AUEC_control_queueequ22; Control the queue
AUEC_get_loginequ23; Return login information
AUEC_get_linkequ24; Return link description
AUEC_seekequ25; Seek to a file position
AUEC_get_timeequ26; Get server's time
AUEC_auditequ27; Create audit entry
AUEC_multi_openequ28; Open file in a multitude of modes
AUEC_change_passwordequ29; Change a password
AUEC_disable_accountequ30; Disable account from further log ins
AUEC_copy_fileequ31; Local server file copy
AUEC_get_usernameequ32; Get a username from account file
AUEC_translate_pathequ33; Translate a server's logical path
AUEC_create_indirectequ34; Make indirect file
AUEC_get_indirectequ35; Get indirect file text
AUEC_printer_statusequ36; Get physical printer stats
AUEC_get_streamequ37; Get logical print stream information
AUEC_set_streamequ38; Set logical print stream information
AUEC_get_accountequ39; Get user's account record

5FB1HGet Shared directory information
----------------------------------------

INPUTAX5FB1H
DS:SIPointer to 64 byte buffer to receive link description
ES:DIPointer to ASCIZ machine name and shared directory in form
\\server\shared-resource<0>

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
CXACL privilege bits for requesting user
DS:SIFilled buffer with ASCIZ description of shared
resource


; ACL bit definition
;
ACL_read equ 1000000000000000b; (R) Allow open for read and reading
ACL_write equ 0100000000000000b; (W) Allow open for write and writing
ACL_create_file equ 0010000000000000b; (C) Allow file creation
ACL_create_dir equ 0001000000000000b; (M) Allow directory creation
ACL_lookup equ 0000100000000000b; (L) Allow file/directory lookups
ACL_delete_file equ 0000010000000000b; (D) Allow file deletion
ACL_delete_dir equ 0000001000000000b ; (K) Allow directory deletion
ACL_rename equ 0000000100000000b; (N) Allow file renaming
ACL_execute equ 0000000010000000b; (E) Allow program execution
ACL_physical equ 0000000001000000b; (P) Allow physical access to device
ACL_attribute equ 0000000000100000b ; (A) Allow attribute changing


5FB2HGet username from account file
--------------------------------------

INPUTAX5FB2H
BXUsername entry index (0 for first entry)
DS:SIPointer to memory block receive 16 character username
ES:DIPointer to ASCIZ server name (\\name format)

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
BXNext queue entry index to use to find next entry.
DS:SI16 Character username retrived from server's account file

5FB3HTranslate path
----------------------

INPUTAX5FB3H
DS:SIPointer to 128 byte buffer to receive ASCIZ information
ES:DIPointer to full ASCIZ path (including servre name). E.g.
"\\SERVER\ROOT\LOOPER\FILE.EXT<0>"
DXType of translation to be performed. (The OR of the
following bits)
00000001b Expand bottom path as indirect file
00000010b Translate to server's physical disk. Actual path
relative to server's disk. (e.g C:\AUTOEXEC.BAT)

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
DS:SIBuffer pointed to by DS:SI updated

Translate path translates the full network path by expanding any indirect
files. This system call is useful when you want to determine what an
indirect file is going to expand into before you use it. Optionally
you can also expand the last file in the path as an indirect file or you
can return the server's physical path.

5FB4HCreate indirect file
----------------------------

INPUTAX5FB4H
DS:SIPointer to 128 byte ASCIZ area which contains the indirect
file's contents. The file contains may contain any valid
server relative path.
ES:DIPointer to full ASCIZ path of indirect file to create. E.g.
"\\SERVER\ROOT\LINKFILE<0>"

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

Create indirect file allows you to create an indirect file on a server,
Whenever the server referneces the indirect file, the contents of the
indirect file will be used instead of the indirect file's name. For
example, if the indirect file \\SERVER\ROOT\LINKFILE contained
\MISC\TEXT.DAT, then whenever the file \\SERVER\ROOT\LINKFILE was
referenced, the path \MISC\TEXT.DAT would be substituted.


5FB5HGet indirect file contents
----------------------------------

INPUTAX5FB6H
DS:SIPointer to 128 byte area to receive ASCIZ indirect file
contents
ES:DIPointer to full network path of indirect file.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
DS:SIThe buffer area has been filled

Get indirect file contents will return the contents of an indirect file.
This system call can be used to determine what was placed into the
indirect file by create indirect file.


5FC0HGet Server's time
-------------------------

INPUTAX5FC0H
DS:SIPointer to 8 byte time block
ES:DIPointer to ASCIZ server name to get time from.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
DS:SIFilled buffer with time information

time_blockstruc
TB_yeardw ?; Year
TB_daydb ?: Day of month (1-31)
TB_monthdb ?; Month (1-12)
TB_minutesdb ?; Minutes (0-59)
TB_hourdb ?; Hour (0-23)
TB_hundrethsdb ?; Hundreths of seconds (0-99)
TB_secondsdb ?; Seconds (0-59)
time_blockends


5FD0HGet redirected lineprinter timeout
------------------------------------------

INPUTAX5FD0H

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
CXRedirected line printer timeout in ticks (1 tick = 1/18.2
seconds). A value of 0 means timeouts are disabled.


5FD1HSet Redirected lineprinter timeouts
-------------------------------------------

INPUTAX5FD1H
CXPrinter timeout in ticks (1/18.2 second). A value of 0
disables timeouts.
OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

5FE0HGet DOS service vector
------------------------------

INPUTAX5FE0H

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
ES:BXPointer to current DOS service routine


5FE1HSet DOS service vector
------------------------------

INPUTAX5FE1H
ES:BXNew DOS service vector location. To chain into the DOS
service vector you must obtain the old vector (5FE0) and
save it. When your service routine is called you will
need to call the old vector before beginning your
processing.

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error

5FE2HGet message service vector
----------------------------------

INPUTAX5FE2H

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error
ES:BXPointer to current message service routine

5FE3HSet message service vector
----------------------------------

INPUTAX5FE3H
ES:BXNew message service vector location. To chain into the
message service vector you must obtain the old vector
(5FE2) and save it. When your service routine is called
you will need to call the old vector before beginning your
processing.
(NOTE: when a service routine is called ES:BX will point to
the currently received message)

OUTPUTFLAGSNC If no error
CY If error occured
AXError code if error


Other useful system calls
*************************

Obtaining a list of shared resources
------------------------------------

The server's shared resources appear as directories or files in the
server's root directory (i.e. \\SERVER). To obtain a list of the server's
shared resources you can issue a find first system call (4EH) with a path
to the server's network control directory (e.g. \\SERVER\*.*).

For example, to return all shared resources

search_pathdb "\\server\*.*",0
...
movah, 4eh; Find first system call
movcx, 11h; Include read-only &directory
movdx, search_path
int21h
...
movah, 3fh; Find next system call
int21h

To return just printer resources

search_pathcb "\\server\@*.*",0
...
movah, 4eh; Find first system call
movcx, 01h; Include read-only
movdx, search_path
int21h
...
movah, 3fh
int21h



Quick Reference list of MS-DOS compatible Network System Calls
**************************************************************

5E00HGet Machine Name
5E02HSet Printer Setup
5E03HGet Printer Setup
5F02HGet Redirected Device Entry
5F03HRedirect device
5F04HCancel Device Redirection



Quick Reference List of LANtastic NOS Only Network System Calls
***************************************************************

5F80HGet Login Entry
5F81HLogin to a Server
5F82HLogout of a Server
5F83HGet username entry
5F84HGet inactive server entry
5F85HChange password
5F86HDisable account
5F87HGet account
5F97HCopy file
5F98HSend unsolicited message
5F99HGet last received unsolicited message
5F9AHGet message processing flag
5F9BHSet message processing flag
5F9CHPop up last received message
5FA0HGet queue entry
5FA1HSet queue entry
5FA2HControl queue
5FA3HGet Printer Status
5FA4HGet Stream Info
5FA5HSet Stream Info
5FA7HCreate User Audit Entry
5FB0HGet Active User information
5FB1HGet Shared directory information
5FB2HGet username from account file
5FB3HTranslate path
5FB4HCreate indirect file
5FB5HGet indirect file contents
5FC0HGet Server's time
5FD0HGet redirected lineprinter timeout
5FD1HSet Redirected lineprinter timeouts
5FE0HGet DOS service vector
5FE1HSet DOS service vector
5FE2HGet message service vector
5FE3HSet message service vector



 December 28, 2017  Add comments

Leave a Reply