ralf@b.gp.cs.cmu.edu (Ralf Brown) (12/18/88)
AL = subfunction
00h allocate standard pages
01h allocate raw pages
BX = number of pages to allocate
Return: DX = handle
AH = status
00h successful
80h internal error
81h hardware failure
84h undefined function requested
85h no more handles available
87h insufficient memory pages in system
88h insufficient memory pages available
8Fh undefined subfunction
---------------------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
AH = 5Bh
AL = subfunction
00h get alternate map register set
01h set alternate map register set
BL = new alternate map register set number
ES:DI -> map register context save area if BL=0
02h get alternate map save array size
03h allocate alternate map register set
04h deallocate alternate map register set
BL = number of alternate map register set
Return: BL = current active alternate map register set number if nonzero (AL=0)
ES:DI -> map register context save area if BL=0 (AL=0)
DX = array size in bytes (subfunction 02h)
BL = number of alternate map register set; zero if not supported (AL=3)
AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
9Ah specified alternate map register set not supported
9Bh all alternate map register sets currently allocated
9Ch alternate map register sets not supported
9Dh undefined or unallocated alternate map register set
A3h source array corrupted
A4h operating system denied access
Note: this function is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
---------------------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
AH = 5Bh
AL = subfunction
05h allocate DMA register set
06h enable DMA on alternate map register set
BL = DMA register set number
DL = DMA channel number
07h disable DMA on alternate map register set
BL = DMA register set number
08h deallocate DMA register set
BL = DMA register set number
Return: BL = DMA register set number; zero if not supported (subfunction 05h)
AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
9Ah specified DMA register set not supported
9Bh all DMA register sets currently allocated
9Ch alternate DMA sets not supported
9Dh undefined or unallocated DMA register set
9Eh dedicated DMA channels not supported
9Fh specified dedicated DMA channel not supported
A3h source array corrupted
A4h operating system denied access
Note: this function is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
---------------------------------------------
INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
AH = 5Ch
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
---------------------------------------------
INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
AH = 5Dh
AL = subfunction
00h enable OS Function Set
01h disable OS Function Set
02h return access key (resets memory manager, returns access key at
next invocation)
BX,CX = access key returned by first invocation
Return: BX,CX = access key, returned only on first invocation of function
AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
A4h operating system denied access
---------------------------------------------
INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
AH = 60h
ES:DI -> buffer
Return: AH = status
AL = number of entries
buffer at ES:DI filled
---------------------------------------------
INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
AH = 61h
???
Return: ???
Note: can be used by accelerator card manufacturer to flush RAM cache, ensuring
that the cache accurately reflects what the processor would see without
the cache.
---------------------------------------------
INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
AH = 68h
ES:DI -> buffer
Return: AH = status
AL = number of entries
buffer at ES:DI filled
Note: equivalent to LIM 4.0 function 58h
---------------------------------------------
INT 67 - EEMS - MAP PAGE INTO FRAME
AH = 69h
AL = frame number
BX = page number
DX = handle
Return: AH = status
Note: similar to EMS function 44h
---------------------------------------------
INT 67 - EEMS - PAGE MAPPING
AH = 6Ah
AL = subfunction
00h save partial page map
CH = first page frame
CL = number of frames
ES:DI -> buffer which is to be filled
01h restore partial page map
CH = first page frame
CL = number of frames
DI:SI -> previously saved page map
02h save and restore partial page map
CH = first page frame
CL = number of frames
ES:DI = buffer for current page map
DI:SI = new page map
03h get size of save array
CH = first page frame
CL = number of frames
Return: AL = size of array in bytes
04h switch to standard map register setting
05h switch to alternate map register setting
06h deallocate pages mapped to frames in conventional memory
CH = first page frame
CL = number of frames
Return: AH = status
Note: similar to EMS function 4Eh, except that a subrange of pages can
be specified
---------------------------------------------
INT 68 - APPC/PC
AH = 01h
DS:DX -> control block
12 BYTEs reserved
WORD verb (action)
6 BYTEs 0
DWORD (high byte first) return code
0000h successful
0001h BAD_TP_ID
0002h BAD_CONV_ID
0003h bad logical unit ID
0008h no physical unit attached
0110h bad state
01B1h BAD_PART_LUNAME
01B2h bad mode name
0201h physical unit already active
0211h logical unit already active
0212h BAD_PART_SESS
0213h BAD_RU_SIZES
0214h BAD_MODE_SESS
0216h BAD_PACING_CNT
0219h EXTREME_RUS
021Ah SNASVCMG_1
0223h SSCP_CONNECTED_LU
0230h invalid change
0243h too many TPs
0272h adapter close failure
0281h GET_ALLOC_BAD_TYPE
0282h unsuccessful
0283h DLC failure
0284h unrecognized DLC
0286h duplicate DLC
0301h SSCP_PU_SESSION_NOT_ACTIVE
0302h data exceeds RU size
0401h invalid direction
0402h invalid type
0403h segment overlap
0404h invalid first character
0405h table error
0406h conversion error
F0010000h APPC disabled
F0020000h APPC busy
F0030000h APPC abended
F0040000h incomplete
if verb = 1B00h (DISPLAY), control block continues
WORD 0
8 BYTEs (high byte first) logical unit ID
8 BYTEs (high byte first) partner logical unit name
8 BYTEs (high byte first) mode name
BYTE logical unit session limit
BYTE partner logical unit session limit
BYTE mode maximum negotiable session limit
BYTE current session limit
BYTE minimum negotiated winner limit
BYTE maximum negotiated loser limit
BYTE active session count
BYTE active CONWINNER session count
BYTE active CONLOSER session count
BYTE session termination count
BYTE bit 7: SESSION_TERMINATION_TARGET_DRAIN
bit 6: SESSION_TERMINATION_SOURCE_DRAIN
if verb=2000h (Attach Physical Unit), control block continues
WORD 0
BYTE version
BYTE release
8 BYTEs (high byte first) net name
8 BYTEs (high byte first) physical unit name
8 BYTEs 0
DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh = don't log errors
DWORD 0
BYTE 0 RETURN_CONTROL: COMPLETE
1 RETURN_CONTROL: INCOMPLETE
if verb=2100h (Attach Logical Unit), control block continues
WORD 70 offset to partner logical unit record
8 BYTEs (high byte first) logical unit name
8 BYTEs (high byte first) logical unit ID
BYTE logical unit local address
BYTE logical unit session limit
DWORD pointer to CREATE_TP_EXIT routine,
FFFFFFFFh = reject incoming ALLOCATEs
00000000h = queue ALLOCATEs
DWORD 0
DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh = don't log errors
DWORD 0
BYTE maximum TPs
BYTE queue depth
DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no pswd exit
DWORD 0
WORD total length of partner records
for each partner logical unit:
WORD length of this partner logical unit record
WORD 42 offset to mode records
8 BYTEs (high byte first) partner logical unit name
BYTE partner logical unit security capabilities
bit 7: already verified
bit 6: conversation level security
bit 5: session level security
BYTE partner logical unit session limit
WORD partner logical unit maximum MC_SEND_LL
8 BYTEs (high byte first) partner logical unit DLC name
BYTE partner logical unit adapter number
17 BYTEs (counted string) partner logical unit adapter address
WORD total length of mode records
for each mode:
WORD 16 length of this mode record
8 BYTEs (high byte first) mode name
WORD RU_SIZE high bound
WORD RU_SIZE low bound
BYTE mode maximum negotiable session limit
BYTE pacing size for receive
if verb=2200h (Detach Logical Unit), control block continues:
8 BYTEs (high byte first) logical unit ID
BYTE 0
if verb=2700h (Detach Physical Unit), control block continues:
BYTE 0 type: hard
1 type: soft
if verb=2B00h (Activate DLC), control block continues:
8 BYTEs (high byte first) DLC name
BYTE adapter number
Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
pointers are called by pushing the DWORD pointer to the verb on the stack and
then performing a FAR call.
ACCESS_LU_LU_PW verb:
12 BYTEs reserved
WORD 1900h
8 BYTEs (high byte first) logical unit ID
8 BYTEs (high byte first) logical unit name
8 BYTEs (high byte first) partner logical unit name
17 BYTEs (counted string) partner fully qualified logical unit name
BYTE password available (0=no, 1=yes)
8 BYTEs password
CREATE_TP verb:
12 BYTEs reserved
WORD 2300h
6 BYTEs 0
DWORD (high byte first) sense code
00000000h Ok
080F6051h SECURITY_NOT_VALID
084B6031h TP_NOT_AVAIL_RETRY
084C0000h TP_NOT_AVAIL_NO_RETRY
10086021h TP_NAME_NOT_RECOGNIZED
10086034h CONVERSATION_TYPE_MISMATCH
10086041h SYNC_LEVEL_NOT_SUPPORTED
8 BYTEs (high byte first) TP ID
8 BYTEs (high byte first) logical unit ID
DWORD (high byte first) conversation ID
BYTE 0 basic conversation, 1 mapped conversation
BYTE 0 no sync level, 1 confirm
BYTE reserved
65 BYTEs (counted string) transaction program name
6 BYTEs 0
WORD length of ERROR_LOG_DATA to return
DWORD pointer to ERROR_LOG_DATA buffer
8 BYTEs (high byte first) partner logical unit name
18 BYTEs (counted string) partner fully qualified logical unit name
8 BYTEs (high byte first) mode name
12 BYTEs 0
11 BYTEs (counted string) password
11 BYTEs (counted string) user ID
BYTE 0 verification should be performed
1 already verified
SYSLOG verb:
12 BYTEs reserved
WORD 2600h
10 BYTEs 0
WORD (high byte first) type
DWORD (high byte first) subtype
DWORD pointer to ADDITIONAL_INFO
DWORD (high byte first) conversation ID
8 BYTEs (high byte first) TP ID
8 BYTEs (high byte first) physical unit or logical unit name
WORD length of data
DWORD pointer to data
BYTE 0
---------------------------------------------
INT 68 - APPC/PC
AH = 02h
DS:DX -> control block
12 BYTEs reserved
WORD verb (action)
BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
5 BYTEs 0
WORD (high byte first) primary return code
0000h successful
0001h parameter check
0002h state check
0003h allocation error
0005h deallocate abended
0006h deallocate abended program
0007h deallocate abended SVC
0008h deallocate abended timer
0009h deallocate normal return
000Ah data posting blocked
000Bh posting not active
000Ch PROG_ERROR_NO_TRUNC
000Dh PROG_ERROR_TRUNC
000Eh PROG_ERROR_PURGING
000Fh CONV_FAILURE_RETRY
0010h CONV_FAILURE_NO_RETRY
0011h SVC_ERROR_NO_TRUNC
0012h SVC_ERROR_TRUNC
0013h SVC_ERROR_PURGING
0014h unsuccessful
0018h CNOS partner logical unit reject
0019h conversation type mixed
F001h APPC disabled
F002h APPC busy
F003h APPC abended
F004h incomplete
DWORD (high byte first) error code
0001h bad TP ID
0002h bad conversation ID
0004h allocation error, no retry
0005h allocation error, retry
0006h data area crosses segment boundary
0010h bad TPN length
0011h bad CONV length
0012h bad SYNC level
0013h bad security selection
0014h bad return control
0015h SEC_TOKENS too big
0016h PIP_LEN incorrect
0017h no use of SNASVCMG
0018h unknown partner mode
0031h confirm: SYNC_NONE
0032h confirm: bad state
0033h confirm: NOT_LL_BDY
0041h confirmed: bad state
0051h deallocate: bad type
0052h deallocate: flush bad state
0053h deallocate: confirm bad state
0055h deallocate: NOT_LL_BDY
0057h deallocate: log LL_WRONG
0061h flush: not send state
0091h post on receipt: invalid length
0092h post on receipt: not in receive state
0093h post on receipt: bad fill
00A1h prepare to receive:invalid type
00A2h prepare to receive: unfinished LL
00A3h prepare to receive: not in send state
00B1h receive and wait: bad state
00B2h receive and wait: NOT_LL_BDY
00B5h receive and wait: bad fill
00C1h receive immediate: not in receive state
00C4h receive immediate: bad fill
00E1h request to send: not in receive state
00F1h send data: bad LL
00F2h send data: not in send state
0102h send error: log LL wrong
0103h send error: bad type
0121h test: invalid type
0122h test: not in receive state
8 BYTEs (high byte first) TP_ID
DWORD (high byte first) conversation ID
if verb=0100h (Allocate or MC_Allocate), control block continues:
BYTE (MC_Allocate only) 0 basic conversation
1 mapped conversation
BYTE 0 SYNC_LEVEL = none
1 SYNC_LEVEL = confirm
WORD 0
BYTE 0 RETURN_CONTROL: when session allocated
1 RETURN_CONTROL: immediate
2 RETURN_CONTROL: when session free
8 BYTEs 0
8 BYTEs (high byte first) partner logical unit name
8 BYTEs (high byte first) mode name
65 BYTEs (counted string) TP name
BYTE 0 security: none
1 security: same
2 security: pgm
11 BYTEs 0
11 BYTEs (counted string) password
11 BYTEs (counted string) user ID
WORD PIP_DATA length
DWORD pointer to PIP_DATA
if verb=0300h (Confirm or MC_Confirm), then control block continues:
BYTE request to send received (0=no, 1=yes)
if verb=0400h (Confirmed or MC_Confirmed), no additional fields
if verb=0500h (Deallocate or MC_Deallocate), then control block continues:
BYTE 0
BYTE type 0 SYNC_LEVEL
1 FLUSH
2 ABEND_PROC
3 ABEND_SVC
4 ABEND_TIMER
5 ABEND
WORD (MC_Deallocate only) length of error log data
DWORD (MC_Deallocate only) pointer to error log data
if verb=0600h (Flush or MC_Flush), no additional fields
if verb=0700h (Get_Attributes or MC_Get_Attributes), control block continues:
8 BYTEs (high byte first) logical unit ID
BYTE 0
BYTE SYNC_LEVEL (0=none, 1=confirm)
8 BYTEs (high byte first) mode name
8 BYTEs (high byte first) own net name
8 BYTEs (high byte first) own logical unit name
8 BYTEs (high byte first) partner logical unit name
18 BYTEs (counted string) partner's fully qualified logical unit name
BYTE 0
11 BYTEs (counted string) user ID
if verb=0800h (Get_Type), then control block continues:
BYTE type (0=basic conversation, 1=mapped conversation)
if verb=0900h (Post_on_Receipt), then control block continues:
WORD maximum length
BYTE fill (0=buffer, 1=LL)
if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive):
BYTE type (0=SYNC_LEVEL, 1=FLUSH)
BYTE locks (0=short, 1=long)
if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait), control block cont:
BYTE what received
0 data
1 data complete
2 data incomplete
3 confirm
4 confirm send
5 confirm deallocate
6 send
BYTE (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
BYTE Request_to_Send_Received (0=no, 1=yes)
WORD maximum length
WORD data length
DWORD pointer to data
if verb=0C00h (Receive_Immediate or MC_Receive_Immediate), control block:
BYTE what received
0 data
1 data complete
2 data incomplete
3 confirm
4 confirm send
5 confirm deallocate
6 send
BYTE (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
BYTE Request_to_Send_Received (0=no, 1=yes)
WORD maximum length
WORD data length
DWORD pointer to data
if verb=0E00h (Request_to_Send or MC_Request_to_Send), no additional fields
if verb=0F00h (Send_Data or MC_Send_Data), then control block continues:
BYTE request to send received (0=no, 1=yes)
BYTE 0
WORD data length
DWORD pointer to data
if verb=1000h (Send_Error or MC_Send_Error)
BYTE request to send received (0=no, 1=yes)
BYTE type (0=program, 1=SVC)
DWORD 0
WORD (MC_Send_Error only) LOG_DATA length
DWORD (MC_Send_Error only) pointer to LOG_DATA
if verb=1200h (Test or MC_Test), then control block continues:
BYTE (MC_Test only) test (0=posted, 1=request_to_send received)
Note: error code has different interpretations for:
0 posted data
1 posted not data (primary return code = 0)
1 bad TP_ID (primary return code = 1)
if verb=1300h (Wait), then control block continues:
BYTE number of conversations to wait on
Note: error codes have interpretations as for 1200h (Test) above
---------------------------------------------
INT 68 - APPC/PC
AH = 03h
DS:DX -> control block
12 BYTEs reserved
WORD verb (action)
6 BYTEs 0
DWORD (high byte first) return code (see AH=01h)
WORD 0
8 BYTEs (high byte first) logical unit ID
if verb=2400h (TP Started), control block continues:
8 BYTEs (high byte first) TP ID
if verb=2800h (Get ALLOCATE), control block continues:
BYTE type
0 dequeue
1 test
DWORD pointer to CREATE_TP record
if verb=2A00h (Change Logical Unit). control block continues:
DWORD pointer to CREATE_TP_EXIT routine
FFFFFFFFh reject incoming ALLOCATEs
00000000h queue ALLOCATEs
DWORD 0
DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh = don't log errors
DWORD 0
BYTE maximum TPs
BYTE 0 stop QUEUE_ALLOCATEs
1 resume QUEUE_ALLOCATEs
DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
DWORD 0
---------------------------------------------
INT 68 - APPC/PC
AH = 04h
DS:DX -> control block
12 BYTEs reserved
WORD verb (action)
2500h TP_ENDED
2900h TP_VALID
6 BYTEs 0
DWORD (high byte first) return code (see AH=01h)
WORD 0
8 BYTEs (high byte first) TP_ID
DWORD -> CREATE_TP record (only if verb = 2900h)
---------------------------------------------
INT 68 - APPC/PC - TRANSFER MSG DATA
AH = 05h
DS:DX -> control block
12 BYTEs reserved
WORD 1C00h
BYTE 0 user defined
1 NMVT
2 alert subvectors
3 PDSTATS subvectors
5 BYTEs 0
DWORD (high byte first) return code (see AH=01h)
12 BYTEs 0
BYTE if bit 0 clear, add correlation subvector
if bit 1 clear, add product set ID subvector
if bit 2 clear, do SYSLOG
if bit 3 clear, send SSCP_PU_SESSION
BYTE 0
WORD length of data
N BYTEs data
---------------------------------------------
INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
AH = 06h
DS:DX -> control block
12 BYTEs reserved
WORD 1500h
6 BYTEs 0
WORD (high byte first) primary return code (see AH=02h)
DWORD (high byte first) secondary return code (see AH=01h)
0000h accepted
0001h negotiated
0003h bad logical unit ID
0004h allocation failure, no retry
0005h allocation failure, retry
0151h can't raise limits
0153h all modes must reset
0154h bad SNASVCMG limits
0155h minimum greater than total
0156h mode closed (prim return code = 1)
CNOS mode closed (prim return code = 18h)
0157h bad mode name (prim return code = 1)
CNOS bad mode name (prim return code = 18h)
0159h reset SNA drains
015Ah single not SRC response
015Bh bad partner logical unit
015Ch exceeds maximum allowed
015Dh change SRC drains
015Eh logical unit detached
015Fh CNOS command race reject
8 BYTEs (high byte first) logical unit ID
8 BYTEs blanks
8 BYTEs (high byte first) partner logical unit name
8 BYTEs (high byte first) mode name
BYTE bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
bit 6: set negotiable values
BYTE partner logical unit mode session limit
BYTE minimum CONWINNERS_SOURCE
BYTE maximum CONWINNERS_TARGET
BYTE automatic activation
BYTE 0
BYTE bit 7: drain targer
bit 6: drain source
bit 5: target responsible, not source
---------------------------------------------
INT 68 - APPC/PC - PASSTHROUGH
AH = 07h
DS:DX -> control block (format depends on application subsystem)
---------------------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE APPC
AH = FAh
AL bit 0 = 0 enable
1 disable
---------------------------------------------
INT 68 - APPC/PC - CONVERT
AH = FBh
DS:DX -> control block
12 BYTEs reserved
WORD 1A00h
6 BYTEs 0
DWORD (high byte first) return code
BYTE conversion
0 ASCII to EBCDIC
1 EBCDIC to ASCII
BYTE character set
0 AE
1 A
2 G
WORD length of string to convert
DWORD pointer to source
DWORD pointer to target
---------------------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
AH = FCh
AL = 00h disable tracing
= 01h enable tracing
DX = number of bytes to keep (0=all)
---------------------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
AH = FDh
AL = 00h disable tracing
01h enable tracing
---------------------------------------------
INT 68 - APPC/PC - TRACE DESTINATION
AH = FEh
AL = trace destinations
bit 0 storage (DS:DX -> trace stats record)
bit 1 display
bit 2 file (trace written to file OUTPUT.PC)
bit 3 printer
Trace Statistics Record
DWORD pointer to storage trace buffer
WORD max number of 80-byte records in trace
WORD (high-order byte first!) current record number (must init to 0)
DWORD (high-order byte first!) number of records written (init to 0)
DWORD reserved
Note: do not move record while trace is active
---------------------------------------------
INT 68 - APPC/PC - SET PASSTHROUGH
AH = FFh
DS:DX -> passthrough exit routine
---------------------------------------------
INT 69 - unused
---------------------------------------------
INT 6A - unused
---------------------------------------------
INT 6B - unused
---------------------------------------------
INT 6C - system resume vector (CONVERTIBLE)
---------------------------------------------
INT 6C - DOS 3.2 Realtime Clock update
---------------------------------------------
INT 6D - Paradise VGA - internal
---------------------------------------------
INT 6E - unused
---------------------------------------------
INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
---------------------------------------------
INT 6F - 10-NET - LOGIN
AH = 00h
DS:DX -> login record
8 BYTEs user name
8 BYTEs password
12 BYTEs name of SuperStation
Return: CL = security level
AX = status
0000h successful
01FFh time out on response
02FFh network (hardware) error
03FFh invalid password
04FFh local rexource not available
05FFh server resource not available
06FFh already logged in under different name
07FFh login security failure (node)
08FFh not logged in
09FFh position calc error
0AFFh receive subfunction not = send subfunction (i.e. read, write)
0BFFh request function not in range
0CFFh no more server file handle entries left
0DFFh no more shared file table entries left
0EFFh no more user file handle entries left
0FFFh chat permit not on
10FFh not a server on request
11FFh no transporter board error
12FFh time out on send
13FFh item not found (spool item not on queue)
14FFh dos access incompatible
15FFh record already locked
16FFh invalid parameter
17FFh record lock time out error
18FFh currently spooling to named device
19FFh dropped receive message (throttle)
1AFFh open sharing violation
1BFFh no more tuf entries left
1CFFh not file owner on open
1DFFh read security not passed
1EFFh write security not passed
1FFFh group security not passed
20FFh security file failure
21FFh activity file failure
22FFh spool cntrl file failure
23FFh device not mounted (spooling)
24FFh spool file has not been terminated
25FFh device not mounted or is not being shared
26FFh duplicate node id
27FFh file not found error
28FFh no more files
29FFh unknown internal system error
2AFFh print queue is full or corrupted
2BFFh invalid function
2CFFh invalid handle
2DFFh too many files opened
2EFFh path not found
2FFFh named file is active
/* I've gotten one submission which says FFxxh, and another with xxFFh */
/* I don't know which way around these should be, does somebody else know? */
FF01h timeout
FF02h network error
FF03h invalid password
FF04h no local buffer
FF05h superstation not available
FF06h node already logged in
FF07h login not valid from this node
FF08h node ID already in use
FF16h invalid parameter (bad length, invalid node ID, etc)
FF17h record locked by another user
FF18h sent message has been dropped
---------------------------------------------
INT 6F - 10-NET - LOGOFF
AH = 01h
DS:DX -> superstation ID or nulls (12 bytes)
Return: CX = number of files closed
AX = status (see function 00h)
FF08h superstation ID not already logged in
---------------------------------------------
INT 6F - 10-NET - STATUS OF NODE
AH = 02h
DS:DX -> 512-byte record
8 BYTEs user name (0 if none)
BYTE station type
0 workstation
1 superstation
2 gateway station
3 gateway active
4 logged into multiple superstations
5 reserved
24 BYTEs list of superstations logged into more than one
superstation
12 BYTEs node ID
WORD message count for this station (send for user node,
receive for superstations)
for superstations only:
WORD drives allocated (bit 0=A:, bit 1=B:,...)
BYTE user service flag
bit 7: gate
6: print permit on
4: SUBMIT is on
3: mail waiting for node
2: calendar waiting for you
1: news waiting for you
0: mail waiting for you
BYTE printers allocated (bit 0=LPT1,...)
BYTE number of unprinted spool files
BYTE number of opened files
BYTE number of logged on nodes
BYTE primary drive (1=A:)
BYTE reserved
N BYTEs list of logged on node IDs (each 12 bytes, max 37 IDs)
(continues at offset 1F4h)
3 BYTEs time: sec/min/hrs
3 BYTEs date: day/mon/year-1980
Return: CF set on error
AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
AH = 03h
DS:DI -> node ID (optional)
Return: ES:BX -> record (actually starts at [BX-41])
WORD local device table address
WORD extended network error mapping table address
WORD shared device table address
WORD mounted device table address
BYTE receive buffer counter
BYTE collect buffer counter
WORD TUF address
BYTE enable flag
BYTE FCB keep flag
WORD reserved
---up to here, 10-Net v3.3---
WORD count of dropped Send6F
WORD buffer start address
WORD comm driver base address
WORD send/receive retry count
BYTE number of 550ms loops before timeout
WORD UFH address
WORD CDIR address
WORD LTAB address
WORD SFH address
WORD FTAB address
WORD RLTAB address
WORD SMI address
WORD NTAB address
ES:BX -> WORD address of first CT_DRV
BYTE number of DRV entries
8 BYTEs login name
12 BYTEs node ID (blank-padded)
6 BYTEs node address
BYTE flag
BYTE CT_CFLG (chat permit)
bit 1: sound bell
bit 0: CHAT permit
BYTE CT_PSFLG
bit 5: PRINT permit
bit 4: KB initiated
bit 3: CHAT called FOXPTRM
bit 2: SUBMIT active
bit 1: SUBMIT received
bit 0: SUBMIT permit
BYTE in 10Net flag
WORD receive message count
WORD send message count
WORD retry count
WORD failed count
WORD driver errors
WORD dropped responses/CHATs
9 BYTEs LIST ID/NTAB address (3 entries--LPT1-3)
6 BYTEs AUX ID/NTAB address (2 entries--COM1-2)
BYTE active CB channel
BYTE received 6F messages on queue
9 BYTEs activity counters for channels 1-9
---beyond here, 10-Net v3.3---
BYTE bit 0 = RS232 gate
1 = Send6F gate (user set)
DWORD pointer into gate (user set)
DWORD pointer into 10Net send
N WORDs addresses of timer blocks
---------------------------------------------
INT 6F - 10-NET - SEND
AH = 04h
DS:BX -> record
12 BYTEs receiving node's ID
if first byte has high-order bit set, message is
directed to the CT_RGATE vector at the receiver
if second byte is 00h, first byte is taken as a CB
channel number and delivered to all nodes on same
channel
WORD length of data at DX
DS:DX -> data (max 1024 bytes)
Return: CF set on error
AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET - RECEIVE
AH = 05h
CX = number of seconds before timeout
DS:DX -> receive buffer
12 BYTEs sending node's ID
WORD length of message
N BYTEs message (maximum 1024 bytes)
Return: CF set on error
AX = error code (see function 00h)
CF clear if successful
AH = FEh if dequeued message is a CB message
---------------------------------------------
INT 6F - 10-NET - LOCK HANDLE
AH = 07h
BX = file handle
CX:DX = starting offset in file
SI = record length
Return: CF set on error
AX = error code (see also function 00h)
0002h file not found
---------------------------------------------
INT 6F - 10-NET - UNLOCK HANDLE
AH = 08h
BX = file handle
AL = mode
0 unlock all
1 unlock record at CX:DX
Return: CF set on error
AX = error code (see also function 00h)
2 file not found
---------------------------------------------
INT 6F - 10-NET - SUBMIT
AH = 09h
DS:BX -> record
12 BYTEs destination node ID (must be logged in)
WORD length+2 of following 'command line' text
N BYTEs command line text (<=100 bytes), system adds CR
---------------------------------------------
INT 6F - 10-NET - CHAT
AH = 0Ah
DS:BX -> control parameters
8 BYTEs sender ID, if nulls defaults to node's userID
8 BYTEs destination user ID, 'EVERYONE' may be used
12 BYTEs destination node ID
DS:DX -> chat message
WORD length+2 of following text
N BYTEs text, max 101 bytes
---------------------------------------------
INT 6F - 10-NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
AH = 0Bh
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status
0 successful
1 semaphore currently locked
2 server not responding
3 invalid semaphore name
4 semaphore list is full
5 invalid drive ID
6 invalid Ethernet address
7 not logged in
8 write to network failed
9 semaphore already logged in this CPU
Note: same as INT 60/AH=12h
---------------------------------------------
INT 6F - 10-NET - UNLOCK SEMAPHORE
AH = 0Ch
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see AH=0Bh)
1 semaphore not locked
Note: same as INT 60/AH=13h
---------------------------------------------
INT 6F - 10-NET - WHO
AH = 0Dh
AL = type code
01h return superstations only
02h return non-superstations only
otherwise return all
CX = length of data
DS:DX -> array of records to be filled
12 BYTEs node ID
BYTE flags
bit 1 = workstation
2 = superstation
3 = xgate
4 = active gate
(if AL=01h, record continues)
BYTE version number
WORD level number of 10Net software in responding node
(if AL=02h, record continues)
8 BYTEs user ID
BYTE version number
WORD level number
Return: CL = number of records returned (responding stations)
---------------------------------------------
INT 6F - 10-NET - SPOOL/PRINT
AH = 0Eh
DS:DX -> record
WORD operation code
0 initiate spool
1 abort print
2 close spool
3 delete spool
4 print
5 get report info
6 set chat template
7 queue
8 return queue
9 queue non-spooled file for printing
11 BYTEs file name in FCB format
(if operation code = 00h or 06h, record continues)
BYTE notification
bit 7: queue to top
bit 6: do ID page
bit 5: no form feed
bit 4: reserved
bit 3: explicity queuing only
bit 2: notify at print completion
bit 1: notify server operator/reply
bit 0: notify at print start
BYTE days to keep (FFh=forever)
BYTE bits 0,1: device (1=LPT1)
bits 4-7: remote drive to store spool file (1=A,...)
WORD length of following data area
N BYTEs up to 64 bytes of description
(if operation code = 03h, record continues)
8 BYTEs user ID to associate with filename
(if operation code = 04h, record continues)
WORD block number
8 BYTEs user ID to associate with filename
(if operation code = 05h, record continues)
BYTE RRN to start retrieve
BYTE bits 0,1: local print device (LPTx)
bit 3: if set, return entries for all users
WORD length of following area
N BYTEs up to 1500 bytes to receive $SCNTL records returned
(if operation code = 07h, record continues)
BYTE queue number
BYTE bits 0,1: local print device (LPTx)
WORD number of bytes of test print to be done
BYTE code: 01h prnt device
02h test print count
03h prn
(if operation code = 08h, record continues)
BYTE queue location or $SCNTL location to start access
returns next item for access:
00h-7Fh queued items
80h-FEh non-queued, non-printed items
FFh no more items
WORD unused
WORD length of following area
N BYTEs up to 64 bytes to receive $SCNTL records
(if operation code = 09h, record continues)
3 BYTEs unused
N BYTEs path to non-spooled file to be queued for printing
Return: CF set on error
AX = error code (see also function 00h)
FF17h device not mounted
FF18h already spooling to named device
$SCNTL record:
8 BYTEs user ID
11 BYTEs filename in FCB format
6 BYTEs node ID
3 BYTEs creation date
BYTE flags
bit 7: queue to top
6: do ID page
5: no form feed at end
4: reserved
3: explicit queueing only
2: notify at completion
1: notify server operator/reply
0: notify at start
BYTE retention time in days
BYTE printing device (LPTx)
3 BYTEs date last printed (0 = never)
BYTE device containing spoolfile
WORD bytes to print for test print
WORD block number to start print
BYTE reserved
---------------------------------------------
INT 6F - 10-NET - ATTACH/DETACH PRINTER
AH = 10h
AL = subfunction
00h initiate spooling if LPT1 is mounted
01h terminate spooling if LPT1 is mounted
---------------------------------------------
INT 6F - 10-NET - LOCK FCB
AH = 11h
AL = mode
1 sequential
2 random
3 random block
CX = number of records
DS:DX -> FCB
Return: CF set on error
AX = error code (see also function 00h)
2 file not found
---------------------------------------------
INT 6F - 10-NET - UNLOCK FCB
AH = 12h
AL = mode
0 sequential
1 random
2 random block
CX = number of records
DS:DX -> FCB
Return: CF set on error
AX = error code (see also function 00h)
2 file not found
---------------------------------------------
INT 6F - 10-NET v3.3 - GET REMOTE CONFIGURATION TABLE ADDRESS
AH = 13h
DS:DX -> node ID, 12 bytes blank-padded
Return: CF set on error
AX = error code (see function 00h)
CF clear if successful
ES:BX = configuration table address on given machine
---------------------------------------------
INT 6F - 10-NET v3.3 - GET REMOTE MEMORY
AH = 14h
BX:SI = address of remote memory
CX = length (<=1024 bytes)
DS:DX -> node ID, 12 bytes blank-padded
DS:DI -> area to receive remote memory image
Return: CF set on error
AX = error code (see function 00h)
CF clear if successful
CX = amount of memory copied to DS:SI
---------------------------------------------
INT 6F - 10-NET v3.3 - GET SHARED DEVICE ENTRY
AX = 1501h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> 85-byte buffer
Return: CF set on error
AX = error code (see function 00h)
CF clear if successful
ES:DI buffer contains shared device table entry of BXth device:
8 BYTEs device
8 BYTEs alias
64 BYTEs path
8 BYTEs password
BYTE access
4 BYTEs mask
---------------------------------------------
INT 6F - 10-NET v3.3 - SET SHARED DEVICE ENTRY
AX = 1502h
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> valid shared device table entry
Return: CF set on error
AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET v3.3 - DELETE SHARED DEVICE ENTRY
AX = 1503h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded
Return: CF set on error
AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET v3.3 - MOUNT
AH = 17h
AL = local drive number (0=A:)
BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
DS:DX -> node ID, 12 bytes blank-padded
Return: CF set on error
AX = error code (see function 00h)
---------------------------------------------
INT 6F - 10-NET v3.3 - UNMOUNT
AH = 18h
AL = local drive number (0=A:)
BL = type
00h disk
01h-03h LPTn
04h,05h COMx
Return: CF set on error
AX = error code (see function 00h)
---------------------------------------------
INT 70 - IRQ8 (AT/XT286/PS50+) - REAL-TIME CLOCK
---------------------------------------------
INT 71 - IRQ9 (AT/XT286/PS50+) - LAN ADAPTER 1
rerouted to INT 0A by BIOS
---------------------------------------------
INT 72 - IRQ10 (AT/XT286/PS50+) - RESERVED
---------------------------------------------
INT 73 - IRQ11 (AT/XT286/PS50+) - RESERVED
---------------------------------------------
INT 74 - IRQ12 (PS50+) - MOUSE INTERRUPT
---------------------------------------------
INT 75 - IRQ13 (AT/XT286/PS50+) - 80287 ERROR
rerouted to INT 02 by BIOS
---------------------------------------------
INT 76 - IRQ14 (AT/XT286/PS50+) - FIXED DISK
---------------------------------------------
INT 77 - IRQ15 (AT/XT286/PS50+) - RESERVED
---------------------------------------------
INT 78 - not used
---------------------------------------------
INT 79 - not used
---------------------------------------------
INT 7A - Novell NetWare - LOW-LEVEL API
---------------------------------------------
INT 7A - AutoCAD Device Interface
---------------------------------------------
INT 7B - not used
---------------------------------------------
INT 7C - not used
---------------------------------------------
INT 7D - not used
---------------------------------------------
INT 7E - not used
---------------------------------------------
INT 7F - not used
---------------------------------------------
INT 80 - reserved for BASIC
---------------------------------------------
INT 81 - reserved for BASIC
---------------------------------------------
INT 82 - reserved for BASIC
---------------------------------------------
INT 83 - reserved for BASIC
---------------------------------------------
INT 84 - reserved for BASIC
---------------------------------------------
INT 85 - reserved for BASIC
---------------------------------------------
INT 86 - Relocated (by NETBIOS) INT 18
---------------------------------------------
INT 86 to F0 - used by BASIC while in interpreter
---------------------------------------------
INT E0 - CP/M-86 function calls
---------------------------------------------
INT E4 - Logitech Modula v2.0 - MonitorEntry
AX = 0005h
BX = priority
---------------------------------------------
INT E4 - Logitech Modula v2.0 - MonitorExit
AX = 0006h
---------------------------------------------
INT EF - GEM - INTERFACE
CX = 0473h
DS:DX -> GEM parameter block
---------------------------------------------
INT F0 - used by BASIC while in interpreter
---------------------------------------------
INT F1 - reserved for user interrupt
---------------------------------------------
INT F2 - reserved for user interrupt
---------------------------------------------
INT F3 - reserved for user interrupt
---------------------------------------------
INT F4 - reserved for user interrupt
---------------------------------------------
INT F5 - reserved for user interrupt
---------------------------------------------
INT F6 - reserved for user interrupt
---------------------------------------------
INT F7 - reserved for user interrupt
---------------------------------------------
INT F8 - 10 ms INTERVAL TIMER (TANDY???)
---------------------------------------------
INT F9 - reserved for user interrupt
---------------------------------------------
INT FA - USART READY (RS-232C) (TANDY???)
---------------------------------------------
INT FB - USART Rx READY (keyboard) (TANDY???)
---------------------------------------------
INT FC - reserved for user interrupt
---------------------------------------------
INT FD - reserved for user interrupt
---------------------------------------------
INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
---------------------------------------------
INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
---------------------------------------------
INT FF - Z100 - WARM BOOT
---------------------------------------------
--