;----------------------------------------------------------- ; Обработка мышки в ASCII окне ; ; вход: hl=Y/X текст. координаты мышки ; d=биты нажатия бутонов ;----------------------------------------------------------- fview_mouse_ascii: ld a,(viewer_mode) ; режим работы вьюера or a jp nz,get_fire ; панельный режим ld bc,AB33F ; точка выхода push bc ld a,h or a ; 0-я строка jp z,get_fire ; верхняя статус. линия cp 31 ; key-бар jr c,fv_ms_ascii ; события в окне ; события key-бара bit 0,d ; правый бутон ? jp nz,get_fire ; да push hl call get_fire ; защита от "залипания" pop hl ld a,l ; X координата cp 8 ret c; ; F1 пункт cp 16 jp c,AB5C8 ; F2 пункт Wrap/UnWrap cp 24 ret c; ; F3 пункт pop bc ; восст. баланс стека (для пункта F4) cp 32 jp c,ABB1C ; F4 пункт HEX-режим push bc ; точку выхода в стек cp 40 ret c; ; F5 пункт cp 48 ret c; ; F6 пункт cp 56 ret c; ; F7 пункт cp 64 jp c,change_code_page ; F8 пункт Смена код. страницы cp 72 ret c; ; F9 пункт ; F10 пункт pop bc ; восст. баланс стека ret ; F10 пункт ; События окна ; вход: hl=Y/X коорд. мышки (Y=1..30, X=0..79) ; d=биты нажатия бутонов fv_ms_ascii: bit 0,d ; правый бутон ? jr nz,fv_ms_ascii_right ; да ld a,h ; X координата cp 16 ; начало нижней половины окна jp c,fv_ms_ascii1 ; на строку вниз call AB987 halt call get_mouse_info and 3 jr nz,$-9 ; бутоны нажаты ld a,evNothing ld (what),a ; список событий ret ; на строку вверх fv_ms_ascii1: call AB81D halt call get_mouse_info and 3 jr nz,$-9 ; бутоны нажаты ld a,evNothing ld (what),a ; список событий ret ; Правый бутон fv_ms_ascii_right: ld a,l ; Y координата cp 40 ; начало правой половины окна jr c,fv_ms_ascii_right1 ; курсор вправо call AB610 halt call get_mouse_info and 3 jr nz,$-9 ; бутоны нажаты ld a,evNothing ld (what),a ; список событий ret ; курсор влево fv_ms_ascii_right1: call AB5FE halt call get_mouse_info and 3 jr nz,$-9 ; бутоны нажаты ld a,evNothing ld (what),a ; список событий ret ;----------------------------------------------------------- ; Обработка мышки в HEX окне ; ; вход: hl=Y/X текст. координаты мышки. ; d=биты нажатия бутонов ;----------------------------------------------------------- fview_mouse_hex: ld a,(viewer_mode) ; режим работы вьюера or a jp nz,get_fire ; панельный режим ld bc,ABB4A ; точка выхода push bc ld a,h or a ; 0-я строка jp z,get_fire ; верхняя статус. линия cp 31 ; key-бар jr c,fv_ms_hex ; события в окне ; события key-бара bit 0,d ; правый бутон ? jp nz,get_fire ; да push hl call get_fire ; защита от "залипания" pop hl ld a,l ; X координата cp 8 ret c; ; F1 пункт cp 16 ret c; ; F2 пункт cp 24 ret c; ; F3 пункт pop bc ; восст. баланс стека (для пункта F4) cp 32 jp c,AB317 ; F4 пункт ASCII-режим push bc ; точку выхода в стек cp 40 jp c,ABDF3 ; F5 пункт Goto... cp 48 ret c; ; F6 пункт cp 56 ret c; ; F7 пункт cp 64 jp c,change_code_page1 ; F8 пункт Смена код. страницы cp 72 ret c; ; F9 пункт ; F10 пункт pop bc ; восст. баланс стека ret ; F10 пункт ; События окна ; вход: hl=Y/X коорд. мышки (Y=1..30, X=0..79) ; d=биты нажатия бутонов fv_ms_hex: bit 0,d ; правый бутон ? ret nz ; да ld a,h ; X координата cp 1 jr nz,$+9 ld a,l ; X координата cp 9 ; на поле ввода адреса ? jp c,ABDF3 ; да, Goto... ld a,h cp 16 ; начало нижней половины окна jp c,fv_ms_hex1 ; на строку вниз call ABCDB halt call get_mouse_info and 3 jr nz,$-9 ; бутоны нажаты ld a,evNothing ld (what),a ; список событий ret ; на строку вверх fv_ms_hex1: call ABC9A halt call get_mouse_info and 3 jr nz,$-9 ; бутоны нажаты ld a,evNothing ld (what),a ; список событий ret ;----------------------------------------------------------- ; Обработка мышки в поле ввода адреса Goto... ; ; вход: hl=Y/X текст. координаты мышки. ; a=биты нажатия бутонов ;----------------------------------------------------------- fview_mouse_goto: ld a,(viewer_mode) ; режим работы вьюера or a jp nz,get_fire ; панельный режим ld bc,ABE29 ; точка выхода push bc ld a,h dec a ; 1-я строка jr nz,$+6 ld a,l ; X координата cp 9 ret c ; остаться в поле ввода pop bc ; восст. баланс стека call get_fire ; панельный режим jp ABF5C ; Esc