Interrupt List, part 18 of 18 Copyright (c) 1989-1999,2000 Ralf Brown --------r-92--------------------------------- INT 92 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------N-92--------------------------------- INT 92 - Sangoma X.25 INTERFACE PROGRAM BX:DX -> control block SeeAlso: INT 68"Sangoma" --------e-92E1------------------------------- INT 92 - Da Vinci eMail Dispatcher INTERFACE AH = E1h AL = function BX = stack count (number of words to push) CX:DX -> stack data (in word-reversed order ready to push) Return: AX = status (see #03979) Note: preserves BP, DS, SI, DI; other registers may be destroyed (Table 03979) Values for Da Vinci eMail function status: 0001h success FF97h "ERS_NOT_AVAILABLE" FF99h "ERS_TOO_MANY_NAMES" FF9Ah "ERS_BAD_NAME_PASSWORD" FFE3h "ERS_NAME_NOT_FOUND" FFF8h "ERS_USE_STRING" (call NetGetError to get error string) FFFFh "ERS_NO_SUCH_FILE" --------e-92E100----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetInitStart" AX = E100h BX = size of parameter block in words (000Ah) CX:DX -> parameter block (see #03980) Return: AX = 0001h success Desc: this function is used to initialize the dispatcher SeeAlso: AX=E101h,AX=E103h Format of Da Vinci eMail "NetInitStart" parameter block: Offset Size Description (Table 03980) 00h WORD segment of ??? 02h WORD offset of ??? 04h WORD high part of long ??? 06h WORD low part of long ??? 08h WORD high part of long ??? 0Ah WORD low part of long ??? 0Ch WORD high part of long ??? 0Eh WORD low part of long ??? 10h WORD high part of long ??? 12h WORD low part of long ??? --------e-92E101BX0000----------------------- INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck" AX = E101h BX = 0000h CX:DX ignored Return: AX = 0001h success SeeAlso: AX=E100h,AX=E180h --------e-92E102BX0000----------------------- INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver" AX = E102h BX = 0000h CX:DX ignored Return: AX = 0001h success Desc: this function is used to determine if the dispatcher is loaded SeeAlso: AX=E10Bh,AX=E180h --------e-92E103BX0000----------------------- INT 92 - Da Vinci eMail Dispatcher - "NetTerminate" AX = E103h BX = 0000h CX:DX ignored Return: AX = status (see #03979) SeeAlso: AX=E100h --------e-92E104----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs" AX = E104h BX = size of parameter block in words (0006h) CX:DX -> parameter block (see #03981) Return: AX = status (see #03979) Desc: this function is used to verify node address for usernames SeeAlso: AX=E180h Format of Da Vinci eMail "NetWhereIs" parameter block: Offset Size Description (Table 03981) 00h WORD segment of node address buffer 02h WORD offset of node address buffer 04h WORD segment of uppercase username 06h WORD offset of uppercase username 08h WORD segment of "DVSEMAIL" 0Ah WORD offset of "DVSEMAIL" --------e-92E105----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetOpen" AX = E105h BX = size of parameter block in words (0007h) CX:DX -> parameter block (see #03982) Return: AX = 0000h Error AX = handle Desc: this function is used to open a submission channel SeeAlso: AX=E10Ah,AX=E106h,AX=E108h Format of Da Vinci eMail "NetOpen" parameter block: Offset Size Description (Table 03982) 00h WORD operation (1 = read, 2 = write) 02h WORD segment of uppercase To: username 04h WORD offset of uppercase To: username 06h WORD segment of "DVSEMAIL" 08h WORD offset of "DVSEMAIL" 0Ah WORD segment of node address 0Ch WORD offset of node address --------e-92E106BX0004----------------------- INT 92 - Da Vinci eMail Dispatcher - "NetRead" AX = E106h BX = 0004h CX:DX -> parameter block Return: AX = 0001h SeeAlso: AX=E108h --------e-92E107BX0002----------------------- INT 92 - Da Vinci eMail Dispatcher - "NetGetError" AX = E107h BX = 0002h CX:DX -> parameter block Return: AX = 0001h SeeAlso: AX=E109h,AX=E180h --------e-92E108----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetWrite" AX = E108h BX = size of parameter block in words (0004h) CX:DX -> parameter block (see #03983) Return: AX = amount written Desc: This function is used to write transactions to the dispatcher. The command block is written first and then another call is used to write the associated data. SeeAlso: AX=E106h Format of Da Vinci eMail "NetWrite" parameter block: Offset Size Description (Table 03983) 00h WORD buffer count (see #03985) 02h WORD segment of command buffer (see #03984) 04h WORD offset of command buffer 06h WORD handle from NetOpen Format of Da Vinci eMail command buffer: Offset Size Description (Table 03984) 00h BYTE command 21h '!' Protocol commands for remote control 41h 'A' Authorization protocol element 42h 'B' Return(back) routing information Associated data is the From: username 43h 'C' Carbon Copy list Associated data is a comma delimitted list of usernames 44h 'D' Distribution list Associated data is a comma delimitted list of usernames 45h 'E' Mail end marker No associated data 48h 'H' Mail message header Associated data is a message header buffer 4Dh 'M' Mail message Associated data is the body of the message 4Fh 'O' Object 50h 'P' Paperclip attachment 52h 'R' Routing information Associated data is the To: username 53h 'S' Subject Associated data is the subject of the message 54h 'T' Trail of Reply/Forwards 01h BYTE subcommand 02h DWORD length of associated data Format of Da Vinci eMail message header buffer: Offset Size Description (Table 03985) 00h 30 BYTEs subject line 1Eh 24 BYTEs To 36h 24 BYTEs From 4Eh DWORD Time BYTE 00h BYTE hour BYTE minute BYTE second 52h DWORD Date BYTE 00h BYTE year BYTE month BYTE day 56h DWORD serial number (00000000h) 5Ah WORD mail types (see #03986) 5Ch WORD special types (0) Bitfields for Da Vinci eMail mail types: Bit(s) Description (Table 03986) 7 blind carbon copy 6 carbon copy 5 priority 4 confidential 3 certified 2 bulk 1-0 class (first, second, third, bulk) --------e-92E109----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED) AX = E109h BX = size of parameter block in words (0001h) CX:DX -> parameter block (see #03987) Return: AX = FF97h (ERS_NOT_AVAILABLE) SeeAlso: AX=E107h,AX=E180h Format of Da Vinci eMail "NetErrorFix" parameter block: Offset Size Description (Table 03987) 00h WORD ??? --------e-92E10A----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetClose" AX = E10Ah BX = size of parameter block in words (0001h) CX:DX -> parameter block (see #03988) Return: AX = 0001h Desc: this function is used to close a dispatcher handle SeeAlso: AX=E105h Format of Da Vinci eMail "NetClose" parameter block: Offset Size Description (Table 03988) 00h WORD handle from NetOpen --------e-92E10B----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue" AX = E10Bh BX = size of parameter block in words (0004h) CX:DX -> parameter block (see #03989) Return: AX = 0001h SeeAlso: AX=E102h,AX=E10Ch Format of Da Vinci eMail "NetCheckQueue" parameter block: Offset Size Description (Table 03989) 00h WORD segment of 24-byte username buffer 02h WORD offset of 24-byte username buffer 04h WORD segment of 24-byte protocol buffer 06h WORD offset of 24-byte protocol buffer --------e-92E10C----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue" AX = E10Ch BX = size of parameter block in words (0002h) CX:DX -> parameter block (see #03990) Return: AX = 0001h SeeAlso: AX=E10Bh Format of Da Vinci eMail "NetReadQueue" parameter block: Offset Size Description (Table 03990) 00h WORD Segment of 128 byte node address buffer 02h WORD Offset of 128 byte node address buffer --------e-92E10D----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName" AX = E10Dh BX = size of parameter block in words (0006h) CX:DX -> parameter block (see #03991) Return: AX = status (see #03979) Desc: this function is used to verify username/password SeeAlso: AX=E10Eh Format of Da Vinci eMail "NetSubmitName" parameter block: Offset Size Description (Table 03991) 00h WORD segment of uppercase password string 02h WORD offset of uppercase password string 04h WORD segment of uppercase username string 06h WORD offset of uppercase username string 08h WORD segment of "DVSEMAIL" 0Ah WORD offset of "DVSEMAIL" --------e-92E10E----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName" AX = E10Eh BX = size of parameter block in words (0004h) CX:DX -> parameter block (see #03992) Return: AX = 0001h Desc: this function is used to remove a username SeeAlso: AX=E10Dh Format of Da Vinci eMail "NetRemoveName" parameter block: Offset Type Description (Table 03992) 00h WORD segment of uppercase username 02h WORD offset of uppercase username 04h WORD segment of "DVSEMAIL" 06h WORD offset of "DVSEMAIL" --------e-92E10FBX0000----------------------- INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY AX = E10Fh BX = 0000h CX:DX ignored Return: AX = 0001h SeeAlso: AX=E180h --------e-92E110----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute" AX = E110h BX = size of parameter block in words (0006h) CX:DX -> parameter block (see #03993) Return: AX = 0001h SeeAlso: AX=E111h,AX=E113h Format of Da Vinci eMail "NetGetAltRoute" parameter block: Offset Size Description (Table 03993) 00h 6 WORDs ??? --------e-92E111----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes" AX = E111h BX = size of parameter block in words (0004h) CX:DX -> parameter block (see #03994) Return: AX = 0001h SeeAlso: AX=E110h,AX=E113h Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block: Offset Size Description (Table 03994) 00h 4 WORDs ??? --------e-92E112----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword" AX = E112h BX = size of parameter block in words (0008h) CX:DX -> parameter block (see #03995) Return: AX = 0001h SeeAlso: AX=E180h Format of Da Vinci eMail "NetChangePassword" parameter block: Offset Size Description (Table 03995) 00h 8 WORDs ??? --------e-92E113----------------------------- INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute" AX = E113h BX = size of parameter block in words (0008h) CX:DX -> parameter block (see #03996) Return: AX = 0001h SeeAlso: AX=E110h,AX=E111h Format of Da Vinci eMail "NetSetAltRoute" parameter block: Offset Size Description (Table 03996) 00h 8 WORDs ??? --------e-92E175----------------------------- INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR AX = E175h Return: AX = 0012h BX = PSP SeeAlso: AX=E180h --------e-92E180----------------------------- INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK AX = E180h Return: AX = 0012h if installed ES:DX -> '$'-terminated driver information string SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h --------r-93--------------------------------- INT 93 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------N-93--------------------------------- INT 93 - IBM TOKEN RING ADAPTER - ??? SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING" --------r-94--------------------------------- INT 94 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------s-94----SI0000----------------------- INT 94 u - PCM driver - INITIALIZE SOUND SI = 0000h ES:BX -> parameters Return: ??? Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum sound boards InstallCheck: test for the signature string "PCMDRIVER" immediately preceding the interrupt handler; the word preceding the signature gives the PCM driver's version SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah Index: installation check;PCM driver|PCM.COM;installation check Index: PCM driver;installation check --------s-94----SI0001----------------------- INT 94 u - PCM driver - INITIALIZE PCM SI = 0001h ES:BX -> parameters Return: ??? SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah --------s-94----SI0002----------------------- INT 94 u - PCM driver - INITIALIZE PCM INFO SI = 0002h ES:BX -> parameters (see #03997) Return: ??? SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah Format of PCM driver function 0002h parameters: Offset Size Description (Table 03997) 00h DWORD rate 04h WORD channel number 06h WORD "comp" 08h WORD "dsize" --------s-94----SI0003----------------------- INT 94 u - PCM driver - INITIALIZE DMA BUFFER SI = 0003h ES:BX -> parameters (see #03998) Return: ??? SeeAlso: SI=0000h,SI=000Ah,SI=000Bh Format of PCM driver function 0003h parameters: Offset Size Description (Table 03998) 00h DWORD -> DMA buffer 04h WORD size of DMA buffer 06h WORD number of divisions --------s-94----SI0004----------------------- INT 94 u - PCM driver - INITIALIZE USER FUNCTION SI = 0004h ES:BX -> parameters (see #03999) Return: ??? SeeAlso: SI=0000h,SI=0001h Format of PCM driver function 0004h parameters: Offset Size Description (Table 03999) 00h DWORD -> user function --------s-94----SI0005----------------------- INT 94 u - PCM driver - BEGIN AUDIO PLAY SI = 0005h Return: ??? SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h --------s-94----SI0006----------------------- INT 94 u - PCM driver - BEGIN AUDIO RECORD SI = 0006h Return: ??? SeeAlso: SI=0005h,SI=0007h,SI=0009h --------s-94----SI0007----------------------- INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD SI = 0007h Return: ??? SeeAlso: SI=0005h,SI=0006h,SI=0008h --------s-94----SI0008----------------------- INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD SI = 0008h Return: ??? SeeAlso: SI=0007h --------s-94----SI0009----------------------- INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD SI = 0009h Return: ??? SeeAlso: SI=0005h,SI=0006h,SI=0007h --------s-94----SI000A----------------------- INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA SI = 000Ah Return: ??? SeeAlso: SI=0000h,SI=0001h,SI=0003h Index: uninstall;PCM driver --------s-94----SI000B----------------------- INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK SI = 000Bh ES:BX -> parameters (see #04000) Return: ??? SeeAlso: SI=0003h Format of PCM driver functio 000Bh parameters: Offset Size Description (Table 04000) 00h DWORD -> memory block to contain DMA buffer 04h WORD desired size of DMA buffer --------s-94----SI000D----------------------- INT 94 u - Media Vision PCM.COM - GET STATUS SI = 000Dh Return: AX = status (0000h = waiting) (see #04001) Bitfields for PCM.COM status: Bit(s) Description (Table 04001) 0 playing 1 recording 2 SBplaying 3 SBrecording 14 SBpaused 15 paused --------s-94----SI8000----------------------- INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS SI = 8000h Return: DX:AX -> DMA buffer Program: PCM.COM is a superset of the standard PCM driver which provides additional functions for fine control of the driver InstallCheck: for the Media Vision PCM.COM "shark" functions, test for the signature "PCM-SHARK" at offset 107h in the INT 94 handler's segment SeeAlso: SI=8001h,SI=8004h Index: installation check;Media Vision PCM.COM|PCM.COM;installation check Index: Media Vision PCM.COM;"shark" functions --------s-94----SI8001----------------------- INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS SI = 8001h Return: AX = DMA buffer size DX = divisions SeeAlso: SI=8000h --------s-94----SI8002----------------------- INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS SI = 8002h Return: AX = status 0000h if board not at specified I/O address other if board found Note: the I/O address is specified by ORing the base I/O port shifted left four bits into SI before calling INT 94 SeeAlso: SI=8000h --------s-94----SI8004----------------------- INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER SI = 8004h Return: AX = offset of note buffer (segment = segment of internal DMA buffer) DX = size of buffer in note structures SeeAlso: SI=8000h --------s-94----SI8005----------------------- INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE SI = 8005h Return: ??? --------s-94----SI8011----------------------- INT 94 u - Media Vision PCM.COM - INITIALIZE SI = 8011h ES:BX -> "iobf91" structure Return: ??? --------s-94----SI8012----------------------- INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD SI = 8012h ES:BX -> "i94f92buf" structure Return: ??? SeeAlso: SI=8013h,SI=8014h --------s-94----SI8013----------------------- INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE SI = 8013h Return: AX = number of sounds used DX = maximum handles --------s-94----SI8014----------------------- INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND SI = 8014h ES:BX -> "i94f92buf" structure to be filled in sound number field set to desired sound Return: AX = status 0000h successful FFFFh sound number out of range SeeAlso: SI=8012h,SI=8013h --------s-94----SI8015----------------------- INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER SI = 8015h ES:BX -> DMA info structure (see #04002) Return: ??? Format of PCM.COM DMA info structure: Offset Size Description (Table 04002) 00h DWORD -> DMA buffer (offset FFFFh = return current buffer info) 04h WORD DMA buffer size 06h WORD divisions --------s-94----SI8016----------------------- INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY SI = 8016h AX = hotkey number (01h-08h) Return: ??? SeeAlso: AL=02h/SI=8017h --------s-94--01SI8017----------------------- INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT AL = 01h SI = 8017h AH = new state (00h off, 01h on) Return: ??? SeeAlso: AL=02h/SI=8017h --------s-94--02SI8017----------------------- INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE AL = 02h SI = 8017h AH = new state (00h off, 01h on) Return: ??? --------s-94--04SI8017----------------------- INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE AL = 04h SI = 8017h AH = new state 00h off 01h on CX = minimum delay DX = maximum delay Return: ??? --------s-94--08SI8017----------------------- INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE AL = 08h SI = 8017h AH = new state 00h off 01h on DX:CX = delay Return: ??? SeeAlso: AL=10h/SI=8017h --------s-94--10SI8017----------------------- INT 94 u - Media Vision PCM.COM - TIMER CONTROL AL = 10h SI = 8017h AH = timer options (see #04003) DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set) Return: ??? SeeAlso: AL=08h/SI=8017h Bitfields for PCM.COM timer options: Bit(s) Description (Table 04003) 7 set timer 6 timer active (timer turned off if clear) 5-0 timer number --------s-94----SI8018----------------------- INT 94 u - Media Vision PCM.COM - GET INFO SI = 8018h AL = what to get 00h "F92state" 01h "F92bkgd" 02h "I10timer" 03h "I08state" Return: DX:AX -> desired information --------r-95--------------------------------- INT 95 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-95--------------------------------- INT 95 - APL*PLUS/PC - DETERMINE R= SPACE Note: use only when the R= option is invoked on entering APL --------r-96--------------------------------- INT 96 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------U-96--------------------------------- INT 96 U - KILL.COM, QKILL.COM - POP UP Program: KILL.COM is a TSR utility that allows you to terminate programs by calling INT 21/AH=4Ch or reboot the computer (author unknown); QKILL.COM is a modification of KILL.COM by Solar Designer that supports QEMM's Quick Boot feature Notes: This interrupt is intercepted but not chained by KILL.COM; it is never called by KILL.COM itself. It points into the middle of KILL.COM's INT 09 handler and assumes specific values have been placed on the stack (thus it can't be called as an interrupt). To invoke KILL, use the following code: pushf push cs push offset $+0Dh push ax push es push 0 pop es jmp dword ptr es:[96h*4] --------r-97--------------------------------- INT 97 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-98--------------------------------- INT 98 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-99--------------------------------- INT 99 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-9A--------------------------------- INT 9A - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT 99,INT 9B --------r-9B--------------------------------- INT 9B - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC" --------r-9C--------------------------------- INT 9C - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC" --------v-9C--------------------------------- INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS" --------r-9D--------------------------------- INT 9D - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC" --------v-9D--------------------------------- INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT Note: this vector is used by the virus to store the result of a call to INT 2F/AH=13h SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS" --------r-9E--------------------------------- INT 9E - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC" --------v-9E--------------------------------- INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS" --------r-9F--------------------------------- INT 9F - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC" --------v-9F--------------------------------- INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR Note: while it is infecting a file, the INT13 virus grabs INT 13 and uses this interrupt to store the existing INT 13 vector for later restoration SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS",INT D3"VIRUS" --------r-A0--------------------------------- INT A0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC" --------r-A0--------------------------------- INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE SeeAlso: INT 59"GSS" --------r-A1--------------------------------- INT A1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC" --------r-A2--------------------------------- INT A2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC" --------r-A3--------------------------------- INT A3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC" --------r-A4--------------------------------- INT A4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC" --------U-A4--------------------------------- INT A4 U - Right Hand Man - API AH = function number (v3.3 supports functions 00h-52h) Return: CF set on error CF clear if successful Program: Right Hand Man is a TSR desk-top utility originally by Red E Products which has evolved into Futurus Team Note: this interrupt is only hooked while popped up SeeAlso: INT 2F/AX=A4E0h --------r-A5--------------------------------- INT A5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC" --------r-A6--------------------------------- INT A6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC" --------r-A7--------------------------------- INT A7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-A8--------------------------------- INT A8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-A9--------------------------------- INT A9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-AA--------------------------------- INT AA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-AB--------------------------------- INT AB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-AC--------------------------------- INT AC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-AD--------------------------------- INT AD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-AE--------------------------------- INT AE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-AF--------------------------------- INT AF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-B0--------------------------------- INT B0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-B1--------------------------------- INT B1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-B2--------------------------------- INT B2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-B3--------------------------------- INT B3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------U-B370------------------------------- INT B3 - ZIPKEY - GET VERSION AH = 70h Return: AH = major version AL = minor version CL = number of states and territories in current database DH = year of current database - 1900 DL = month of current database's file date Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson Note: if installed, the string "ZIPKEY" is present at offset 75h in the interrupt handler's segment, and the byte at 7Bh contains the API version number (00h for v1.x, 01h for v2.0) --------U-B371------------------------------- INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE AH = 71h BX = abbreviation, in either case (first letter in BL) Return: CF set on error AL = FFh CF clear if successful AL = ZIPKEY state code SeeAlso: AH=72h --------U-B372------------------------------- INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION AH = 72h BL = ZIPKEY state code Return: CF set on error AX destroyed CF clear if successful AX = abbreviation, in upper case SeeAlso: AH=71h,AH=73h --------U-B373------------------------------- INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME AH = 73h BL = ZIPKEY state code ES:DI -> buffer for name Return: CF set on error AX destroyed CF clear if successful ES:DI points one byte beyond end of name SeeAlso: AH=72h --------U-B374------------------------------- INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS AH = 74h DX = zipcode region (0-999) CH = last two digits of zipcode (0-99) ES:DI -> buffer Return: CF set on error AX destroyed CF clear if successful ES:DI points one byte beyond end of digit string --------U-B375------------------------------- INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE AH = 75h DX = zipcode region (0-999) CH = last two digits of zipcode (0-99) Return: CF set on error (zipcode not found) AL = suggested state code, FFh if none CF clear if successful AL = ZIPKEY state code BX = area code (v2.0+) SeeAlso: AH=76h,AH=79h --------U-B376------------------------------- INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE AH = 76h DX = zipcode region (0-999) CH = last two digits of zipcode (0-99) ES:DI -> buffer for name Return: CF set on error AL = suggested state code, FFh if none ES:DI buffer filled with suggested city name CF clear if successful AL = ZIPKEY state code BX = area code (v2.0+) ES:DI points one byte beyond end of name SeeAlso: AH=75h,AH=78h,AH=7Eh --------U-B377------------------------------- INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE AH = 77h DX = zipcode region (0-999) CH = last two digits of zipcode (0-99) BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key Return: CF set on error AX destroyed CF clear if successful zipcode specification as defined by the BX keystroke is placed in keyboard buffer, as if the user had popped up ZIPKEY and exited by pressing the key specified by BX --------U-B378------------------------------- INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY AH = 78h BL = ZIPKEY state code DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix Return: BH = number of matching entries (set to 51 if more than 50) DX = zipcode region of first match (0-999) CL = last two digits of first zipcode in the range (0-99) CH = last two digits of last zipcode in the range (0-99) AX destroyed SeeAlso: AH=79h,AH=7Ah --------U-B379------------------------------- INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY AH = 79h BL = ZIPKEY state code of first state to search DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix Return: AL = ZIPKEY state code of first matching state BH = number of matching entries (set to 51 if more than 50) DX = zipcode region of first match (0-999) CL = last two digits of first zipcode in first range (0-99) CH = last two digits of last zipcode in first range (0-99) Note: to find all matching cities, repeat search with BL set to one more than the returned AL SeeAlso: AH=78h,AH=7Ah --------U-B37A------------------------------- INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP AH = 7Ah BL = case number (0 to one less than value returned in BH by lookup) Return: AL = ZIPKEY state code DX = zipcode region (0-999) CL = last two digits of first zipcode in the range (0-99) CH = last two digits of last zipcode in the range (0-99) SeeAlso: AH=78h,AH=79h --------U-B37B------------------------------- INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT AH = 7Bh Return: BL = maximum number of characters for a city name BH = ZIPKEY state code for last city-name search, or FFh if none CX:DX = internal code identifying last city search AX destroyed SeeAlso: AH=7Ch --------U-B37C------------------------------- INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT AH = 7Ch BL = maximum number of characters for a city name BH = ZIPKEY state code for last city-name search, or FFh if none CX:DX = internal code returned by AH=7Bh Return: CF set on error CF clear if successful AX destroyed SeeAlso: AH=7Bh --------U-B37D------------------------------- INT B3 - ZIPKEY - REQUEST POP UP AH = 7Dh BL = index number to simulate pressing a hotkey FFh for immediate popup with no playback on return Return: CF set on error AL = error code FDh already busy with another request FEh illegal function CF clear if successful AX destroyed window popped up and was closed by the user SeeAlso: AH=70h --------U-B37E------------------------------- INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION AH = 7Eh DX = zipcode region (0-999) ES:DI -> buffer for name Return: CF set on error AL = FFh region does not exist CF clear if successful AL = ZIPKEY state code ES:DI points one byte beyond end of name SeeAlso: AH=76h --------U-B37F------------------------------- INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS AH = 7Fh BL = function 00h turn off hotkeys 01h turn on hotkeys 02h return hotkey status 03h toggle hotkey status Return: AL = hotkey status 00h off 01h on --------U-B380------------------------------- INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE AH = 80h BX = telephone area code (decimal) Return: CF clear if successful AL = ZIPKEY state code DX = first ZIP region for state (03E8h if Canada) CX = number of ZIP regions in state CF set on error AL = FFh DX = 03E9h --------r-B4--------------------------------- INT B4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination --------r-B4--------------------------------- INT B4 - StackMan - REQUEST NEW STACK Return: SS:SP -> new stack Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V. which functions as a replacement for the DOS STACK= command as well as permitting multiple TSRs to share a pool of stack space InstallCheck: test for the string "STACKXXX" at offset 0Ah from the interrupt handler SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN" Index: installation check;STACKMAN --------r-B5--------------------------------- INT B5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC" --------r-B5--------------------------------- INT B5 - StackMan - RESTORE ORIGINAL STACK SS:SP -> stack returned by INT B4 Return: SS:SP restored to value before INT B4 SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan" --------m-B5--------------------------------- INT B5 U - Netroom NETSWAP4 - ??? ??? Return: ??? SeeAlso: INT 31/AH=57h --------r-B6--------------------------------- INT B6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC" --------y-B6--------------------------------- INT B6 - (NOT A VECTOR!) - USED BY TBFENCE Program: TBFence is a security program by ESaSS B.V. which transparently encrypts floppies and optionally allows only encrypted diskettes to be accessed Note: the low word of this vector (0000h:02D8h) contains the segment of the TBFence INT 13h code, which starts with the signature word E487h; this forms the installation check the highest byte of this vector contains the start of a FAR JMP instruction to ??? SeeAlso: INT B7"TBFENCE" Index: installation check;TBFence --------r-B7--------------------------------- INT B7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC" --------y-B7--------------------------------- INT B7 - TBFENCE - ??? SeeAlso: INT B6"TBFENCE" --------r-B8--------------------------------- INT B8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC" --------r-B9--------------------------------- INT B9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-BA--------------------------------- INT BA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-BB--------------------------------- INT BB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-BC--------------------------------- INT BC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-BD--------------------------------- INT BD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination --------r-BE--------------------------------- INT BE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC" --------Q-BE--------------------------------- INT BE - DESQview/X - ??? Note: points at an IRET SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview" --------r-BF--------------------------------- INT BF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC" --------r-C0--------------------------------- INT C0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC" --------d-C0--------------------------------- INT C0 - AMI BIOS - DRIVE 0 DATA Note: this vector is used by some AMI BIOSes to store the first four bytes of the hard disk parameter table SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C1"AMI",INT C2"AMI" SeeAlso: INT C3"AMI",INT C4"AMI" --------r-C1--------------------------------- INT C1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC" --------d-C1--------------------------------- INT C1 - AMI BIOS - DRIVE 0 DATA Note: this vector is used by some AMI BIOSes to store the second four bytes of the hard disk parameter table SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI",INT C2"AMI" SeeAlso: INT C3"AMI" --------r-C2--------------------------------- INT C2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC" --------d-C2--------------------------------- INT C2 - AMI BIOS - DRIVE 0 DATA Note: this vector is used by some AMI BIOSes to store the third four bytes of the hard disk parameter table SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI" --------r-C3--------------------------------- INT C3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC" --------d-C3--------------------------------- INT C3 - AMI BIOS - DRIVE 0 DATA Note: this vector is used by some AMI BIOSes to store the final four bytes of the hard disk parameter table SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI" --------r-C4--------------------------------- INT C4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC" --------d-C4--------------------------------- INT C4 - AMI BIOS - DRIVE 1 DATA Note: this vector is used by some AMI BIOSes to store the first four bytes of the second hard disk's parameter table SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C5"AMI" SeeAlso: INT C6"AMI",INT C7"AMI" --------r-C5--------------------------------- INT C5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC" --------d-C5--------------------------------- INT C5 - AMI BIOS - DRIVE 1 DATA Note: this vector is used by some AMI BIOSes to store the second four bytes of the second hard disk's parameter table SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI" SeeAlso: INT C6"AMI",INT C7"AMI" --------r-C6--------------------------------- INT C6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC" --------r-C6--------------------------------- INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86 Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete the older interrupts SeeAlso: INT 86"APL" --------d-C6--------------------------------- INT C6 - AMI BIOS - DRIVE 1 DATA Note: this vector is used by some AMI BIOSes to store the third four bytes of the second hard disk's parameter table SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI" SeeAlso: INT C5"AMI",INT C7"AMI" --------r-C7--------------------------------- INT C7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC" --------r-C7--------------------------------- INT C7 - APL*PLUS/PC - ??? Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete the older interrupts SeeAlso: INT 87"APL" --------d-C7--------------------------------- INT C7 - AMI BIOS - DRIVE 1 DATA Note: this vector is used by some AMI BIOSes to store the final four bytes of the second hard disk's parameter table SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI" SeeAlso: INT C5"AMI",INT C6"AMI" --------r-C8--------------------------------- INT C8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC" --------r-C8--------------------------------- INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88 Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete the older interrupts SeeAlso: INT 88/AL=00h"APL",INT 88/AL=08h"APL" --------r-C9--------------------------------- INT C9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC" --------r-C9--------------------------------- INT C9 - APL*PLUS/PC - ??? Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete the older interrupts SeeAlso: INT 89"APL" --------r-CA--------------------------------- INT CA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC" --------r-CA--------------------------------- INT CA - APL*PLUS/PC - PRINT SCREEN Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete the older interrupts SeeAlso: INT 8A"APL" --------r-CB--------------------------------- INT CB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC" --------r-CB--------------------------------- INT CB - APL*PLUS/PC - BEEP Notes: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete the older interrupts same as printing a ^G via INT 21/AH=02h SeeAlso: INT 8B"APL" --------r-CC--------------------------------- INT CC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC" --------r-CC--------------------------------- INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY AX = flag 0000h do not save display attributes 0001h save attributes Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete the older interrupts SeeAlso: INT 8C"APL" --------r-CD--------------------------------- INT CD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC" --------r-CD--------------------------------- INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------r-CE--------------------------------- INT CE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC" --------r-CE--------------------------------- INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------r-CF--------------------------------- INT CF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC" --------r-CF--------------------------------- INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION SeeAlso: INT E0"APL" --------r-D0--------------------------------- INT D0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC" --------r-D0--------------------------------- INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------U-D0--------------------------------- INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty James" Blaszczak Note: if NJFRERAM is installed, this vector points at the signature "NJ" Index: installation check;NJFRERAM --------r-D1--------------------------------- INT D1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC" --------r-D1--------------------------------- INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------r-D2--------------------------------- INT D2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC" --------r-D2--------------------------------- INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------r-D3--------------------------------- INT D3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC" --------r-D3--------------------------------- INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------v-D3--------------------------------- INT D3 - VIRUS - "Antiexe" - RELOCATED INT 13 SeeAlso: INT 9F"VIRUS" --------r-D4--------------------------------- INT D4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC" --------r-D4--------------------------------- INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------O-D400------------------------------- INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS AH = 00h and 01h Return: nothing Desc: PC-MOS/386 v5.01 reports that these functions are no longer supported and enters an endless loop Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. --------O-D402------------------------------- INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER AH = 02h Return: AX = 0000h ES:BX -> System Control Block in V86 mode (see #04004) ES:EBX -> System Control Block in native mode (see #04004) Note: superseded by AH=26h SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38 Format of PC-MOS/386 System Control Block: Offset Size Description (Table 04004) 00h WORD pointer to first TCB in chain 02h 17 BYTEs reserved 13h WORD pointer to current task's TCB 15h WORD pointer to TCB of visible (console) task --------O-D403------------------------------- INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION AH = 03h AL = subfunction (00h get, 01h set) DS:(E)DX -> pathname ES:(E)BX -> 10-byte buffer for directory information (see #04005) Return: CF clear if successful AL = permitted access level for file (00h-03h) ES:(E)BX -> modified buffer (AL=01h on entry) CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Notes: BX/DX are used in V86 mode, EBX/EDX in native mode the file class cannot be changed for files because it affects the encryption method, but directories can have their classes changed Format of PC-MOS/386 directory information: Offset Size Description (Table 04005) 00h BYTE reserved (0) 01h BYTE file class ('A'-'Z' or 00h) 02h DWORD user ID of file creator 06h WORD file creation time (see #01665 at INT 21/AX=5700h) 08h WORD file creation date (see #01666 at INT 21/AX=5700h) --------O-D404------------------------------- INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK AH = 04h BX = task ID or FFFFh for calling task Return: CF clear if successful ES = segment of Task Control Block (TCB) (see #04006) CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Note: superseded by AH=27h SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38 Format of PC-MOS/386 Task Control Block: Offset Size Description (Table 04006) 00h BYTE signature byte "H" if allocated from system memory pool 01h BYTE header block ID, "T" = TCB 02h WORD length of block in paragraphs 04h WORD segment address of next header block (0000h if last) 06h WORD segment address of previous header block (0000h if first) 08h WORD pointer to next TCB 0Ah WORD pointer to previous TCB 0Ch WORD pointer to associated TCB (if applicable) 0Eh WORD reserved ---TCB--- 10h WORD TCB task ID 12h WORD native context save area 14h WORD start address of task 16h WORD end address of task 18h BYTE task priority 19h BYTE task time slice 1Ah BYTE "TCBWAIT" run status of task 1Bh BYTE "TCBSTAT" what the task is waiting for 1Ch DWORD address of polling routine 20h BYTE error code from last function call 21h 11 BYTEs name of currently executing task 2Ch 4 BYTEs ??? 30h BYTE keyboard disabled if bit 1 set 31h BYTE current shift state and toggles 32h 2 BYTEs ??? 34h BYTE current video mode 35h BYTE current video page 36h BYTE number of text columns per screen 37h BYTE number of text rows per screen 38h WORD length of video buffer 3Ah WORD video page length 3Ch WORD apge start address in video RAM 3Eh 4 WORDs current cursor positions for four screen pages 46h 8 BYTEs ??? 4Eh WORD current cursor type 50h BYTE current palette setting 51h BYTE original video mode 52h BYTE start CRT row (00h or 01h) 53h BYTE video RAM in task active 54h WORD handle of video save area 56h WORD page count of video save area 58h WORD segment address of video save area 5Ah WORD poitner to first Task File Block (see #04009) 5Ch WORD pointer to first Current Directory Block (see #04012) 5Eh WORD pointer to active Current Directory Block (see #04012) 60h BYTE number of drives 61h BYTE current drive (0=A:, etc.) 62h DWORD disk transfer address 66h 4 BYTEs ??? 6Ah BYTE verify flag (nonzero = on) 6Bh BYTE break flag (nonzero = on) 6Ch WORD share/lock retry count 6Eh WORD ticks between share/lock retries 70h BYTE remote printer flags (see #04007) 71h BYTE ETX/ACK delay count 72h WORD spooler segment address 74h 2 BYTEs ??? 76h 3 BYTEs remote printer redirection for LPT1 through LPT3 (see #04008) 79h 2 BYTEs ??? 7Bh DWORD offset of username in TCB 7Fh BYTE current output class 80h 7 BYTEs protection access rights, 2 bits per class (writeable!) 87h 122 BYTEs ??? 101h BYTE TCB sleep downcounter value 102h 20 BYTEs ??? 116h BYTE last scan code ... 5D0h DWORD far pointer to Device Driver Terminal's entry point 5D4h WORD offset of logical screen 5D6h WORD segment of logical screen 5D8h WORD cursor offset within page 5DAh BYTE screen columns 5DBh WORD async port number (0000h = none) 5DDh DWORD physical baudrate 5E1h 19 BYTEs reserved for Device Driver Terminal (DDT) ... 7A6h DWORD far pointer to unregister calling chain Bitfields for PC-MOS/386 remote printer flags: Bit(s) Description (Table 04007) 0 LPT1 to terminal 1 LPT2 to terminal 2 LPT3 to terminal 3 escape to printer pending 4 use XON/XOFF 5 use ETX/ACK 6 waiting for ACK or XON 7 transparent printing on (Table 04008) Values for PC-MOS/386 remote printer redirection: 00h not redirected 01h redirected to COM1 ... 18h redirected to COM24 51h redirected to LPT1 52h redirected to LPT2 53h redirected to LPT3 Format of PC-MOS/386 Task File Block: Offset Size Description (Table 04009) 00h BYTE signature byte "H" if allocated from system memory pool 01h BYTE header block ID, "F" = task file block 02h WORD length of block in paragraphs 04h WORD segment address of next header block (0000h if last) 06h WORD segment address of previous header block (0000h if first) 08h WORD pointer to next TCB 0Ah WORD pointer to previous TCB 0Ch WORD pointer to associated TCB (if applicable) 0Eh WORD reserved ---TFB--- 10h WORD segment address of next TFB 12h WORD segment address of previous TFB 14h WORD segment address of TFB's Global File Block (see #04011) 16h WORD segment address of owner's PSP 18h WORD file handle 1Ah 3 BYTEs ??? 1Dh DWORD file position 21h 4 BYTEs ??? 25h BYTE IOCTL flags (see #04010) 26h 2 BYTEs ??? Bitfields for PC-MOS/386 IOCTL flags: Bit(s) Description (Table 04010) 0 stdin 1 stdout 2 null device 3 clock device 4 reserved 5 ASCII mode instead of binary 6 EOF encountered on input 7 device rather than file Format of PC-MOS/386 Global File Block: Offset Size Description (Table 04011) 00h BYTE signature byte "H" if allocated from system memory pool 01h BYTE header block ID, "G" = global file block 02h WORD length of block in paragraphs 04h WORD segment address of next header block (0000h if last) 06h WORD segment address of previous header block (0000h if first) 08h WORD pointer to next TCB 0Ah WORD pointer to previous TCB 0Ch WORD pointer to associated TCB (if applicable) 0Eh WORD reserved ---GFB--- 10h 10 BYTEs ??? 1Ah WORD file attribute 1Ch BYTE ??? 1Dh DWORD address of device driver 21h WORD first cluster 23h WORD time of last modification 25h WORD date of last modification 27h DWORD size of file in bytes 2Bh 11 BYTEs ??? 36h 11 BYTEs device name or FCB-format filename 41h WORD segment address of TFB list 43h WORD segment address of first RLB (see #04014) (0000h = none) 45h BYTE flag: nonzero if GFB refers to character device 46h WORD address of Block Device Block (see #04013) 48h WORD sector of file's directory entry (see #01352) 4Ah WORD high word of file's directory entry 4Ch WORD ofsset of directory entry within sector Format of PC-MOS/386 Current Directory Block: Offset Size Description (Table 04012) 00h BYTE signature byte "H" if allocated from system memory pool 01h BYTE header block ID, "C" = current directory block 02h WORD length of block in paragraphs 04h WORD segment address of next header block (0000h if last) 06h WORD segment address of previous header block (0000h if first) 08h WORD pointer to next TCB 0Ah WORD pointer to previous TCB 0Ch WORD pointer to associated TCB (if applicable) 0Eh WORD reserved ---CDB--- 10h BYTE drive number 11h BYTE ??? 12h 64 BYTEs directory name 52h WORD first directory cluster (0000h = root) Format of PC-MOS/386 Block Device Block: Offset Size Description (Table 04013) 00h BYTE signature byte "H" if allocated from system memory pool 01h BYTE header block ID, "B" = block device block 02h WORD length of block in paragraphs 04h WORD segment address of next header block (0000h if last) 06h WORD segment address of previous header block (0000h if first) 08h WORD pointer to next TCB 0Ah WORD pointer to previous TCB 0Ch WORD pointer to associated TCB (if applicable) 0Eh WORD reserved ---BDB--- 10h BYTE logical drive 11h BYTE unit passed to driver 12h WORD sector size 14h BYTE cluster mask 15h BYTE cluster shift count 16h WORD starting sector of first FAT 18h BYTE number of FATs 19h WORD number of root directories 1Bh WORD sector number of first data sector (cluster 0002h) 1Dh WORD number of clusters + 1 (number of highest data cluster) 1Fh BYTE number of sectors in FAT 20h WORD beginning root directory sector number 22h DWORD device driver address 26h BYTE media descriptor byte 27h 5 BYTEs ??? 2Ch BYTE flag: volume > 32MB 2Dh BYTE ??? 2Eh BYTE number of sectors per cluster 2Fh WORD number of clusters on device 31h WORD number of free clusters (FFFFh = unknown) 33h WORD root directory cluster number 35h WORD pointer to alias/subst string 37h WORD TCB segment address of owner (0000h = none) Format of PC-MOS/386 Record Lock Block: Offset Size Description (Table 04014) 00h BYTE signature byte "H" if allocated from system memory pool 01h BYTE header block ID, "R" = record lock block 02h WORD length of block in paragraphs 04h WORD segment address of next header block (0000h if last) 06h WORD segment address of previous header block (0000h if first) 08h WORD pointer to next TCB 0Ah WORD pointer to previous TCB 0Ch WORD pointer to associated TCB (if applicable) 0Eh WORD reserved ---RLB--- 10h WORD segment address of owner's PSP 12h WORD segment address of Global File Block (see #04011) 14h WORD segment address of owner's Task File Block (see #04009) 16h DWORD file offset of locked region start 1Ah DWORD length of locked region 1Eh WORD owner's handle for file --------O-D407------------------------------- INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT AH = 07h AL = events to monitor (see #04015) BX = number of timer ticks until timeout if AL bit 1 set CX = bitmap of IRQs to monitor if AL bit 2 set (bit 0 = IRQ0 .. bit 15 = IRQ15) DX = port to monitor if AL bit 3 set Return: CF clear if successful AL = type of event which woke up task (see #04015) CX = IRQ (if any) which awakened task DX = port (if any) which awakened task CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Note: a device driver may make this call with AL=00h, which indicates that the driver is responsible for setting and clearing the TCBWAIT field in the TCB. To put task to sleep, set TCBWAIT bits 2-0 to 001; to reawaken it, set bit 1 (leaving other bits unchanged) SeeAlso: AH=04h,INT 16/AH=00h,INT 38 Bitfields for PC-MOS/386 events to monitor: Bit(s) Description (Table 04015) 0 keystroke 1 timeout 2 IRQ 3 port access 7 return status of user poll routine (other ignored if set) --------O-D410------------------------------- INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE AH = 10h AL = direction (00h return to V86 mode, 01h enter native mode) CX = length in bytes of Native Context Area ( >=1024 ) DX = segment of Native Context Area Return: CF clear if successful running in desired mode at instruction following INT D4 call all segment registers converted to appropriate selectors/segments CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Note: MS-DOS calls are available in protected mode SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38 --------O-D411------------------------------- INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK AH = 11h EBX = block length in bytes Return: CF clear if successful EBX = number of bytes actually allocated ES = selector for allocated block CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. Note: the memory must be released before the program terminates SeeAlso: AH=10h,AH=12h,INT 38 --------O-D412------------------------------- INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK AH = 12h ES = selector for block to free Return: CF clear if successful CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: AH=10h,AH=11h,AH=13h,INT 38 --------O-D413------------------------------- INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY) AH = 13h AL = type of alias selector (00h data, 01h stack, 02h code) BX = selector Return: CF clear if successful AX = new selector or 0000h if BX selector not found CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: AH=11h,AH=12h --------O-D416------------------------------- INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION AH = 16h AL = function (00h clear, 01h set reservation) CX = IRQ number Return: AX = status (0000h successful, 0001h currently reserved by another task) SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS" --------O-D419------------------------------- INT D4 - PC-MOS/386 v5.01 - GET TASK ID AH = 19h Return: BX = caller's task ID Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. SeeAlso: AH=1Dh,AH=1Eh --------O-D41A------------------------------- INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY AH = 1Ah AL = subfunction (00h read, 01h set, 02h get and set) BX = task ID (FFFFh for current task) CL = new priority value Return: CF clear if successful CL = current priority value CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: AH=1Bh,AH=1Ch --------O-D41B------------------------------- INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE AH = 1Bh AL = subfunction (00h read, 01h set, 02h get and set) BX = task ID (FFFFh for current task) (see AH=19h) CL = new time slice value Return: CF clear if successful CL = current time slice value CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: AH=1Ah,AH=1Ch --------O-D41C------------------------------- INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE AH = 1Ch AL = subfunction (00h enable, 01h disable, 02h get mode) BX = task ID (FFFFh for current task) Return: CF clear if successful CL = current keyboard state CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. SeeAlso: AH=1Ah,AH=1Bh --------O-D41D------------------------------- INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME AH = 1Dh BX = task ID (FFFFh for current task) (see AH=19h) ES:DI -> buffer for program name (see #04016) Return: CF clear if successful ES:DI buffer filled CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: AH=19h,AH=1Eh Format of PC-MOS/386 program name buffer: Offset Size Description (Table 04016) 00h 8 BYTEs filename 08h 3 BYTEs extension --------O-D41E------------------------------- INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS AH = 1Eh BX = task ID (FFFFh for current task) ES:DI -> 4-byte buffer for username Return: CF clear if successful CL = security class 20h (' ') none 41h-5Ah ('A'-'Z') security level ES:DI buffer filled CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: AH=19h,AH=1Dh --------O-D41F------------------------------- INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION AH = 1Fh BX = task ID (FFFFh for current task) (see AH=19h) Return: CF clear if successful CX = start segment of task DX = ending segment of task CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. SeeAlso: AH=2Dh --------O-D420------------------------------- INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION AH = 20h BX = task ID (FFFFh for current task) (see AH=19h) Return: CF clear if successful CX = port number (0000h if none) DI:SI = baudrate (if CX nonzero) CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: INT 14/AH=0Ch"FOSSIL" --------O-D421------------------------------- INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK AH = 21h BX = task ID (FFFFh for current task) (see AH=19h) Return: CF clear if successful AX = ASCII percentage of System Memory Pool used (AH = tens digit, AL = ones digit) DS,SI destroyed CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. SeeAlso: AH=22h --------O-D422------------------------------- INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM AH = 22h DS:SI -> addtask data structure (see #04018) Return: CF clear if successful ES = segment address of the new task's TCB data structure CF set on error AX = error code (see #04017) SeeAlso: AH=21h (Table 04017) Values for PC-MOS/386 error code: 08h insufficient memory 0Bh invalid addtask structure format 12h insufficient available space in system memory pool 1Fh general failure 55h already allocated 57h if task already in use or invalid parameter Format of PC-MOS/386 addtask data structure: Offset Size Description (Table 04018) 00h WORD task size in KB (min 16KB) 02h WORD task ID (0000h for automatic selection) 04h BYTE task class (' ' or 'A'-'Z') 05h DWORD -> ASCIZ name of task startup batchfile 09h DWORD -> task's terminal driver (0000000h = background task) 0Dh WORD task port 0Fh DWORD task baud rate 13h DWORD (ret) total extended memory 17h DWORD (ret) number of 4K extended memory pages allocated 1Bh WORD (ret) paragraphs of system memory pool allocated 1Dh WORD (ret) system memory pool size in paragraphs 1Fh WORD (ret) ASCII task percentage of system memory pool 21h 3 BYTEs reserved --------O-D423------------------------------- INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER AH = 23h BX = task ID (FFFFh for current task) DS:SI -> entry point of the new Device Driver Terminal Return: CF clear if successful CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) --------O-D424------------------------------- INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER AH = 24h Return: DS:DX -> '$'-terminated string containing the serial number --------O-D425------------------------------- INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION AH = 25h DX = driver's CS value Return: AX = segment address of driver in system memory pool (0000h if the driver is not within the system memory pool) Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. --------O-D426------------------------------- INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR AH = 26h Return: DX = segment/selector of the System Control Block (see #04004) Note: this function supersedes AH=02h SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah --------O-D427------------------------------- INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR AH = 27h BX = task ID (FFFFh if current task) (see AH=19h) Return: CF clear if successful DX = segment/selector for the Task Control Block (see #04006) CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) Note: this function supersedes AH=04h SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah --------O-D428------------------------------- INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB AH = 28h BX = offset into control block at which to start reading CX = number of bytes to read DX = segment/selector of control block obtained via AH=26h or AH=27h ES:DI -> buffer for data Return: CF clear if successful CF set on error AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h) 05h access denied due to an invalid segment/selector SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah --------O-D429------------------------------- INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB AH = 29h BX = offset into control block at which to start writing CX = number of bytes to write DX = segment/selector of control block obtained via AH=26h or AH=27h DS:SI -> buffer containing data to be written Return: CF clear if successful CF set on errro AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h) 05h access denied due to an invalid segment/selector Note: this function performs no bounds checking Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah --------O-D42A------------------------------- INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB AH = 2Ah BX = offset into control block at which to start swap CX = number of bytes to swap DX = segment/selector of control block obtained via AH=26h or AH=27h DS:SI -> buffer containing new data and to receive current data Return: CF clear if successful CF set on error AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h) 05h access denied due to an invalid segment/selector Note: the interrupts are disabled during the swap to prevent corruption SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h --------O-D42C------------------------------- INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS AH = 2Ch AL = function 00h set spooler timeout CX = timout value in seconds 01h get spooler timeout Return: CX = current timeout in seconds 02h get spooler parameters Return: CH = priority (00h-09h) CL = disposition (d, h, i, n, s) SI = class (a - z) 03h set spooler parameters CH = priority (00h-09h) CL = disposition (d, h, i, n, s) SI = class (a - z) BX = task ID (FFFFh for current task) DX = LPT number Return: CF clear if successful CF set on error AX = error code (see #01680 at INT 21/AH=59h/BX=0000h) SeeAlso: AH=00h,AH=02h,AH=03h --------O-D42D------------------------------- INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE AH = 2Dh Return: DX = maximum task size in paragraphs BX = start address of task space Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating system by The Software Link, Inc. SeeAlso: AH=1Fh,AH=22h --------r-D5--------------------------------- INT D5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC" --------r-D5--------------------------------- INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------r-D6--------------------------------- INT D6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC" --------r-D6--------------------------------- INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------r-D7--------------------------------- INT D7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC" --------r-D7--------------------------------- INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------r-D8--------------------------------- INT D8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC" --------r-D8--------------------------------- INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------H-D8--------------------------------- INT D8 - Screen Thief v1.00 - RELOCATED IRQ0 Range: INT 78h to INT E0h, selected by commandline switch Note: Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default, but may be directed via a commandline switch to use any range starting at a multiple of 8 between 78h and E0h SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview" SeeAlso: INT D9"Screen Thief" --------r-D9--------------------------------- INT D9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC" --------r-D9--------------------------------- INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------H-D9--------------------------------- INT D9 - Screen Thief v1.00 - RELOCATED IRQ1 Range: INT 79h to INT E1h, selected by commandline switch Note: (see INT D8"Screen Thief") SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief" --------r-DA--------------------------------- INT DA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC" --------r-DA--------------------------------- INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------H-DA--------------------------------- INT DA - Screen Thief v1.00 - RELOCATED IRQ2 Range: INT 7Ah to INT E2h, selected by commandline switch Note: (see INT D8"Screen Thief") SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief" --------r-DB--------------------------------- INT DB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC" --------r-DB--------------------------------- INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------H-DB--------------------------------- INT DB - Screen Thief v1.00 - RELOCATED IRQ3 Range: INT 7Bh to INT E3h, selected by commandline switch Note: (see INT D8"Screen Thief") SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief" --------u-DC--------------------------------- INT DC - PC/370 v4.1- - API SeeAlso: INT 60"PC/370" --------r-DC--------------------------------- INT DC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC" --------r-DC--------------------------------- INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES --------H-DC--------------------------------- INT DC - Screen Thief v1.00 - RELOCATED IRQ4 Range: INT 7Ch to INT E4h, selected by commandline switch Note: (see INT D8"Screen Thief") SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief" --------r-DD--------------------------------- INT DD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC" --------r-DD--------------------------------- INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER BX = where to place keystrokes FFFFh insert before current buffer contents 0000h replace current contents 0001h insert after current contents CX = number of keystroke events to insert ES:SI -> data to be placed into buffer (list of WORD key codes) 4000h + N = normal ASCII keystroke N (N = 00h to FFh) 4100h + N = extended ASCII keystroke N (N = 03h to 84h) Return: nothing SeeAlso: INT 16/AH=05h --------H-DD--------------------------------- INT DD - Screen Thief v1.00 - RELOCATED IRQ5 Range: INT 7Dh to INT E5h, selected by commandline switch Note: (see INT D8"Screen Thief") SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief" --------r-DE--------------------------------- INT DE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC" --------r-DE--------------------------------- INT DE - APL*PLUS/PC - ??? Note: appears to be the same as INT 16 --------H-DE--------------------------------- INT DE - Screen Thief v1.00 - RELOCATED IRQ6 Range: INT 7Eh to INT E6h, selected by commandline switch Note: (see INT D8"Screen Thief") SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief" --------b-DF--------------------------------- INT DF - Victor 9000/Sirius 1 - SuperBIOS SeeAlso: INT 21/AH=EAh"NetWare" --------r-DF--------------------------------- INT DF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC" --------r-DF--------------------------------- INT DF - APL*PLUS/PC - SAME AS INT 10 SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh --------H-DF--------------------------------- INT DF - Screen Thief v1.00 - RELOCATED IRQ7 Range: INT 7Fh to INT E7h, selected by commandline switch Note: (see INT D8"Screen Thief") SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief" --------r-E0--------------------------------- INT E0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC" --------r-E0--------------------------------- INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION SeeAlso: INT CF"APL" --------v-E0--------------------------------- INT E0 - VIRUS - "Micro-128" - ??? Note: Micro-128 also overwrites the upper half of the interrupt table SeeAlso: INT 9E"VIRUS",INT F1"VIRUS" ----------E0--------------------------------- INT E0 - DeskMate (Tandy) - DESK EXECUTIVE API AX = function code (numerous) parameters passed in BX, DX, ES, DI, and/or BP Return: AX = return from function Program: DeskMate is a proprietary GUI from Tandy distributed with several models of the Tandy 1000's, 2500's, 3000's, and laptops. Retail and runtime versions also exist. Some Tandy's are designed to boot directly into DeskMate. SeeAlso: INT 15/AX=7002h,INT E1"DeskMate" --------O-E0--------------------------------- INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS CL = function number (see #04019,#04020) DS,DX contain parameter(s): DL = byte parameter DX = word parameter DS:DX -> structure Return: as appropriate for function: AL = byte result AX = word ES:AX -> structure (and BX=ES) CX is often the error code (see #04021) Notes: several functions are covered in more detail in following entries most of these calls are also supported by Digital Research's DOS Plus v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch, 90h-92h,94h-97h,9Bh-ABh, and AEh-FFh SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus",INT E6"CP/M-86" (Table 04019) Values for CP/M-86,DR Multiuser DOS function number: 00h terminate calling process (see INT E0/CL=00h) 01h read a character (see INT E0/CL=01h) 02h write character to default console (see INT E0/CL=02h) 03h read character from default AUX (see INT E0/CL=03h) 04h write character to default AUX (see INT E0/CL=04h) 05h write character to default list device (see INT E0/CL=05h) 06h perform raw I/O on default console (see INT E0/CL=06h) 07h return default AUX input status (see INT E0/CL=07h) 08h return default AUX output status (see INT E0/CL=08h) 09h write string to default console (see INT E0/CL=09h) 0Ah read string from default console (see INT E0/CL=0Ah) 0Bh return default console input status (see INT E0/CL=0Bh) 0Ch get BDOS release ID (see INT E0/CL=0Ch) 0Dh reset all disk drives (see also INT 21/AH=0Dh) 0Eh set default drive (see also INT 21/AH=0Eh"DOS 1+") 0Fh open file via FCB (see also INT 21/AH=0Fh,#01345) 10h close file via FCB (see also INT 21/AH=10h) 11h search for first matching file with FCB (see also INT 21/AH=11h) 12h search for next matching file with FCB (see also INT 21/AH=12h) 13h delete file via FCB (see also INT 21/AH=13h) 14h sequential read via FCB (see also INT 21/AH=14h) 15h sequential write via FCB (see also INT 21/AH=15h) 16h create file via FCB (see also INT 21/AH=16h) 17h rename file via FCB (see also INT 21/AH=17h) 18h get bit map of logged drives 19h get default drive (see also INT 21/AH=19h) 1Ah set DMA address offset 1Bh get default disk allocation vector (see also INT 21/AH=1Bh) 1Ch set default drive to read-only 1Dh get bit map of read-only drives 1Eh set file attributes via FCB (see also INT 21/AX=4301h) 1Fh get address of disk parameter block (see also INT 21/AH=1Fh) 20h get/set default user number 21h read random record via FCB (see also INT 21/AH=21h) 22h write random record via FCB (see also INT 21/AH=22h) 23h compute file size with FCB (see also INT 21/AH=23h) 24h get FCB random record number (see also INT 21/AH=24h) 25h reset specified drives 26h access specified drives (not in DR DOS Plus v2.1) 27h free specified drives 28h write random with FCB, zero fill (see also INT 21/AH=28h) 2Ah lock records in FCB file (see also INT 21/AH=5Ch) 2Bh unlock records in FCB file (see also INT 21/AH=5Ch) 2Ch set BDOS multisector count 2Dh set BDOS error mode 2Eh get free space on disk 2Fh load, initialize, and jump to process ("chain process") (see INT E0/CL=2Fh,INT 21/AH=4Bh) 30h flush write-deferred buffers 31h get/set system variable (DOS Plus v2.1) 32h call BIOS (XIOS) character routine (see #04020) 33h set DMA address segment 34h get DMA buffer address 35h CP/M-86 allocate maximum memory (see INT E0/CL=35h) 36h allocate maximum memory at specified segment (see INT E0/CL=36h) 37h CP/M-86 allocate memory segment (see INT E0/CL=37h,INT 21/AH=48h) 38h allocate memory at specified segment (see INT E0/CL=38h) 39h CP/M-86 free specified memory segment (see INT E0/CL=39h,INT 21/AH=49h) 3Ah CP/M-86 free all memory (not in DOS Plus v2.1) (see INT E0/CL=3Ah) 3Bh load .CMD file into memory (see INT E0/CL=3Bh) 3Ch (DOS Plus v2.1) call RSX program 40h (DR-NET, REAL/32) log on a server (see INT E0/CL=40h) 41h (DR-NET, REAL/32) log off a server (see INT E0/CL=41h) 42h (DR-NET) send a message 43h (DR-NET) receive a message 44h (DR-NET, REAL/32) get network status (see INT E0/CL=44h) 45h (DR-NET, REAL/32) get requestor config table (see INT E0/CL=45h) 46h (DR-NET) set compatibility attributes 47h (DR-NET, REAL/32) get server configuration table (see INT E0/CL=47h) 48h (DR-NET, REAL/32) set network error mode (see INT E0/CL=48h) 49h (DR-NET, REAL/32) attach network 4Ah (DR-NET, REAL/32) detach network 4Bh (DR-NET, REAL/32) set default password 4Ch (DR-NET, REAL/32) get-set long timeout 4Dh (DR-NET, REAL/32) get parameter table 4Fh (REAL/32) get extended network error 50h (DR-NET, REAL/32) get network information 53h get current time (see also INT 21/AH=2Ch) 54h set current time (see also INT 21/AH=2Dh) 55h get binary system date (see also INT 21/AH=2Ah) 56h set system date (see also INT 21/AH=2Bh"DATE") 57h allocate system flag 58h deallocate system flag 59h reserve memory in global area (see INT E0/CL=59h) 5Ah lock physical drive 5Bh unlock physical drive 5Ch search path for executable file (see INT E0/CL=5Ch) 5Dh load and execute command (see INT E0/CL=5Dh) 5Eh get/set process exit code (see INT E0/CL=5Eh) 5Fh set country information 60h get country information 63h truncate FCB file (see also INT 21/AH=28h) 64h create/update directory label 65h get directory label 66h get FCB date stamp and password mode 67h write extended FCB 68h set system date and time 69h get system date and time in binary 6Ah establish password for file access 6Bh get OS serial number (see INT E0/CL=6Bh) 6Ch (DOS Plus v2.1) get/set program return code 6Dh get/set console mode (see INT E0/CL=6Dh) 6Eh get/set string delimiter (see INT E0/CL=6Eh) 6Fh write block to default console (see INT E0/CL=6Fh) 70h write block to default list device (see INT E0/CL=70h) 71h execute DOS-compatible function (see INT E0/CL=71h) 74h set FCB time and date stamps 80h allocate memory (see INT E0/CL=80h) 82h deallocate memory (see INT E0/CL=81h) 83h poll I/O device 84h wait on system flag (see INT E0/CL=84h) 85h set system flag (see INT E0/CL=85h) 86h create message queue (see INT E0/CL=86h) 87h open message queue (see INT E0/CL=87h) 88h delete message queue (see INT E0/CL=88h) 89h read from message queue (see INT E0/CL=89h) 8Ah conditionally read from message queue (see INT E0/CL=8Ah) 8Bh write to message queue (see INT E0/CL=8Bh) 8Ch conditionally write to message queue (see INT E0/CL=8Ch) 8Dh delay calling process (see INT E0/CL=8Dh) 8Eh call process dispatcher (yield CPU) (see INT E0/CL=8Eh) 8Fh terminate calling process (same as func 00h) (see INT E0/CL=8Fh) 90h create a process (see INT E0/CL=90h) 91h set calling process' priority (see INT E0/CL=91h) 92h attach to default console (see INT E0/CL=92h) 93h detach from default console (see INT E0/CL=93h) 94h (REAL/32) set the process' default console (see INT E0/CL=94h) 95h assign default console to process (see INT E0/CL=95h) 96h interpret and execute commandline (see INT E0/CL=96h) 97h resident procedure library 98h parse ASCII string into FCB (see also INT 21/AH=29h) 99h return default console (see INT E0/CL=99h) 9Ah get address of system data (SYSDAT) (see INT E0/CL=9Ah) 9Bh get system time and date 9Ch return calling process' descriptor (see INT E0/CL=9Ch) 9Dh terminate process by name or PD address (see INT E0/CL=9Dh) 9Eh attach to default list device (see INT E0/CL=9Eh) 9Fh detach from default list device (see INT E0/CL=9Fh) A0h select default list device (see INT E0/CL=A0h) A1h conditionally attach to default list device (see INT E0/CL=A1h) A2h conditionally attach to default console (see INT E0/CL=A2h) A3h get OS version number (see INT E0/CL=A3h) A4h get default list device (see INT E0/CL=A4h) A5h attach to default AUX (see INT E0/CL=A5h) A6h detach from default AUX (see INT E0/CL=A6h) A7h conditionally attach to default AUX (see INT E0/CL=A7h) A8h set default AUX (see INT E0/CL=A8h) A9h return default AUX (see INT E0/CL=A9h) ACh read block from default AUX (see INT E0/CL=ACh) ADh (DOS Plus v2.1) write block to default AUX (see INT E0/CL=ADh) B0h configure default AUX (see INT E0/CL=B0h) B1h get/set device control parameters (see INT E0/CL=B1h) B2h send Break through default AUX (see INT E0/CL=B2h) B3h allocate physical memory (see INT E0/CL=B3h) B4h free physical memory (see INT E0/CL=B4h) B5h map physical memory (see INT E0/CL=B5h) B6h nondestructive conditional message queue read (see INT E0/CL=B6h) B7h timed wait on system flag (see INT E0/CL=B7h) B8h get/set I/O port mapping (see INT E0/CL=B8h) B9h set list device timeout (see INT E0/CL=B9h) BAh set AUX timeout value (see INT E0/CL=BAh) BBh execute XIOS service BDh (DR Multiuser DOS) delay (see INT E0/CL=BDh) FFh return 80386 to native mode SeeAlso: #04020,#04021 (Table 04020) Values for DOS Plus v2.1 XIOS functions: 00h terminate program 01h ??? 02h check for console input status 03h read character from console 04h write character to console 05h write character to list device 06h write character to auxiliary device 07h read character from auxiliary device 0Fh get list device status 10h-14h reserved 15h device initialization 16h check console output status 17h-7Fh reserved ---BBC Acorn--- 80h get XIOS version 81h get Tube semaphore 82h release Tube semaphore 83h select text/graphics 84h update B&W graphics rectangle 85h update color graphics rectangle 86h get/release/update mouse 87h get system error info 88h entry in CLOCK called by WatchDog RSP 89h BBC OSBYTE function 8Ah BBC OSWORD function SeeAlso: #04019 (Table 04021) Values for DR Multiuser DOS Error Return Code: 00h no error 01h system call not implemented 02h illegal system call number 03h cannot find memory 04h illegal flag number 05h flag overrun 06h flag underrun 07h no unused Queue Descriptors 08h no free queue buffer 09h cannot find queue 0Ah queue in use 0Ch no free Process Descriptors 0Dh no queue access 0Eh empty queue 0Fh full queue 10h CLI queue missing 11h no 8087 in system 12h no unused Memory Descriptors 13h illegal console number 14h no Process Descriptor match 15h no console match 16h no CLI process 17h illegal disk number 18h illegal filename 19h illegal filetype 1Ah character not ready 1Bh illegal Memory Descriptor 1Ch bad return from BDOS load 1Dh bad return from BDOS read 1Eh bad return from BDOS open 1Fh null command 20h not owner of resource 21h no CSEG in load file 22h process Descriptor exists on Thread Root 23h could not terminate process 24h cannot attach to process 25h illegal list device number 26h illegal password 28h external termination occurred 29h fixup error upon load 2Ah flag set ignored 2Bh illegal auxilliary device number SeeAlso: #04019 --------O-E0----CL00------------------------- INT E0 - REAL/32 - "P_TERMCPM" - TERMINATE CALLING PROCESS CL = 00h Return: AX = error code FFFFh on failure may destroy SI,DI??? Program: REAL/32 is the descendant of IMS Multiuser DOS, which in turn is derived from DR Multiuser DOS and its predecessors (Concurrent DOS, etc.) Notes: sets the exit code (ERRORLEVEL) to 00h INT E0h is officially reserved for Digital Research by Intel. Apparently some Borland products also used this interrupt, which forced Digital Research to indirect calls through other interrupt entry points. This is also supported by IMS Multiuser DOS and IMS REAL/32. SeeAlso: INT 21/AH=00h --------O-E0----CL01------------------------- INT E0 - REAL/32 - "C_READ" - FETCH CHARACTER FROM THE DEFAULT CONSOLE CL = 01h Return: AX = character may destroy SI,DI??? Notes: this function echos the character to the screen, expanding Tab characters to the next multiple of eight columns; Ctrl-C is ignored if the calling process can not terminate the calling process is suspended until a character is available; if the caller does not own the console, it is suspended until it can attach to the console SeeAlso: INT E0/CL=02h,INT E0/CL=06h,INT 21/AH=01h --------O-E0----CL02------------------------- INT E0 - REAL/32 - "C_WRITE" - WRITE CHARACTER TO DEFAULT CONSOLE CL = 02h DX = character Return: nothing may destroy SI,DI??? Note: Tab characters are expanded to blanks up to the next multiple of eight columns SeeAlso: INT E0/CL=01h,INT E0/CL=06h,INT 21/AH=02h --------O-E0----CL03------------------------- INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM DEFAULT AUX DEVICE CL = 03h Return: AL = ASCII character may destroy SI,DI??? Notes: A_READ reads the next 8-bit character from the logical auxilliary input device (AUXn:); control is not returned to the calling process until a character has been read. if another process owns AUX, this call blocks until the device becomes available this function is also supported by REAL/32 SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh --------O-E0----CL04------------------------- INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO DEFAULT AUX DEVICE CL = 04h DL = BYTE to write Return: nothing may destroy SI,DI,DH??? Note: if another process owns AUX, this call blocks until the device becomes available SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh --------O-E0----CL05------------------------- INT E0 - REAL/32 - "L_WRITE" - WRITE CHARACTER TO DEFAULT LIST DEVICE CL = 05h DL = char to write Return: nothing may destroy SI,DI??? Note: if another process owns the list device, this call blocks until the device becomes available SeeAlso: INT 21/AH=05h --------O-E0----CL06------------------------- INT E0 - REAL/32 - "C_RAWIO" - PERFORM RAW I/O WITH DEFAULT CONSOLE CL = 06h DL = mode describing the operation to be performed FFh get console input/status FEh get console status FDh get console input (blocking) else output DL to the console as a character Return: AX = returned value for DL = FFh, the character or 00h if none available for DL = FEh, 00h if no characters available, FFh if any available for DL = FDh, the character read from the console else AX = 0000h may destroy SI,DI??? Notes: during raw I/O, the special characters ^C, ^O, ^P, and ^S are not interpreted, but are passed through if the virtual console is in ^S mode and the owning process calls this function, the ^S state is cleared SeeAlso: INT E0/CL=01h,INT E0/CL=02h,INT 21/AH=06h --------O-E0----CL07------------------------- INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE CL = 07h Return: AL = status 00h not ready FFh character available Desc: determine whether the current AUX device has input available SeeAlso: INT E0/CL=03h,INT E0/CL=08h --------O-E0----CL08------------------------- INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE CL = 08h Return: AL = status 00h not ready FFh ready for output Desc: determine whether the current AUX device is able to accept more output SeeAlso: INT E0/CL=04h,INT E0/CL=07h --------O-E0----CL09------------------------- INT E0 - REAL/32 - "C_WRITESTR" - WRITE STRING TO DEFAULT CONSOLE CL = 09h DS:DX -> string Return: nothing may destroy SI,DI,DS??? Note: the string terminated with a '$' character (24h) by default; the terminator may be changed with C_DELIMIT tabs are expanded to the next multiple of eight columns SeeAlso: INT E0/CL=6Eh --------O-E0----CL0A------------------------- INT E0 - REAL/32 - "C_READSTR" - READ STRING FROM DEFAULT CONSOLE CL = 0Ah DS:DX -> buffer for string (see #04022) Return: nothing Format of REAL/32 "C_READSTR" buffer: Offset Size Description (Table 04022) 00h BYTE maximum number of characters buffer can hold 01h BYTE actual number of buffers read 02h N BYTEs input line --------O-E0----CL0B------------------------- INT E0 - REAL/32 - "C_STAT" - RETURN DEFAULT CONSOLE INPUT STATUS CL = 0Bh Return: AX = status 0000h no characters ready 0001h character available may destroy SI,DI??? Note: after setting bit 0 of the console mode word with C_MODE, this function will only return AX=0001h when the user presses Ctrl-C. --------O-E0----CL0C------------------------- INT E0 - REAL/32 - "S_BDOSVER" - GET BDOS VERSION CL = 0Ch Return: AX = version (see #04023) may destroy SI,DI??? SeeAlso: INT E0/CL=A3h,INT 21/AX=4451h (Table 04023) Values for REAL/32 BDOS version: 1432h - DR Concurrent PC DOS Version 3.2 1441h - DR Concurrent DOS Version 4.1 1450h - DR Concurrent DOS/XM Version 5.0 1463h - DR Multiuser DOS Release 5.0 1465h - DR Multiuser DOS Release 5.01 1466h - DR Multiuser DOS Release 5.1, IMS Multiuser DOS Enhanced Release 5.1 1467h - IMS Multiuser DOS Version 7.0, 7.1 1468h - IMS REAL/32 Version 7.50, 7.51 1469h - IMS REAL/32 Version 7.52, 7.53 14??h - IMS REAL/32 Version 7.6 SeeAlso: #01579,#01580,#01581 --------O-E0----CL2F------------------------- INT E0 - REAL/32 - "P_CHAIN" - CHAIN PROCESS CL = 2Fh [DTA] = ASCIZ command line for process to start Return: AX = return code 0000h successful FFFFh failed may destroy SI,DI??? --------O-E0----CL35------------------------- INT E0 R - REAL/32 - "MC_MAX" - CP-M/86 ALLOCATE MAXIMUM MEMORY CL = 35h DS:DX -> MCB (see #04024) Return: AX = status may destroy SI,DI,DS??? SeeAlso: INT E0/CL=39h Format of REAL/32 MCB (Memory Control Block): Offset Size Description (Table 04024) 00h WORD segment address of memory block 02h WORD length of block in paragraphs 04h BYTE reserved (0) --------O-E0----CL36------------------------- INT E0 R - REAL/32 - "MC_ABSMAX" - ALLOCATE MAXIMUM MEMORY SEGMENT ABSOLUTE CL = 36h DS:DX -> MCB (see #04024) Return: AX = status may destroy SI,DI,DS??? SeeAlso: INT E0/CL=39h --------O-E0----CL37------------------------- INT E0 R - REAL/32 - "MC_ALLOC" - CP-M/86 ALLOCATE MEMORY SEGMENT CL = 37h DS:DX -> MCB (see #04024) Return: AX = status may destroy SI,DI,DS??? SeeAlso: INT E0/CL=39h --------O-E0----CL38------------------------- INT E0 R - REAL/32 - "MC_ABSALLOC" - ALLOCATE MEMORY SEGMENT ABSOLUTE CL = 38h DS:DX -> MCB (see #04024) Return: AX = status may destroy SI,DI,DS??? SeeAlso: INT E0/CL=39h --------O-E0----CL39------------------------- INT E0 R - REAL/32 - "MC_FREE" - CP-M/86 FREE SPECIFIED MEMORY SEGMENT CL = 39h DS:DX -> MCB (see #04024) Return: AX = status may destroy SI,DI,DS??? SeeAlso: INT E0/CL=3Ah --------O-E0----CL3A------------------------- INT E0 R - REAL/32 - "MC_ALLFREE" - CP-M/86 FREE ALL MEMORY CL = 3Ah Return: nothing??? Desc: release all of the calling process's memory except the User Data Area SeeAlso: INT E0/CL=39h --------O-E0----CL3B------------------------- INT E0 u - REAL/32 - "P_LOAD" - LOAD .CMD FILE INTO MEMORY CL = 3Bh ??? Return: ??? Note: IMS does not document the details of this call because .CMD files are supported for backward compatibility only --------O-E0----CL40------------------------- INT E0 - REAL/32 - "N_LOGON" - LOG ONTO A SERVER CL = 40h DS:DX -> LPB (see #04025) Return: AX = status (0000h,00FFh,07FFh,0DFFh,0EFFh,FFFFh) (see #04030) may destroy SI,DI,DS??? SeeAlso: INT E0/CL=41h Format of REAL/32 Logon/Logoff Parameter Block: Offset Size Description (Table 04025) 00h BYTE node ID 01h 8 BYTEs password for server access 09h DWORD -> process descriptor of process to be logged on (see #04026) Format of REAL/32 Process Descriptor: Offset Size Description (Table 04026) 00h WORD offset of next entry in current descriptor list 02h WORD offset of thread list 04h BYTE current processor status (see #04027) 05h BYTE priority 06h WORD runtime flags (see #04028) 08h 8 BYTEs process name 10h WORD segment of User Data Area (UDA) (256 or 352 bytes) 12h BYTE current default disk drive 13h BYTE drive from which process was loaded 14h WORD reserved (0) 16h WORD offset of memory descriptor list for memory owned by process 18h 6 BYTEs reserved 1Eh WORD offset of process descriptor for parent process 0000h if parent has already terminated 20h BYTE number of default console 21h BYTE number of default AUX device 22h 2 BYTEs reserved 24h BYTE number of default list device 25h BYTE reserved 26h WORD flags (see #04029) 28h 12 BYTEs reserved 34h WORD offset of memory page allocation root 36h 22 BYTEs reserved Note: At least offset 10h (UDA) is also supported by MDOS 5.00, 5.01, 5.10, as the DR DOS MEM utility retrieves this UDA segment through INT E0/CL=9Ah when INT 21/AX=4451h returns 1463h, 1465h, or 1466h. SeeAlso: #04025 (Table 04027) Values for REAL/32 processor status: 00h process is ready to run 01h process is polling a device 02h delaying for a number of ticks 03h in swap list 04h terminating 05h asleep 06h waiting to read a message from a queue 07h waiting to write a message 08h waiting on system flag or semaphore 09h waiting to attach to an I/O device 0Ah waiting on sync block 0Bh waiting for system flag or semaphore with timeout 0Ch forced dispatch SeeAlso: #04026 Bitfields for REAL/32 process flags: Bit(s) Description (Table 04028) 0 system process 1 do not terminate 2 special rsp process 3 from process descriptor table 14-4 unused??? 15 uses math coprocessor SeeAlso: #04026,#04029 Bitfields for REAL/32 secondary flags: Bit(s) Description (Table 04029) 0 suspend when in background 1 ??? 2 in foreground 3 enable APPEND processing on file opens 4 Ctrl-C was typed 5 Ctrl-C will reset disk system 6 OK to read locked record 7 ??? 8 do not perform banking SeeAlso: #04026,#04028 (Table 04030) Values for REAL/32 "N_LOGON" status: 0000h successful 00FFh server could not create shadow process 07FFh incorrect password 0CFFh not logged into specified server 0DFFh process already logged onto 16 servers, LPB process not attached to network 0EFFh physical transmission prevented message or response from getting thru network error during logoff FFFFh calling process not attached to network --------O-E0----CL41------------------------- INT E0 - REAL/32 - "N_LOGON" - LOG OFF A SERVER CL = 41h DS:DX -> LPB (see #04025) Return: AX = status (0000h,0CFFh,0DFFh,0EFFh,FFFFh) (see #04030) may destroy SI,DI,DS??? SeeAlso: INT E0/CL=40h --------O-E0----CL44------------------------- INT E0 - REAL/32 - "N_STAT" - GET NETWORK STATUS CL = 44h Return: AX = network status or 0FFFh on error bit 8: calling process is attached to network may destroy SI,DI??? --------O-E0----CL45------------------------- INT E0 - REAL/32 - "N_RCT" - GET REQUESTOR CONFIGURATION TABLE CL = 45h DS:DX -> RCT Control Block (see #04031,#04032) Return: AX = status or error code (see #04033,#04030) may destroy SI,DI,DS??? SeeAlso: INT E0/CL=47h Format of REAL/32 RCT Control Block for Drives: Offset Size Description (Table 04031) 00h BYTE command byte 00h map disk drive 02h map list device 01h BYTE local resource ID 02h BYTE remote resource ID 03h BYTE server node ID number Note: the RCT Control Block is a union of two possible structures; this variant is used when mapping disk drives and list devices SeeAlso: #04032 Format of REAL/32 RCT Control Block for Queues: Offset Size Description (Table 04032) 00h BYTE command byte 03h map local queue to server 04h unmap queue 01h 8 BYTEs local queue name (case-sensitive) 09h 8 BYTEs remote queue name (case-sensitive) 11h BYTE server node ID number Note: the RCT Control Block is a union of two possible structures; this variant is used when mapping queues SeeAlso: #04031 (Table 04033) Values for REAL/32 "N_RCT" status: 0000h successful 0001h invalid local device 0002h invalid remote device 0003h no queue entry space --------O-E0----CL47------------------------- INT E0 - REAL/32 - "N_SCT" - GET SERVER CONFIGURATION TABLE CL = 47h DS:DX -> 112-byte buffer for Server Configuration Table (see #04034) Return: AX = status (0000h successful, else error code) may destroy SI,DI,DS??? Note: the first byte of the SCT buffer is set to the desired server number prior to calling this function SeeAlso: INT E0/CL=45h Format of REAL/32 Server Configuration Table: Offset Size Description (Table 04034) 00h BYTE server's default physical drive ID 01h BYTE network status 02h BYTE server node ID number 03h BYTE maximum number of requesters supported by server 04h BYTE current number of shadow processes 05h 108 BYTEs six logon structures, each: Offset Size Description 00h WORD bit vector of logged-in nodes 02h 16 BYTEs list of requester node IDs --------O-E0----CL48------------------------- INT E0 - REAL/32 - "N_ERRMODE" - SET NETWORK ERROR MODE CL = 48h DL = new error mode FFh return error in registers AX,BX,CX FEh display message and return error FDh display message and abort (default) Return: CX = error code (0000h successful, FFFFh failed) may destroy SI,DI??? Desc: specify how the REAL/32 Net Server responds to error numbers 0CFFh, 0DFFh, and 0EFFh (see #04030) --------O-E0----CL59------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA CL = 59h DX = size in bytes Return: AX = status FFFFh failed other successful ES:BX -> reserved memory --------O-E0----CL5C------------------------- INT E0 - REAL/32 - "P_PATH" - SCAN PATH FOR EXECUTABLE FILE CL = 5Ch DS:DX -> Exec Parameter Block (EPB) (see #04035) Return: AX = status FFFEh file not found FFFDh path not found FFFCh too many handles open FFFBh access denied FFF6h invalid environment FFDCh sharing conflict FFAAh invalid password EPB updated (if successful) may destroy SI,DI,DS SeeAlso: INT E0/CL=5Dh,INT E0/CL=5Eh,INT 21/AH=4Bh Format of REAL/32 Exec Parameter Block (EPB): Offset Size Description (Table 04035) 00h DWORD -> ASCIZ command to be executed 04h BYTE type of exec 00h .CMD 01h .COM 02h .EXE 03h .BAT 04h RSP-type queue 05h BYTE flags bit 0: overlay existing program bit 1: don't assign console to child bit 2: allocate memory for .CMD within parent's memory space bit 3: make full banked window available while loading child 06h DWORD 32-bit offset to ASCIZ command line 0Ah WORD selector for ASCIZ command line --------O-E0----CL5D------------------------- INT E0 - REAL/32 - "P_EXEC" - EXECUTE CHILD PROCESS CL = 5Dh DS:DX -> Exec Parameter Block (EPB) (see #04035) Return: AX = status FFFEh file not found FFFDh path not found FFFCh too many handles open FFFBh access denied FFF6h invalid environment FFDCh sharing conflict FFAAh invalid password EPB updated (if successful) may destroy SI,DI,DS SeeAlso: INT E0/CL=5Ch,INT E0/CL=5Eh,INT 21/AH=4Bh --------O-E0----CL5E------------------------- INT E0 - REAL/32 - "P_EXITCODE" - GET/SET PROCESS EXIT CODE CL = 5Eh DX = exit code or FFFFh to get DH ignored when setting code DL = process exit code Return: AX = status (FFFFh on error) if getting: AH = termination reason 00h normal 01h external termination via Ctrl-C or P_ABORT 02h hardware (critical) error abort 03h child did not terminate FFh illegal request (no child, or exit code already retrieved) AL = process exit code SeeAlso: INT E0/CL=5Dh,INT 21/AH=4Ch --------O-E0----CL6B------------------------- INT E0 - REAL/32 - "S_SERIAL" - GET OS SERIAL NUMBER CL = 6Bh DS:DX -> 6-byte buffer for ASCII serial number Return: nothing??? --------O-E0----CL6D------------------------- INT E0 - REAL/32 - "C_MODE" - GET/SET CONSOLE MODE CL = 6Dh DX = new console mode (see #04036), or FFFFh to get current mode Return: AX = status if setting (0000h = success) AX = current console mode if DX=FFFFh on entry Bitfields for REAL/32 console mode: Bit(s) Description (Table 04036) 0 C_STAT function will return 01h only when Ctrl-C is pressed 1 disable support for stop/start scroll (Ctrl-S/Ctrl-Q) 2 raw console output (no tab expansion, no printer echo) 3 disable program termination on Ctrl-C 7 disable Ctrl-O console bit-bucket 10 enable Esc as end-of-line character --------O-E0----CL6E------------------------- INT E0 - REAL/32 - "C_DELIMIT" - GET/SET STRING DELIMITER CL = 6Eh DX = new delimiter, or FFFFh to get current string delimiter Return: AX = status (0000h success) if setting AX = current string delimiter (default is 24h '$' at process start) SeeAlso: INT E0/CL=09h --------O-E0----CL6F------------------------- INT E0 - REAL/32 - "C_WRITEBLK" - WRITE BLOCK TO DEFAULT CONSOLE CL = 6Fh DS:DX -> Character Control Block (see #04051,#04052) Return: nothing??? SeeAlso: INT E0/CL=70h --------O-E0----CL70------------------------- INT E0 - REAL/32 - "L_WRITEBLK" - WRITE BLOCK TO DEFAULT LIST (PRINTER) DEVICE CL = 70h DS:DX -> Character Control Block (see #04051,#04052) Return: nothing??? SeeAlso: INT E0/CL=6Fh --------O-E0----CL71------------------------- INT E0 R - ConcCP/M,DR Multiuser DOS - EXECUTE DOS-COMPATIBLE FUNCTIONS CL = 71h DS:DX -> parameter block (see #04038) Return: AX = status (0000h successful, else error code) may destroy SI,DI,DS (Table 04037) Values for DR "execute DOS-compatible function" function number: 00h "fd_getdpb" get disk information (see also INT 21/AH=32h) 01h "fd_mkdir" create directory (see also INT 21/AH=39h) 02h "fd_rmdir" remove directory (see also INT 21/AH=3Ah) 03h "fd_chdir" change directory (see also INT 21/AH=3Bh) 04h "fd_creat" create file (see also INT 21/AH=3Ch) 05h "fd_open" open existing file (see also INT 21/AH=3Dh) 06h "fd_close" close file (see also INT 21/AH=3Eh) 07h "fd_read" read from file (see also INT 21/AH=3Fh) 08h "fd_write" write to file (see also INT 21/AH=40h) 09h "fd_delete" delete file (see also INT 21/AH=41h) 0Ah "fd_lseek" get/set file position (see also INT 21/AH=42h) 0Bh "fd_chmod" get/set file attributes (see also INT 21/AH=43h) 0Ch "fd_curdir" get current directory (see also INT 21/AH=47h) 0Dh "fd_sfirst" find first matching file (see also INT 21/AH=4Eh) 0Eh "fd_snext" find next matching file (see also INT 21/AH=4Fh) 0Fh "fd_rename" rename file (see also INT 21/AH=56h) 10h "fd_gsfdate" get/set file date (see also INT 21/AX=5700h) 11h "fd_mktemp" make temporary file (see also INT 21/AH=5Ah) 12h "fd_mknew" create new file (see also INT 21/AH=5Bh) 13h "fd_lock" lock/unlock file data (see also INT 21/AH=5Ch) 14h "fd_dup" duplicate file handle (see also INT 21/AH=45h) 15h "fd_dup2" force duplicate file handle (see also INT 21/AH=46h) 16h-19h ??? 1Ah "fd_ioctl" I/O control emulation 1Bh "fd_commit" commit file to disk (see also INT 21/AH=68h) 1Ch "fd_expand" expand file name (see also INT 21/AH=60h) 1Dh ??? 1Eh ??? 1Fh "fd_sethandles" set number of handles for calling process SeeAlso: #04038 Format of DR "execute DOS-compatible function" parameter block: Offset Size Description (Table 04038) 00h WORD function number (see #04037) ---function 00h--- 02h WORD drive 04h DWORD -> DPB (see #04039) ---function 01h,02h,03h--- 02h DWORD -> ASCIZ directory name ---function 04h--- 02h DWORD -> ASCIZ filename 06h WORD file attributes ---function 05h--- 02h DWORD -> ASCIZ filename 06h WORD open mode (see INT 21/AH=3Dh) ---function 06h--- 02h WORD file handle ---function 07h,08h--- 02h WORD file handle 04h DWORD -> buffer 08h WORD number of bytes to read or write ---function 09h--- 02h DWORD -> ASCIZ filename ---function 0Ah--- 02h WORD file handle 04h DWORD (call) desired offset (ret) new file position if function is successful 08h WORD seek origin (offset is calculated from specified position) 00h start of file 01h current position 02h end of file ---function 0Bh--- 02h DWORD -> ASCIZ filename 06h WORD (call) new file attributes or new file owner (ret) current/new file attributes, depending on function 08h WORD subfunction 00h get attribute 01h set attribute 02h get extended attributes 03h set extended attributes (and password) 04h get encrypted password 05h set extended attributes (and encrypted password) 06h get file owner 07h set file owner Note: the password is taken from the first 8 bytes of the DTA ---function 0Ch--- 02h WORD drive 04h DWORD -> 64-byte buffer for ASCIZ current directory path ---function 0Dh--- 02h DWORD -> ASCIZ filespec 06h WORD file attributes 08h WORD (call) size of buffer pointed at by current DTA (ret) number of matching files returned??? Note: if the volume label attribute is specified, the root directory will be searched if the buffer is at least 47 bytes, multiple matching entries will be stored in the DTA (at 21 bytes per entry) ---function 0Eh--- 02h WORD number of additional matches to store in DTA (normally set to 0, but if DTA is at least 47 bytes, can be set to (DTAsize-21)/26 to return multiple matches) ---function 0Fh--- 02h DWORD -> ASCIZ filename 06h DWORD -> ASCIZ new name ---function 10h--- 02h WORD file handle 04h WORD subfunction 00h get date and time 01h set date and time 06h WORD file date 08h WORD file time ---function 11h--- 02h DWORD -> ASCIZ pathname + 13 extra bytes for generated filename (if pathname does not end in backslash, one will be appended) 06h WORD file attributes ---function 12h--- 02h DWORD -> ASCIZ filename 06h WORD file attributes ---function 13h--- 02h WORD file handle 04h DWORD offset of start of region 08h DWORD length of region to lock/unlock 0Ch WORD subfunction (00h = lock, 01h = unlock) ---function 14h--- 02h WORD file handle to be duplicated (new file handle is returned as function return value) ---function 15h--- 02h WORD file handle to be duplicated 04h WORD file handle which is to become the duplicate ---function 1Ah, form 1--- 02h WORD file handle 04h WORD IOCTL function number (00h,01h,06h,07h,0Ah) 06h WORD (ret) status ---function 1Ah, form 2--- 02h WORD drive number 04h WORD IOCTL function number (08h,09h,0Eh,0Fh) 06h WORD (ret) status ---function 1Ah, form 3--- 02h WORD file handle 04h WORD IOCTL function number (02h,03h,54h) 06h DWORD -> buffer 0Ah WORD (call) size of buffer in bytes (ret) size of returned data ---function 1Ah, form 4--- 02h WORD drive number 04h WORD IOCTL function number (04h,05h) 06h DWORD -> buffer 0Ah WORD (call) size of buffer in bytes (ret) size of returned data ---function 1Bh--- 02h WORD file handle of file to be committed to disk ---function 1Ch--- 02h DWORD -> ASCIZ relative filename 06h DWORD -> buffer for absolute filename ---function 1Fh--- 02h WORD desired number of file handles for process Format of DR Multiuser DOS Disk Parameter Block (DPB): Offset Size Description (Table 04039) 00h BYTE drive number (00h = A:) 01h BYTE relative unit number 02h WORD sector size in bytes 04h BYTE sectors per cluster - 1 05h BYTE shift count to convert clusters into sectors 06h WORD number of reserved sectors at beginning of drive 08h BYTE number of FATs 09h WORD number of root directory entries 0Bh WORD number of first sector containing user data 0Dh WORD number of clusterse on disk 0Fh BYTE number of sectors per FAT 10h WORD sector number of first directory sector 12h 4 BYTEs reserved 16h BYTE media ID byte (see #01356) 17h BYTE 00h if disk accessed, FFh if not 18h 6 BYTEs reserved 1Eh WORD number of free clusters on drive Note: this structure is a subset of the MS-DOS 3.x Drive Parameter Block SeeAlso: #04038,#01357 at INT 21/AH=1Fh,#01395 at INT 21/AH=32h --------O-E0----CL73------------------------- INT E0 - GSX-86, GEM/1, GEM/2 - API CL = 73h CH = 04h DS:DX -> parameter block --------O-E0----CL80------------------------- INT E0 - REAL/32 - "M_ALLOC" - ALLOCATE MEMORY CL = 80h DS:DX -> Memory Parameter Block (MPB) (see #04040) Return: AX = status (0000h success, else error code) SeeAlso: INT E0/CL=81h Format of REAL/32 Memory Parameter Block (MPB): Offset Size Description (Table 04040) 00h WORD (call) desired starting paragraph of block, or 0000h for anywhere (ret) starting paragraph of allocated block 02h WORD (call) minimum number of paragraphs required (ret) actual number of paragraphs allocated 04h WORD (call) maximum number of paragraphs to allocate (ret) actual number of paragraphs allocated 06h WORD process descriptor (see #04026) of memory's owner or 0000h 08h WORD flags (normally set to 0000h on call) SeeAlso: #04041 --------O-E0----CL81------------------------- INT E0 - REAL/32 - "M_FREE" - DEALLOCATE MEMORY CL = 81h DS:DX -> Memory Free Parameter Block (MFPB) (see #04041) Return: AX = status (0000h success, else error code) SeeAlso: INT E0/CL=81h Format of REAL/32 Memory Free Parameter Block (MFPB) : Offset Size Description (Table 04041) 00h WORD starting segment of block to be freed 02h WORD reserved (0) SeeAlso: #04040 --------O-E0----CL84------------------------- INT E0 - REAL/32 - "DEV_WAITFLAG" - WAIT ON SYSTEM FLAG CL = 84h DX = system flag ID Return: AX = status (0000h success, else error code) if successful, this function does not return until the system flag has been set by an interrupt handler (see INT E0/CL=85h); if the flag was already set, this call returns immediately SeeAlso: INT E0/CL=85h,INT E0/CL=B7h --------O-E0----CL85------------------------- INT E0 - REAL/32 - "DEV_SETFLAG" - SET SYSTEM FLAG CL = 85h DX = system flag ID Return: AX = status (0000h success, else error code) Note: REAL/32 returns an error if the flag was already set, which indicates that a previous logical interrupt has not yet been serviced SeeAlso: INT E0/CL=84h --------O-E0----CL86------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE CL = 86h DS:DX -> queue descriptor (see #04042) Return: AX = status (0000h success, FFFFh failure) CX = error code (see #04021) Note: also supported by REAL/32 SeeAlso: INT E0/CL=87h Format of DR Multiuser DOS queue descriptor: Offset Size Description (Table 04042) 00h 2 WORDs internal use, initialize to zeros 04h WORD queue flags (see #04043) 06h 8 BYTEs queue name 0Eh WORD length of message 10h WORD number of messages 12h 4 WORDs internal use, initialize to zeros 1Ah WORD offset in system area of buffer for messages Bitfields for REAL/32 queue flags: Bit(s) Description (Table 04043) 0 mutual exclusion queue 1 can not be deleted 2 restricted to system processes 3 RSP message queue 4 reserved for internal use 5 RPL address queue 7-6 reserved for internal use 15-8 reserved for future use SeeAlso: #04042 --------O-E0----CL87------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE CL = 87h DS:DX -> queue parameter block (QPB) (see #04044,#04045) Return: AX = status (0000h success, FFFFh failure) CX = error code (see #04021) Note: also supported by REAL/32 SeeAlso: INT E0/CL=86h,INT E0/CL=88h,INT E0/CL=89h Format of DR Multiuser DOS queue parameter block: Offset Size Description (Table 04044) 00h WORD internal use, initialize to zero 02h WORD queue ID (set by INT E0/CL=87h) 04h WORD internal use, initialize to zero 06h WORD offset of queue message buffer (REAL/32) if FFFFh, then full address of buffer is stored at offest 10h 08h 8 BYTEs queue name ---REAL/32 only---- 10h DWORD segment:offset of queue message buffer SeeAlso: #04045 Format of protected-mode REAL/32 Queue Parameter Block (QPB): Offset Size Description (Table 04045) 00h WORD internal use 02h WORD queue ID 04h WORD internal use 06h DWORD 32-bit offset to buffer 0Ah WORD selector for buffer 0Ch 8 BYTEs queue name SeeAlso: #04044 --------O-E0----CL88------------------------- INT E0 - REAL/32 - "Q_DELETE" - DELETE SYSTEM QUEUE CL = 88h DS:DX -> queue parameter block (QPB) (see #04044,#04045) Return: AX = status (0000h success, FFFFh failure) SeeAlso: INT E0/CL=87h --------O-E0----CL89------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE CL = 89h DS:DX -> queue parameter block (QPB) (see #04044,#04045) Return: AX = status (0000h success, FFFFh failure) CX = error code (see #04021) Note: also supported by REAL/32 SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh,INT E0/CL=B6h --------O-E0----CL8A------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE CL = 8Ah DS:DX -> queue parameter block (QPB) (see #04044,#04045) Return: AX = status (0000h success, FFFFh failure) CX = error code (see #04021) Note: also supported by REAL/32 SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch,INT E0/CL=B6h --------O-E0----CL8B------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE CL = 8Bh DS:DX -> queue parameter block (QPB) (see #04044,#04045) Return: AX = status (0000h success, FFFFh failure) CX = error code (see #04021) Note: also supported by REAL/32 SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch --------O-E0----CL8C------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE CL = 8Ch DS:DX -> queue parameter block (QPB) (see #04044,#04045) Return: AX = status (0000h success, FFFFh failure) CX = error code (see #04021) Note: also supported by REAL/32 SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh --------O-E0----CL8E------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER CL = 8Eh DX = FFFFh (optional) to force dispatch Return: nothing Desc: allow other processes of the same or higher priority to run if they are ready Notes: if DX=FFFFh, a dispatch is forced even if no other process is ready also supported by REAL/32 SeeAlso: INT E0/CL=91h,INT 15/AX=1000h,INT 2F/AX=1680h --------O-E0----CL8F------------------------- INT E0 - REAL/32 - "P_TERM" - TERMINATE CALLING PROCESS CL = 8Fh DX = termination code Return: never if successful AX = FFFFh on failure Note: this function can not terminate processes whose KEEP flag is set if the termination code is FFh, this function can terminate the process even if its SYSTEM flag is on; otherwise, only user processes can terminate themselves SeeAlso: INT E0/CL=90h,INT 21/AH=4Ch --------O-E0----CL90------------------------- INT E0 - REAL/32 - "P_CREATE" - CREATE A PROCESS CL = 90h DS:DX -> process descriptor in calling process' system memory area (see #04026) Return: AX = status Notes: this call can create more than one process if the specied process descriptor's link (next-process) field is nonzero all reserved and unused fields in the process descriptor should be filled with zeros; passing an invalid descriptor or pointer may crash the system because the descriptor is not checked by the OS the newly-created process(es) is always a native process, which can not make DOS calls SeeAlso: INT E0/CL=8Fh --------O-E0----CL91------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY CL = 91h DL = new priority (00h highest to FFh lowest) Return: nothing Notes: sets priority of calling process; transient processes are initialized to priority C8h also supported by REAL/32 SeeAlso: INT E0/CL=8Eh --------O-E0----CL92------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "C_ATTACH" - ATTACH TO DEFAULT CONSOLE CL = 92h Return: AX = status Notes: also supported by REAL/32 if the console is currently owned by another process, this function waits until the console is available SeeAlso: INT E0/CL=93h,INT E0/CL=94h,INT E0/CL=99h,INT E0/CL=9Eh,INT E0/CL=A2h --------O-E0----CL93------------------------- INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE CL = 93h Return: AX = status 0000h successfully detached FFFFh detach failed Note: also supported by REAL/32 SeeAlso: INT E0/CL=92h,INT E0/CL=A6h --------O-E0----CL94------------------------- INT E0 - REAL/32 - "C_SET" - SET PROCESS'S DEFAULT CONSOLE CL = 94h DX = console ID Return: AX = status (0000h success, else error code) SeeAlso: INT E0/CL=92h,INT E0/CL=95h,INT E0/CL=99h --------O-E0----CL95------------------------- INT E0 - REAL/32 - "C_ASSIGN" - ASSIGN DEFAULT CONSOLE TO ANOTHER PROCESS CL = 95h DS:DX -> Assign Control Parameter Block (ACPB) (see #04046) Return: AX = status SeeAlso: INT E0/CL=94h,INT E0/CL=99h Format of REAL/32 Assign Control Parameter Block (ACPB): Offset Size Description (Table 04046) 00h BYTE ID of console to assign 01h BYTE flag: if FFh, new process must have CNS as console for this call to succeed 02h DWORD -> process descriptor (see #04026) or 00000000h 06h 8 BYTEs name of process to search for if descriptor field above is zero --------O-E0----CL96------------------------- INT E0 - REAL/32 - "P_CLI" - RUN COMMAND LINE INTERFACE CL = 96h DS:DX -> Command Line Buffer (CLBUF) (see #04047) Return: AX = status Desc: execute the indicated command concurrently with the calling process; system queue commands, .BAT, .CMD, .COM, and .EXE files can be executed Note: the calling process will lose its virtual console and must reattach it before attempting any I/O SeeAlso: INT E0/CL=92h Format of REAL/32 Command Line Buffer (CLBUF): Offset Size Description (Table 04047) 00h BYTE reserved (0) 01h 128 BYTEs ASCIZ command line 81h BYTE (0) --------O-E0----CL99------------------------- INT E0 - REAL/32 - "C_GET" - GET DEFAULT CONSOLE CL = 99h Return: AX = default console ID SeeAlso: INT E0/CL=94h --------O-E0----CL9A------------------------- INT E0 - REAL/32 - "S_SYSDAT" - GET SYSTEM DATA AREA CL = 9Ah Return: ES:AX -> system data area (see #04048) may destroy S