ZYV
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Спасибо большое за грамотные комментарии!! Всё заработало. Разве только я последним советом не воспользуюсь… Я в asm полный n00b, ну и нужен он мне пока из чисто утилитарных соображений. Будет время – углублю знания. Теперь handler выглядит так: Код: {The handler for the mouse move & buttons} procedure mouse_move_handler; far; assembler; asm { Save ALL registers } db 66h;pusha db 0Fh,0A8h {push gs} db 0Fh,0A0h {push fs} { Load default data segment - destroyed by driver } mov si,seg @DATA mov ds,si push bx { Preserve BX - it's getting corrupted!! } mov ax, mouse_x mov mouse_ox, ax mov ax, mouse_y mov mouse_oy, ax mov mouse_x, cx mov mouse_y, dx call mouse_redraw_cursor mov ax, mouse_right mov mouse_old_right, ax mov ax, mouse_left mov mouse_old_left, ax pop bx {Pop BX from the backup} mov mouse_left, bx mov mouse_right, bx and mouse_left, 0001h and mouse_right, 0002h call mouse_event_move call mouse_event_button { Reload ALL registers } db 0Fh,0A1h {pop fs} db 0Fh,0A9h {pop gs} db 66h;popa end; | Если кому интересно- выложу модуль, когда будет доделан до кондиции. Кстати, вот ещё вопрос… Может вы знаете чем технически отличаются svga256 и svga256m? В последнем у меня всё работает вообще отлично, а вот в первом есть неприятности – при любом раскладе почему-то поле перемещения мыши 640x200 (для режима 640x480) какой бы я режим не ставил… Мне бы хотелось чтобы и там и там работало. Что же мне, отслеживать перемещения в миках? |