;**
;.Name         ms_handl
;.Title        Драйвер событий
;
;.Descr        Драйвер событий вызывается драйвером мыши,
;              когда происходит какое-нибудь событие из числа
;              заданных при установке драйвера событий.
;              Функция не должна вызываться из программы
;              пользователя, ее вызывает только драйвер мыши.
;
;.Proto        void far ms_handl(void);
;
;.Params       Не используются
;
;.Return       Ничего
;
;.Sample       ms_samp8.c
;**

	DOSSEG
DGROUP  GROUP   _DATA

_DATA   SEGMENT WORD PUBLIC 'DATA'
_DATA   ENDS

_TEXT   SEGMENT WORD PUBLIC 'CODE'
	ASSUME  cs:_TEXT, ds:DGROUP, ss:DGROUP

; Флаг вызова драйвера событий

extrn   _ms_flag:word

; Внешние переменные для записи содержимого регистров

extrn   _ms_bx:word
extrn   _ms_cx:word
extrn   _ms_dx:word
extrn   _ms_si:word
extrn   _ms_di:word
extrn   _ms_ds:word

public  _ms_handl

_ms_handl   proc far

	mov     _ms_ds, ds

; Так как на входе в дрйвер событий регистр DS указывает на
; сегмент данных драйвера мыши, устанавливаем его на сегмент
; данных программы;

	push    ax
	mov     ax, DGROUP
	mov     ds, ax
	pop     ax

	mov     _ms_bx, bx
	mov     _ms_cx, cx
	mov     _ms_dx, dx
	mov     _ms_si, si
	mov     _ms_di, di

; Устанавливаем флаг вызова драйвера в 1, сигнализируя
; программе о том, что произошло событие.

	mov     _ms_flag, 1

	ret

_ms_handl   endp

_TEXT   ENDS

	END
