ralf@b.gp.cs.cmu.edu (Ralf Brown) (09/18/88)
unsigned short as_retran;
unsigned short as_xresrc;
char as_res0[8];
unsigned short as_ncbfree;
unsigned short as_ncbmax;
unsigned short as_ncbx;
char as_res1[4];
unsigned short as_sespend;
unsigned short as_msp;
unsigned short as_sesmax;
unsigned short as_bufsize;
unsigned short as_names;
struct name as_name[16];
};
Note: Sytek PCnet card uses DMA 3.
------------------------------------------------------
INT 5C - TOPS INTERFACE
ES:BX -> Network Control Block
Note: TOPS card uses DMA 1, 3 or none.
------------------------------------------------------
INT 5D - reserved
------------------------------------------------------
INT 5E - reserved
------------------------------------------------------
INT 5F - reserved
------------------------------------------------------
INT 60 - reserved for user interrupt
------------------------------------------------------
INT 60 - 10-NET - LOCK AND WAIT
AH = 11h
AL = drive number or 0
DX = number of seconds to wait
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status
0 successful
1 timeout
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 for this CPU
------------------------------------------------------
INT 60 - 10-NET - LOCK
AH = 12h
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see function 11h)
1 semaphore currently logged
Note: unlike function 11h, this function returns immediately
------------------------------------------------------
INT 60 - 10-NET - UNLOCK
AH = 13h
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see function 11h)
1 semaphore not logged
------------------------------------------------------
INT 61 - reserved for user interrupt
------------------------------------------------------
INT 62 - reserved for user interrupt
------------------------------------------------------
INT 63 - reserved for user interrupt
------------------------------------------------------
INT 64 - reserved for user interrupt
------------------------------------------------------
INT 65 - reserved for user interrupt
------------------------------------------------------
INT 66 - reserved for user interrupt
------------------------------------------------------
INT 67 - LIM EMS - GET MANAGER STATUS
AH = 40h
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested by application
Note: this call can be used only after establishing that the EMS driver
is in fact present
------------------------------------------------------
INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
AH = 41h
Return: AH = 00h function successful
BX = segment of page frame
AH = error code (see AH=40h above)
------------------------------------------------------
INT 67 - LIM EMS - GET NUMBER OF PAGES
AH = 42h
Return: AH = 00h function successful
BX = number of unallocated pages
DX = total number of pages
AH = error code (see AH=40h above)
------------------------------------------------------
INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
AH = 43h
BX = number of logical pages to allocate
Return: AH = status
00h function successful
DX = handle
80h internal error
81h hardware malfunction
84h undefined function requested
85h no more handles available
87h more pages requested than physically exist
88h more pages requested than currently available
89h zero pages requested
------------------------------------------------------
INT 67 - LIM EMS - MAP MEMORY
AH = 44h
AL = physical page number (0-3)
BX = logical page number
DX = handle
Return: AH = status
00h function successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Ah invalid logical page number
8Bh illegal physical-page number
------------------------------------------------------
INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
AH = 45h
DX = EMM handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
86h error in save or restore of mapping context
------------------------------------------------------
INT 67 - LIM EMS - GET EMM VERSION
AH = 46h
Return: AH = status
00h successful
AL = EMM version number
80h internal error
81h hardware malfunction
84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - SAVE MAPPING CONTEXT
AH = 47h
DX = handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Ch page-mapping hardware state save area is full
8Dh save of mapping context failed
------------------------------------------------------
INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
AH = 48h
DX = handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Eh restore of mapping context failed
------------------------------------------------------
INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
AH = 49h
Note: defined in EMS 3.0, but undocumented in EMS 3.2
------------------------------------------------------
INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
AH = 4Ah
Note: defined in EMS 3.0, but undocumented in EMS 3.2
------------------------------------------------------
INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
AH = 4Bh
Return: AH = status
00h successful
BX = number of EMM handles
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
AH = 4Ch
DX = EMM handle
Return: AH = status
00h successful
BX = number of logical pages
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
AH = 4Dh
ES:DI -> array to receive information
Return: AH = status
00h successful
BX = number of active EMM handles
array filled with 2-word entries, consisting of a handle
and the number of pages allocated to that handle
80h internal error
81h hardware malfunction
84h undefined function requested
------------------------------------------------------
INT 67 - LIM EMS - GET OR SET PAGE MAP
AH = 4Eh
AL = 00h if getting mapping registers
01h if setting mapping registers
02h if getting and setting mapping registers at once
03h if getting size of page-mapping array
DS:SI -> array holding information (AL=01/02)
ES:DI -> array to receive information (AL=00/02)
Return: AH = status
00h successful
AL = bytes in page-mapping array (subfunction 03h only)
array pointed to by ES:DI receives mapping info (AL=00/02)
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction parameter
A3h contents of source array corrupted (EMS 4.0?)
Note: this function was designed to be used by multitasking operating systems
and should not ordinarily be used by appplication software.
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
AH = 4Fh
AL = subfunction
00h get partial page map
DS:SI -> structure containing list of segments whose mapping
contexts are to be saved
ES:DI -> array to receive page map
01h set partial page map
DS:SI -> structure containing saved partial page map
02h get size of partial page map
BX = number of mappable segments in the partial map to be saved
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Bh one of specified segments is not mappable
8Fh undefined subfunction parameter
A3h contents of partial page map corrupted or count of mappable
segments exceeds total number of mappable segments in system
AL = size of partial page map for subfunction 02h
------------------------------------------------------
INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
AH = 50h
AL = subfunction
00h
01h
DX = handle
CX = number of entries in array
DS:SI -> mapping array
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Ah one or more logical pages are invalid
8Bh one or more physical pages are invalid
8Fh invalid subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
AH = 51h
DX = handle
BX = number of pages to be allocated to handle
Return: BX = actual number of pages allocated to handle
AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
87h more pages requested than present in system
88h more pages requested than currently available
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
AH = 52h
AL = subfunction
00h get handle attributes
01h set handle attributes
BL = new attribute (see returned AL)
02h get attribute capability
DX = handle
Return: AL = attribute (for subfunction 00h)
00h handle is volatile
01h handle is nonvolatile
AL = attribute capability (for subfunction 02h)
00h only volatile handles supported
01h both volatile and non-volatile supported
AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Fh undefined subfunction
90h undefined attribute type
91h feature not supported
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
AH = 53h
AL = subfunction
00h get handle name
ES:DI -> 8-byte handle name array
01h set handle name
DS:SI -> 8-byte handle name
DX = handle
Return: AH = status
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
8Fh undefined subfunction
A1h duplicate handle name
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
AH = 54h
AL = subfunction
00h get handle directory
ES:DI -> buffer for handle directory
01h search for named handle
DS:SI -> 8-byte name
02h get total number of handles
Return: AL = number of entries in handle directory (subfunction 00h)
DX = value of named handle (subfunction 01h)
BX = total number of handles (subfunction 02h)
AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
A0h no such handle name
A1h a handle found had no name
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
AH = 55h
AL = subfunction
00h physical page numbers provided by caller
01h segment addresses provided by caller
DX = handle
DS:SI -> structure containing map and jump address
Return: (at target address unless error)
AH = status
00h successful
80h internal error
81h hardware failure
83h invalid handle
84h undefined function requested
8Ah invalid logical page number encountered
8Bh invalid physical page number encountered
8Fh invalid subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
AH = 56h
AL = subfunction
00h physical page numbers provided by caller
DX = handle
DS:SI -> structure containing page map and call address
01h segment addresses provided by caller
DX = handle
DS:SI -> structure containing page map and call address
02h get page map stack space required
Return: (if successful, the target address is called. Use a RETF to return and
restore mapping context)
BX = stack space required (subfunction 02h)
AH = status
00h successful
80h internal error
81h hardware failure
83h invalid handle
84h undefined function requested
8Ah invalid logical page number encountered
8Bh invalid physical page number encountered
8Fh undefined subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
AH = 57h
AL = subfunction
00h move memory region
01h exchange memory region
DS:SI -> structure describing source and destination
Return: AH = status
00h successful
80h internal error
81h hardware failure
83h invalid handle
84h undefined function requested
8Ah invalid logical page number encountered
8Fh undefined subfunction
92h successful, but a portion of the source region has been
overwritten
93h length of source or destination region exceeds length of region
allocated to either source or destination handle
94h conventional and expanded memory regions overlap
95h offset within logical page exceeds size of logical page
96h region length exceeds 1M
97h source and destination EMS regions have same handle and overlap
98h memory source or destination type undefined
A2h attempted to wrap around 1M conventional address space
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
AH = 58h
AL = subfunction
00h get mappable physical address array
ES:DI -> buffer to be filled with array
01h get number of entries in m.p.a. array
Return: CX = number of entries in array
AH = status
00h successful
80h internal error
81h hardware failure
84h undefined function requested
8Fh undefined subfunction
------------------------------------------------------
INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
AH = 59h
AL = subfunction
00h get hardware configuration array
ES:DI -> buffer to be filled with array
01h get unallocated raw page count
Return: BX = unallocated raw pages (subfunction 01h)
DX = total raw pages (subfunction 01h)
AH = status
00h successful
80h internal error
81h hardware failure
84h undefined function requested
8Fh undefined subfunction
A4h access denied by operating system
Note: subfunction 00h 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 - ALLOCATE STANDARD/RAW PAGES
AH = 5Ah
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)
- DOS 3.2 Realtime Clock update
------------------------------------------------------
INT 6D - unused
------------------------------------------------------
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 good login
FF01h no response from superstation
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
------------------------------------------------------
INT 6F - 10-NET - LOGOFF
AH = 01h
Return: CX = number of files closed
AX = status
0000h successful
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
4 logged into multiple superstations
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 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 files
BYTE primary drive (1=A:)
BYTE reserved
N BYTEs list of logged on node IDs (each 12 bytes, max 38 IDs)
Return: CF set on error
AX = error code
FF01h no response from node
FF02h network error
FF04h no local buffer
FF16h invalid node ID
------------------------------------------------------
INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
AH = 03h
Return: ES:BX -> record (actually starts at [BX-25])
WORD count of dropped Send6F
WORD buffer start address
WORD comm driver base address
WORD send/receive retry count
BYTE number of 550ms loops
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
6 BYTEs node address
BYTE flag
BYTE CT_CFLG
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 reserved
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
------------------------------------------------------
INT 6F - 10-NET - SEND
AH = 04h
DS:BX -> record
12 BYTEs receiving node's ID
WORD length of data at DX
DS:DX -> data (max 1024 bytes)
Return: CF set on error
AX = error code
FF01h timeout
FF02h network error
FF04h no local buffer
FF16h invalid parameter (bad length)
------------------------------------------------------
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
FF01h timeout
FF18h sent message has been dropped
------------------------------------------------------
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
FF01h timeout
0002h file not found
FF17h record locked by another user
------------------------------------------------------
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
2 file not found
------------------------------------------------------
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
------------------------------------------------------
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
------------------------------------------------------
INT 6F - 10-NET - WHO
AH = 0Dh
CX = length of data
DS:DX -> array of records to be filled
12 BYTEs node ID
BYTE flag (1 = workstation, 2 = superstation)
Return: CL = number of records returned (responding stations)
------------------------------------------------------
INT 6F - 10-NET - SPOOL/PRINT
AH = 0Eh
DS:DX -> record
WORD 0 initiate spool
1 abort print
2 close spool
3 delete spool
4 print
5 get report info
11 BYTEs file name
BYTE notification
bit 6: do ID page
bit 5: no form feed
bit 3: notify at print completion
bit 2: notify at print start and reply???
bit 1: notify at print start
bit 0: no notification
BYTE days to keep (FFh=forever)
BYTE device (1=LPT1)
WORD length of following data area
N BYTEs $SCNT records returned if code in first word is 05h
Return: CF set on error
AX = error code
FF16h invalid parameter
FF17h device not mounted
FF18h already spooling to named device
------------------------------------------------------
INT 6F - 10-NET - LOCK FCB
AH = 11h
AL = mode
0 sequential
1 random
2 random block
DS:DX -> FCB
Return: CF set on error
AX = 2 file not found
FF01h timeout
FF17h record locked by another user
------------------------------------------------------
INT 6F - 10-NET - UNLOCK FCB
AH = 12h
AL = mode
0 sequential
1 random
2 random block
DS:DX -> FCB
Return: CF set on error
AX = 2 file not found
------------------------------------------------------
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 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 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
------------------------------------------------------
--
{harvard,uunet,ucbvax}!b.gp.cs.cmu.edu!ralf -=-=- AT&T: (412)268-3053 (school)
ARPA: RALF@B.GP.CS.CMU.EDU |"Tolerance means excusing the mistakes others make.
FIDO: Ralf Brown at 129/31 | Tact means not noticing them." --Arthur Schnitzler
BITnet: RALF%B.GP.CS.CMU.EDU@CMUCCVMA -=-=- DISCLAIMER? I claimed something?