|
|
;**************************************************************************** ; ; 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
|