Interrupt List Release 61 Last change 16jul00
Copyright (c) 1989-1999,2000 Ralf Brown
Index for category T - DOS-based task switchers/multitaskers

Table of Contents by Order
11FFFECXFFFE - INT 11 - BACK&FORTH (before v1.62) API
12FFFECXFFFE - INT 12 - Back&Forth v1.62+ - API
1500 - INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
1501 - INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
1502 - INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
1503 - INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
1504 - INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
1505 - INT 15 - MultiDOS Plus - CHECK MAILBOX
1506 - INT 15 - MultiDOS Plus - READ MAILBOX
1507 - INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
1508 - INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
1509 - INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
150A - INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
150B - INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
150C - INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
150D - INT 15 - MultiDOS Plus - DISABLE MULTITASKING
150E - INT 15 - MultiDOS Plus - ENABLE MULTITASKING
150F - INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
1510 - INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
1511 - INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
1511 - INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
1512 - INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
1512 - INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
1513 - INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
1513 - INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
1514 - INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
1514 - INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
1515 - INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
1515 - INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
1516 - INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
1516 - INT 15 - MultiDOS Plus - INITIALIZATION
1517 - INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
1517 - INT 15 - MultiDOS Plus - MAP IRQ
1518 - INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
1518 - INT 15 - MultiDOS Plus - UNMAP IRQ
1519 - INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
1519 - INT 15 - MultiDOS Plus - UNMAP ALL IRQs
151A - INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
151A - INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
151B - INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
151B - INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
151C - INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
151C - INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
151D - INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
151D - INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
151E - INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
151E00 - INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
151E01 - INT 15 - MultiDOS Plus - TRIGGER EVENT
151E02 - INT 15 - MultiDOS Plus - WAIT FOR EVENT
151E08 - INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
151F - INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
151F - INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
1520 - INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
153000 - INT 15 - Object Kernel for DOS - INSTALLATION CHECK
153001 - INT 15 - Object Kernel for DOS - GET STATUS BLOCK
153002 - INT 15 - Object Kernel for DOS - KILL PROCESS
153003 - INT 15 - Object Kernel for DOS - STOP PROCESS
153004 - INT 15 - Object Kernel for DOS - START PROCESS
153005 - INT 15 - Object Kernel for DOS - RESTART PROCESS
153006 - INT 15 - Object Kernel for DOS - EXECUTE PROCESS
153007 - INT 15 - Object Kernel for DOS - LIST PROCESSES
153008 - INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
153009 - INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
1550 - INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
1551 - INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
1552 - INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
155400 - INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
155401 - INT 15 C - Omniview Multitasker - PROCESS CREATION
155402 - INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
155403 - INT 15 C - Omniview Multitasker - SAVE
155404 - INT 15 C - Omniview Multitasker - RESTORE
155405 - INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
155406 - INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
155407 - INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
16FF80BX0000 - INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
16FF80BX0001 - INT 16 U - PC Tools v8+ CPTASK - GET ???
16FF80BX0002 - INT 16 U - PC Tools v8+ CPTASK - GET ???
16FF80BX0003 - INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
16FF80BX0004 - INT 16 U - PC Tools v8+ CPTASK - SET ???
16FF80BX0005 - INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
16FF80BX0006 - INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
16FF80BX0007 - INT 16 U - PC Tools v8+ CPTASK - ???
16FF80BX0008 - INT 16 U - PC Tools v8+ CPTASK - ???
16FF80BX0009 - INT 16 U - PC Tools v8+ CPTASK - GET ???
16FF80BX000A - INT 16 U - PC Tools v9+ CPTASK - SET ???
16FF80BX000B - INT 16 U - PC Tools v9+ CPTASK - SET ???
16FF80BX000C - INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
16FF80BX4350 - INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
16FF9C - INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
212B01CX5441 - INT 21 - TAME v2.10+ - INSTALLATION CHECK
212D01CX7820 - INT 21 - PC-Mix - INSTALLATION CHECK
213000BX1234 - INT 21 - CTask 2.0+ - INSTALLATION CHECK
21DF00DX534C - INT 21 U - Software Carousel - INSTALLATION CHECK
21DF01 - INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
21DF02 - INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
21DF03 - INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
21DF04 - INT 21 - Software Carousel - GET PARTITION NAME
21DF05 - INT 21 - Software Carousel - CHANGE PARTITION SIZE
21DF06 - INT 21 - Software Carousel - CHANGE PARTITION NAME
21DF07 - INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
21DF08 - INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
21DF09 - INT 21 - Software Carousel - BOOT THE SYSTEM
21DF0A - INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
21DF0B - INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
21DF0C - INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
21E0 - INT 21 - DoubleDOS - MENU CONTROL
21E1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
21E3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
21E400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
21E5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
21E8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
21E9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
21EA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
21EB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
21EC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
21EE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
21F0 - INT 21 - DoubleDOS - MENU CONTROL
21F1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
21F2 - INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
21F3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
21F400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
21F5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
21F8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
21F9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
21FA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
21FB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
21FC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
21FE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
2F2700 - INT 2F - DR DOS 6.0 TaskMAX - INSTALLATION CHECK
2F2701 - INT 2F - DR DOS 6.0 TaskMAX - GET STATUS
2F2702 - INT 2F - DR DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
2F2703 - INT 2F - DR DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
2F2704 - INT 2F - DR DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
2F2705 - INT 2F - DR DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
2F2706 - INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
2F2707 - INT 2F - DR DOS 6.0 TaskMAX - CREATE NEW TASK
2F2708 - INT 2F - DR DOS 6.0 TaskMAX - DELETE TASK
2F2709 - INT 2F - DR DOS 6.0 TaskMAX - NAME TASK
2F270A - INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
2F270B - INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
2F270C - INT 2F - DR DOS 6.0 TaskMAX - CHECK OPEN FILES
2F270D - INT 2F - DR DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
2F270E - INT 2F - DR DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
2F270F - INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
2F2710 - INT 2F - DR DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
2F2711 - INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
2F2712 - INT 2F - DR DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
2F2713 - INT 2F - DR DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
2F2714 - INT 2F - DR DOS 6.0 TaskMAX - GET SWAP SPACE INFO
2F2715 - INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
2F2716 - INT 2F - DR DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
2F2717 - INT 2F - DR DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
2F2718 - INT 2F - DR DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
2F2719 - INT 2F - Novell DOS 7 TaskMGR - NOP
2F271C - INT 2F U - Novell DOS 7 TaskMGR - ???
2F2781 - INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
2F2782 - INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
2F278F - INT 2F U - Novell DOS 7 TaskMGR - ??? API
2F4A05 - INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
2F4B01 - INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
2F4B02BX0000 - INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
2F4B03 - INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
2F4B04 - INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
2F4B05 - INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
2FD600 - INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
2FD601 - INT 2F U - VEDIT VSWAP - ???
2FD602 - INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
2FF1 - INT 2F U - RTKernel v4.0 - INSTALLATION CHECK
33FFE6 - INT 33 - Switch-It v3.23 - GET ??? PROGRAM
33FFE7 - INT 33 - Switch-It v3.23 - GET ???
33FFE8 - INT 33 - Switch-It v3.23 - ???
33FFE9 - INT 33 - Switch-It v3.23 - SET ???
33FFEA - INT 33 - Switch-It v3.23 - SET ???
33FFEB - INT 33 - Switch-It v3.23 - SET ??? FLAG
33FFEC - INT 33 - Switch-It v3.23 - SET ???
33FFED - INT 33 - Switch-It v3.23 - GET ???
33FFEE - INT 33 - Switch-It v3.23 - GET ???
33FFEF - INT 33 - Switch-It v3.23 - GET ???
33FFF0 - INT 33 - Switch-It v3.23 - SET ???
33FFF1 - INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
33FFF2 - INT 33 - Switch-It v3.23 - SET ??? FLAG
33FFF3 - INT 33 - Switch-It v3.23 - GET ???
33FFF4 - INT 33 - Switch-It v3.23 - SET ???
33FFF5 - INT 33 - Switch-It v3.23 - GET ???
33FFF6 - INT 33 - Switch-It v3.23 - GET ???
33FFF7 - INT 33 - Switch-It v3.23 - GET ???
33FFF8 - INT 33 - Switch-It v3.23 - ???
33FFF9 - INT 33 - Switch-It v3.23 - NOP
33FFFA - INT 33 - Switch-It v3.23 - SET ???
33FFFB - INT 33 - Switch-It v3.23 - GET ???
33FFFC - INT 33 - Switch-It v3.23 - CLEAR ???
33FFFD - INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
33FFFE - INT 33 - Switch-It v3.23 - INSTALLATION CHECK
33FFFF - INT 33 - Switch-It v3.23 - ???
6201 - INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
6202 - INT 62 - Cswitch - WAIT FOR SEMAPHORE
6203 - INT 62 - Cswitch - CHECK SEMAPHORE
6204 - INT 62 - Cswitch - TRIGGER SEMAPHORE
6205 - INT 62 - Cswitch - SLEEP
6206 - INT 62 - Cswitch - SUSPEND
6207 - INT 62 - Cswitch - SPAWN
6208 - INT 62 - Cswitch - WAKE UP TASK
6209 - INT 62 - Cswitch - SET PRIORITY
620A - INT 62 - Cswitch - TEST MESSAGE QUEUE
620B - INT 62 - Cswitch - SEND MESSAGE
620C - INT 62 - Cswitch - READ MESSAGE
620D - INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
620E - INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
620F - INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
6210 - INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
6211 - INT 62 - Cswitch - GET TCB INFORMATION
6212 - INT 62 - Cswitch - GET TCB ADDRESS
6213 - INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
7F00 - INT 7F - MultiLink Advanced v1.0+ - ENQUEUE SYSTEM RESOURCE
7F01 - INT 7F - MultiLink Advanced v1.0+ - DEQUEUE SYSTEM RESOURCE
7F02 - INT 7F - MultiLink Advanced v1.0+ - RELEASE CPU
7F09 - INT 7F - MultiLink Advanced v1.0+ - SET TASK PRIORITY
7F0A - INT 7F - MultiLink Advanced v1.0+ - SET KEYBOARD TEST STATUS
F4 - INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
F5 - INT F5 - DoubleDOS - ???
F6 - INT F6 - DoubleDOS - ???
F7 - INT F7 - DoubleDOS - ???
F8 - INT F8 - DoubleDOS - ???
F9 - INT F9 - DoubleDOS - ???
FA - INT FA - DoubleDOS - TURN OFF TIMESHARING
FB - INT FB - DoubleDOS - TURN ON TIMESHARING
FC - INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
FD - INT FD - DoubleDOS - ???
FE - INT FE - DoubleDOS - GIVE UP TIME


11FFFECXFFFE - INT 11 - BACK&FORTH (before v1.62) API
INT 11 - BACK&FORTH (before v1.62) API
	AX = FFFEh
	CX = FFFEh
	BX = function
	    00h installation check
		Return: AX = installation state
			    0001h BNFHIGH and BNFLOW both loaded
			    0003h only BNFHIGH loaded
			    else neither loaded
	    01h ???
		Return: DX:AX -> ???
	    02h ???
	    03h ???
	    04h ???
	    05h ??? switches current PSP segment and stack if BNFLOW has not
		    yet announced itself installed
	    06h ???
		Return: AX = ???
SeeAlso: INT 12/AX=FFFEh
Index:	installation check;BACK&FORTH

