⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interrup.k

📁 A Programmer s Reference to BIOS, DOS, and Third-Party Calls
💻 K
📖 第 1 页 / 共 5 页
字号:
	  implement function 05h.  TSRs which provide DOS device drivers must
	  also implement function 06h.	The absolute minimum fully-compliant
	  implementation has an overhead of 64 bytes (80 bytes with function
	  05h) plus 22 bytes per hooked interrupt (for the interrupt sharing
	  protocol header and hook list entry).
	the signature string and description may be used by memory mappers
	  to display the installed programs
	to be considered fully compliant, users of this specification must
	  adhere to the IBM interrupt sharing protocol (see #02568), which will
	  permit removal of TSRs in arbitrary order and interrupt handler
	  reordering.  All TSRs following this specification should be
	  removable unless they are loaded from CONFIG.SYS, though they need
	  not keep the code for removing themselves resident; it is acceptable
	  for a separate program to perform the interrupt unhooking and
	  memory-freeing steps of removal.
	A sample public-domain implementation including example TSRs and
	  utility programs may be found in a separate package distributed as
	  AMISLnnn.ZIP (AMISL092.ZIP as of this writing).
	Please let me know if you choose to follow this proposal.  The
	  signature and a list of the private API calls you use would be
	  appreciated, as well.
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
SeeAlso: INT 2D/AL=05h,INT 2D/AL=06h,INT 2F"NOTES"

Format of interrupt sharing protocol interrupt handler entry point:
Offset	Size	Description	(Table 02568)
 00h  2 BYTEs	short jump to actual start of interrupt handler, immediately
		  following this data block (EBh 10h)
 02h	DWORD	address of next handler in chain
 06h	WORD	signature 424Bh
 08h	BYTE	EOI flag
		00h software interrupt or secondary hardware interrupt handler
		80h primary hardware interrupt handler (will issue EOI to
		      interrupt controller)
 09h  2 BYTEs	short jump to hardware reset routine
		must point at a valid FAR procedure (may be just RETF)
 0Bh  7 BYTEs	reserved (0) by IBM for future expansion
Note:	when chaining to the prior handler, the interrupt handler must perform
	  an indirect jump/call using the address at offset 02h in the
	  ISP header.  This permits another AMIS TSR to hook itself into
	  the chain at a position other than as the first handler to receive
	  an interrupt.
SeeAlso: INT F1/AH=01h"Common ISDN API",INT F1/AH=06h"CAPI",#04068
--------t-2D--00-----------------------------
INT 2D - AMIS v3.0+ - INSTALLATION CHECK
	AL = 00h
	AH = multiplex number for program
Return: AL = 00h if free
	AL = FFh if multiplex number in use
	    CX = binary version number (CH = major, CL = minor)
	    DX:DI -> signature string (see #02569) identifying the program
		  using the multiplex number
SeeAlso: INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
Index:	installation check;Alternate Multiplex Interrupt Specification
Index:	installation check;AMIS|installation check;FASTMOUS
Index:	installation check;SPELLER|installation check;Monitor
Index:	installation check;NOLPT|installation check;NOTE
Index:	installation check;RBkeyswp|installation check;SWITCHAR
Index:	installation check;VGABLANK|installation check;EATMEM
Index:	installation check;RECALL|installation check;XPTR2

Format of AMIS signature string:
Offset	Size	Description	(Table 02569)
 00h  8 BYTEs	blank-padded manufacturer's name (possibly abbreviated)
 08h  8 BYTEs	blank-padded product name
 10h 64 BYTEs	ASCIZ product description (optional, may be a single 00h)
Note:	it is not necessary to reserve a full 64 bytes for the description,
	  just enough to store the actual ASCIZ string
SeeAlso: #02570

(Table 02570)
Values for AMIS signatures known to be in use:
 'Byrial J' 'EKLAVO  '	permits keyboard entry of Esperanto accented letters
 'CoveSoft' 'Burnout+'	shareware screen saver Burnout Plus
 'Crynwr  ' 'SPELLER '	TSR spelling-checker
 'CPH1995 ' 'CDTSR   '	resident CD-Audio player
 'CPH1996 ' 'DSAPI   '
 'CSJewell' 'Modula3L'	Curtis Jewell's Modula-3 compiler (non-TSR)
 'Cubbi...' 'ASCII...'	Example ASCII code view/enter TSR by Sergey Zubkov
 'Cubbi...' 'ScrnGrab'	Example screen grabber by Sergey Zubkov
 'DAISYCHA' 'INDRIVER'	Advanced Parallel Port daisy chain driver (vendor name
			  in product description field, if desired)
			(see also INT 2D/AL=DCh)
 'DTown SD' 'DTU     '	DTown Software Development's DTown Utilities
			(see also INT 2D/AL=20h)
 'ECLIPSE ' 'PLUMP   '	Eclipse Software's printer and plotter spooler
 'GraySoft' 'GIPC    '	GraySoft's Inter-Process Communications driver
 'heathh  ' 'Monitor '
 'Helge O '		TSRs by Helge Olav Helgesen
 'IVALM SK' 'lmkey   '	Russian keyboard driver by Sergey Khabarov
 'IVALM SK' 'lmrus   '	Russian screen	 driver by Sergey Khabarov
 'J. Berry' 'RATSR   '	RemoteAccess Network Manager workstation module
 'JWB	  ' 'RAMLIGHT'	James Birdsall's on-screen RAMdisk activity indicator
 'M Better' 'iHPFS   '	Marcus Better's HPFS filesystem driver for DOS
 'M. Paul ' 'FREEVER '	DOS version-faking TSR by Matthias Paul
 'Nildram ' 'ST	     '	Screen Thief graphics screen grabber
 'NoBrain ' 'FlatReal'	Flat real mode monitor by Sergei Shtylyov
 'NoBrain ' 'Grabber '	Frame grabber drivers by Sergei Shtylyov
 'NoBrain ' 'SqrModes'	TSR providing some non-standard video modes
			by Sergei Shtylyov
 'Pino Nav' 'ALTMENU '	activate any program's menu bar by pressing Alt key
 'Pino Nav' 'Keybit  '	Pino Navato's KEYBIT Lite Italian keyboard driver v4+
 'PowrQuot' 'CAPRILOG'
 'PowrQuot' 'CAPRITSR'
 'PowrQuot' 'CAPRIWIN'
 'R-Ware  ' 'dLite   '	run-time data decompression TSR
 'Ralf B  ' 'disaXXYY'	RBdisabl -- disable key scancode XX w/ shift states YY
 'Ralf B  ' 'DUALVGA '	dual-VGA support, screen blanker, and DPMS driver
 'Ralf B  ' 'FASTMOUS'	example TSR included with sample AMIS library code
 'Ralf B  ' 'NoBreak '	disable Ctrl-@, Ctrl-C, and Ctrl-Break keys
 'Ralf B  ' 'NOLPT n '	example TSR -- turn LPTn into bit-bucket
 'Ralf B  ' 'NOTE    '	example TSR -- popup note-taker
 'Ralf B  ' 'RBclock '	RBclock -- on-screen real-time clock
 'Ralf B  ' 'RBclockE'	RBclock -- on-screen elapsed-time clock
 'Ralf B  ' 'RBdvorak'	Dvorak keyboard mapping w/ opt Esc/~, LCtrl/CapsLk swap
 'Ralf B  ' 'RBkcount'	display count of keystrokes on screen
 'Ralf B  ' 'RBkeyswp'	RBkeyswap v3.0+ -- swap Esc/~ and LCtrl/CapsLock keys
 'Ralf B  ' 'RBnoboot'	disable Ctrl-Alt-Del key combination
 'Ralf B  ' 'ShftCaps'	require Shift-CapsLock to turn on CapsLock
 'Ralf B  ' 'ShftNumL'	require Shift-NumLock to turn off NumLock
 'Ralf B  ' 'SWITCHAR'	example TSR -- add switchar() support removed from DOS5
 'Ralf B  ' 'VGABLANK'	VGA-only screen blanker
 'Ralf B  ' 'WINTAME '	yield CPU when program in Win95 DOS box is idle
 'Sally IS' 'Mdisk   '	removeable, resizeable RAMdisk
 'Sally IS' 'Scr2Tex '	screen dumper with output in (La)Tex format
 'SRT	  ' 'STOPBOOT'	reboot preventer by Steve Talbot
 'Thaco	  ' 'NEST    '	Eirik Pedersen's programmer's delimiter matcher
 'TifaWARE' 'EATMEM  '	George A. Theall's public domain memory restrictor for
			testing programs (v1.1+)
 'TifaWARE' 'RECALL  '	public domain commandline editor and history (v1.2+)
 'Todd	  ' 'XPTR2   '	PC-to-Transputer interface by Todd Radel
 'WlkngOwl' 'NoiseSYS'	NOISE.SYS random-number generator
SeeAlso: #02569
--------t-2D--01-----------------------------
INT 2D - AMIS v3.0+ - GET PRIVATE ENTRY POINT
	AL = 01h
	AH = multiplex number for program
Return: AL = 00h if all API calls via INT 2D
	AL = FFh if entry point supported
	    DX:BX -> entry point for bypassing interrupt chain
Note:	this function is not valid unless a program is installed on the
	  specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
Index:	entry point;Alternate Multiplex Interrupt|entry point;AMIS
--------t-2D--02-----------------------------
INT 2D - AMIS v3.0+ - UNINSTALL
	AL = 02h
	AH = multiplex number for program
	DX:BX = return address for successful uninstall (may be	ignored by TSR)
Return: AL = status
	    00h not implemented (makes TSR non-compliant with specification)
	    01h unsuccessful
	    02h can not uninstall yet, will do so when able
	    03h safe to remove, but no resident uninstaller
		  (TSR still enabled)
		BX = segment of memory block with resident code
	    04h safe to remove, but no resident uninstaller
		  (TSR now disabled)
		BX = segment of memory block with resident code
	    05h not safe to remove now, try again later
	    06h disabled, but can not be removed from memory
		  because loaded from CONFIG.SYS
	    07h safe to remove, but no resident device-driver
		  uninstaller.	Caller must unlink device
		  drivers from DOS device chain as well as
		  unhooking interrupts and freeing memory
		BX = segment of memory block with resident code
	    FFh successful
	return at DX:BX with AX destroyed if successful and TSR honors
	  specific return address
Note:	this function is not valid unless a program is installed on the
	  specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
Index:	uninstall;Alternate Multiplex Interrupt Specification|uninstall;AMIS
--------t-2D--03-----------------------------
INT 2D - AMIS v3.0+ - REQUEST POP-UP
	AL = 03h
	AH = multiplex number for program
Return: AL = status
	    00h not implemented or TSR is not a pop-up
	    01h can not pop up at this time, try again later
	    02h can not pop up yet, will do so when able
	    03h already popped up
	    04h unable to pop up, user intervention required
		BX = standard reason code
		    0000h unknown failure
		    0001h interrupt chain passes through memory
			  which must be swapped out to pop up
		    0002h swap-in failed
		CX = application's reason code if nonzero
	    FFh TSR popped up and was exited by user
		BX = return value
		    0000h no return value
		    0001h TSR unloaded
		    0002h-00FFh reserved
		    0100h-FFFFh application-dependent
Note:	this function is not valid unless a program is installed on the
	  specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
--------t-2D--04-----------------------------
INT 2D - AMIS v3.0+ - DETERMINE CHAINED INTERRUPTS
	AL = 04h
	AH = multiplex number for program
	BL = interrupt number (except 2Dh)
Return: AL = status
	    00h not implemented (makes TSR non-compliant with specification)
	    01h (obsolete) unable to determine
	    02h (obsolete) interrupt hooked
	    03h (obsolete) interrupt hooked, address returned
		DX:BX -> TSR's interrupt BL handler
	    04h list of hooked interrupts returned
		DX:BX -> interrupt hook list (see #02571)
	    FFh interrupt not hooked
Notes:	BL is ignored if the TSR returns AL=04h; in that case, the caller
	  needs to scan the return list rather than making additional calls
	  to this function.  If the return is not 00h or 04h, then the caller
	  must cycle through the remaining interrupt numbers it wishes to
	  check.
	return values 01h through 03h may not be used by AMIS v3.6-compliant
	  programs; they are included here solely for compatibility with
	  version 3.3, though they were probably never used in any
	  implementation
	for return values 01h through 03h, since INT 2D is known to be hooked,
	  the resident code need not test for BL=2Dh (to minimize its size),
	  and the return value is therefore undefined in that case.
	this function is not valid unless a program is installed on the
	  specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h

Format of AMIS interrupt hook list [array]:
Offset	Size	Description	(Table 02571)
 00h	BYTE	interrupt number (last entry in array is 2Dh)
 01h	WORD	offset within hook list's segment of the interrupt handler
		this will point at the initial short jump of the interrupt
		  sharing protocol header (see #02568)
SeeAlso: #02572
--------t-2D--05-----------------------------
INT 2D - AMIS v3.5+ - GET HOTKEYS
	AL = 05h
	AH = multiplex number for program
Return: AL = status
	    00h not implemented
	    FFh supported
		DX:BX -> hotkey list (see #02572)
Notes:	this function is not valid unless a program is installed on the
	  specified multiplex number; use INT 2D/AL=00h to check
	programs which provide hotkeys are required to provide this function
	  to be fully compliant with this specification
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
SeeAlso: INT 2D/AL=06h

Format of AMIS hotkey list:
Offset	Size	Description	(Table 02572)
 00h	BYTE	type of hotkey checking (see #02573)
 01h	BYTE	number of hotkeys (may be zero if TSR can disable hotkeys)
 02h 6N BYTEs	array of hotkey definitions
		(one per hotkey, first should be primary hotkey)
		Offset	Size	Description
		 00h	BYTE	hotkey scan code (00h/80h if shift states only)
				hotkey triggers on release if bit 7 set
		 01h	WORD	required shift states (see #02574)
		 03h	WORD	disallowed shift states (see #02574)
		 05h	BYTE	hotkey flags (see #02575)
Notes:	except for bit 7, the shift states correspond exactly to the return
	  values from INT 16/AH=12h.  A set bit in the required states word
	  indicates that the corresponding shift state must be active when the
	  hotkey's scan code is received for the hotkey to be recognized; a
	  clear bit means that the corresponding state may be ignored.	A set
	  bit in the disallowed shift states word indicates that the
	  corresponding shift state must be inactive.
	for the disallowed-states word, if one of the "either" bits is set,
	  then both the corresponding left bit and right bit must be set
	examples:
		Ctrl-Alt-Del monitoring: 53h 000Ch 0003h 06h
		Alt-key tap (DESQview):	 B8h 0000h 0007h 08h
		Shf-Shf-N (NOTE.COM):	 31h 0003h 000Ch 00h
Index:	hotkeys;AMIS
SeeAlso: #00006

Bitfields for type of AMIS hotkey checking:
Bit(s)	Description	(Table 02573)
 0	checks before chaining INT 09
 1	checks after chaining INT 09
 2	checks before chaining INT 15/AH=4Fh
 3	checks after chaining INT 15/AH=4Fh
 4	checks on INT 16/AH=00h,01h,02h
 5	checks on INT 16/AH=10h,11h,12h
 6	checks on INT 16/AH=20h,21h,22h
 7	reserved (0)
SeeAlso: #02572

Bitfields for AMIS shift states:
Bit(s)	Description	(Table 02574)
 0	right shift pressed
 1	left shift pressed
 2	either control key pressed
 3	either Alt key pressed
 4	ScrollLock active
 5	NumLock active
 6	CapsLock active
 7	either shift key pressed
 8	left control key pressed
 9	left Alt key pressed
 10	right control key pressed
 11	right Alt key pressed
 12	ScrollLock pressed
 13	NumLock pressed
 14	CapsLock pressed
 15	SysReq key pressed
Notes:	if bit 2 is set, either control key may be pressed for the hotkey; if
	  bits 8 and 10 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -