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 --------------------------------------------- --