Top
12FFFECXFFFE - INT 12 - Back&Forth v1.62+ - API
INT 12 - Back&Forth v1.62+ - API
	AX = FFFEh
	CX = FFFEh
	BX = function
	    00h installation check
		Return: AX = 0001h installed
			     else  not loaded
	    01h (reserved)
	    02h build program ID list (shareware Back&Forth)
		ES:DI -> buffer of at least 100 bytes, to be filled with words
		Return: AX = number of programs defined
			ES:DI buffer filled with AX words
	    02h get memory statistics (Back&Forth Professional)
		Return: AX = available swap memory, KBytes
			BX = maximum task size, KBytes
			DX = fixed overhead per task, excluding video/macro
			      storage
	    03h switch to specified task (task need not be open yet)
		DX = two-letter program ID
		Return: AX = status
			    0000h if task undefined
			    0001h task switch will occur when safe
	    04h (reserved)
	    05h (reserved)
	    06h get version (documented only for Back&Forth Professional)
		Return: AX = version * 100 (v1.71 = 00ABh)
	    07h spawn program (Back&Forth Professional only???)
		ES:DI -> BF_SPAWN record (see #00232)
		Return: AX = status
			    0000h if no task handles free
			    0001h spawn will occur when safe
	    08h get open tasks (documented only for Back&Forth Professional)
		ES:DI -> task info buffer (see #00231,#00233)
		Return: AX = number of open tasks (max 20)
		Note:	the supplied buffer must be large enough to hold 21
			  task entries
	    09h (reserved)
	    ---Back&Forth Professional---
	    0Ah get active clipboard filename
		Return: DX:AX -> ASCIZ clipboard filename
	    0Bh get active task number
		AX = active task number (00h-13h)
		BX = number of tasks allocated
		DX = maximum number of tasks
	    0Ch (reserved)
	    0Dh (reserved)
	    0Eh (reserved)
	    0Fh stuff string into keyboard buffer
		ES:DI -> ASCIZ string to be stuffed
		Return: nothing
	    10h check if in graphics mode
		Return: AX = state
			    0000h color text mode
			    0004h mono text mode
			    FFFFh graphics mode
	    11h get Back&Forth Professional user number
		Return: AX = user number (0000h-00FFh)
	    12h switch task by task number
		DX = task number
		Return: AX = status
			    0000h attempted to switch to active task
			    0001h task switch will occur when safe
			    FFFFh invalid task number
	    13h delete (kill) task
		DX = task number
		Return: AX = status
			    0000h attempted to delete the active task
			    0001h successfully deleted
			    FFFFh invalid task number
		Note:	the active task number will change if the deleted task
			  was lower in the task list than the active task
	    14h get next available task handle
		Return:	AX = next available task handle
			    FFFFh if task table is full
Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
SeeAlso: INT 11/AX=FFFEh
Index:	installation check;BACK&FORTH

Format of Back&Forth task info buffer:
Offset	Size	Description	(Table 00231)
 00h 21 BYTEs	ASCIZ task name
 15h	BYTE	hotkey shift state (as for INT 16/AH=02h)
 16h	WORD	hotkey scan code (see also #00006)
 18h	WORD	program ID
Index:	hotkeys;Back&Forth
SeeAlso: #00232,#00233

Format of Back&Forth Professional BF_SPAWN record:
Offset	Size	Description	(Table 00232)
 00h 21 BYTEs	task description
 15h	BYTE	flag: disable hotkeys
 16h	WORD	environment size in bytes
 18h	BYTE	hotkey shift flags
 19h	WORD	hotkey scancode
 1Bh	WORD	maximum number of EMS pages
 1Dh	WORD	required memory in KBytes
 1Fh  3 BYTEs	DESQview-style two-letter program ID
 22h 13 BYTEs	base name of program to be run (no path or extension)
 2Fh 66 BYTEs	directory from which to start program
 71h 66 BYTEs	initial current directory for program
SeeAlso: #00231,#00233

Format of Back&Forth Professional BF_TASK record:
Offset	Size	Description	(Table 00233)
 00h	DWORD	Unix-style task start time (seconds since 1970/1/1)
 04h 21 BYTEs	task description
 19h	DWORD	elapsed time in task (seconds)
 1Dh	WORD	task ID
 1Fh	BYTE	task hotkey keyboard flags
 20h	WORD	task hotkey scan code (see also #00006)
 22h	DWORD	time task was suspended/exited
 26h	WORD	task handle
SeeAlso: #00231,#00232

Top
1500 - INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
	AH = 00h
Return: nothing
Note:	if issued by the highest-priority task while MultiDOS is using
	  priority-based rather than round-robin scheduling, control will be
	  returned to the caller immediately
SeeAlso: AH=03h"MultiDOS",AX=1000h

Top
1501 - INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
	AH = 01h
	AL = semaphore number (00h-3Fh)
Return: AH = status
	    00h successful
	    02h invalid semaphore number
Notes:	if the semaphore is not owned, ownership is assigned to the calling
	  task and the call returns immediately
	if the semaphore is already owned by another task, the calling task
	  is placed on a queue for the semaphore and suspended until it can
	  become owner of the semaphore
	semaphore 0 is used internally by MultiDOS to synchronize DOS access
SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"

Top
1502 - INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
	AH = 02h
	AL = semaphore number (00h-3Fh)
Return: AH = status
	    00h successful
	    01h not semaphore owner
	    02h invalid semaphore number
Notes:	if any tasks are waiting for the semaphore, the first task on the wait
	  queue will become the new owner and be reawakened
	do not use within an interrupt handler
SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"

Top
1503 - INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
	AH = 03h
	DX = number of time slices to remain suspended
Return: after specified interval has elapsed
Note:	when priority-based scheduling is in use, high-priority tasks should
	  use this function to yield the processor
SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"

Top
1504 - INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
	AH = 04h
	AL = mailbox number (00h-3Fh)
	CX = message length in bytes
	DS:SI -> message
Return: AH = status
	    00h successful
	    01h out of message memory
	    02h invalid mailbox number
Note:	the message is copied into a system buffer; the caller may immediately
	  reuse its buffer
SeeAlso: AH=05h"MultiDOS"

Top
1505 - INT 15 - MultiDOS Plus - CHECK MAILBOX
INT 15 - MultiDOS Plus - CHECK MAILBOX
	AH = 05h
	AL = mailbox number (00h-3Fh)
Return: AH = status
	    00h successful
		DX = length of first message in queue, 0000h if no message
	    02h invalid mailbox number
SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"

Top
1506 - INT 15 - MultiDOS Plus - READ MAILBOX
INT 15 - MultiDOS Plus - READ MAILBOX
	AH = 06h
	AL = mailbox number (00h-3Fh)
	CX = size of buffer in bytes
	ES:DI -> buffer for message
Return: AH = status
	    00h successful
		CX = number of bytes copied
		DX = actual length of message
	    02h invalid mailbox number
Note:	if the caller's buffer is not large enough, the message is truncated
	  and the remainder is lost
SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"

Top
1507 - INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
	AH = 07h
	BX:CX = entry point of new task
	DX = stack size in paragraphs
Return: AH = status
	    00h successful
	    01h no free task control blocks
	    02h no free memory for task's stack
Note:	execution returns immediately to calling task
SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"

Top
1508 - INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
	AH = 08h
Return: calling task terminated, so execution never returns to caller
Notes:	an internal task must be terminated with this function rather than a
	  DOS termination function
	task's stack space is returned to parent task's memory pool
SeeAlso: AH=07h"MultiDOS"

Top
1509 - INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
	AH = 09h
	AL = new priority
Return: nothing
Note:	the priority has different meanings depending on whether priority-
	  based or round-robin scheduling is used
SeeAlso: AH=07h"MultiDOS"

Top
150A - INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
	AH = 0Ah
	AL = new interval
	    00h = 55.0 ms (default)
	    80h = 27.5 ms
	    40h = 13.75 ms
	    20h = 6.88 ms
	    10h = 3.44 ms
	    08h = 1.72 ms
SeeAlso: AH=03h"MultiDOS"

Top
150B - INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
	AH = 0Bh
Return: nothing
Notes:	sets calling task's screen pointer to actual screen memory; the pointer
	  may be restored with AH=0Ch
	caller's video mode must be same as foreground task's video mode
	any text written while in the background will be saved to the
	  foreground task's virtual screen when it switches to the background
	useful if a background task wants to display a message on the
	  foreground screen
SeeAlso: AH=0Ch"MultiDOS"

Top
150C - INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
	AH = 0Ch
Return: nothing
Note:	restores task's screen pointer saved by AH=0Bh; must not be called
	  unless AH=0Bh has been called first
SeeAlso: AH=0Bh"MultiDOS"

Top
150D - INT 15 - MultiDOS Plus - DISABLE MULTITASKING
INT 15 - MultiDOS Plus - DISABLE MULTITASKING
	AH = 0Dh
Return: nothing
Note:	calling task receives all time slices until AH=0Eh is called; this
	  allows time-critical events or nonreentrant code to be processed
SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"

Top
150E - INT 15 - MultiDOS Plus - ENABLE MULTITASKING
INT 15 - MultiDOS Plus - ENABLE MULTITASKING
	AH = 0Eh
Return: nothing
SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"

Top
150F - INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
	AH = 0Fh
	DS:BX -> ASCIZ command
Return: after command has been processed
Notes:	specified string is executed as if it had been typed at the MultiDOS
	  command prompt
	the task is placed on a queue which MultiDOS examines periodically and
	  is suspended until MultiDOS has processed the command
	all lowercase characters up to the first blank are converted to upper
	  case within the given buffer

Top
1510 - INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
	AH = 10h
	AL = semaphore number (00h-3Fh)
Return: AH = status
	    00h semaphore not in use
	    01h semaphore owned by another task
	    02h invalid semaphore number
	    03h semaphore owned by caller
SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"

Top
1511 - INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
	AH = 11h
	STACK:	DWORD	pointer to ASCIZ string containing a VMiX shell
			request (max len = 127)
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=0Ch"VMiX"

Top
1511 - INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
	AH = 11h
Note:	disables the Alt-Z MultiDOS command/program-selection hotkey
SeeAlso: AH=12h"MultiDOS"
Index:	hotkeys;MultiDOS Plus

Top
1512 - INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
	AH = 12h
	STACK:	WORD	process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"

Top
1512 - INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
	AH = 12h
Note:	enables the Alt-Z MultiDOS command/program-selection hotkey
SeeAlso: AH=11h"MultiDOS"
Index:	hotkeys;MultiDOS Plus

Top
1513 - INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
	AH = 13h
	STACK:	WORD	process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=12h"VMiX"

Top
1513 - INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
	AH = 13h
Return: BX:AX -> task control block (see #00456)
SeeAlso: AH=15h"MultiDOS"

Format of MultiDOS Plus v4.0 task control block:
Offset	Size	Description	(Table 00456)
 00h	DWORD	pointer to next TCB
 04h  8 BYTEs	ASCIZ task name
 0Ch  2 BYTEs	???
 0Eh	WORD	task PSP segment
 10h	WORD	abort/suspend flags
 12h	WORD	current screen segment (see AH=0Bh,AH=0Ch)
 14h	WORD	priority level (0000h-FFFEh)
 16h	WORD	time slice counter
 18h  2 BYTEs	???
 1Ah	WORD	suspend timer value
 1Ch	WORD	stack segment
 1Eh	WORD	stack pointer
 20h	WORD	display type
 22h	WORD	display memory
 24h  2 BYTEs	???
 26h	WORD	termination count
 28h	WORD	equipment flag for BIO10 driver
 2Ah	BYTE	background CRT mode
 2Bh	WORD	screen width in columns
 2Dh	WORD	screen size in bytes
 2Fh	WORD	segment of physical screen memory
 31h 16 BYTEs	eight cursor positions
 41h	WORD	current cursor shape
 43h	BYTE	active display page
 44h	WORD	CRT controller I/O port base
 46h  2 BYTEs	???
 48h	WORD	foreground task flag
 4Ah  6 BYTEs	???
 50h	WORD	saved video segment (see AH=0Bh,AH=0Ch)
 52h	DWORD	old INT 22
 56h	DWORD	old INT 23
 5Ah	DWORD	old INT 24
 5Eh	WORD	top of memory for task
 60h  4 BYTEs	???
 64h	WORD	DTA segment (see INT 21/AH=1Ah)
 66h	WORD	DTA offset
 68h  4 BYTEs	???
 6Ch	BYTE	current ANSI.SYS attribute
 6Dh	BYTE	current ANSI.SYS column
 6Eh	BYTE	current ANSI.SYS row
 6Fh	BYTE	current ANSI.SYS display state
 70h	BYTE	maximum ANSI.SYS columns
 71h	BYTE	current ANSI.SYS page
 72h	WORD	saved ANSI.SYS cursor position
 74h	BYTE	ANSI.SYS parameter buffer index
 75h	BYTE	current ANSI.SYS screen mode
 76h	BYTE	ANSI.SYS wrap flag
 77h  6 BYTEs	ANSI.SYS parameter buffer
 7Dh	BYTE	ANSI.SYS keyboard DSR state
 7Eh  7 BYTEs	ANSI.SYS keyboard DSR buffer
 85h  3 BYTEs	???
 88h 16 BYTEs	request header for DOS driver calls
 98h 14 BYTEs	???
 A6h	WORD	segment of EMS map if EMS task
 A8h	WORD	flag: task makes EMS calls
 AAh	WORD	EMS handle for task
 ACh	WORD	keyboard shift state
 AEh 12 BYTEs	???
 BAh	WORD	TCB of parent if child task
 BCh	WORD	termination code
 BEh	WORD	COM port number
 C0h  4 BYTEs	???
 C4h	WORD	current IRQ number
 C6h  2 BYTEs	???
 C8h	WORD	miscellaneous flag word
 CAh  2 BYTEs	???
 CCh	DWORD	old INT 10
 D0h	WORD	EMS alternate map set number
 D2h 414 BYTEs	DOS current disk and directory context (optional)

Top
1514 - INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
	AH = 14h
	STACK:	WORD	top left corner of window (high byte = row, low = col)
		WORD	bottom right corner of window (high = row, low = col)
Return: AX = status (SYS_OK)
Note:	clears window to color set with "sys_setcolors" (AH=18h)
SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"

Top
1514 - INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
	AH = 14h
Return: AX = current state
	    0000h MultiDOS Plus command prompt is background task
	    0001h command prompt is foreground task
SeeAlso: AH=0Bh"MultiDOS"

Top
1515 - INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
	AH = 15h
	STACK:	DWORD	pointer to ASCIZ banner message for top of screen
Return: AX = status (SYS_OK)
SeeAlso: AH=14h"VMiX",AH=16h"VMiX"

Top
1515 - INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
	AH = 15h
Return: BX:AX -> system block (see #00457)
SeeAlso: AH=13h"MultiDOS"

Format of MultiDOS Plus 4.0 system block:
Offset	Size	Description	(Table 00457)
 00h	WORD	segment of system control block
 02h	WORD	redirection flag set by /NOREDIRECT
 04h	WORD	no-INT 10 flag set by /NO10
 06h	DWORD	old INT 10
 0Ah	DWORD	new INT 10
 0Eh	DWORD	pointer to WORD with current TCB offset (see #00456)
 12h	DWORD	pointer to WORD with idle task TCB offset
 16h	DWORD	pointer to WORD with foreground TCB offset (see #00456)
 1Ah	DWORD	pointer to WORD with MultiDOS TCB offset (see #00456)
 1Eh	WORD	Task Control Block size
 20h	WORD	number of TCBs
 22h	WORD	flag: EMS present
 24h	WORD	EMS page frame base segment
 26h	WORD	16K pages in EMS page frame
 28h	WORD	base segment for conventional memory tasks
 2Ah	WORD	conventional memory size in paragraphs
 2Ch	DWORD	pointer to list of queue pointers

Top
1516 - INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
	AH = 16h
	STACK:	DWORD	pointer to I/O Request Packet
		WORD	top left corner of window (high byte = row, low = col)
		WORD	bottom right corner of window (high = row, low = col)
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=14h"VMiX",AH=17h"VMiX"

Top
1516 - INT 15 - MultiDOS Plus - INITIALIZATION
INT 15 - MultiDOS Plus - INITIALIZATION
	AH = 16h
Note:	used internally during initialization; any other calls will cause
	  unpredictable results

Top
1517 - INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
	AH = 17h
Return: AH = foreground color
	AL = background color
SeeAlso: AH=16h"VMiX",AH=18h"VMiX"

Top
1517 - INT 15 - MultiDOS Plus - MAP IRQ
INT 15 - MultiDOS Plus - MAP IRQ
	AH = 17h
	AL = IRQ to map (01h-0Fh)
	BX = offset of task control block (see #00456) to associate with IRQ
Return: AX = status
	    0000h successful
	    other invalid IRQ
Note:	the EMS map of the specified TCB is associated with the given interrupt
SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"

Top
1518 - INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
	AH = 18h
	STACK:	WORD	new background/foreground colors
			bits 3-0: foreground
			bits 7-4: background
			bits 15-8: unused
Return: AX = color
SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"

Top
1518 - INT 15 - MultiDOS Plus - UNMAP IRQ
INT 15 - MultiDOS Plus - UNMAP IRQ
	AH = 18h
	AL = IRQ to unmap (01h-0Fh)
Return: AX = status
	    0000h successful
	    0001h invalid IRQ
Note:	results are unpredictable if the IRQ has not been mapped
SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"

Top
1519 - INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
	AH = 19h
	STACK:	WORD	new background/foreground colors
			bits 3-0: foreground
			bits 7-4: background
			bits 15-8: unused
Return: AX = color
SeeAlso: AH=18h"VMiX"

Top
1519 - INT 15 - MultiDOS Plus - UNMAP ALL IRQs
INT 15 - MultiDOS Plus - UNMAP ALL IRQs
	AH = 19h
Return: AX destroyed
Note:	for MultiDOS internal use only
SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"

Top
151A - INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
	AH = 1Ah
	STACK:	WORD	interrupt number
		DWORD	pointer to register structure
Return: AX = returned flags

Top
151A - INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
	AH = 1Ah
	DS:SI -> 8-byte name
Return: AL = status
	    00h successful
		AH = semaphore number (20h-3Fh)
	    04h out of string space
Notes:	all eight bytes of the name are significant
	if the name does not already exist, it is added to the name table and
	  associated with a free semaphore number
	names cannot be destroyed
SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"

Top
151B - INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
	AH = 1Bh
	STACK:	DWORD	source address
		DWORD	destination address
		WORD	number of words to move
Return: nothing

Top
151B - INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
	AH = 1Bh
	DS:SI -> 8-byte name
Return: AH = status
	    00h successful
	    02h invalid semaphore number
	    03h caller already owns semaphore
	    04h out of string space
Notes:	(see AH=01h"MultiDOS")
	equivalent to AH=1Ah followed by AH=01h
SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"

Top
151C - INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
	AH = 1Ch
	STACK:	WORD	AND/OR pixel with background (00h = OR, 01h = AND)
		DWORD	pointer to object bitmap
		WORD	object width in pixels
		WORD	object height in pixels
Return: nothing
SeeAlso: AH=1Dh"VMiX"

Top
151C - INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
	AH = 1Ch
	DS:SI -> 8-byte name
Return: AH = status
	    00h successful
	    01h not semaphore owner
	    02h invalid semaphore number
	    04h out of string space
Notes:	(see AH=02h"MultiDOS")
	equivalent to AH=1Ah followed by AH=02h
SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"

Top
151D - INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
	AH = 1Dh
Return: AX = current font number (00h-03h)
SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"

Top
151D - INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
	AH = 1Dh
	DS:SI -> 8-byte name
Return: AH = status
	    00h semaphore not in use
	    01h semaphore owned by another task
	    02h invalid semaphore number
	    03h caller owns semaphore
	    04h out of string space
Notes:	(see AH=10h"MultiDOS")
	equivalent to AH=1Ah followed by AH=10h
SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"

Top
151E - INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
	AH = 1Eh
	STACK: WORD new font number (00h-03h)
Return: AX = current font number (00h-03h)
SeeAlso: AH=1Dh"VMiX"

Top
151E00 - INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
	AX = 1E00h
	DX = event/trigger number (00h-3Fh)
Return: AH = status
	    00h successful
SeeAlso: AX=1E01h,AX=1E02h

Top
151E01 - INT 15 - MultiDOS Plus - TRIGGER EVENT
INT 15 - MultiDOS Plus - TRIGGER EVENT
	AX = 1E01h
	DX = event/trigger number (00h-3Fh)
Return: AH = status
	    00h successful
	    01h invalid event/trigger number
Notes:	schedules any task waiting for event; if no task is waiting, the event
	  counter is incremented (and will roll over if it was 65535)
	may be invoked by interrupt handler
SeeAlso: AX=1E00h,AX=1E02h

Top
151E02 - INT 15 - MultiDOS Plus - WAIT FOR EVENT
INT 15 - MultiDOS Plus - WAIT FOR EVENT
	AX = 1E02h
	DX = event/trigger number (00h-3Fh)
Return: AH = status
	    00h successful
	    01h invalid event/trigger number
Note:	if the event counter is zero, the task is suspended until the event is
	  triggered with AX=1E01h; else, the counter is decremented and the
	  call returns immediately
SeeAlso: AX=1E00h,AX=1E01h

Top
151E08 - INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
	AX = 1E08h
	DX:BX -> context save handler (see #00458)
	DX:CX -> context restore handler (see #00458)
Return: nothing
Note:	handlers may be removed by setting addresses to 0000h:0000h

(Table 00458)
Values MultiDOS Plus context-switch handlers are called with:
	ES:BX -> task's TCB
Return: all registers preserved

Top
151F - INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
	AH = 1Fh
	STACK:	WORD	top left corner of window (high byte = row, low = col)
		WORD	bottom right corner of window
Return: AX = status (SYS_OK)
SeeAlso: AH=14h"VMiX",AH=18h"VMiX"

Top
151F - INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
	AH = 1Fh
Return: BX = first segment of conventional memory
	DX = first segment of EMS swap frame into which MultiDOS will load
		programs

Top
1520 - INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
	AH = 20h
Return: AX = current state
	    0000h multitasking enabled
	    other TCB of task that disabled multitasking
SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"

Top
153000 - INT 15 - Object Kernel for DOS - INSTALLATION CHECK
INT 15 - Object Kernel for DOS - INSTALLATION CHECK
	AX = 3000h
Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
	    CX = resident segment
Program: the Object Kernel is a program by M.W. Pieters which is currently
	  under development
Note:	Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
	  may be checking for a different program's presence
SeeAlso: AX=3001h,AX=3008h

Top
153001 - INT 15 - Object Kernel for DOS - GET STATUS BLOCK
INT 15 - Object Kernel for DOS - GET STATUS BLOCK
	AX = 3001h
Return: AX = FFFFh
	ES:DI -> status block
SeeAlso: AX=3000h,AX=3008h

Top
153002 - INT 15 - Object Kernel for DOS - KILL PROCESS
INT 15 - Object Kernel for DOS - KILL PROCESS
	AX = 3002h
	(not yet implemented)
SeeAlso: AX=3000h

Top
153003 - INT 15 - Object Kernel for DOS - STOP PROCESS
INT 15 - Object Kernel for DOS - STOP PROCESS
	AX = 3003h
	(not yet implemented)
SeeAlso: AX=3000h

Top
153004 - INT 15 - Object Kernel for DOS - START PROCESS
INT 15 - Object Kernel for DOS - START PROCESS
	AX = 3004h
	(not yet implemented)
SeeAlso: AX=3000h

Top
153005 - INT 15 - Object Kernel for DOS - RESTART PROCESS
INT 15 - Object Kernel for DOS - RESTART PROCESS
	AX = 3005h
	(not yet implemented)
SeeAlso: AX=3000h

Top
153006 - INT 15 - Object Kernel for DOS - EXECUTE PROCESS
INT 15 - Object Kernel for DOS - EXECUTE PROCESS
	AX = 3006h
	(not yet implemented)
SeeAlso: AX=3000h

Top
153007 - INT 15 - Object Kernel for DOS - LIST PROCESSES
INT 15 - Object Kernel for DOS - LIST PROCESSES
	AX = 3007h
	(not yet implemented)
SeeAlso: AX=3000h

Top
153008 - INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
	AX = 3008h
	BH = new state (00h disabled, 01h enabled)
Return: AX = FFFFh
SeeAlso: AX=3000h,AX=3009h

Top
153009 - INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
	AX = 3009h to 30FFh
SeeAlso: AX=3000h
Program: the Object Kernel is a program by M.W. Pieters which is currently
	  under development

Top
1550 - INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
	AH = 50h
	BX = segment of page directory table
	CX = page number of page table
SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"

Top
1551 - INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
	AH = 51h
	STACK:	DWORD	selector:offset of function
Return: registers as returned by function
Note:	executes function with privilege level 0 (highest privilege)
SeeAlso: AH=10h"VMiX",AH=52h"VMiX"

Top
1552 - INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
	AH = 52h
SeeAlso: AH=50h"VMiX",AH=51h"VMiX"

Top
155400 - INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
	AX = 5400h
	ES:BX -> device information tables
	DI:DX -> dispatcher entry point
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5407h,INT 2F/AX=DE00h

Top
155401 - INT 15 C - Omniview Multitasker - PROCESS CREATION
INT 15 C - Omniview Multitasker - PROCESS CREATION
	AX = 5401h
	ES:BX = process handle
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5402h,INT 2F/AX=DE04h

Top
155402 - INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
	AX = 5402h
	ES:DX = process handle
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5401h,INT 2F/AX=DE05h

Top
155403 - INT 15 C - Omniview Multitasker - SAVE
INT 15 C - Omniview Multitasker - SAVE
	AX = 5403h
	ES:DX = process swapping out
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5404h,INT 2F/AX=DE08h

Top
155404 - INT 15 C - Omniview Multitasker - RESTORE
INT 15 C - Omniview Multitasker - RESTORE
	AX = 5404h
	ES:DX = process swapping in
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5403h,INT 2F/AX=DE09h

Top
155405 - INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
	AX = 5405h
	ES:DX = process swapping in
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5406h

Top
155406 - INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
	AX = 5406h
	ES:DX = process swapping in
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5405h

Top
155407 - INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
	AX = 5407h
Note:	called by OmniView to notify programs loaded before OmniView of state
	  changes inside OmniView
SeeAlso: AX=5400h,INT 2F/AX=DE03h

Top
16FF80BX0000 - INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
	AX = FF80h
	BX = 0000h
	CX = 0000h
	DX = 0000h
Return: CX = 5555h if installed
Program: CPTASK is a task switcher by Central Point Software

Top
16FF80BX0001 - INT 16 U - PC Tools v8+ CPTASK - GET ???
INT 16 U - PC Tools v8+ CPTASK - GET ???
	AX = FF80h
	BX = 0001h
	???
Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
	BX = ??? (PSP segment of resident code???)

Top
16FF80BX0002 - INT 16 U - PC Tools v8+ CPTASK - GET ???
INT 16 U - PC Tools v8+ CPTASK - GET ???
	AX = FF80h
	BX = 0002h
Return: DX:SI -> ???

Top
16FF80BX0003 - INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
	AX = FF80h
	BX = 0003h
Return: AX = flags (see #00617)
SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h

Bitfields for CPTASK flags:
Bit(s)	Description	(Table 00617)
 10	???
 13	???
 14	???
 15	???

Top
16FF80BX0004 - INT 16 U - PC Tools v8+ CPTASK - SET ???
INT 16 U - PC Tools v8+ CPTASK - SET ???
	AX = FF80h
	BX = 0004h
	CX = new value of ???
Return: ???
Note:	this function also sets bit 14 of the flags word returned by
	  AX=FF80h/BX=0003h

Top
16FF80BX0005 - INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
	AX = FF80h
	BX = 0005h
Return: AX = number of active tasks???

Top
16FF80BX0006 - INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
	AX = FF80h
	BX = 0006h
Return: AX = old state (0000h clear, 0001h set)
Note:	the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h

Top
16FF80BX0007 - INT 16 U - PC Tools v8+ CPTASK - ???
INT 16 U - PC Tools v8+ CPTASK - ???
	AX = FF80h
	BX = 0007h
	ES:DI -> ???
	???
Return: ???

Top
16FF80BX0008 - INT 16 U - PC Tools v8+ CPTASK - ???
INT 16 U - PC Tools v8+ CPTASK - ???
	AX = FF80h
	BX = 0008h
	???
Return: ???

Top
16FF80BX0009 - INT 16 U - PC Tools v8+ CPTASK - GET ???
INT 16 U - PC Tools v8+ CPTASK - GET ???
	AX = FF80h
	BX = 0009h
Return: CL = ???
	CH = ??? (01h or 02h)

Top
16FF80BX000A - INT 16 U - PC Tools v9+ CPTASK - SET ???
INT 16 U - PC Tools v9+ CPTASK - SET ???
	AX = FF80h
	BX = 000Ah
	DS:SI -> 128-byte buffer containing ???

Top
16FF80BX000B - INT 16 U - PC Tools v9+ CPTASK - SET ???
INT 16 U - PC Tools v9+ CPTASK - SET ???
	AX = FF80h
	BX = 000Bh
	DX = index of ??? task (1-10)

Top
16FF80BX000C - INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
	AX = FF80h
	BX = 000Ch
	CX = new delay time in minutes

Top
16FF80BX4350 - INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
	AX = FF80h
	BX = 4350h ('CP')
	CX = 5354h ('ST')
Return: never returns; terminates all tasks and exits to program originally
	  calling CPTASK

Top
16FF9C - INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
	AX = FF9Ch
	BL = function
	    00h set ??? pointer
		DS:SI -> ???
	    01h clear pointer to 0000h:0000h

Top
212B01CX5441 - INT 21 - TAME v2.10+ - INSTALLATION CHECK
INT 21 - TAME v2.10+ - INSTALLATION CHECK
	AX = 2B01h
	CX = 5441h ('TA')
	DX = 4D45h ('ME')
---v2.60---
	BH = ???
	    00h skip ???, else do
Return: AL = 02h if installed
	ES:DX -> data area in TAME-RES (see #01382,#01386,#01388)
Program: TAME is a shareware program by David G. Thomas which gives up CPU
	  time to other partitions under a multitasker when the current
	  partition's program incessantly polls the keyboard or system time

Format of TAME 2.10-2.20 data area:
Offset	Size	Description	(Table 01382)
 00h	BYTE	data structure minor version number (01h in TAME 2.20)
 01h	BYTE	data structure major version number (07h in TAME 2.20)
 02h	DWORD	number of task switches
 06h	DWORD	number of keyboard polls
 0Ah	DWORD	number of time polls
 0Eh	DWORD	number of times DESQview told program runs only in foreground
 12h	DWORD	original INT 10h
 16h	DWORD	original INT 14h
 1Ah	DWORD	original INT 15h
 1Eh	DWORD	original INT 16h
 22h	DWORD	original INT 17h
 26h	DWORD	original INT 21h
 2Ah	DWORD	original INT 28h
 2Eh	WORD	offset of TAME INT 10h handler
 30h	WORD	offset of TAME INT 14h handler
 32h	WORD	offset of TAME INT 15h handler
 34h	WORD	offset of TAME INT 16h handler
 36h	WORD	offset of TAME INT 17h handler
 38h	WORD	offset of TAME INT 21h handler
 3Ah	WORD	offset of TAME INT 28h handler
 3Ch	WORD	X in /max:X,Y or /freq:X,Y
 3Eh	WORD	Y in /max:X,Y or /freq:X,Y
 40h	WORD	number of polls remaining before next task switch
 42h	WORD	/KEYIDLE value
 44h	BYTE	interrupts already grabbed by TAME (see #01383)
 45h	BYTE	flags for interrupts which may be acted on (same bits as above)
 46h	BYTE	TAME enabled (01h) or disabled (00h)
 47h	BYTE	/TIMEPOLL (01h) or /NOTIMEPOLL (00h)
 48h	BYTE	/NOTIMER (01h) or /TIMER (00h)
 49h	BYTE	window or task number for this task
 4Ah	BYTE	multitasker type (see #01384)
 4Bh	BYTE	type of task switching selected
		bit 0: DESQview???
		bit 1: DoubleDOS???
		bit 2: TopView???
		bit 3: KeySwitch
		bit 4: HLT instruction
 4Ch	BYTE	???
 4Dh	BYTE	flags
		bit 1: /FREQ instead of /MAX
 4Eh	BYTE	/FG: value
 4Fh	BYTE	task switches left until next FGONLY DESQview API call
 50h	BYTE	???

Bitfields for interrupts already grabbed by TAME:
Bit(s)	Description	(Table 01383)
 0	INT 10h
 1	INT 14h
 2	INT 15h
 3	INT 16h
 4	INT 17h
 5	INT 21h
 6	INT 28h

(Table 01384)
Values for multitasker type:
 01h	DESQview
 02h	DoubleDOS
 03h	TopView
 04h	OmniView
 05h	VM/386

Bitfields for type of task switching selected:
Bit(s)	Description	(Table 01385)
 0	DESQview
 1	DoubleDOS
 2	TopView
 3	OmniView
 4	KeySwitch
 5	HLT instruction

Format of TAME 2.30 data area:
Offset	Size	Description	(Table 01386)
 00h	BYTE	data structure minor version number (02h in TAME 2.30)
 01h	BYTE	data structure major version number (0Ah in TAME 2.30)
 02h	DWORD	number of task switches
 06h	DWORD	number of keyboard polls
 0Ah	DWORD	number of time polls
 0Eh	DWORD	number of times DESQview told program runs only in foreground
 12h	DWORD	time of last /CLEAR or TAME-RES load
 16h	DWORD	time yielded
 1Ah	DWORD	time spent polling
 1Eh	DWORD	time spent waiting on key input with INT 16/AH=01h,11h
 22h	DWORD	original INT 10h
 26h	DWORD	original INT 14h
 2Ah	DWORD	original INT 15h
 2Eh	DWORD	original INT 16h
 32h	DWORD	original INT 17h
 36h	DWORD	original INT 21h
 3Ah	DWORD	original INT 28h
 3Eh	WORD	offset of TAME INT 10h handler
 40h	WORD	offset of TAME INT 14h handler
 42h	WORD	offset of TAME INT 15h handler
 44h	WORD	offset of TAME INT 16h handler
 46h	WORD	offset of TAME INT 17h handler
 48h	WORD	offset of TAME INT 21h handler
 4Ah	WORD	offset of TAME INT 28h handler
 4Ch	WORD	X in /max:X,Y or /freq:X,Y
 4Eh	WORD	Y in /max:X,Y or /freq:X,Y
 50h	WORD	number of polls remaining before next task switch
 52h	WORD	/KEYIDLE value
 54h	WORD	/FG: value
 56h	WORD	task switches left until next FGONLY DESQview API call
 58h	WORD	multitasker version
 5Ah	WORD	virtual screen segment
 5Ch	BYTE	interrupts already grabbed by TAME (see #01383)
 5Dh	BYTE	flags for interrupts which may be acted on (same bits as above)
 5Eh	BYTE	window or task number for this task
 5Fh	BYTE	multitasker type (see #01384)
 60h	BYTE	type of task switching selected (bit flags) (see #01385)
 61h	BYTE	watch_DOS
 62h	BYTE	action flags (see #01387)
 63h	BYTE	old status
 64h	WORD	signature DA34h

Bitfields for TAME action flags:
Bit(s)	Description	(Table 01387)
 0	TAME enabled
 1	/FREQ instead of /MAX (X and Y count fields are per tick)
 2	/TIMEPOLL
 3	/KEYPOLL
 4	inhibit timer
 5	enable status monitoring
SeeAlso: #01386,#01388

Format of TAME 2.60 data area:
Offset	Size	Description	(Table 01388)
 00h	BYTE	data structure minor version number (02h in TAME 2.60)
 01h	BYTE	data structure major version number (0Bh in TAME 2.60)
 02h	DWORD	number of task switches
 06h	DWORD	number of keyboard polls
 0Ah	DWORD	number of time polls
 0Eh	DWORD	number of times DESQview told program runs only in foreground
 12h	DWORD	time of last /CLEAR or TAME-RES load
 16h	DWORD	time yielded
 1Ah	DWORD	time spent polling
 1Eh	DWORD	time spent waiting on key input with INT 16/AH=01h,11h
 22h  4 BYTEs	???
 26h	DWORD	original INT 10h
 2Ah	DWORD	original INT 14h
 2Eh	DWORD	original INT 15h
 32h	DWORD	original INT 16h
 36h	DWORD	original INT 17h
 3Ah	DWORD	original INT 21h
 3Eh	DWORD	original INT 28h
 42h	WORD	offset of TAME INT 10h handler
 44h	WORD	offset of TAME INT 14h handler
 46h	WORD	offset of TAME INT 15h handler
 48h	WORD	offset of TAME INT 16h handler
 4Ah	WORD	offset of TAME INT 17h handler
 4Ch	WORD	offset of TAME INT 21h handler
 4Eh	WORD	offset of TAME INT 28h handler
 50h	WORD	X in /max:X,Y or /freq:X,Y
 52h	WORD	Y in /max:X,Y or /freq:X,Y
 54h	WORD	number of polls remaining before next task switch
 56h	WORD	/KEYIDLE value
 58h  4 BYTEs	???
 5Ch	WORD	X in /boost:X,Y
 5Eh	WORD	Y in /boost:X,Y
 60h	WORD	/FG: value
 62h	WORD	task switches remaining until next FGONLY DESQview API call
 64h	WORD	multitasker version ???
 66h	WORD	virtual screen segment
 68h	BYTE	interrupts already grabbed by TAME (see #01383)
 69h	BYTE	flags for interrupts which may be acted on (same bits as above)
 6Ah	BYTE	window or task number for this task
 6Bh	BYTE	multitasker type (see #01384)
 6Ch	BYTE	type of task switching selected (bit flags) (see #01385)
 6Dh	BYTE	watch_DOS
 6Eh	BYTE	action flags (see #01387)
 6Fh	BYTE	old status
 70h	WORD	signature DA34h

Top
212D01CX7820 - INT 21 - PC-Mix - INSTALLATION CHECK
INT 21 - PC-Mix - INSTALLATION CHECK
	AX = 2D01h
	CX = 7820h ('X ')
	DX = 6D69h ('MI')
Return: AL = 00h if installed

Top
213000BX1234 - INT 21 - CTask 2.0+ - INSTALLATION CHECK
INT 21 - CTask 2.0+ - INSTALLATION CHECK
	AX = 3000h
	BX = 1234h
	DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
Return: AL = DOS major version
	AH = DOS minor version
	CX:BX -> Ctask global data block
Program: CTask is a multitasking kernel for C written by Thomas Wagner
Note:	if first eight bytes of returned data block equal eight bytes passed
	  in, CTask is resident

Top
21DF00DX534C - INT 21 U - Software Carousel - INSTALLATION CHECK
INT 21 U - Software Carousel - INSTALLATION CHECK
	AX = DF00h
	DX = 534Ch ("SL")
	DI = 534Ch ("SL")
Return: AX = 00FFh if installed
	    ???
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.

Top
21DF01 - INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
	AX = DF01h
	BL = task number (00h = next task)
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,02h) (see #01813)

(Table 01813)
Values for Software Carousel error code:
 00h	invalid subfunction in AL
 01h	invalid task number
 02h	tried to switch to task with no memory size
 03h	tried to kill program in partition with no program running
 04h	tried to change size of an active memory partition
 05h	invalid memory size
 06h	tried to send command to task with a pending previous command

Top
21DF02 - INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
	AX = DF02h
	BL = task number
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)

Top
21DF03 - INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
	AX = DF03h
	BL = task number
Return: AL = status
	    00h Carousel not running
	    01h successful
		BL = partition state (00h no program running, 01h prog running)
		DX = partition size in KB
	    FFh unsucessful
		AH = error code (01h) (see #01813)
SeeAlso: AX=DF05h

Top
21DF04 - INT 21 - Software Carousel - GET PARTITION NAME
INT 21 - Software Carousel - GET PARTITION NAME
	AX = DF04h
	BL = task number
Return: AL = status
	    00h Carousel not running
	    01h successful
		CX = length of name (00h if default partition name)
		ES:BX -> partition name (if CX nonzero)
	    FFh unsucessful
		AH = error code (01h) (see #01813)
SeeAlso: AX=DF06h

Top
21DF05 - INT 21 - Software Carousel - CHANGE PARTITION SIZE
INT 21 - Software Carousel - CHANGE PARTITION SIZE
	AX = DF05h
	BL = task number
	DX = new size in KB
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,04h,05h) (see #01813)
	BX = minimum size allowed
	CX = maximum size available
SeeAlso: AX=DF03h

Top
21DF06 - INT 21 - Software Carousel - CHANGE PARTITION NAME
INT 21 - Software Carousel - CHANGE PARTITION NAME
	AX = DF06h
	BL = task number
	CX = length of new name (00h to use default, max 18h)
	DS:SI -> new name
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h) (see #01813)
SeeAlso: AX=DF04h

Top
21DF07 - INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
	AX = DF07h
	BL = task number
	CX = length of command (max 8 chars)
	DS:SI -> command line
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,06h) (see #01813)
Note:	the maximum length seems too small and may be a typo for 80 characters

Top
21DF08 - INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
	AX = DF08h
	BL = new state of keyboard (00h disabled, 01h enabled)
Return: AL = status
	    00h Carousel not running
	    01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
Note:	when the keyboard is is disabled, the user may neither access the
	  Carousel menu nor switch to another memory section

Top
21DF09 - INT 21 - Software Carousel - BOOT THE SYSTEM
INT 21 - Software Carousel - BOOT THE SYSTEM
	AX = DF09h
Return: AL = status
	    00h Carousel not running
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)
Note:	this function never returns if successful

Top
21DF0A - INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
	AX = DF0Ah
Return: AL = status
	    00h Carousel not running
	    01h successful
		BL = task number
		DX = memory size in KB
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)

Top
21DF0B - INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
	AX = DF0Bh
	BH = interrupt number or 00h
	BL = function number to invoke on partition switch
	CL = function number to call when it is safe for resident programs
		to perform DOS calls
	DS:DX -> FAR function to call if BH=00h
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)
Notes:	the specified interrupt or FAR function is called with AH set to the
	  appropriate one of the values specified in BL and CL, and BL set to
	  the new task number
	the function specified by CL will not be called until the notification
	  is enabled with AX=DF0Ch
SeeAlso: AX=DF0Ch

Top
21DF0C - INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
	AX = DF0Ch
Return: AL = status
	    00h Carousel not running
	    01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
SeeAlso: AX=DF0Bh

Top
21E0 - INT 21 - DoubleDOS - MENU CONTROL
INT 21 - DoubleDOS - MENU CONTROL
	AH = E0h
	AL = subfunction
	    01h exchange tasks
	    73h resume invisible job if suspended
	    74h kill other job
	    75h suspend invisible job
Note:	identical to AH=F0h
SeeAlso: AH=F0h"DoubleDOS"

Top
21E1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
	AH = E1h
SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F1h"DoubleDOS"

Top
21E3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
	AH = E3h
	AL = character
Return: AL = status
	    00h successful
	    01h buffer full (128 characters)
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"

Top
21E400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
	AX = E400h
Return: AL = program status
	    00h if DoubleDOS not present
	    01h if running in visible DoubleDOS partition
	    02h if running in the invisible DoubleDOS partition
SeeAlso: AH=E5h"DoubleDOS",AX=F400h

Top
21E5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
	AH = E5h
Return: AL = status
	    00h no program in other partition
	    01h program in other partition is running
	    02h program in other partition is suspended
SeeAlso: AX=E400h"DoubleDOS",AH=F5h"DoubleDOS"

Top
21E8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
	AH = E8h
	AL = program for which to set flags (00h this program, 01h other)
	DX = keyboard control flags (see #02088)
Return: DX = previous flags
Notes:	disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
	  disabling any of the other keystrokes disables them completely
	identical to AH=F8h
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Bitfields for DoubleDOS keyboard control flags:
Bit(s)	Description	(Table 02088)
 0	menu
 1	exchange
 2	entire keyboard enable/disable
 3	Ctrl-C
 4	Ctrl-PrtSc
 5	Alt/Erase
 6	Ctrl-Break
 7	Ctrl-NumLock
 8	shift-PrtSc
 9-13	undefined
 14	cancel key (clear keyboard buffer)
 15	suspend key
Note:	setting a enables the corresponding key or operatin, clearing a
	  disables it

Top
21E9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
	AH = E9h
	AL = new priority (see #02089)
Return: AL = priority setting if AL=05h on entry
Note:	identical to AH=F9h
SeeAlso: AH=EAh"DoubleDOS",AH=EBh"DoubleDOS",AH=F9h"DoubleDOS"

(Table 02089)
Values for DoubleDOS timesharing priority:
 00h	visible program gets 70%, invisible gets 30% (default)
 01h	visible program gets 50%, invisible gets 50%
 02h	visible program gets 30%, invisible gets 70%
 03h	Top program gets 70%, bottom program gets 30%
 04h	Top program gets 30%, bottom program gets 70%
 05h	get current priority

Top
21EA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
	AH = EAh
Return: task switching turned off
SeeAlso: AH=E9h"DoubleDOS",AH=EBh"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"

Top
21EB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
	AH = EBh
Return: task switching turned on
SeeAlso: AH=E9h"DoubleDOS",AH=EAh"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"

Top
21EC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
	AH = ECh
Return: ES = segment of virtual screen
Desc:	determine the address of the virtual screen to which the program
	  should write instead of the actual video memory, so that the
	  multitasked programs do not interfere with each other's output
Notes:	screen address can change if task-switching is on!
	identical to AH=FCh
SeeAlso: INT 10/AH=FEh,AH=FCh"DoubleDOS",INT FC"DoubleDOS"

Top
21EE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
	AH = EEh
	AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=FEh"DoubleDOS",INT FE"DoubleDOS"

Top
21F0 - INT 21 - DoubleDOS - MENU CONTROL
INT 21 - DoubleDOS - MENU CONTROL
	AH = F0h
	AL = subfunction
	    01h exchange tasks
	    73h resume invisible job if suspended
	    74h kill other job
	    75h suspend invisible job
Note:	identical to AH=E0h
SeeAlso: AH=E0h"DoubleDOS"

Top
21F1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
	AH = F1h
SeeAlso: AH=E1h"DoubleDOS",AH=F2h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Top
21F2 - INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
	AH = F2h
	AL = character
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	    00h successful
	    01h buffer full (128 characters)
SeeAlso: AH=E2h"DoubleDOS",AH=F1h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Top
21F3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
	AH = F3h
	AL = character
Return: AL = 00h successful
	     01h buffer full (128 characters)
SeeAlso: AH=E3h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Top
21F400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
	AX = F400h
Return: AL = program status
	    00h if DoubleDOS not present
	    01h if running in visible DoubleDOS partition
	    02h if running in the invisible DoubleDOS partition
SeeAlso: AX=E400h,AH=F5h"DoubleDOS"

Top
21F5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
	AH = F5h
Return: AL = program status
	    00h no program in other partition
	    01h program in other partition is running
	    02h program in other partition is suspended
SeeAlso: AH=E5h"DoubleDOS",AX=F400h"DoubleDOS"

Top
21F8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
	AH = F8h
	AL = program for which to set flags
	    00h this program
	    01h other program
	DX = keyboard control flags (see #02088 at AH=E8h"DoubleDOS")
Return: DX = previous flags
Notes:	disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
	  disabling any of the other keystrokes disables them completely
	this function is identical to AH=E8h
SeeAlso: AH=E8h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"

Top
21F9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
	AH = F9h
	AL = priority
	    00h visible program gets 70%, invisible gets 30% (default)
	    01h visible program gets 50%, invisible gets 50%
	    02h visible program gets 30%, invisible gets 70%
	    03h Top program gets 70%, bottom program gets 30%
	    04h Top program gets 30%, bottom program gets 70%
	    05h get current priority
		Return: AL = priority setting
Note:	identical to AH=E9h
SeeAlso: AH=E9h"DoubleDOS",AH=FAh"DoubleDOS",AH=FBh"DoubleDOS"

Top
21FA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
	AH = FAh
Return: task switching turned off
SeeAlso: AH=EAh"DoubleDOS",AH=F9h"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"

Top
21FB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
	AH = FBh
Return: task switching turned on
SeeAlso: AH=EBh"DoubleDOS",AH=F9h"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"

Top
21FC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
	AH = FCh
Return: ES = segment of virtual screen
Desc:	Determine the address of the virtual screen to which the program
	  should write instead of the actual video memory, so that the
	  multitasked programs do not interfere with each other's output.
Notes:	screen address can change if task-switching is on!
	identical to AH=ECh
SeeAlso: AH=ECh"DoubleDOS",INT FC"DoubleDOS"

Top
21FE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
	AH = FEh
	AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=EEh"DoubleDOS",INT FE"DoubleDOS"

Top
2F2700 - INT 2F - DR DOS 6.0 TaskMAX - INSTALLATION CHECK
INT 2F - DR DOS 6.0 TaskMAX - INSTALLATION CHECK
	AX = 2700h
Return: AL = status
	    00h not installed
	    FFh installed
Note:	the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
	  taskswitching and multitasking modes

Top
2F2701 - INT 2F - DR DOS 6.0 TaskMAX - GET STATUS
INT 2F - DR DOS 6.0 TaskMAX - GET STATUS
	AX = 2701h
Return: AX = maximum simultaneous tasks
	BX = index into TASK_IDS of current foreground task
	CX = currently-active tasks
	DX = version number (DL = major, DH = minor)
	    (DR DOS 6.0 = 0001h, Novell DOS 7 = 0002h)
	ES:SI -> TASK_IDS
	ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars)
Notes:	do not attempt to create a new task if CX == AX
	the task's index is its position on the task menu, while its ID is the
	  position within the internal task name table
SeeAlso: AX=2714h,AX=2716h

Top
2F2702 - INT 2F - DR DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
INT 2F - DR DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
	AX = 2702h
Return: DX = maximum pages INT 67/AH=42h will report available
Note:	TaskMAX does not limit EMS allocations other than by limiting the
	  amount which is reported as being available at a given time
SeeAlso: AX=2703h,INT 67/AH=42h

Top
2F2703 - INT 2F - DR DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
INT 2F - DR DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
	AX = 2703h
	DX = maximum pages INT 67/AH=42h should report available
Return: DX = new maximum for reporting
Note:	the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
	  both taskswitching and multitasking modes
SeeAlso: AX=2702h,INT 67/AH=42h

Top
2F2704 - INT 2F - DR DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
INT 2F - DR DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
	AX = 2704h
	DL = subfunction
	    00h unregister task manager
	    01h register task manager
Return: DL = status
	    00h registered
	    01h unregistered
Notes:	a task manager replaces TaskMAX's menu system with its own user
	  interface; while one is registered, the TaskMAX hotkeys and
	  Ctrl-Alt-Del invoke the manager rather than the built-in menu system
	unregister the task manager before terminating it
SeeAlso: AX=2705h
Index:	hotkeys;TaskMAX

Top
2F2705 - INT 2F - DR DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
INT 2F - DR DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
	AX = 2705h
	DL = subfunction
	    00h disable keystrokes for switching to next/prev/specified task
	    01h enable
Return: nothing
Note:	should only be called by a registered task manager (see AX=2704h)
SeeAlso: AX=2704h,AX=2706h

Top
2F2706 - INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
	AX = 2706h
	DX = task index (see AX=2701h) of task to be activated
Return: DX = task index of previously-active task
Note:	the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
	  both taskswitching and multitasking modes
SeeAlso: AX=2705h,AX=2707h,AX=2715h

Top
2F2707 - INT 2F - DR DOS 6.0 TaskMAX - CREATE NEW TASK
INT 2F - DR DOS 6.0 TaskMAX - CREATE NEW TASK
	AX = 2707h
	DS:DX -> ASCIZ pathname of executable
	ES:BX -> parameter block (see #02738)
	CX = number of ticks before automatic return to task manager
		(0000h = run until termination or explicitly switched)
Return: DX = new task's task index (FFFFh if task terminated)
SeeAlso: AX=2706h,AX=2708h

Format of TaskMAX parameter block:
Offset	Size	Description	(Table 02738)
 00h	WORD	reserved, should be 0000h
 02h	DWORD	pointer to command tail to be copied into child's PSP
 06h	DWORD	pointer to first FCB to be copied into child's PSP
 0Ah	DWORD	pointer to second FCB to be copied into child's PSP

Top
2F2708 - INT 2F - DR DOS 6.0 TaskMAX - DELETE TASK
INT 2F - DR DOS 6.0 TaskMAX - DELETE TASK
	AX = 2708h
	DX = task index
Return: DX = FFFFh (task deleted)
Notes:	this call should only be used for abnormal task termination, after
	  first checking for open files with AX=270Ch; should not be used
	  with programs that allocate EMS or XMS memory
	switches to specified task first
SeeAlso: AX=2707h

Top
2F2709 - INT 2F - DR DOS 6.0 TaskMAX - NAME TASK
INT 2F - DR DOS 6.0 TaskMAX - NAME TASK
	AX = 2709h
	DX = task index
	DS:SI -> 8-byte name (8 NULs = remove name)
Return: AL = task flags
	    00h ID unused or task terminated
	    01h ID in use, task name table entry valid
	    81h ID in use, task name fixed
	BX = task ID
	ES:DI -> name in task name table (see AX=2701h)
Note:	the task retains the given name until it terminates or the name is
	  removed by specifying a name of 8 NULs.
SeeAlso: AX=2701h,AX=2707h

Top
2F270A - INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
	AX = 270Ah
	DX = task index
Return: DX = task ID (FFFFh if index invalid)
Note:	task IDs stay constant, while indexes can change when other tasks are
	  deleted
SeeAlso: AX=2701h,AX=270Bh

Top
2F270B - INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
	AX = 270Bh
	DX = task ID
Return: DX = task index (FFFFh if task not active)
Note:	the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
	  taskswitching and multitasking modes
SeeAlso: AX=270Ah

Top
2F270C - INT 2F - DR DOS 6.0 TaskMAX - CHECK OPEN FILES
INT 2F - DR DOS 6.0 TaskMAX - CHECK OPEN FILES
	AX = 270Ch
	DX = task index
Return: AX = number of files currently open for specified task
SeeAlso: AX=2708h

Top
2F270D - INT 2F - DR DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
INT 2F - DR DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
	AX = 270Dh
	DX = task index
Return: DX = status
	    0000h if primary command interpreter (COMMAND.COM, etc.) running
	    0001h if not in root shell for task
Note:	TaskMAX will return 0001h if the specified task has spawned another
	  command interpreter with AX=2707h
SeeAlso: AX=2707h,AX=270Ch

Top
2F270E - INT 2F - DR DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
INT 2F - DR DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
	AX = 270Eh
	CX = length of string (max 15 keystrokes, 0000h to get current string)
	DS:SI -> pasting lead-in string (character/scan-code pairs)
Return: ES:DI -> current lead-in string
Note:	the specified sequence of keystrokes is sent to the application before
	  every line of a text-mode spreadsheet paste
SeeAlso: AX=270Fh,AX=2710h,AX=2713h

Top
2F270F - INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
	AX = 270Fh
	CX = length of string (max 15 keystrokes, 0000h to get current string)
	DS:SI -> pasting lead-in string (character/scan-code pairs)
Return: ES:DI -> current lead-in string
Note:	the specified sequence of keystrokes is sent to the application before
	  every number in a numeric-mode spreadsheet paste
SeeAlso: AX=270Eh,AX=2710h,AX=2711h,AX=2713h

Top
2F2710 - INT 2F - DR DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
INT 2F - DR DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
	AX = 2710h
	CX = length of string (max 15 keystrokes, 0000h to get current string)
	DS:SI -> pasting terminator string (character/scan-code pairs)
Return: ES:DI -> current terminator string
Note:	the specified sequence of keystrokes is sent to the application after
	  every line of a spreadsheet paste operation
SeeAlso: AX=270Eh,AX=270Fh,AX=2713h

Top
2F2711 - INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
	AX = 2711h
	DX = ASCII code for separator (FFFFh to get current)
Return: DL = current separator character
SeeAlso: AX=270Fh

Top
2F2712 - INT 2F - DR DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
INT 2F - DR DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
	AX = 2712h
	DX = task index

Top
2F2713 - INT 2F - DR DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
INT 2F - DR DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
	AX = 2713h
	DX = task index
	CX = paste mode
	    0000h alphanumeric
	    0001h numeric
	    0002h text
SeeAlso: AX=270Eh,AX=270Fh,AX=2710h,AX=2711h

Top
2F2714 - INT 2F - DR DOS 6.0 TaskMAX - GET SWAP SPACE INFO
INT 2F - DR DOS 6.0 TaskMAX - GET SWAP SPACE INFO
	AX = 2714h
Return: CX = total KB of swap space
	DX = available KB of swap space
Note:	the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
	  taskswitching and multitasking modes
SeeAlso: AX=2701h

Top
2F2715 - INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
	AX = 2715h
Return: only after calling task is again selected
SeeAlso: AX=2706h

Top
2F2716 - INT 2F - DR DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
INT 2F - DR DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
	AX = 2716h
Return: AX = 0000h if AX=2716h,AX=2717h,AX=2718h supported
	    CX = bytes in paste buffer
	    DX = current generation number (updated after every copy operation)
BUG:	Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
	  this call (it does support the remainder of the TaskMAX API)
SeeAlso: AX=2701h,AX=2713h,AX=2714h,AX=2717h,AX=2718h

Top
2F2717 - INT 2F - DR DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
INT 2F - DR DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
	AX = 2717h
	CX = bytes in destination buffer
	ES:DI -> destination buffer
Return: AX = 0000h if function supported
	    CX = bytes actually copied (FFFFh if buffer too small)
	    DX = current generation number for paste buffer
BUG:	Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
	  this call (it does support the remainder of the TaskMAX API)
Note:	the destination buffer may be too small if another task adds more data
	  to the paste buffer after the AX=2716h call but before this call
SeeAlso: AX=2713h,AX=2716h,AX=2718h

Top
2F2718 - INT 2F - DR DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
INT 2F - DR DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
	AX = 2718h
	CX = bytes in source buffer
	DS:SI -> source buffer (plain ASCII, lines terminated with CR LF)
Return: AX = 0000h if function supported
	    CX = bytes actually copied
	    DX = current generation number for paste buffer
BUG:	Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
	  this call (it does support the remainder of the TaskMAX API)
SeeAlso: AX=2712h,AX=2716h,AX=2717h

Top
2F2719 - INT 2F - Novell DOS 7 TaskMGR - NOP
INT 2F - Novell DOS 7 TaskMGR - NOP
	AX = 2719h to 271Bh

Top
2F271C - INT 2F U - Novell DOS 7 TaskMGR - ???
INT 2F U - Novell DOS 7 TaskMGR - ???
	AX = 271Ch
	DX = ???
	    bit 0: ???
Return: ???
	---if DX bit 0 set---
	AX = 0031h
	CX = 0000h
BUG:	if the task switcher is running, and DX bit 0 is set on call, this
	  function will crash because its exit code attempts to pop several
	  registers which are not pushed when DX bit 0 is set

Top
2F2781 - INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
	AX = 2781h
Return: ???
SeeAlso: AX=2782h

Top
2F2782 - INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
	AX = 2782h
Return: ???
SeeAlso: AX=2781h

Top
2F278F - INT 2F U - Novell DOS 7 TaskMGR - ??? API
INT 2F U - Novell DOS 7 TaskMGR - ??? API
	AX = 278Fh
	as for INT 2F/AX=2780h
Return: as for INT 2F/AX=2780h
Note:	Novell DOS 7 TaskMGR passes this call through to INT 2F/AX=2780h
	  without changing any other registers
SeeAlso: AX=2780h/CL=01h,AX=2782h

Top
2F4A05 - INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
	AX = 4A05h
	SI = function
	    0000h reset???
	    0001h ???
		ES:BP -> 80-byte buffer containing ???
	    0002h ???
	    0003h ???
	    0004h ???
		BL = ???
	    0005h ???
	    0006h get ???
		Return: ES:SI -> ???
	    0007h get ???
		Return: AX = ???
	    0008h get ???
		Return: DX:AX -> ??? (internal control data of some kind)
	    0009h get ???
		Return: ES:SI -> ??? (apparently identical to function 0006h)
	    000Ah ???
		BL = length of buffer
		ES:BP -> buffer containing ???
	    000Bh get ???
		Return: AX = ???
	    000Ch ???
		BL = ???
		Return: if BL nonzero on entry
			    DX:AX -> ???
			if BL = 00h on entry
			    ES:SI -> ???
Notes:	DOSSHELL chains to the previous handler if SI is not one of the values
	  listed above
	the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
	the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
SeeAlso: AX=4B01h

Top
2F4B01 - INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
	AX = 4B01h
	CX:DX -> task switcher entry point (see #02819)
	ES:BX = 0000h:0000h
Return: ES:BX -> callback info structure (see #02817) or 0000h:0000h
Notes:	called by the task switcher
	this function is hooked by clients which require notification of task
	  switcher activities; the call must first be passed on to the prior
	  handler with registers unchanged using a simulated interrupt.	 On
	  return, the client must build a callback info structure and store
	  the returned ES:BX in the "next" field, then return the address of
	  its own callback info structure.
	a client program must add itself to the notification chain if it
	  provides services to other programs; before terminating, it must
	  remove itself from the chain by calling the task switcher's entry
	  point with AX=0005h (see #02819)
	the task switcher entry point should not be saved, as it is subject to
	  change and will be provided on any notification call
	the Windows 3.1 Standard Mode supports this API
SeeAlso: AX=160Bh,AX=4B02h

Format of task switcher callback info structure:
Offset	Size	Description	(Table 02817)
 00h	DWORD	pointer to next callback info structure
 04h	DWORD	pointer to notification function (see #02818)
 08h	DWORD	reserved
 0Ch	DWORD	address of zero-terminated list of API info structures
		(see #02821)

(Table 02818)
Values task switcher notification function is called with:
	AX = function
	    0000h switcher initialization
		Return: AX = status
			    0000h if OK to load
			    nonzero to abort task switcher
	    0001h query suspend
		BX = session ID
		Return: AX = status
			    0000h if OK to switch session
			    0001h if not
	    0002h suspend session
		BX = session ID
		interrupts disabled
		Return: AX = 0000h if OK to switch session
			   = 0001h if not
	    0003h activate session
		BX = session ID
		CX = session status flags
			bit 0: set if first activation of session
			bits 1-15: reserved (0)
		interrupts disabled
		Return: AX = 0000h
	    0004h session active
		BX = session ID
		CX = session status flags
			bit 0: set if first activation of session
			bits 1-15: reserved (0)
		Return: AX = 0000h
	    0005h create session
		BX = session ID
		Return: AX = 0000h if OK to create session
			   = 0001h if not
	    0006h destroy session
		BX = session ID
		Return: AX = 0000h
	    0007h switcher termination
		BX = flags
		    bit 0: set if calling switcher is only switcher loaded
		    bits 1-15: reserved (0)
		Return: AX = 0000h
	ES:DI -> task switcher entry point (see #02819)
Notes:	function 0000h is generally called by the program which controls or
	  invokes the task switcher, rather than by the task switcher itself;
	  the entry point supplied to this function is not necessarily the
	  entry point to the task switcher itself, and may be 0000h:0000h.  If
	  any client indicates that loading is not possible, all clients will
	  be called with function 0007h; thus it is possible for a client to
	  receive a termination notice without a corresponding initialization
	  notice.
	except for functions 0002h and 0003h, the notification handler is
	  called with interrupts enabled and may make any INT 21h function
	  call; interrupts must not be enabled in functions 0002h and 0003h
	function 0007h may be called with ES:DI = 0000h:0000h if the entry
	  point is no longer valid

Top
2F4B02BX0000 - INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
	AX = 4B02h
	BX = 0000h
	ES:DI = 0000h:0000h
Return: ES:DI = 0000h:0000h if task switcher not loaded
	ES:DI -> task switcher entry point (see #02819) if loaded
	    AX = 0000h
Notes:	the returned entry point is that for the most-recently loaded task
	  switcher; the entry points for prior task switchers may be determined
	  with the "get version" call (see #02819)
	this function is supported by PC Tools v8+ CPTASK
SeeAlso: AX=4A05h,AX=4B03h

(Table 02819)
Call task switcher entry point with:
	AX = 0000h get version
		Return: CF clear if successful
			    AX = 0000h
			    ES:BX -> task switcher version struct (see #02820)
			CF set if unsupported function
	AX = 0001h test memory region
		ES:DI -> first byte to be tested
		CX = size of region to test
		Return: CF clear if successful
			    AX = memory type of tested region
				0000h global
				0001h global and local
				0002h local (replaced on session switch)
			CF set if unsupported function
	AX = 0002h suspend switcher
		ES:DI -> new task switcher's entry point
		Return: CF clear if successful
			    AX = state
				0000h switcher has been suspended
				0001h switcher not suspended, new switcher must
					abort
				0002h switcher not suspended, but new switcher
					may run anyway
			CF set if unsupported function
	AX = 0003h resume switcher
		ES:DI -> new task switcher's entry point
		Return: CF clear if successful
			    AX = 0000h
			CF set if unsupported function
	AX = 0004h hook notification chain
		ES:DI -> callback info structure to be added to chain
			  (see #02817)
		Return: CF clear if successful
			    AX = 0000h
			CF set if unsupported function
	AX = 0005h unhook notification chain
		ES:DI -> callback info structure to be removed from chain
			  (see #02817)
		Return: CF clear if successful
			    AX = 0000h
			CF set if unsupported function
	AX = 0006h query API support
		BX = asynchronous API identifier
		Return: CF clear if successful
			    AX = 0000h
			    ES:BX -> API info structure (see #02821) for the
				      client which provides the highest
				      level of API support
			CF set if unsupported function

Format of task switcher version structure:
Offset	Size	Description	(Table 02820)
 00h	WORD	major version of supported protocol  (current protocol is 1.0)
 02h	WORD	minor version of supported protocol
 04h	WORD	major version of task switcher
 06h	WORD	minor version of task switcher
 08h	WORD	task switcher ID (see AX=4B03h)
 0Ah	WORD	operation flags
		bit 0: set if task switcher disabled
		bits 1-15: reserved (0)
 0Ch	DWORD	pointer to ASCIZ task switcher name
		("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
 10h	DWORD	pointer to previous task switcher's entry point or 0000h:0000h

Format of API info structure:
Offset	Size	Description	(Table 02821)
 00h	WORD	size of structure in bytes (000Ah)
 02h	WORD	API identifier
		0001h NetBIOS
		0002h 802.2
		0003h TCP/IP
		0004h LAN Manager named pipes
		0005h Novell NetWare IPX
 04h	WORD	major version \ of highest version of API for which the support
 06h	WORD	minor version / level specified in the next field is provided
 08h	WORD	support level
		0001h minimal support
		0002h API-level support
		0003h switcher compatibility
		0004h seamless compatibility

Top
2F4B03 - INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
	AX = 4B03h
	ES:DI -> task switcher entry point (see #02819)
Return: AX = 0000h
	BX = switcher ID (0001h-000Fh), or 0000h if no more available
Notes:	if a task switcher has determined that it is the first to be loaded, it
	  must allocate an identifier for itself and provide this function to
	  all subsequent task switchers; if it is not the first to be loaded,
	  it must call this function to allocate an ID.	 The switcher ID is
	  used as the high four bits of all session identifiers to ensure
	  unique session IDs.
	if no more switcher IDs are available, the new task switcher making the
	  call must terminate or disable itself
	the task switcher providing the identifiers may call the new task
	  switcher's entry point as needed
	this call is available from within DOSSHELL even if the task switcher
	  is not installed
	this function is supported by PC Tools v8+ CPTASK, but appears to
	  always return an ID of 0000h
SeeAlso: AX=4B02h,AX=4B04h

Top
2F4B04 - INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
	AX = 4B04h
	BX = switcher ID
	ES:DI -> task switcher entry point (see #02819)
Return: AX = 0000h
	BX = status
	    0000h successful
	    other error (invalid ID or ID not allocated)
Notes:	called by a task switcher when it exits, unless it was the first loaded
	  and is providing the support for AX=4B03h and AX=4B04h
	the task switcher providing the identifiers may call the terminating
	  task switcher's entry point as needed
	this call is available from within DOSSHELL even if the task switcher
	  is not installed
	this call is supported by PC Tools v8+ CPTASK, but appears to return
	  sucessfully no matter which ID is given
SeeAlso: AX=4B02h,AX=4B03h

Top
2F4B05 - INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
	AX = 4B05h
	ES:BX = 0000h:0000h
	CX:DX -> task switcher entry point (see #02819)
Return: ES:BX -> startup info structure (see #02822) or 0000h:0000h
Notes:	called by task switcher
	clients with instance data should hook this call, pass it through to
	  the previous handler with unchanged registers using a simulated
	  interrupt.  On return, the client should create a startup info
	  structure (see #02822), store the returned ES:BX in the "next"
	  field, and return the address of the created structure in ES:BX
	all MS-DOS function calls are available from within this call
	this function is supported by Novell DOS 7 DOSKEY, with structure v3.00
SeeAlso: AX=1605h,AX=160Bh,AX=4B02h

Format of task switcher startup info structure:
Offset	Size	Description	(Table 02822)
 00h  2 BYTEs	major, minor version of info structure (03h,00h)
 02h	DWORD	pointer to next startup info structure or 0000h:0000h
 06h	DWORD	0000h:0000h (ignored)
 0Ah	DWORD	ignored
 0Eh	DWORD	pointer to instance data records (see #02823)

Format of one instance data record in array:
Offset	Size	Description	(Table 02823)
 00h	DWORD	address of instance data (end of array if 0000h:0000h)
 04h	WORD	size of instance data

Top
2FD600 - INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
	AX = D600h
Return: AL = D6h if installed
Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
	  is a programmer's text editor by Greenview Data.
SeeAlso: AX=D601h,AX=D602h

Top
2FD601 - INT 2F U - VEDIT VSWAP - ???
INT 2F U - VEDIT VSWAP - ???
	AX = D601h
	BL = subfunction number???
Return: BL = return code ???
	ES = resident portion's data??? segment
	DX = resident portion's code segment
SeeAlso: AX=D600h"VSWAP"

Top
2FD602 - INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
	AX = D602h
	other registers set as for INT 21/AX=4B00h
Return: CF set on error
	    AL = error code
		82h = failure due to ???
	CF clear on success
SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"

Top
2FF1 - INT 2F U - RTKernel v4.0 - INSTALLATION CHECK
INT 2F U - RTKernel v4.0 - INSTALLATION CHECK
	AH = F1h
	AL = 00h
Return: AX = FFFFh if present
	    CX = 00F1h
Program: RTKernel is a DOS preemptive multitasking library for C/Pascal by
	  On Time Informatik GmbH

Top
33FFE6 - INT 33 - Switch-It v3.23 - GET ??? PROGRAM
INT 33 - Switch-It v3.23 - GET ??? PROGRAM
	AX = FFE6h
	CX = length of buffer
	ES:DI -> buffer for program name
Return: ES:DI buffer filled
Program: Switch-It is a task switcher supporting up to 100 programs
	  simultaneously by Better Software Technology, Inc.

Top
33FFE7 - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFE7h
Return: AX = ???

Top
33FFE8 - INT 33 - Switch-It v3.23 - ???
INT 33 - Switch-It v3.23 - ???
	AX = FFE8h
	CX = length of name including terminating NUL
	DS:SI -> ASCIZ program pathname

Top
33FFE9 - INT 33 - Switch-It v3.23 - SET ???
INT 33 - Switch-It v3.23 - SET ???
	AX = FFE9h
	BX = ???

Top
33FFEA - INT 33 - Switch-It v3.23 - SET ???
INT 33 - Switch-It v3.23 - SET ???
	AX = FFEAh
	BL = ???

Top
33FFEB - INT 33 - Switch-It v3.23 - SET ??? FLAG
INT 33 - Switch-It v3.23 - SET ??? FLAG
	AX = FFEBh

Top
33FFEC - INT 33 - Switch-It v3.23 - SET ???
INT 33 - Switch-It v3.23 - SET ???
	AX = FFECh
	BL = ???

Top
33FFED - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFEDh
Return: AX = ??? (0001h)
	BX = ???
Program: Switch-It is a task switcher supporting up to 100 programs
	  simultaneously by Better Software Technology, Inc.

Top
33FFEE - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFEEh
Return: AX = ???

Top
33FFEF - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFEFh
Return: BX:AX -> ???

Top
33FFF0 - INT 33 - Switch-It v3.23 - SET ???
INT 33 - Switch-It v3.23 - SET ???
	AX = FFF0h
	BL = ???

Top
33FFF1 - INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
	AX = FFF1h
Return: BX:AX -> ASCIZ pathname of configuration file
Program: Switch-It is a task switcher supporting up to 100 programs
	  simultaneously by Better Software Technology, Inc.

Top
33FFF2 - INT 33 - Switch-It v3.23 - SET ??? FLAG
INT 33 - Switch-It v3.23 - SET ??? FLAG
	AX = FFF2h
Return: AL = 01h

Top
33FFF3 - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFF3h
Return: AX = ???

Top
33FFF4 - INT 33 - Switch-It v3.23 - SET ???
INT 33 - Switch-It v3.23 - SET ???
	AX = FFF4h
	BX = ???
	CX = ???

Top
33FFF5 - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFF5h
Return: AX = ???

Top
33FFF6 - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFF6h
Return: AX = ???

Top
33FFF7 - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFF7h
	BX = index of ???
Return: AX = ???

Top
33FFF8 - INT 33 - Switch-It v3.23 - ???
INT 33 - Switch-It v3.23 - ???
	AX = FFF8h
	BX = ???
	CX = length of program name, including terminating NUL
	DS:SI -> ASCIZ program pathname
Return: ???
Program: Switch-It is a task switcher supporting up to 100 programs
	  simultaneously by Better Software Technology, Inc.

Top
33FFF9 - INT 33 - Switch-It v3.23 - NOP
INT 33 - Switch-It v3.23 - NOP
	AX = FFF9h

Top
33FFFA - INT 33 - Switch-It v3.23 - SET ???
INT 33 - Switch-It v3.23 - SET ???
	AX = FFFAh
	BX = index of program
SeeAlso: AX=FFFBh,AX=FFFCh

Top
33FFFB - INT 33 - Switch-It v3.23 - GET ???
INT 33 - Switch-It v3.23 - GET ???
	AX = FFFBh
	BX = index of program
Return: AX = ??? (0000h or 0001h)
SeeAlso: AX=FFFAh,AX=FFFCh

Top
33FFFC - INT 33 - Switch-It v3.23 - CLEAR ???
INT 33 - Switch-It v3.23 - CLEAR ???
	AX = FFFCh
	BX = index of program
SeeAlso: AX=FFFAh,AX=FFFCh

Top
33FFFD - INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
	AX = FFFDh
Return: AX = first available segment???
	BX = paragraph of top of conventional memory
	DX = PSP segment of SI.EXE

Top
33FFFE - INT 33 - Switch-It v3.23 - INSTALLATION CHECK
INT 33 - Switch-It v3.23 - INSTALLATION CHECK
	AX = FFFEh
Return: BX = ???
	DX = 5349h ("SI")

Top
33FFFF - INT 33 - Switch-It v3.23 - ???
INT 33 - Switch-It v3.23 - ???
	AX = FFFFh
	BX = ???
Program: Switch-It is a task switcher supporting up to 100 programs
	  simultaneously by Better Software Technology, Inc.

Top
6201 - INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
	AH = 01h
Program: Cswitch is a set of multitasking functions by Herb Rose
SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h

Top
6202 - INT 62 - Cswitch - WAIT FOR SEMAPHORE
INT 62 - Cswitch - WAIT FOR SEMAPHORE
	AH = 02h
	DX = semaphore number (0-63)
Return: AX = FFFFh bad semaphore number
	     else  success
SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"

Top
6203 - INT 62 - Cswitch - CHECK SEMAPHORE
INT 62 - Cswitch - CHECK SEMAPHORE
	AH = 03h
	DX = semaphore number (0-63)
Return: AX = status
	    FFFFh not owned
	    else  owned
SeeAlso: AH=02h,AH=04h

Top
6204 - INT 62 - Cswitch - TRIGGER SEMAPHORE
INT 62 - Cswitch - TRIGGER SEMAPHORE
	AH = 04h
	DX = semaphore number (0-63)
Return: AX = status
	    FFFFh bad semaphore number
	    else  success
SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"

Top
6205 - INT 62 - Cswitch - SLEEP
INT 62 - Cswitch - SLEEP
	AH = 05h
	BX = seconds to sleep
SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"

Top
6206 - INT 62 - Cswitch - SUSPEND
INT 62 - Cswitch - SUSPEND
	AH = 06h
SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"

Top
6207 - INT 62 - Cswitch - SPAWN
INT 62 - Cswitch - SPAWN
	AH = 07h
	ES:BX -> function address to start executing at
	CX = priority (1-10)
Return: AX = result/status
	    FFFDh  no free memory control blocks
	    FFFEh  no free task control blocks
	    FFFFh  not enough memory to create new task stack
	    >0	   the tcb number of the new task, indicating no error
SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"

Top
6208 - INT 62 - Cswitch - WAKE UP TASK
INT 62 - Cswitch - WAKE UP TASK
	AH = 08h
	BX = tcb identifier
SeeAlso: AH=05h,AH=06h

Top
6209 - INT 62 - Cswitch - SET PRIORITY
INT 62 - Cswitch - SET PRIORITY
	AH = 09h
	BX = new base priority (1-10)
Note:	the lower the priority is numerically, the more often the task will run

Top
620A - INT 62 - Cswitch - TEST MESSAGE QUEUE
INT 62 - Cswitch - TEST MESSAGE QUEUE
	AH = 0Ah
	DX = queue number (0-63)
Return: AX = result/message size
	    0000h nothing on queue
	    FFFFh bad queue number
	    else  number of bytes in first message in queue
SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"

Top
620B - INT 62 - Cswitch - SEND MESSAGE
INT 62 - Cswitch - SEND MESSAGE
	AH = 0Bh
	CX = number of bytes to write
	DS:SI -> buffer
	DX = queue number (0-63)
Return: AX = result/message size
	    0000h no message was on queue
	    FFFEh triggered by something arriving, redo the call
	    FFFFh bad queue number
	    else  number of bytes in message
SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"

Top
620C - INT 62 - Cswitch - READ MESSAGE
INT 62 - Cswitch - READ MESSAGE
	AH = 0Ch
	CX = number of bytes to read
	DS:SI -> buffer
	DX = queue number (0-63)
Return: AX = status
	    FFFFh bad queue number
	    else  number of bytes transferred
SeeAlso: AH=0Ah,AH=0Bh

Top
620D - INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
	AH = 0Dh
SeeAlso: AH=0Eh"Cswitch"

Top
620E - INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
	AH = 0Eh
SeeAlso: AH=0Dh"Cswitch"

Top
620F - INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
	AH = 0Fh
	ES:BX -> command line
	CX = priority (1-10)
	DX = background flag (nonzero allows loading to EMS)
Return: AX = status
	    0000h task loader queue is full
	    0001h  no error
SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"

Top
6210 - INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
	AH = 10h
SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"

Top
6211 - INT 62 - Cswitch - GET TCB INFORMATION
INT 62 - Cswitch - GET TCB INFORMATION
	AH = 11h
	ES:BX -> a pointer which will be set to the tcb address
Return: AX = tcb indentifier
SeeAlso: AH=12h

Top
6212 - INT 62 - Cswitch - GET TCB ADDRESS
INT 62 - Cswitch - GET TCB ADDRESS
	AH = 12h
	ES:BX -> a pointer which will be set to the tcb table address
Return: AX = tcb indentifier
SeeAlso: AH=11h"Cswitch"

Top
6213 - INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
	AH = 13h
Return: AX = result
	    FFFCh no Memory Control Blocks available
	    FFFDh no TCBs available
	    FFFEh insufficient memory
	    FFFFh cannot open file
	    0000h load in progress (not done yet)
	    else  tcb indentifier
SeeAlso: AH=0Fh

Top
7F00 - INT 7F - MultiLink Advanced v1.0+ - ENQUEUE SYSTEM RESOURCE
INT 7F - MultiLink Advanced v1.0+ - ENQUEUE SYSTEM RESOURCE
	AH = 00h
	BX = resource identifier
	AL = wait flag
Return: AL = status
	    00h successful
	    01h resource not available
	    02h user error
InstallCheck:	ensure that the interrupt vector is not pointing at segment
	  0000h, then test whether the byte at offset 0000h in the interrupt
	  handler's segment is E9h
Notes:	function will not return until the resource is available if AL is
	  nonzero on entry
	a maximum of 100 resources may be enqueued at once
SeeAlso: AH=01h"MultiLink"

Top
7F01 - INT 7F - MultiLink Advanced v1.0+ - DEQUEUE SYSTEM RESOURCE
INT 7F - MultiLink Advanced v1.0+ - DEQUEUE SYSTEM RESOURCE
	AH = 01h
	BX = resource identifier
Return: AL = status
	    00h successful
	    02h user error
Note:	the indicated resource may be dequeued even if it was enqueued by
	  another task
SeeAlso: AH=00h"MultiLink",AH=02h"MultiLink"

Top
7F02 - INT 7F - MultiLink Advanced v1.0+ - RELEASE CPU
INT 7F - MultiLink Advanced v1.0+ - RELEASE CPU
	AH = 02h
Return: ???
Desc:	yields CPU to other tasks
SeeAlso: AH=00h"MultiLink",AH=09h"MultiLink",INT 15/AX=1000h

Top
7F09 - INT 7F - MultiLink Advanced v1.0+ - SET TASK PRIORITY
INT 7F - MultiLink Advanced v1.0+ - SET TASK PRIORITY
	AH = 09h
	AL = priority (0-7)
Return: nothing
InstallCheck:	ensure that the interrupt vector is not pointing at segment
	  0000h, then test whether the byte at offset 0000h in the interrupt
	  handler's segment is E9h
Index:	installation check;MultiLink Advanced
SeeAlso: AH=00h"MultiLink",AH=0Ah"MultiLink"

Top
7F0A - INT 7F - MultiLink Advanced v1.0+ - SET KEYBOARD TEST STATUS
INT 7F - MultiLink Advanced v1.0+ - SET KEYBOARD TEST STATUS
	AH = 0Ah
	AL = task-switch status
	    00h normal (disable task when it repeatedly polls keyboard)
	    01h disable task until keyboard input available
	    FFh never disable task
Return: ???
SeeAlso: AH=09h"MultiLink"

Top
F4 - INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F5"DoubleDOS",INT FE"DoubleDOS"

Top
F5 - INT F5 - DoubleDOS - ???
INT F5 - DoubleDOS - ???
SeeAlso: INT F4"DoubleDOS",INT F6"DoubleDOS"

Top
F6 - INT F6 - DoubleDOS - ???
INT F6 - DoubleDOS - ???
SeeAlso: INT F5"DoubleDOS",INT F7"DoubleDOS"

Top
F7 - INT F7 - DoubleDOS - ???
INT F7 - DoubleDOS - ???
SeeAlso: INT F6"DoubleDOS"

Top
F8 - INT F8 - DoubleDOS - ???
INT F8 - DoubleDOS - ???

Top
F9 - INT F9 - DoubleDOS - ???
INT F9 - DoubleDOS - ???

Top
FA - INT FA - DoubleDOS - TURN OFF TIMESHARING
INT FA - DoubleDOS - TURN OFF TIMESHARING
SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"

Top
FB - INT FB - DoubleDOS - TURN ON TIMESHARING
INT FB - DoubleDOS - TURN ON TIMESHARING
SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"

Top
FC - INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
Return: ES = segment of display buffer
Desc:	determine the address of the virtual screen to which the program
	  should write instead of the actual video memory, so that the
	  multitasked programs do not interfere with each other's output
Note:	the display buffer may be moved if multitasking is enabled
SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"

Top
FD - INT FD - DoubleDOS - ???
INT FD - DoubleDOS - ???

Top
FE - INT FE - DoubleDOS - GIVE UP TIME
INT FE - DoubleDOS - GIVE UP TIME
	AL = number of 55ms time slices to give away
Return: after other program (if active) has run
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"

Top
Home Interrupt Index: by Category by ID TOC: by Order Top