windows-nt/Source/XPSP1/NT/base/mvdm/wow16/user/intds.asm
2020-09-26 16:20:57 +08:00

189 lines
4.5 KiB
NASM

;****************************************************************************
;
; This file contains all global data that must be modified at interrupt
; level. Everthing in this file is placed in a fixed data segment
; named INTDATA. Only things that must be accessed and modified at
; interrupt level may be placed in this file. All values here must be
; referenced as FAR in the code.
;
; The creation of this segment allowed USER to eliminate all code segment
; variables. This was needed for protect mode as well as moving USER's
; text segment into HIMEM.
;****************************************************************************
NOEXTERNS = 1
.xlist
include user.inc
.list
createSeg _INTDS, INTDS, BYTE, PUBLIC, DATA
sBegin INTDS
GlobalW hqSysQueue, 00h
ifndef WOW
GlobalW fMouseMoved, 00h
;; GlobalB fAltKeyUp, 80h ; no longer used
GlobalW fInt24 00h ; used for INT24 detection in NCMOUSEDOWN
;
; For Asynchronous key state information.
;
public rgbAsyncKeyState
rgbAsyncKeyState db 64 DUP(0) ; 512 bits of information, 2 per key.
GlobalW fEnableInput, TRUE
endif ; !WOW
GlobalW hqSysModal, 0 ; hq of system modal window
ifndef WOW
;
; These are for the code that always keeps enough room for KEYUP/MOUSEUP msgs.
;
GlobalW cMsgRsrv, 0
GlobalB vKeyDown, 0
;
; Mouse Code Variables
;
GlobalW x_mickey_rate, 0 ; mickeys/pixel ratio for x
GlobalW y_mickey_rate, 0 ; mickeys/pixel ratio for y
GlobalW cur_x_mickey, 0 ; current mickey count in x
GlobalW cur_y_mickey, 0 ; current mickey count in y
GlobalW fSwapButtons, 0 ; TRUE if L/R are to be swapped.
public ptTrueCursor
ptTrueCursor POINT <0, 0> ; interrupt-level cursor position
public ptCursor
ptCursor POINT <0, 0> ; cursor position as of last SkipSysMsg
public rcCursorClip
rcCursorClip RECT <0, 0, 0, 0>
GlobalD dwMouseMoveExtraInfo, 0 ; Extra info for deferred MOUSE MOVE msgs
;
; CS copies of cxScreen, cyScreen for abs mouse scaling
;
GlobalW cxScreenCS, 0
GlobalW cyScreenCS, 0
;
; These are CS copies of msInfo.msXThresh & msYThresh
; (copied at initialization)
;
GlobalW MouseThresh1,0
GlobalW MouseThresh2,0
GlobalW MouseSpeed, 0 ;0 - no accel, 1 - singel accel, 2 - dual accel
ifndef PMODE
;
; Mouse interrupt stack
;
public lpMouseStack
public prevSSSP
public NestCount
endif
lpMouseStack dd ?
prevSSSP dd ? ;Previous stack when inside our hook
NestCount db 0
;
; Hardware level (interrupt) hook addresse. Called from event proc's
;
GlobalW fJournalPlayback, 0 ; != 0 if WH_JOURNALPLAYBACK hook installed
; Table of interrupt-level hotkey hooks
GlobalW cHotKeyHooks, 0
public rghkhHotKeyHooks
rghkhHotKeyHooks dw CHOTKEYHOOKMAX * (size HOTKEYHOOK)/2 dup (0)
; Hardware event hook
GlobalD hwEventHook, NULL
endif ; !WOW
;
; Q management.
;
GlobalW hqList, 0 ; list of allocated queues
GlobalW hqCursor, 0 ; hq of window under cursor
GlobalW hqCapture, 0 ; hq of capture
GlobalW hqActive, 0 ; hq of active window
GlobalW hqMouse, 0 ; hq last to get mouse msg
GlobalW hqKeyboard, 0 ; hq last to get kbd msg
GlobalW cQEntries, 120 ; System queue size
GlobalW hqSysLock 0 ; HQ of guy looking at the current event
GlobalW idSysLock 0ffffh ; Msg ID of event that's locking sys queue
ifndef WOW
;
; Timer management
;
public timerInfo
timerInfo STIMERINFO <0>
;
; Timer related stuff
;
public TimerTable
TimerTable dw (size TIMER)/2 * CTIMERSMAX dup (0)
GlobalW hSysTimer, 0 ; system timer handle
GlobalD tSysTimer, 0 ; system timer time
GlobalW dtSysTimer, 0 ; delta time before next timer goes off
GlobalB fInScanTimers, 0 ; flag to prevent ScanTimers recursion
GlobalW TimerTableMax, 0 ; end of active timer entries
;
; Journalling stuff
;
GlobalD dtJournal, 0 ; dt till next event is ready
GlobalW msgJournal, 0 ; next journal message.
;
; Used in SaveEvent()
;
GlobalB fDontMakeAltUpASysKey 0 ; whether any intervening chars have arrived
;*--------------------------------------------------------------------------*
;* Internal Strings *
;*--------------------------------------------------------------------------*
; These strings reside in user.rc but are loaded at boot time. They must
; remain in user.rc for localization reasons.
endif ; !WOW
public szSysError
public szDivZero
szSysError db 20 DUP(0) ; "System Error"
szDivZero db 50 DUP(0) ; "Divide By Zero or Overflow Error"
ifndef WOW
public szNull
szNull db 0,13
endif ; !WOW
sEnd INTDS
end