INT 12 - Back&Forth v1.62+ - API(Application Program[ming] Interface) The defined set of calls which a program may make to interact with or request services of the operating system or environment under which it is running.  Because the inputs and outputs of the calls are well-defined, a program using the API can continue using the identical calls even if the internal organization of the program providing the API changes.
	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 -> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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 -> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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	ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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 EMSsee Expanded Memory Specification 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	Unix-style task start time (seconds since 1970/1/1)
 04h 21 BYTEs	task description
 19h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	time task was suspended/exited
 26h	WORD	task handle
SeeAlso: #00231,#00232