You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
4.4 KiB
124 lines
4.4 KiB
;***************************************************************************
|
|
; *
|
|
; Copyright (C) 1983,1984 by Microsoft Inc. *
|
|
; *
|
|
;***************************************************************************
|
|
|
|
; Macros for disabling and restoring hardware interrupt enable flag
|
|
;
|
|
; The LeaveCrit macro has been updated for the mask problem on
|
|
; the 80286 processor.
|
|
|
|
include vint.inc
|
|
|
|
|
|
EnterCrit MACRO
|
|
pushf
|
|
FCLI
|
|
ENDM
|
|
|
|
LeaveCrit macro reg ;;this macro will restore the state of
|
|
ifnb <reg> ;;the interrupt flag to what is was
|
|
pop reg&x ;;before EnterCrit. All other flags
|
|
test reg&h, 2 ;;are discarded.
|
|
jz @f
|
|
FSTI
|
|
@@:
|
|
else
|
|
push bp
|
|
mov bp, sp
|
|
test byte ptr [bp+3], 2
|
|
jz @f
|
|
FSTI
|
|
@@:
|
|
pop bp
|
|
popf
|
|
endif
|
|
endm
|
|
|
|
|
|
if 0
|
|
POPFF equ <LeaveCrit>
|
|
|
|
LeaveCrit MACRO
|
|
POPFF
|
|
ENDM
|
|
endif
|
|
|
|
POPFF MACRO ;;this macro will restore ALL flags,
|
|
local a ;;EXCEPT the interrupt flag, to
|
|
jmp $+3 ;;their previous state
|
|
a label near
|
|
iret
|
|
push cs
|
|
call a
|
|
ENDM
|
|
|
|
|
|
|
|
|
|
;***************************************************************************
|
|
; *
|
|
; Inquire data structures for Timer, Keyboard, Mouse and Cursor modules *
|
|
; *
|
|
;***************************************************************************
|
|
|
|
TIMERINFO STRUC
|
|
tiResolution DD 0 ; #microseconds each timer tick
|
|
TIMERINFO ENDS
|
|
|
|
KBINFO STRUC
|
|
kbRanges DB 4 dup (0) ; Far East ranges for KANJI
|
|
kbStateSize DW 0 ; #bytes of state info maintained by TOASCII
|
|
KBINFO ENDS
|
|
|
|
|
|
MOUSEINFO STRUC
|
|
msExists DB 0 ; true => mouse exists
|
|
msRelative DB 0 ; true => relative coordinate
|
|
msNumButtons DW 0 ; number of buttons on the mouse
|
|
msRate DW 0 ; maximum rate of mouse input events
|
|
msXThresh DW 0 ; threshold before acceleration
|
|
msYThresh DW 0 ;
|
|
msXRes DW 0 ; x resolution
|
|
msYRes DW 0 ; y resolution
|
|
MOUSEINFO ENDS
|
|
|
|
|
|
CURSORINFO STRUC
|
|
dpXRate DW 0 ; horizontal mickey/pixel ratio
|
|
dpYRate DW 0 ; vertical mickey/pixel ratio
|
|
CURSORINFO ENDS
|
|
|
|
|
|
;***************************************************************************
|
|
; *
|
|
; Cursor data structure passed to OEM routines. Defines a graphics display*
|
|
; cursor in terms of a hotspot, an AND mask and an XOR mask. The hot *
|
|
; spot defines the pixel within the cursor that is the cursor is "pointing"*
|
|
; to. So when displaying a cursor at location X,Y the pixel that *
|
|
; is the hot spot should be painted at that X,Y coordinate. The "shape" *
|
|
; of the cursor is defined by two pixel masks. The first mask is ANDed *
|
|
; with the bits in the display bitmap and the second mask is XORed with *
|
|
; the result to determine the bits that will be placed in the display *
|
|
; bitmap. The bits for the masks are in the byte array that begins *
|
|
; at the csBits field, with the AND mask bits first, followed by the *
|
|
; XOR mask bits. The csWidthBytes field is the width of ONE mask, in *
|
|
; bytes. Currently, MS-WIN will only generate cursors whose width and *
|
|
; height are both 16. *
|
|
; *
|
|
;***************************************************************************
|
|
|
|
cursorShape STRUC
|
|
csHotX DW 0
|
|
csHotY DW 0
|
|
csWidth DW 0
|
|
csHeight DW 0
|
|
csWidthBytes DW 0
|
|
csColor DW 0
|
|
; Beginning of an array of bytes that contain the bits for the AND and
|
|
; XOR masks. The first csHeight * csWidthBytes bytes contain the bits
|
|
; for the AND mask and the next csHeight * csWidthBytes bytes contain
|
|
; the bits for the XOR mask.
|
|
;csBits DB 2*2*16 DUP (?)
|
|
cursorShape ENDS
|