forked from KolibriOS/kolibrios
- Move source code from `trunk` into root directory. - Update build files and ASM include paths. Add SPDX license header where appropriate. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden. (Work towards [#75](KolibriOS/kolibrios#75), point 3) Reviewed-on: KolibriOS/kolibrios#433 Reviewed-by: Burer <burer@kolibrios.org> Reviewed-by: Ivan B <1+dunkaist@noreply.localhost> Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com> Co-authored-by: Andrew <dent.ace@gmail.com> Co-committed-by: Andrew <dent.ace@gmail.com>
1808 lines
45 KiB
NASM
1808 lines
45 KiB
NASM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
; Compile with FASM
|
||
; Version 0.3.9: Apr 11, 2020
|
||
|
||
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
||
; All rights reserved.
|
||
; Redistribution and use in source and binary forms, with or without modification,
|
||
; are permitted provided that the following conditions are met:
|
||
; * Redistributions of source code must retain the above copyright notice, this
|
||
; list of conditions and the following disclaimer.
|
||
; * Redistributions in binary form must reproduce the above copyright notice,
|
||
; this list of conditions and the following disclaimer in the documentation and/or
|
||
; other materials provided with the distribution.
|
||
; * Neither the name of the <organization> nor the names of its contributors may
|
||
; be used to endorse or promote products derived from this software without
|
||
; specific prior written permission.
|
||
|
||
; THE SOFTWARE IS PROVIDED УAS ISФ, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||
; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||
; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||
; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||
; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||
; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
; --------------------------------------------------------------------------------------
|
||
|
||
;P.S. ╩юфє ЄЁхсєхЄё юяЄшьшчрЎш ш фюЁрсюЄър (ёь. Єхьє ЇюЁєьр)
|
||
format binary as "" ; Binary file format without extension
|
||
use32 ; Tell compiler to use 32 bit instructions
|
||
org 0 ; the base address of code, always 0x0
|
||
|
||
; Зруюыютюъ шёяюыэ хьюую Їрщыр ╩юышсЁш╬╤
|
||
db 'MENUET01'
|
||
dd 1
|
||
dd START
|
||
dd I_END
|
||
dd MEM
|
||
dd STACKTOP
|
||
dd 0, sys_path
|
||
|
||
; ═рўрыю юсырёЄш ъюфр
|
||
include 'lang.inc' ;яюффхЁцър ч√ъют яЁш ъюьяшы Ўшш
|
||
include '../../macros.inc'
|
||
include '../../proc32.inc'
|
||
include '../../dll.inc'
|
||
include '../../KOSfuncs.inc'
|
||
include '../../develop/libraries/box_lib/box_lib.mac' ;ъюьяюэхэЄ√ checkBox ш editBox
|
||
include '../../load_lib.mac' ;ьръЁюё фы чруЁєчъш сшсышюЄхъ
|
||
@use_library
|
||
|
||
KMENUITEM_NORMAL equ 0
|
||
KMENUITEM_SUBMENU equ 1
|
||
KMENUITEM_SEPARATOR equ 2
|
||
|
||
Otstup = 30
|
||
|
||
START:
|
||
call copyKill ;яЁюёЄхщ°р▀ чр∙шЄр юЄ чряєёър тЄюЁющ ъюяшш яЁшыюцхэш▀
|
||
mcall 68, 11 ;шэшЎшрышчрЎш▀ ъєўш
|
||
|
||
;mcall 48,3,sc,sizeof.system_colors ;яюыєўшЄ№ ёшёЄхьэ√х ЎтхЄр
|
||
mov eax,48 ;яюыєўшЄ№ ёшёЄхьэ√х ЎтхЄр
|
||
mov ebx,3
|
||
mov ecx, sc
|
||
mov edx, sizeof.system_colors
|
||
mcall
|
||
|
||
stdcall dll.Load, @IMPORT
|
||
or eax, eax
|
||
jnz exit
|
||
|
||
mov eax,40 ;єёЄрэютшЄ№ ьрёъє фы▀ юцшфрхь√ї ёюс√Єшщ
|
||
mov ebx,0x27 ;ёшёЄхьр сєфхЄ ЁхрушЁютрЄ№ Єюы№ъю эр ёююс∙хэшх ю яхЁхЁшёютъх, эрцрЄр ъэюяър, юяЁхфхы▐ээр▀ Ёрэхх, ёюс√Єшх юЄ ь√°ш (ўЄю-Єю ёыєўшыюё№ - эрцрЄшх эр ъэюяъє ь√°ш шыш яхЁхьх∙хэшх; ёсЁрё√трхЄё▀ яЁш яЁюўЄхэшш)
|
||
mcall
|
||
|
||
load_libraries l_libs_start,load_lib_end ;чруЁєчър сшсышюЄхъ(ш)
|
||
stdcall [OpenDialog_Init],OpenDialog_data ;яюфуюЄютър фшрыюур
|
||
|
||
;mode menu
|
||
stdcall [kmenu_init], sc ;kmenu initialisation
|
||
stdcall [ksubmenu_new]
|
||
mov [modeMenu], eax
|
||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu0, 110
|
||
stdcall [ksubmenu_add], [modeMenu], eax
|
||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu1, 111
|
||
stdcall [ksubmenu_add], [modeMenu], eax
|
||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu2, 112
|
||
stdcall [ksubmenu_add], [modeMenu], eax
|
||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu3, 113
|
||
stdcall [ksubmenu_add], [modeMenu], eax
|
||
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, valueModeMenu1, [modeMenu]
|
||
|
||
call loadConfig ;чруЁєцрхь ъюэЇшуєЁрЎш■ шч Їрщыр, хёыш эхЄ - Єю т√ёЄрты▀хь ярЁрьхЄЁ√ яю єьюыўрэш■
|
||
call draw_window ;юЄЁшёютрЄ№ юъэю яЁшыюцхэш▀
|
||
|
||
; ╬сЁрсюЄър Ўшъыр ёюс√Єшщ
|
||
event_wait:
|
||
mov eax, 10 ; function 10 : wait until event
|
||
mcall ; event type is returned in eax
|
||
|
||
cmp eax, 1 ; Event redraw request ?
|
||
je red ; Expl.: there has been activity on screen and
|
||
; parts of the applications has to be redrawn.
|
||
|
||
cmp eax, 2 ; Event key in buffer ?
|
||
je key ; Expl.: User has pressed a key while the
|
||
; app is at the top of the window stack.
|
||
|
||
cmp eax, 3 ; Event button in buffer ?
|
||
je button ; Expl.: User has pressed one of the
|
||
; applications buttons.
|
||
|
||
invoke edit_box_mouse, editLU ;яЁютхЁър ёюс√Єшщ ь√°ш фы▀ editBox'ют
|
||
invoke edit_box_mouse, editLD
|
||
invoke edit_box_mouse, editRU
|
||
invoke edit_box_mouse, editRD
|
||
;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;яЁютхЁър ь√°ш фы▀ ъюьсюсюъёр
|
||
invoke edit_box_mouse, editRadius
|
||
|
||
jmp event_wait
|
||
|
||
|
||
red: ;юсЁрсюЄър ёюс√Єш▀ яхЁхЁшёютъш юъэр
|
||
call draw_window
|
||
jmp event_wait
|
||
|
||
key: ; Keypress event handler
|
||
mov eax, 2 ; The key is returned in ah. The key must be
|
||
mcall ; read and cleared from the system queue.
|
||
|
||
invoke edit_box_key, editLU
|
||
invoke edit_box_key, editLD
|
||
invoke edit_box_key, editRU
|
||
invoke edit_box_key, editRD
|
||
invoke edit_box_key, editRadius
|
||
|
||
cmp eax, 1
|
||
je event_wait
|
||
cmp word[hkSymbol], 0
|
||
jne event_wait
|
||
cmp al, 0
|
||
jne .next
|
||
mov byte[hkSymbol], ah
|
||
|
||
push eax ecx esi ;ёюїЁрэ▀хь ёърэъюф ъыртш°ш
|
||
shr eax, 16
|
||
mov byte[keyscan], al
|
||
mov ecx, 0
|
||
mov cl, al ;byte[keyscan]
|
||
mov esi, keystr.data
|
||
call IntToStr
|
||
|
||
;ёўшЄрхь яюыєўхээ√щ ЁрчьхЁ ёЄЁюъш
|
||
xor ecx, ecx
|
||
mov esi, keystr.data
|
||
@@:
|
||
cmp byte[esi], 0
|
||
je @f
|
||
inc esi
|
||
inc ecx
|
||
;cmp ecx, 4
|
||
;je @f
|
||
jmp @b
|
||
@@:
|
||
;ш ёюїЁрэ▀хь хую
|
||
mov dword[keystr.size], ecx
|
||
|
||
pop esi ecx eax
|
||
jmp red
|
||
.next:
|
||
;cmp al, 2
|
||
;jne @f
|
||
;cmp ah, 0
|
||
;jne @f
|
||
;ёўшЄ√трхь єяЁрты▀■∙шх ъыртш°ш
|
||
;shr eax, 16
|
||
;bt eax, 0 ;left shift
|
||
;jne @f
|
||
;mov byte[hkSymbol], 2
|
||
;jmp red
|
||
@@:
|
||
jmp event_wait ; Just read the key, ignore it and jump to event_wait.
|
||
|
||
button: ; Buttonpress event handler
|
||
mov eax,17 ; The button number defined in window_draw
|
||
mcall ; is returned to ah.
|
||
|
||
cmp ah,1 ; button id=1 ?
|
||
jne noclose
|
||
exit:
|
||
mov eax,-1 ; Function -1 : close this program
|
||
mcall
|
||
noclose:
|
||
cmp ah, 2 ;ъэюяър "╧ЁшьхэшЄ№"
|
||
jne @f ;butend
|
||
call applyButton ;т√чют эр°хую юсЁрсюЄўшър эрцрЄш▀ ъэюяъш
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 4
|
||
jne @f
|
||
mov byte[editID], 4
|
||
call but_open_dlg
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 5
|
||
jne @f
|
||
mov byte[editID], 5
|
||
call but_open_dlg
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 6
|
||
jne @f
|
||
mov byte[editID], 6
|
||
call but_open_dlg
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 7
|
||
jne @f
|
||
mov byte[editID], 7
|
||
call but_open_dlg
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 8
|
||
jne @f
|
||
push eax ebx ecx
|
||
mcall 9, pi, -1 ;get window coord
|
||
|
||
mov eax, dword[pi+34]
|
||
add eax, buttonModeX ;+ 5
|
||
mov word[coordModeMenu.x], ax
|
||
|
||
mov eax, dword[pi+38]
|
||
add eax, buttonModeY + 20 ;20 - ¤Єю ёьх∙хэшх тёяы√тр■∙хую ьхэ■
|
||
mov word[coordModeMenu.y], ax
|
||
|
||
stdcall [ksubmenu_draw], [modeMenu], coordModeMenu
|
||
pop ecx ebx eax
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 9
|
||
jne @f
|
||
mov word[hkSymbol], 0
|
||
jmp red ;event_wait
|
||
@@:
|
||
cmp ah, 110
|
||
jne @f
|
||
mov byte[mode], 48 ;'0'
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 111
|
||
jne @f
|
||
mov byte[mode], 49 ;'1'
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 112
|
||
jne @f
|
||
mov byte[mode], 50 ;'2'
|
||
jmp event_wait
|
||
@@:
|
||
cmp ah, 113
|
||
jne @f
|
||
mov byte[mode], 51 ;'3'
|
||
jmp event_wait
|
||
@@:
|
||
butend:
|
||
jmp event_wait ;this is for ignored events, useful at development
|
||
|
||
|
||
|
||
;шь▀ ъюэЇшуєЁрЎшюээюую Їрщыр
|
||
fileName: db 'SETTINGS/HA.CFG', 0
|
||
|
||
;ёЄЁєъЄєЁр фы▀ ёючфрэш▀/яхЁхчряшёш Їрщыр
|
||
createFile:
|
||
.func dd 2 ;эюьхЁ яюфЇєэъЎшш
|
||
.re dd 0, 0 ;чрЁхчхЁтшЁютрэю
|
||
.size dd 0 ;ёъюы№ъю срщЄ яшёрЄ№
|
||
.data_adr dd 0 ;єърчрЄхы№ эр фрээ√х
|
||
.path db 0
|
||
.path_adr dd fileName ;яєЄ№
|
||
|
||
;ёЄЁюър ярЁрьхЄЁют яю єьюыўрэш■ ш х▐ ЁрчьхЁ
|
||
defaultDataForConfig db 121,13,10,'/sys/HACONFIG',13,10,'/sys/HACONFIG',13,10,'/sys/HACONFIG',13,10,'/sys/HACONFIG',13,10,'Space',13,10,'57',13,10,'10',13,10,'s',13,10
|
||
defaultDataSize = 85 ;48+19+4
|
||
|
||
|
||
copyParam: ;ъюяшЁєхЄ ярЁрьхЄЁ(ъюьрэфє чряєёър) т сєЇхЁ (ёь. фры№°х)
|
||
push esi ebx ecx
|
||
mov ecx, dword[ebx] ;ўшЄрхь ЁрчьхЁ ёЄЁюъш
|
||
|
||
cmp ecx, 0 ;яєёЄр ыш ёЄЁюър?
|
||
jne copyParam.copy ;хёыш эхЄ, Єю яхЁхїюфшь ъ ъюяшЁютрэш■ ёюфхЁцшьюую ёЄЁюъш (ъ Ўшъыє)
|
||
|
||
mov byte[eax], '-' ;хёыш цх яєёЄю, Єю чрьхэ▀хь ёшьтюыюь ьшэєё '-'
|
||
inc eax
|
||
;jmp copyParam.copyEnd ;ш т√їюфшь
|
||
;фрыхх т эрўрых Ўшъыр яЁюшчющф▐Є ёЁртэхэшх ш т√їюф
|
||
|
||
.copy: ;ъюяшЁєхь ёшьтюы√
|
||
cmp ecx, 0
|
||
je copyParam.copyEnd
|
||
mov bl, byte[esi]
|
||
mov byte[eax], bl
|
||
dec ecx
|
||
inc eax
|
||
inc esi
|
||
jmp copyParam.copy
|
||
.copyEnd:
|
||
pop ecx ebx esi
|
||
ret
|
||
|
||
|
||
addPerenos: ;фюсрты▀хЄ яхЁхэюё ёЄЁюъш т сєЇхЁ
|
||
mov byte[eax], 13
|
||
inc eax
|
||
mov byte[eax], 10
|
||
inc eax
|
||
ret
|
||
|
||
;юсЁрсюЄўшъ ъэюяъш "╧ЁшьхэшЄ№"
|
||
applyButton:
|
||
push eax ebx ecx
|
||
;mov dword[createFile.data_adr], defaultDataForConfig
|
||
;mov dword[createFile.size], defaultDataSize
|
||
|
||
;т√ўшёышь ЁрчьхЁ Їрщыр ъюэЇшуєЁрЎшш т срщЄрї
|
||
mov ecx, 9*2+1 ;1 срщЄ эр ёюёЄю▀эшх ръЄштэюёЄш ш 9 ярЁ яхЁхэюёют ёЄЁюъ (ёшьтюы√ 13, 10)
|
||
add ecx, dword[editLU.size] ;яы■ё ЁрчьхЁ ърцфющ ёЄЁюъш т срщЄрї
|
||
add ecx, dword[editLD.size]
|
||
add ecx, dword[editRU.size]
|
||
add ecx, dword[editRD.size] ;dataBuffer.size4]
|
||
add ecx, dword[editRadius.size]
|
||
add ecx, dword[hkSize] ;ЁрчьхЁ шьхэш ръЄштрЎшюээющ ъэюяъш
|
||
add ecx, dword[keystr.size] ;ЁрчьхЁ ёърэъюфр ръЄштрЎшюээющ ъэюяъш
|
||
inc ecx ; х∙▐ 1 срщЄ фы▀ їЁрэхэш▀ ЁрчьхЁр ¤ыхьхэЄют
|
||
|
||
;cmp dword[keystr.size], 3
|
||
;jbe @f
|
||
;mcall -1
|
||
;@@:
|
||
|
||
;хёыш чрфрэ√ яєёЄ√х ёЄЁюъш, Єю ь√ ртЄюьрЄшўхёъш фюсрты▀хь чэръ ьшэєё, чэрўшЄ ЁрчьхЁ +1 срщЄ
|
||
cmp dword[editLU.size], 0
|
||
jne @f
|
||
inc ecx
|
||
@@:
|
||
cmp dword[editLD.size], 0
|
||
jne @f
|
||
inc ecx
|
||
@@:
|
||
cmp dword[editRU.size], 0
|
||
jne @f
|
||
inc ecx
|
||
@@:
|
||
cmp dword[editRD.size], 0
|
||
jne @f
|
||
inc ecx
|
||
@@:
|
||
|
||
;ЄхяхЁ№ ЁрчьхЁ Їрщыр ъюэЇшуєЁрЎшш т ecx
|
||
mov dword[createFile.size], ecx ;яюыюцшь ЁрчьхЁ срщЄ т ёЄЁєъЄєЁє ёючфрэш▀/яхЁхчряшёш Їрщыр
|
||
mcall 68, 12, ecx ;т√фхы▀хь сыюъ ярь▀Єш яюф сєЇхЁ ёюфхЁцшьюую
|
||
mov dword[createFile.data_adr], eax ;ёюїЁрэ▀хь рфЁхё сєЇхЁр т ёЄЁєъЄєЁє
|
||
|
||
;чряюыэшь сєЇхЁ ёюфхЁцшьюую:
|
||
push ebx ;ёюїЁрэ▀хь т√сЁрээ√щ Ёхцшь
|
||
mov bl, byte[mode]
|
||
mov byte[eax], bl
|
||
pop ebx
|
||
|
||
inc eax
|
||
call addPerenos
|
||
|
||
push esi ebx
|
||
call UpdateEditsSizes ;юсэютшЄ№ ЁрчьхЁ√ ЄхъёЄр т edit'рї
|
||
|
||
mov esi, dataBuffer.1 ;editLU.text
|
||
mov ebx, dataBuffer.size1 ;editLU.size
|
||
call copyParam
|
||
call addPerenos ;фюсрты▀хь яхЁхэюё ёЄЁюъш
|
||
|
||
mov esi, dataBuffer.2
|
||
mov ebx, dataBuffer.size2
|
||
call copyParam
|
||
call addPerenos ;фюсрты▀хь яхЁхэюё ёЄЁюъш
|
||
|
||
mov esi, dataBuffer.3
|
||
mov ebx, dataBuffer.size3
|
||
call copyParam
|
||
call addPerenos ;фюсрты▀хь яхЁхэюё ёЄЁюъш
|
||
|
||
mov esi, dataBuffer.4
|
||
mov ebx, dataBuffer.size4
|
||
call copyParam
|
||
call addPerenos ;фюсрты▀хь яхЁхэюё ёЄЁюъш
|
||
|
||
;ёюїЁрэ▀хь ъэюяъє ръЄштрЎшш
|
||
call saveKey
|
||
call addPerenos
|
||
|
||
;ёюїЁрэ▀хь ёърэъюф ъэюяъш
|
||
mov esi, keystr.data ;чряшё√трхь ёЄЁюъє keystr т Їрщы
|
||
xor ebx, ebx
|
||
@@:
|
||
cmp byte[esi], 0
|
||
je @f
|
||
mov bl, byte[esi]
|
||
mov byte[eax], bl
|
||
inc eax
|
||
inc esi
|
||
cmp esi, keystr.size-1
|
||
jae @f
|
||
jmp @b
|
||
@@:
|
||
call addPerenos
|
||
|
||
;ёюїЁрэ▀хь Ёрфшєё
|
||
;!!! хёыш Ёрфшєё юёЄртыхэ яєёЄ√ь, Єю эєцэю ёюїЁрэ▀Є№ чэрўхэшх яю єьюыўрэш■ (ёхщўрё яш°хЄё▀ '-')
|
||
mov esi, radiusBuffer.data
|
||
mov ebx, editRadius.size ;radiusBuffer.size
|
||
call copyParam
|
||
call addPerenos
|
||
|
||
;фюсрты▀хь ЁрчьхЁ ¤ыхьхэЄют
|
||
push ebx ;ёюїЁрэ▀хь т√сЁрээ√щ Ёхцшь
|
||
mov bl, byte[sizeStyle]
|
||
mov byte[eax], bl
|
||
pop ebx
|
||
inc eax
|
||
call addPerenos
|
||
|
||
pop ebx esi
|
||
|
||
|
||
mov ebx, createFile
|
||
mcall 70
|
||
cmp eax, 0
|
||
je .end
|
||
;шэрўх чфхё№ эєцэю т√тхёЄш юъэю ё ю°шсъющ !!!
|
||
.end:
|
||
mcall 68, 13, dword[createFile.data_adr] ;юётюсюцфрхь ярь▀Є№ яюф сєЇхЁ
|
||
call finishHotAnglesApp ;чртхЁ°рхь ЁрсюЄє тёхї ъюяшщ ёхЁтшёр @HA
|
||
call loadConfig ;яхЁхчруЁєцрхь Їрщы ъюэЇшур
|
||
call draw_window ;яхЁхЁшёют√трхь юъэю
|
||
call startHotAnglesApp ;яхЁхчряєёърхь @HA
|
||
pop ecx ebx eax
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
compareBytes2:
|
||
push edi esi ecx ebx
|
||
xor eax, eax
|
||
mov ecx, 10 ;max ЁрчьхЁ ёЄЁюъ 11
|
||
@@:
|
||
mov bl, byte[edi]
|
||
cmp bl, byte[esi]
|
||
jne compareBytes.no
|
||
inc edi
|
||
inc esi
|
||
cmp ecx, 0
|
||
je @f
|
||
dec ecx
|
||
jmp @b
|
||
.no:
|
||
mov eax, 1
|
||
@@:
|
||
pop ebx ecx esi edi
|
||
ret
|
||
|
||
|
||
finishHotAnglesApp:
|
||
;эрїюфшь тёх ъюяшш яЁшыюцхэш▀ яю шьхэш ш чртхЁ°рхь шї
|
||
push eax ebx ecx esi edi
|
||
;єърчрЄхыш, ъюЄюЁ√х эшъюуфр эх ьхэ▀■Єё▀:
|
||
mov esi, startAppData.file_name ;яхЁтр▀ ёЄЁюър - шёъюьюх шь▀ яЁшыюцхэш▀
|
||
mov edi, buf ;тЄюЁр▀ ёЄЁюър - шь▀ Єхъє∙хую ёыюЄр
|
||
add edi, 10
|
||
|
||
mov ecx, 1
|
||
@@:
|
||
mcall 9, buf, ecx ;яюыєўрхь фрээ√х юўхЁхфэюую ёыюЄр
|
||
mov dword[slotMax], eax
|
||
|
||
call compareBytes2 ;ёЁртэштрхь шь▀
|
||
cmp eax, 0
|
||
jne finishHotAnglesApp.next ;хёыш эх ёютярыю, Єю яхЁхїюфшь эр ёыхфє■∙шщ ёыюЄ
|
||
|
||
mcall 18, 2, ecx ;шэрўх чртхЁ°рхь ёыюЄ
|
||
.next:
|
||
inc ecx
|
||
cmp ecx, dword[slotMax]
|
||
ja @f
|
||
jmp @b
|
||
@@:
|
||
pop edi esi ecx ebx eax
|
||
ret
|
||
|
||
startHotAnglesApp:
|
||
;чряєёърхь яЁшыюцхэшх чрэютю
|
||
push eax ebx
|
||
mcall 70, startAppData
|
||
cmp eax, 0
|
||
ja @f ;хёыш eax>0, Єю єёях°эю чряє∙хэю
|
||
;!!! шэрўх ЄєЄ яхўрЄрхь ю°шсъє
|
||
@@:
|
||
pop ebx eax
|
||
ret
|
||
|
||
startAppData:
|
||
.subfunction dd 7
|
||
.flags dd 0
|
||
.param dd 0
|
||
.rezerv dd 0, 0
|
||
.full_name db '/sys/'
|
||
.file_name db '@HA', 0
|
||
|
||
UpdateEditsSizes:
|
||
push eax
|
||
mov eax, dword[editLU.size]
|
||
mov dword[dataBuffer.size1], eax
|
||
|
||
mov eax, dword[editLD.size]
|
||
mov dword[dataBuffer.size2], eax
|
||
|
||
mov eax, dword[editRU.size]
|
||
mov dword[dataBuffer.size3], eax
|
||
|
||
mov eax, dword[editRD.size]
|
||
mov dword[dataBuffer.size4], eax
|
||
|
||
mov eax, dword[editRadius.size]
|
||
mov dword[radiusBuffer.size], eax
|
||
|
||
pop eax
|
||
ret
|
||
|
||
fileAdr dd 0
|
||
|
||
loadConfig:
|
||
push eax ebx ecx edx
|
||
mcall 68, 27, fileName ;чруЁєцрхь ъюэЇшуєЁрЎшюээ√щ Їрщы т ╬╟╙
|
||
mov dword[fileAdr], eax ;ёюїЁрэ▀хь рфЁхё сыюър ярь▀Єш Їрщыр
|
||
cmp eax, 0
|
||
je loadConfig.default ;хёыш Їрщыр ъюэЇшуєЁрЎшш эхЄ, Єю ёЄртшь эрёЄЁющъш яю єьюыўрэш■
|
||
;шэрўх фрээ√х чруЁєцхэ√ т ╬╟╙, ЁрчьхЁ т edx
|
||
cmp edx, 0 ;хёыш Їрщы яєёЄ, т э▐ь эхЄ фрээ√ї, Єю ёЄртшь эрёЄЁющъш яю єьюыўрэш■
|
||
je loadConfig.default
|
||
.start:
|
||
add edx, eax ;ъырф▐ь т edx - рфЁхё ъюэЎр ъюэЇшу.фрээ√ї
|
||
|
||
.chStart:
|
||
|
||
push ebx
|
||
mov bl, byte[eax]
|
||
cmp bl, 48 ; хёыш чэрўхэшх т√їюфшЄ чр фюяєёЄшь√х яЁхфхы√, Єю яЁютхЁ▀хь эр 'n' (фы▀ ёютьхёЄшьюёЄш)
|
||
jb loadConfig.checkN
|
||
cmp bl, 51
|
||
ja loadConfig.checkN
|
||
|
||
mov byte[mode], bl ;шэрўх єёЄрэртыштрхь ¤ЄюЄ Ёхцшь ъръ хёЄ№
|
||
jmp loadConfig.modeEnd ;ш шф▐ь фры№°х
|
||
.checkN:
|
||
cmp bl, 'n' ;хёыш n - Єю Ёхцшь "юЄъы■ўхэю"
|
||
jne @f
|
||
mov byte[mode], 48 ;'0'
|
||
jmp loadConfig.modeEnd
|
||
@@:
|
||
cmp bl, 'y' ;хёыш y - Єю ъырёёшўхёъшщ Ёхцшь
|
||
jne @f
|
||
mov byte[mode], 49 ;'1'
|
||
jmp loadConfig.modeEnd
|
||
@@:
|
||
mov byte[mode], 48 ;'0' шэрўх яю єьюыўрэш■ юЄъы■ўхэю
|
||
;mov byte[mode], 49 ;'1' шэрўх яю єьюыўрэш■ тъы■ў▐э ъырёёшўхёъшщ Ёхцшь ЁрсюЄ√
|
||
.modeEnd:
|
||
pop ebx
|
||
;jmp loadConfig.end ;ъюьрэфр фы▀ єфюсёЄтр юЄырфъш ш яюшёър ю°шсюъ
|
||
|
||
;ъюяшЁєхь ёюфхЁцшьюх ёЄЁюъ т сєЇхЁ
|
||
push edi esi ecx ebx eax
|
||
;шэшЎшрышчшЁєхь єърчрЄхыш эр рфЁхёр сєЇхЁр ёЄЁюъш ш х▐ ЁрчьхЁр
|
||
mov edi, dataBuffer.1
|
||
mov esi, dataBuffer.size1
|
||
;ecx - ёў▐Єўшъ срщЄ т ёЄЁюъх
|
||
.block:
|
||
xor ecx, ecx ;юсэєы▀хь ёў▐Єўшъ
|
||
inc eax
|
||
cmp byte[eax], 10 ;хёыш юўхЁхфэющ ъюф ёшьтюыр 10 шыш 13, Єю яЁюяєёърхь ёшьтюы√
|
||
je loadConfig.block ;фю яхЁтюую юЄышўэюую юЄ эшї
|
||
cmp byte[eax], 13
|
||
je loadConfig.block
|
||
|
||
; ёшьтюы юЄышўхэ юЄ яхЁхэюёр ёЄЁюъш ш тючтЁрЄр ърЁхЄъш - эрўшэрхь ъюяшЁютрЄ№ юЄё■фр т сєЇхЁ
|
||
mov bl, byte[eax]
|
||
mov byte[edi], bl
|
||
inc edi
|
||
inc eax
|
||
inc ecx ;єтхышўштрхь ёў▐Єўшъ ёшьтюыют т ёЄЁюъх
|
||
|
||
;шф▐ь фю ъюэЎр ¤Єющ ёЄЁюъш: яюър эх тёЄЁхЄшь юўхЁхфэющ 10, 13, 0 шыш file end
|
||
.while: ;ш ъюяшЁєхь тё▐ т сєЇхЁ
|
||
cmp eax, edx ;яЁютхЁ▀хь чръюэўшыё▀ ыш Їрщы, р ъюэЎр ёЄЁюъш эх с√ыю !!!
|
||
ja loadConfig.ura
|
||
cmp byte[eax], 10
|
||
je loadConfig.ura
|
||
cmp byte[eax], 0
|
||
je loadConfig.ura
|
||
cmp byte[eax], 13
|
||
je loadConfig.ura
|
||
|
||
mov bl, byte[eax]
|
||
mov byte[edi], bl
|
||
inc edi
|
||
inc eax
|
||
inc ecx
|
||
cmp ecx, 511
|
||
jae loadConfig.ura
|
||
jmp loadConfig.while
|
||
.ura:
|
||
mov byte[edi], 0 ;ъырф▐ь чртхЁ°р■∙шщ 0 т ёЄЁюъє
|
||
mov dword[esi], ecx ;ёюїЁрэ▀хь ЁрчьхЁ ёЄЁюъш
|
||
add esi, 4 ;яхЁхїюфшь эр ЁрчьхЁ ёыхфє■∙хую сєЇхЁр
|
||
sub edi, ecx ;яхЁхїюфшь эр ёыхфє■∙шщ сєЇхЁ
|
||
add edi, 512
|
||
;xor ecx, ecx ;юсэєы▀хь ЁрчьхЁ ёЄЁюъш
|
||
|
||
cmp edi, dataBuffer.size1 ;хёыш ¤Єю с√ы яюёыхфэшщ сєЇхЁ (ш ь√ т√°ыш чр рфЁхёр ЁрчьхЁют сєЇхЁют), Єю т√їюфшь
|
||
jb loadConfig.block
|
||
|
||
call readOptKey ;ёўшЄ√трхь ъыртш°є
|
||
call gotoEndString
|
||
|
||
;ёўшЄ√трхь ёърэъюф ъыртш°ш
|
||
call readScanKey
|
||
call gotoEndString
|
||
|
||
call readOptRadius ;ёўшЄ√трхь чэрўхэшх Ёрфшєёр фы▀ mode 3
|
||
call gotoEndString
|
||
call readOptSize ;ёўшЄ√трхь ЁрчьхЁ ¤ыхьхэЄют
|
||
call gotoEndString
|
||
|
||
pop eax ebx ecx esi edi
|
||
|
||
jmp loadConfig.end
|
||
.default:
|
||
mov eax, defaultDataForConfig
|
||
mov edx, defaultDataSize
|
||
jmp loadConfig.start
|
||
.end:
|
||
mov ecx, dword[fileAdr] ;хёыш Їрщы с√ы чруЁєцхэ, Єю
|
||
cmp ecx, 0
|
||
je @f
|
||
mcall 68, 13, ecx ;т√уЁєцрхь Їрщы шч ярь▀Єш
|
||
@@:
|
||
call updateParams ;яЁшьхэ▀хь эрёЄЁющъш ърцфюую сєЇхЁр
|
||
call setMySize ;яЁшьхэ▀хь эрёЄЁющъш ЁрчьхЁр ¤ыхьхэЄют
|
||
pop edx ecx ebx eax
|
||
ret
|
||
|
||
|
||
setMySize:
|
||
push eax
|
||
;т√ёЄрты▀хь mysize т чртшёшьюёЄш юЄ чэрўхэш▀ sizeStyle
|
||
cmp byte[sizeStyle], '0'
|
||
jb @f
|
||
cmp byte[sizeStyle], '7'
|
||
ja @f
|
||
mov eax, 0 ;хёыш чэрўхэшх ЁрчьхЁр чрфрэю, Єю хую ш т√ёЄрты▀хь
|
||
mov al, byte[sizeStyle]
|
||
sub al, '0'
|
||
jmp .end
|
||
@@:
|
||
cmp byte[sizeStyle], 'a'
|
||
je .auto
|
||
;cmp byte[sizeStyle], 's'
|
||
;je .system
|
||
.system: ;шэрўх чэрўхэшх яю єьюыўрэш■: s - ёшёЄхьэр▀
|
||
; push ebx ecx
|
||
;!!!
|
||
; mov eax, 9
|
||
; mcall 48, 11 ;яюыєўрхь ёшёЄхьэ√щ ЁрчьхЁ °ЁшЇЄр
|
||
;eax - т√ёюЄр °ЁшЇЄр т яшъёхы▀ї
|
||
; mov ecx, eax
|
||
; push eax
|
||
; mcall 48, 12, ecx ;яЁшьхэ▀хь ЁрчьхЁ °ЁшЇЄр
|
||
; pop eax
|
||
; pop ecx ebx
|
||
;temp fix - фхышь эр Єхъє∙шщ ЁрчьхЁ °ЁшЇЄр and -1
|
||
; push ebx edx
|
||
; mov ebx, 9
|
||
;div ebx
|
||
; pop edx ebx
|
||
;cmp eax, 0
|
||
;je .end
|
||
;dec eax
|
||
mov eax, 0 ;xor eax, eax ;test temp
|
||
jmp .end
|
||
.auto: ;a - т√ёЄрты▀хь т чртшёшьюёЄш юЄ ЁрчЁх°хэш▀ ¤ъЁрэр
|
||
;!!!
|
||
mcall 14
|
||
push ebx
|
||
xor ebx, ebx
|
||
mov bx, ax
|
||
shr eax, 16
|
||
cmp ax, bx ;яюыєўрхь сюы№°шщ ЁрчьхЁ ёЄюЁюэ√
|
||
jae .a
|
||
mov ax, bx
|
||
.a:
|
||
pop ebx
|
||
cmp ax, 1919 ;ЁрчьхЁ√ яюыєўхээ√х т√°х юЄ 0 ш эр 1 ьхэ№°х
|
||
jb .size0
|
||
cmp ax, 2047
|
||
jb .size1
|
||
cmp ax, 4095
|
||
jb .size2
|
||
cmp ax, 8191
|
||
jb .size3
|
||
|
||
jmp .size4
|
||
|
||
.size0:
|
||
mov eax, 0
|
||
jmp .end
|
||
.size1:
|
||
mov eax, 1
|
||
jmp .end
|
||
.size2:
|
||
mov eax, 2
|
||
jmp .end
|
||
.size3:
|
||
mov eax, 3
|
||
jmp .end
|
||
.size4:
|
||
mov eax, 4
|
||
jmp .end
|
||
.size5:
|
||
mov eax, 5
|
||
jmp .end
|
||
.size6:
|
||
mov eax, 6
|
||
jmp .end
|
||
.size7:
|
||
mov eax, 7
|
||
jmp .end
|
||
|
||
;.default:
|
||
; mov eax, 1
|
||
.end:
|
||
mov byte[mysize], al ;mov dword[mysize], eax
|
||
pop eax
|
||
ret
|
||
|
||
|
||
readScanKey:
|
||
;яЁюяєёърхь яхЁхэюё√ ёЄЁюъ т эрўрых
|
||
cmp eax, edx ;хёыш Їрщы чръюэўшыё▀, Єю
|
||
ja .default ;эрёЄЁющъш яю єьюыўрэш■
|
||
cmp byte[eax], 10
|
||
je @f
|
||
cmp byte[eax], 0
|
||
je @f
|
||
cmp byte[eax], 13
|
||
je @f
|
||
|
||
push ecx ebx esi
|
||
mov ecx, 0 ;xor ecx, ecx
|
||
mov esi, keystr.data
|
||
.copy:
|
||
mov bl, byte[eax]
|
||
cmp bl, 0
|
||
je .copyEnd
|
||
cmp bl, 10
|
||
je .copyEnd
|
||
cmp bl, 13
|
||
je .copyEnd
|
||
cmp esi, keystr.size-1
|
||
jae .copyEnd
|
||
mov byte[esi], bl
|
||
inc esi
|
||
inc eax
|
||
inc ecx
|
||
jmp .copy
|
||
.copyEnd:
|
||
mov byte[esi], 0
|
||
mov dword[keystr.size], ecx
|
||
pop esi ebx ecx
|
||
|
||
jmp .end
|
||
@@:
|
||
inc eax
|
||
jmp readScanKey
|
||
.default:
|
||
mov byte[keyscan], 57
|
||
mov word[keystr.data], '57'
|
||
mov byte[keystr.data+2], 0
|
||
mov dword[keystr.size], 2
|
||
.end:
|
||
ret
|
||
|
||
readOptKey: ;1;3;4;5 - space or shift
|
||
;яЁюяєёърхь яхЁхэюё√ ёЄЁюъ т эрўрых
|
||
cmp eax, edx ;хёыш Їрщы чръюэўшыё▀, Єю
|
||
ja .default ;эрёЄЁющъш яю єьюыўрэш■
|
||
cmp byte[eax], 10
|
||
je @f
|
||
cmp byte[eax], 0
|
||
je @f
|
||
cmp byte[eax], 13
|
||
je @f
|
||
;шэрўх ўшЄрхь ъыртш°є ш т√їюфшь
|
||
cmp dword[eax], 'Ctrl'
|
||
jne .notCtrl
|
||
mov byte[hkSymbol], 3
|
||
mov dword[hkSize], 4
|
||
jmp .end
|
||
.notCtrl:
|
||
cmp dword[eax], 'Shif'
|
||
jne .notShift
|
||
mov byte[hkSymbol], 2
|
||
mov dword[hkSize], 5
|
||
jmp .end
|
||
.notShift:
|
||
cmp dword[eax], 'Spac'
|
||
jne .notSpace
|
||
mov byte[hkSymbol], 32
|
||
mov dword[hkSize], 5
|
||
jmp .end
|
||
.notSpace:
|
||
cmp word[eax], 'Al'
|
||
jne .notAlt
|
||
mov byte[hkSymbol], 1
|
||
mov dword[hkSize], 3
|
||
jmp .end
|
||
.notAlt:
|
||
;єсхфшьё▀, ўЄю Єрь 1 ёшьтюы, р эх ёЄЁюър
|
||
cmp byte[eax+1], 10
|
||
je .oneSymb
|
||
cmp byte[eax+1], 0
|
||
je .oneSymb
|
||
cmp byte[eax+1], 13
|
||
je .oneSymb
|
||
jmp .default
|
||
.oneSymb:
|
||
;яЁютхЁ▀хь, ўЄю ёшьтюы ЁрчЁх°▐ээ√щ !!!
|
||
|
||
;фюсрты▀хь ёшьтюы ъръ хёЄ№
|
||
push ebx
|
||
;xor ebx, ebx
|
||
mov bl, byte[eax]
|
||
mov byte[hkSymbol], bl
|
||
mov dword[hkSize], 1
|
||
pop ebx
|
||
|
||
jmp .end
|
||
@@:
|
||
inc eax
|
||
jmp readOptKey
|
||
|
||
.default:
|
||
mov byte[hkSymbol], 32
|
||
mov dword[hkSize], 5
|
||
.end:
|
||
mov byte[hkSymbol+1], 0
|
||
ret
|
||
|
||
;яЁюїюфшь фю ъюэЎр Єхъє∙хщ ёЄЁюъш
|
||
gotoEndString:
|
||
cmp eax, edx ;хёыш Їрщы чръюэўшыё▀, Єю
|
||
ja @f ;т√їюфшь
|
||
cmp byte[eax], 10
|
||
je @f
|
||
cmp byte[eax], 0
|
||
je @f
|
||
cmp byte[eax], 13
|
||
je @f
|
||
;шэрўх яхЁхїюфшь эр ёыхфє■∙шщ ёшьтюы
|
||
inc eax
|
||
jmp gotoEndString
|
||
@@:
|
||
ret
|
||
|
||
readOptRadius:
|
||
;яЁюяєёърхь яхЁхэюё√ ёЄЁюъ т эрўрых
|
||
cmp eax, edx ;хёыш Їрщы чръюэўшыё▀, Єю
|
||
ja .default ;эрёЄЁющъш яю єьюыўрэш■
|
||
cmp byte[eax], 10
|
||
je @f
|
||
cmp byte[eax], 0
|
||
je @f
|
||
cmp byte[eax], 13
|
||
je @f
|
||
|
||
;шэрўх ёўшЄ√трхь чэрўхэшх
|
||
push ebx ecx
|
||
xor ecx, ecx
|
||
.readValue:
|
||
mov bl, byte[eax]
|
||
mov byte[radiusBuffer.data+ecx], bl
|
||
inc ecx
|
||
inc eax
|
||
cmp eax, edx ;хёыш Їрщы чръюэўшыё▀, Єю т√їюф
|
||
ja .readEnd
|
||
cmp byte[eax], 10
|
||
je .readEnd
|
||
cmp byte[eax], 0
|
||
je .readEnd
|
||
cmp byte[eax], 13
|
||
je .readEnd
|
||
cmp ecx, 6
|
||
jae .readEnd
|
||
jmp .readValue
|
||
.readEnd:
|
||
mov byte[radiusBuffer.data+ecx], 0
|
||
mov dword[radiusBuffer.size], ecx
|
||
pop ecx ebx
|
||
|
||
jmp .end
|
||
@@:
|
||
inc eax
|
||
jmp readOptRadius
|
||
.default:
|
||
mov byte[radiusBuffer.data], '0'
|
||
mov byte[radiusBuffer.data+1], 0
|
||
mov dword[radiusBuffer.size], 1
|
||
.end:
|
||
|
||
ret
|
||
|
||
|
||
readOptSize:
|
||
;яЁюяєёърхь яхЁхэюё√ ёЄЁюъ т эрўрых
|
||
cmp eax, edx ;хёыш Їрщы чръюэўшыё▀, Єю
|
||
ja .default ;эрёЄЁющъш яю єьюыўрэш■
|
||
cmp byte[eax], 10
|
||
je @f
|
||
cmp byte[eax], 0
|
||
je @f
|
||
cmp byte[eax], 13
|
||
je @f
|
||
|
||
;яЁютхЁ▀хь, ўЄю ¤Єю фюяєёЄшьюх чэрўхэшх: 1-7, a, s
|
||
cmp byte[eax], 'a'
|
||
je .setValue
|
||
cmp byte[eax], 's'
|
||
je .setValue
|
||
cmp byte[eax], '0'
|
||
je .setValue
|
||
cmp byte[eax], '1'
|
||
je .setValue
|
||
cmp byte[eax], '2'
|
||
je .setValue
|
||
cmp byte[eax], '3'
|
||
je .setValue
|
||
cmp byte[eax], '4'
|
||
je .setValue
|
||
cmp byte[eax], '5'
|
||
je .setValue
|
||
cmp byte[eax], '6'
|
||
je .setValue
|
||
cmp byte[eax], '7'
|
||
je .setValue
|
||
|
||
jmp .default ;шэрўх ёЄртшь чэрўхэшх яю єьюыўрэш■
|
||
|
||
.setValue:
|
||
push ebx
|
||
mov bl, byte[eax]
|
||
mov byte[sizeStyle], bl
|
||
pop ebx
|
||
|
||
jmp .end
|
||
@@:
|
||
inc eax
|
||
jmp readOptSize
|
||
.default:
|
||
mov byte[sizeStyle], 's' ;ёшёЄхьэ√щ
|
||
.end:
|
||
ret
|
||
|
||
|
||
|
||
|
||
updateParams: ;max, size, pos
|
||
push eax
|
||
mov eax, dword[dataBuffer.size1]
|
||
mov dword[editLU.size], eax
|
||
mov dword[editLU.pos], eax
|
||
|
||
mov eax, dword[dataBuffer.size2]
|
||
mov dword[editLD.size], eax
|
||
mov dword[editLD.pos], eax
|
||
|
||
mov eax, dword[dataBuffer.size3]
|
||
mov dword[editRU.size], eax
|
||
mov dword[editRU.pos], eax
|
||
|
||
mov eax, dword[dataBuffer.size4]
|
||
mov dword[editRD.size], eax
|
||
mov dword[editRD.pos], eax
|
||
|
||
mov eax, dword[radiusBuffer.size]
|
||
mov dword[editRadius.size], eax
|
||
mov dword[editRadius.pos], eax
|
||
pop eax
|
||
ret
|
||
|
||
|
||
|
||
selfName db 'HACONFIG', 0
|
||
selfNameSize = 8 ;фю 11 byte
|
||
;
|
||
compareBytes:
|
||
push edi esi ecx ebx
|
||
mov eax, 0 ;xor eax, eax
|
||
mov ecx, selfNameSize ;max ЁрчьхЁ ёЄЁюъ 11
|
||
@@:
|
||
mov bl, byte[edi]
|
||
cmp bl, byte[esi]
|
||
jne compareBytes.no
|
||
inc edi
|
||
inc esi
|
||
cmp ecx, 0
|
||
je @f
|
||
dec ecx
|
||
jmp @b
|
||
.no:
|
||
mov eax, 1
|
||
@@:
|
||
pop ebx ecx esi edi
|
||
ret
|
||
;
|
||
slotMax dd 0
|
||
selfPID dd 0
|
||
buf db 1024 dup(0)
|
||
copyKill:
|
||
push eax ebx ecx esi edi
|
||
|
||
;ёяхЁтр яЁюўЄ▐ь ётю■ шэЇюЁьрЎш■
|
||
mcall 9, buf, -1
|
||
mov eax, dword[buf+30]
|
||
mov dword[selfPID], eax
|
||
|
||
;єърчрЄхыш, ъюЄюЁ√х эшъюуфр эх ьхэ▀■Єё▀:
|
||
mov esi, selfName ;яхЁтр▀ ёЄЁюър - шь▀ Єхъє∙хую яЁшыюцхэш▀
|
||
mov edi, buf ;тЄюЁр▀ ёЄЁюър - шь▀ Єхъє∙хую ёыюЄр
|
||
add edi, 10
|
||
|
||
mov ecx, 1
|
||
@@:
|
||
mcall 9, buf, ecx
|
||
mov dword[slotMax], eax
|
||
|
||
;хёыш ¤Єю ь√ ёрьш, Єю яЁюяєёърхь яЁютхЁъє
|
||
mov eax, dword[buf+30]
|
||
cmp eax, dword[selfPID]
|
||
je copyKill.propusk
|
||
|
||
call compareBytes ;ёЁртэштрхь 11 срщЄ ёЄЁюъ, Ёхчєы№ЄрЄ т eax
|
||
|
||
cmp eax, 0
|
||
je copyKill.selfKill
|
||
|
||
.propusk:
|
||
inc ecx
|
||
cmp ecx, dword[slotMax]
|
||
ja @f
|
||
jmp @b
|
||
|
||
.selfKill:
|
||
pop edi esi ecx ebx eax
|
||
mcall -1
|
||
ret
|
||
@@:
|
||
pop edi esi ecx ebx eax
|
||
ret
|
||
|
||
WindowsWidth = 550
|
||
WindowsHeight = 235
|
||
coord: ;ъююЁфшэрЄ√ юъэр яЁшыюцхэш▀
|
||
.y dw 0
|
||
.x dw 0
|
||
|
||
draw_window:
|
||
mcall 12, 1 ; Start window redraw
|
||
|
||
;юЄюсЁрчшь юъэю яю ЎхэЄЁє ¤ъЁрэр фы▀ ¤Єюую:
|
||
mcall 14 ;яюыєўшь ЁрчьхЁ√ ¤ъЁрэр
|
||
mov dword[coord], eax ;яюыюцшь ЁрчьхЁ√ ¤ъЁрэр т ъююЁфшэрЄ√
|
||
shr word[coord.x], 1 ;тхЁэхх яюыюцшь шї яюыютшэє
|
||
shr word[coord.y], 1
|
||
|
||
;т√ўшёы▀хь ъююЁфшэрЄ√ юъэр, ўЄюс√ юъэю с√ыю яю ёхЁхфшэх ¤ъЁрэр
|
||
sub word[coord.x], WindowsWidth/2
|
||
sub word[coord.y], WindowsHeight/2
|
||
|
||
mov eax, 0 ; function 0 : define and draw window
|
||
mov ebx, 0 ; [x start] *65536 + [x size]
|
||
mov bx, word[coord.x]
|
||
shl ebx, 16
|
||
mov bx, WindowsWidth
|
||
|
||
mov ecx, 0
|
||
mov cx, word[coord.y] ; [y start] *65536 + [y size]
|
||
shl ecx, 16
|
||
mov cx, WindowsHeight
|
||
|
||
mov edx, 0x14ffffff ; color of work area RRGGBB
|
||
; 0x02000000 = window type 4 (fixed size, skinned window)
|
||
mov esi, 0x808899ff ; color of grab bar RRGGBB
|
||
; 0x80000000 = color glide
|
||
mov edi, title
|
||
mcall
|
||
|
||
invoke edit_box_draw, editLU ;Ёшёютрэшх edit box'ют
|
||
invoke edit_box_draw, editLD
|
||
invoke edit_box_draw, editRU
|
||
invoke edit_box_draw, editRD
|
||
|
||
;Ёшёєхь ъэюяъє ш хх ЄхъёЄ
|
||
buttonAppleY = WindowsHeight-40
|
||
mcall 8, <WindowsWidth-120-Otstup, 120>, <buttonAppleY, 27>, 2, 0x00AABBCC
|
||
mcall 4, <WindowsWidth-120-Otstup+27, buttonAppleY+6>, 0x10FFFFFF, buttonText, buttonTextSize
|
||
|
||
;Ёшёєхь х∙▐ 4 ъэюяъш фы▀ фшрыюуютюую юъэр т√сюЁр Їрщыр
|
||
;эюьхЁр 4,5,6 ш 7
|
||
buttonW = 30
|
||
buttonH = 21
|
||
;ыхт√щ тхЁїэшщ єуюы
|
||
mcall 8, <Otstup,buttonW>, <85,buttonH>, 4, 0x00AABBCC
|
||
;ыхт√щ эшцэшщ єуюы
|
||
mcall 8, <Otstup,buttonW>, <120,buttonH>, 5
|
||
;яЁрт√щ тхЁїэшщ єуюы
|
||
mcall 8, <WindowsWidth-Otstup-buttonW,buttonW>, <85,buttonH>, 6
|
||
;яЁрт√щ эшцэшщ єуюы
|
||
mcall 8, <WindowsWidth-Otstup-buttonW,buttonW>, <120,buttonH>, 7
|
||
|
||
;Ёшёєхь ЄхъёЄ√ фы▀ ¤Єшї 4 ъэюяюъ
|
||
mov ecx, 0xFFFFFF ;схы√щ ЎтхЄ ЄхъёЄр
|
||
mov edx, commonButtonText ;ёЄЁюър ЄхъёЄр
|
||
mov esi, commonButtonTextSize ;ЁрчьхЁ ЄхъёЄр т ёшьтюырї
|
||
;ъююЁфшэрЄ√ ЄхъёЄр (x, y)
|
||
deltaCommonTextX = 7
|
||
deltaCommonTextY = 6
|
||
mcall 4, <Otstup+deltaCommonTextX, 85+deltaCommonTextY>
|
||
mcall 4, <Otstup+deltaCommonTextX, 120+deltaCommonTextY>
|
||
mcall 4, <WindowsWidth-Otstup-buttonW+deltaCommonTextX, 85+deltaCommonTextY>
|
||
mcall 4, <WindowsWidth-Otstup-buttonW+deltaCommonTextX, 120+deltaCommonTextY>
|
||
|
||
;delete mode button, if it exist
|
||
mov edx, 0x80000008
|
||
mcall 8
|
||
;draw button Mode
|
||
buttonModeX = 30 ;433
|
||
buttonModeY = 160 ;50
|
||
buttonModeWidth = 300
|
||
buttonModeHeight = 20
|
||
buttonModeTextYoffset = 3
|
||
buttonModeTextXoffset = 5
|
||
mcall 8, <buttonModeX,buttonModeWidth>, <buttonModeY,buttonModeHeight>, 8, 0x00FFFFFF
|
||
mcall 13, <buttonModeX+2+buttonModeWidth-20, 20-2>, <buttonModeY+1, buttonModeHeight-2>, 0xAABBCC
|
||
;draw text for button Mode
|
||
mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y)
|
||
mov ecx, 0x10000000
|
||
call setTextModeMenu
|
||
mov esi, valueModeMenuSize
|
||
mcall 4
|
||
mov ebx, (buttonModeX+buttonModeWidth-12) * 65536 + (buttonModeY+buttonModeTextYoffset+3)
|
||
mov ecx, 0x80FFFFFF
|
||
mov edx, symbolDownArrow
|
||
mcall 4
|
||
|
||
;ъэюяър т√сюЁр уюЁ▀ўхщ ъыртш°ш
|
||
buttonHotKeyX = 350-10
|
||
buttonHotKeyWidth = 90
|
||
mov edx, 0x80000009 ;єфры▀хь
|
||
mcall 8
|
||
cmp byte[mode], 49 ;Ёшёєхь т√сюЁ ъыртш°ш, Єюы№ъю хёыш mode > 1
|
||
jbe @f
|
||
;Ёшёєхь эютє■
|
||
push eax ebx ecx edx esi
|
||
mov ebx, buttonHotKeyX*65536 + buttonHotKeyWidth ;X + Width
|
||
mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height
|
||
mov edx, 0x00000009 ;button id
|
||
mov esi, 0x00FFFFFF ;color button
|
||
mcall 8
|
||
pop esi edx ecx ebx eax
|
||
;ЄхъёЄ яюфёърчъш фы▀ уюЁ▀ўхщ ъыртш°ш
|
||
mov ebx, (buttonHotKeyX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y)
|
||
mov ecx, 0x90224466
|
||
call setTextForHotKey
|
||
mov esi, valueModeMenuSize
|
||
mcall 4
|
||
;чруюыютюъ
|
||
push eax ebx ecx edx edi esi
|
||
mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11)
|
||
mov ecx, 0x80224466
|
||
mov edx, hkCaption
|
||
mov esi, 3
|
||
mcall 4
|
||
pop esi edi edx ecx ebx eax
|
||
@@:
|
||
|
||
;юЄюсЁрцрхь эрёЄЁющъє Ёрфшєёр фхщёЄтш▀ цхёЄр, Єюы№ъю хёыш т√сЁрэ Ёхцшь 3
|
||
cmp byte[mode], 51
|
||
jne @f
|
||
;чруюыютюъ
|
||
push eax ebx ecx edx edi esi
|
||
mov ebx, (buttonHotKeyX + buttonHotKeyWidth + 20) * 65536 + (buttonModeY-11)
|
||
mov ecx, 0x80224466
|
||
mov edx, radiusCaption
|
||
mov esi, 3
|
||
mcall 4
|
||
pop esi edi edx ecx ebx eax
|
||
invoke edit_box_draw, editRadius
|
||
@@:
|
||
|
||
call draw_super_text
|
||
|
||
LineLength = 62
|
||
mov ebx, Otstup * 65536 + 32 ; draw info text with function 4 (x, y)
|
||
|
||
;xor ecx, ecx
|
||
;mov cl, 1 ;byte[mysize]
|
||
;shl ecx, 24
|
||
;add ecx, 0x224466
|
||
;or ecx, 0x00224466 ;80224466
|
||
mov ecx, 0x10224466
|
||
|
||
mov edx, text
|
||
mov esi, LineLength
|
||
mov eax, 4
|
||
|
||
.newline: ; text from the DATA AREA
|
||
mcall
|
||
add ebx, 15
|
||
add edx, LineLength
|
||
cmp byte[edx], 0
|
||
jne .newline
|
||
|
||
mcall 12, 2 ; End window redraw
|
||
|
||
ret
|
||
|
||
hkSymbol: db 0, 0
|
||
|
||
setTextForHotKey:
|
||
push eax
|
||
mov al, byte[hkSymbol]
|
||
cmp al, 0
|
||
jne @f
|
||
mov edx, hkHint
|
||
mov dword[hkSize], 5 ;чэрўхэшх яю єьюыўрэш■ SPACE ;shift
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
cmp al, 1
|
||
jne @f
|
||
mov edx, hkAlt
|
||
mov dword[hkSize], 3
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
cmp al, 2
|
||
jne @f
|
||
mov edx, hkShift
|
||
mov dword[hkSize], 5
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
cmp al, 3
|
||
jne @f
|
||
mov edx, hkCtrl
|
||
mov dword[hkSize], 4
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
cmp al, 32
|
||
jne @f
|
||
mov edx, hkSpace
|
||
mov dword[hkSize], 5
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
cmp al, 96 ;'`'
|
||
je setTextForHotKey.symb
|
||
cmp al, 126 ;'~'
|
||
je setTextForHotKey.symb
|
||
cmp al, 48 ;'0'
|
||
jb @f
|
||
cmp al, 57 ;'9'
|
||
ja @f
|
||
.symb:
|
||
mov edx, hkSymbol
|
||
mov dword[hkSize], 1
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
cmp al, 97 ;'a'
|
||
jb @f
|
||
cmp al, 122 ;'z'
|
||
ja @f
|
||
;jmp setTextForHotKey.symb
|
||
mov edx, hkSymbol
|
||
mov dword[hkSize], 1
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
cmp al, 65 ;'A'
|
||
jb @f
|
||
cmp al, 90 ;'Z'
|
||
ja @f
|
||
;jmp setTextForHotKey.symb
|
||
mov edx, hkSymbol
|
||
mov dword[hkSize], 1
|
||
jmp setTextForHotKey.end
|
||
@@:
|
||
mov word[hkSymbol], 0 ;хёыш цх яюярыю ўЄю-Єю эхшчтхёЄэюх, Єю ёюЄЁ▐ь хую
|
||
mov edx, hkHint
|
||
mov dword[hkSize], 5 ;shift or space - чэрўхэшх яю єьюыўрэш■
|
||
.end:
|
||
pop eax
|
||
ret
|
||
|
||
|
||
setTextModeMenu:
|
||
cmp byte[mode], 48
|
||
jne @f
|
||
mov edx, valueModeMenu0
|
||
ret
|
||
@@:
|
||
cmp byte[mode], 49
|
||
jne @f
|
||
mov edx, valueModeMenu1
|
||
ret
|
||
@@:
|
||
cmp byte[mode], 50
|
||
jne @f
|
||
mov edx, valueModeMenu2
|
||
ret
|
||
@@:
|
||
cmp byte[mode], 51
|
||
jne @f
|
||
mov edx, valueModeMenu3
|
||
ret
|
||
@@:
|
||
mov edx, valueModeMenu1
|
||
ret
|
||
|
||
|
||
|
||
|
||
saveKey:
|
||
cmp word[hkSymbol], 0
|
||
je .default
|
||
cmp byte[hkSymbol], 1
|
||
je .alt
|
||
cmp byte[hkSymbol], 2
|
||
je .shift
|
||
cmp byte[hkSymbol], 3
|
||
je .ctrl
|
||
cmp byte[hkSymbol], 32
|
||
je .space
|
||
.other:
|
||
mov esi, hkSymbol
|
||
mov byte[esi+1], 0
|
||
mov dword[hkSize], 1
|
||
jmp .end
|
||
.space:
|
||
mov esi, hkSpace
|
||
mov dword[hkSize], 5
|
||
jmp .end
|
||
.ctrl:
|
||
mov esi, hkCtrl
|
||
mov dword[hkSize], 4
|
||
jmp .end
|
||
.alt:
|
||
mov esi, hkAlt
|
||
mov dword[hkSize], 3
|
||
jmp .end
|
||
.default:
|
||
.shift:
|
||
mov esi, hkShift
|
||
mov dword[hkSize], 5
|
||
.end:
|
||
mov ebx, hkSize ;єърчрЄхы№ эр dword[hkSize]
|
||
call copyParam
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
align 16
|
||
@IMPORT:
|
||
|
||
library box_lib, 'box_lib.obj'
|
||
|
||
import box_lib,\
|
||
edit_box_draw, 'edit_box_draw',\
|
||
edit_box_key, 'edit_box_key',\
|
||
edit_box_mouse, 'edit_box_mouse',\
|
||
init_checkbox, 'init_checkbox2',\
|
||
check_box_draw, 'check_box_draw2',\
|
||
check_box_mouse, 'check_box_mouse2',\
|
||
option_box_draw, 'option_box_draw',\
|
||
option_box_mouse, 'option_box_mouse'
|
||
|
||
commonButtonText db '...', 0 ;ЄхъёЄ фы▀ ъэюяюъ т√чютр OpenDial
|
||
commonButtonTextSize = 3
|
||
|
||
if lang eq ru_RU ;хёыш ▀ч√ъ ёсюЁъш Ёєёёъшщ
|
||
|
||
text db "Конфигуратор Hot Angles отвечает за настройку активных углов. "
|
||
db "Настройте параметры под себя или отключите эту опцию. "
|
||
db " ", 0
|
||
hed:
|
||
title db "Конфигуратор утилиты Hot Angles", 0
|
||
buttonText db "Применить", 0
|
||
buttonTextSize = 9
|
||
|
||
ch_text db 'Включить/активировать "Hot Angles"', 0
|
||
|
||
superText:
|
||
.lu db 'Команда левого верхнего угла: ', 0
|
||
.ld db 'Команда левого нижнего угла: ', 0
|
||
.ru db 'Команда правого верхнего угла:', 0
|
||
.rd db 'Команда правого нижнего угла: ', 0
|
||
superTextSize = 30
|
||
|
||
valueModeMenuSize = 32
|
||
ModeMenu db 'Режим работы:',0
|
||
valueModeMenu0 db 'отключено ',0
|
||
valueModeMenu1 db 'классический режим ',0
|
||
valueModeMenu2 db 'режим горячей клавиши ',0
|
||
valueModeMenu3 db 'режим жеста по клавише активации',0
|
||
|
||
hkCaption: db 'Клавиша:',0
|
||
;hkHint: db 'Нажмите любую клавишу',0
|
||
radiusCaption: db 'Радиус:',0
|
||
|
||
else ;шэрўх рэуышщёъшщ ЄхъёЄ
|
||
|
||
text db "This is a Hot Angles Configurator. "
|
||
db "Set the parameters bellow for yourself or disable this option."
|
||
db " ", 0
|
||
hed:
|
||
title db "Hot Angles Configurator", 0
|
||
buttonText db " Apply ", 0
|
||
buttonTextSize = 9
|
||
|
||
ch_text db 'Activate "Hot Angles"',0 ;ёюяЁютюцфр■∙шщ ЄхъёЄ фы▀ ўхъ сюъёр
|
||
|
||
superText:
|
||
.lu db 'Left up angle command: ', 0
|
||
.ld db 'Left down angle command: ', 0
|
||
.ru db 'Right up angle command: ', 0
|
||
.rd db 'Right down angle command:', 0
|
||
superTextSize = 25
|
||
|
||
valueModeMenuSize = 32
|
||
ModeMenu db 'Mode:',0
|
||
valueModeMenu0 db 'disabled ',0
|
||
valueModeMenu1 db 'classic mode ',0
|
||
valueModeMenu2 db 'hot key mode ',0
|
||
valueModeMenu3 db 'activation key gesture mode ',0
|
||
|
||
hkCaption: db 'Key:',0
|
||
;hkHint: db 'press any key',0
|
||
radiusCaption: db 'Radius:',0
|
||
|
||
end if
|
||
|
||
hkAlt: db 'Alt',0
|
||
hkShift: db 'Shift',0
|
||
hkCtrl: db 'Ctrl',0
|
||
hkSpace: db 'Space',0
|
||
hkHint: db '?',0
|
||
hkSize: rd 1 ;ЁрчьхЁ ёЄЁюъш ё шьхэхь ъыртш°ш
|
||
|
||
draw_super_text:
|
||
push eax ebx ecx edx edi esi
|
||
|
||
mov ecx, 0
|
||
mov ch, byte[mysize]
|
||
shl ecx, 16
|
||
add ecx, 0x224466
|
||
|
||
mcall 4, <Otstup,74> ,,superText.lu,superTextSize
|
||
mcall 4, <Otstup,109>,,superText.ld,superTextSize
|
||
mcall 4, <290,74> ,,superText.ru,superTextSize
|
||
mcall 4, <290,109> ,,superText.rd,superTextSize
|
||
|
||
mov ebx, Otstup * 65536 + (buttonModeY-11)
|
||
or ecx, 0x80000000
|
||
mov edx, ModeMenu
|
||
mov esi, 3
|
||
mcall 4
|
||
|
||
; mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11)
|
||
; or ecx, 0x80000000
|
||
; mov edx, hkCaption
|
||
; mov esi, 3
|
||
; mcall 4
|
||
|
||
pop esi edi edx ecx ebx eax
|
||
ret
|
||
|
||
editID db 0
|
||
initEBX:
|
||
cmp byte[editID], 4
|
||
jne @f
|
||
mov ebx, dataBuffer.1
|
||
ret
|
||
@@:
|
||
cmp byte[editID], 5
|
||
jne @f
|
||
mov ebx, dataBuffer.2
|
||
ret
|
||
@@:
|
||
cmp byte[editID], 6
|
||
jne @f
|
||
mov ebx, dataBuffer.3
|
||
ret
|
||
@@:
|
||
cmp byte[editID], 7
|
||
jne @f
|
||
mov ebx, dataBuffer.4
|
||
ret
|
||
@@:
|
||
ret
|
||
setRESULT:
|
||
cmp byte[editID], 4
|
||
jne @f
|
||
mov dword[dataBuffer.size1], ecx
|
||
mov dword[editLU.size], ecx
|
||
mov dword[editLU.pos], ecx
|
||
ret
|
||
@@:
|
||
cmp byte[editID], 5
|
||
jne @f
|
||
mov dword[dataBuffer.size2], ecx
|
||
mov dword[editLD.size], ecx
|
||
mov dword[editLD.pos], ecx
|
||
ret
|
||
@@:
|
||
cmp byte[editID], 6
|
||
jne @f
|
||
mov dword[dataBuffer.size3], ecx
|
||
mov dword[editRU.size], ecx
|
||
mov dword[editRU.pos], ecx
|
||
ret
|
||
@@:
|
||
cmp byte[editID], 7
|
||
jne @f
|
||
mov dword[dataBuffer.size4], ecx
|
||
mov dword[editRD.size], ecx
|
||
mov dword[editRD.pos], ecx
|
||
ret
|
||
@@:
|
||
ret
|
||
copyPath:
|
||
push eax ebx ecx edx ;copy file name path
|
||
mov eax, openfile_path ;dword[OpenDialog_data.openfile_path]
|
||
call initEBX ;mov ebx, dataBuffer.1 ;.data
|
||
mov ecx, 0
|
||
@@:
|
||
mov dl, byte[eax]
|
||
cmp dl, 0 ;byte[eax], 0
|
||
je @f
|
||
mov byte[ebx], dl
|
||
inc eax
|
||
inc ebx
|
||
inc ecx
|
||
jmp @b
|
||
@@:
|
||
mov byte[ebx], 0
|
||
call setRESULT
|
||
pop edx ecx ebx eax
|
||
ret
|
||
|
||
|
||
IntToStr: ;in esi - ёЄЁюър; eёx - ўшёыю
|
||
push eax ecx edx esi
|
||
or ecx, ecx
|
||
jnz @f
|
||
mov byte[esi], '0'
|
||
inc esi
|
||
jmp .end
|
||
@@:
|
||
mov eax, ecx
|
||
mov ecx, 10
|
||
.next:
|
||
xor edx, edx
|
||
div ecx
|
||
add edx, '0'
|
||
|
||
mov byte[esi], dl
|
||
|
||
inc esi
|
||
or eax, eax
|
||
jz .end
|
||
jmp .next
|
||
.end:
|
||
mov byte[esi], 0 ;ъырф▐ь чртхЁ°р■∙шщ эюы№
|
||
pop esi edx ecx eax
|
||
call reverseString ;фхырхь ЁхтхЁё ёЄЁюъш
|
||
ret
|
||
|
||
;тїюф: esi - єърчрЄхы№ эр ёЄЁюъє
|
||
reverseString:
|
||
push eax esi edi
|
||
|
||
mov al, byte[esi] ;хёыш ёЄЁюър яєёЄр▀ Єю т√їюфшь ЁхтхЁё фхырЄ№ эх эрфю
|
||
cmp al, 0
|
||
je reverseString.end
|
||
|
||
mov edi, esi ;шэрўх эрщф▐ь яючшЎш■ яюёыхфэхую ёшьтюыр ёЄЁюъш ш яюыюцшь х▐ т edi
|
||
.go_last_symbol:
|
||
mov al, byte[edi+1]
|
||
cmp al, 0
|
||
je @f
|
||
|
||
inc edi
|
||
jmp reverseString.go_last_symbol
|
||
@@:
|
||
push ebx
|
||
.rev:
|
||
cmp esi, edi
|
||
jae @f
|
||
|
||
;ьхэ▀хь ьхёЄрьш ёшьтюы√ т Ўшъых
|
||
mov al, byte[edi]
|
||
mov bl, byte[esi]
|
||
mov byte[edi], bl
|
||
mov byte[esi], al
|
||
|
||
inc esi
|
||
dec edi
|
||
jmp reverseString.rev
|
||
@@:
|
||
pop ebx
|
||
.end:
|
||
pop edi esi eax
|
||
ret
|
||
|
||
|
||
|
||
align 4
|
||
but_open_dlg:
|
||
pushad
|
||
copy_path open_dialog_name,communication_area_default_path,file_name,0
|
||
mov [OpenDialog_data.type],0
|
||
stdcall[OpenDialog_Start], OpenDialog_data
|
||
cmp [OpenDialog_data.status],2
|
||
je @f
|
||
cmp [OpenDialog_data.status],0 ;яюы№чютрЄхы№ эрцры Cancel?
|
||
je .end_open
|
||
;ъюф яЁш єфрўэюь юЄъЁ√Єшш фшрыюур
|
||
call copyPath
|
||
jmp .end_open
|
||
@@:
|
||
;ъюф яЁш эх єфрўэюь юЄъЁ√Єшш фшрыюур
|
||
;...
|
||
.end_open:
|
||
popad
|
||
ret
|
||
|
||
;фрээ√х фы▀ фшрыюур юЄъЁ√Єш▀ Їрщыют
|
||
align 4
|
||
OpenDialog_data:
|
||
.type dd 0 ;0 - юЄъЁ√Є№, 1 - ёюїЁрэшЄ№, 2 - т√сЁрЄ№ фшЁхъЄюЁш■
|
||
.procinfo dd pi
|
||
.com_area_name dd communication_area_name ;+8
|
||
.com_area dd 0 ;+12
|
||
.opendir_path dd plugin_path ;+16
|
||
.dir_default_path dd default_dir ;+20
|
||
.start_path dd file_name ;+24 яєЄ№ ъ фшрыюує юЄъЁ√Єш▀ Їрщыют
|
||
.draw_window dd draw_window ;+28
|
||
.status dd 0 ;+32
|
||
.openfile_path dd openfile_path ;+36 яєЄ№ ъ юЄъЁ√трхьюьє Їрщыє
|
||
.filename_area dd filename_area ;+40
|
||
.filter_area dd Filter
|
||
.x:
|
||
.x_size dw 420 ;+48 ; Window X size
|
||
.x_start dw 10 ;+50 ; Window X position
|
||
.y:
|
||
.y_size dw 320 ;+52 ; Window y size
|
||
.y_start dw 10 ;+54 ; Window Y position
|
||
|
||
default_dir db '/sys',0 ;фшЁхъЄюЁш▀ яю єьюыўрэш■
|
||
communication_area_name: db 'FFFFFFFF_open_dialog',0
|
||
open_dialog_name: db 'opendial',0
|
||
communication_area_default_path: db '/sys/File managers/',0
|
||
|
||
Filter:
|
||
dd Filter.end - Filter.1
|
||
.1:
|
||
;db 'KEX',0
|
||
.end:
|
||
db 0
|
||
|
||
mode db 49 ;'1'
|
||
modeMenu dd 0
|
||
coordModeMenu:
|
||
.x dw 100
|
||
.y dw 200
|
||
|
||
|
||
system_dir0 db '/sys/lib/'
|
||
lib0_name db 'proc_lib.obj',0
|
||
system_dir1 db '/sys/lib/'
|
||
lib1_name db 'kmenu.obj',0
|
||
|
||
symbolDownArrow db 25,0
|
||
|
||
;library structures
|
||
l_libs_start:
|
||
lib0 l_libs lib0_name, file_name, system_dir0, import_proclib
|
||
lib1 l_libs lib1_name, file_name, system_dir1, import_libkmenu
|
||
load_lib_end:
|
||
|
||
|
||
edMaxSize = 510 ;ЄхяхЁ№ ё эют√ь ъюьяюэхэЄюь ьюцэю ш 511 єърчрЄ№
|
||
edMax = 0 ;max, size, pos
|
||
|
||
align 4
|
||
editLU edit_box 230-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus
|
||
editLD edit_box 230-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax
|
||
editRU edit_box 230-buttonW,290,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax
|
||
editRD edit_box 230-buttonW,290,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax
|
||
editRadius edit_box 40,(buttonHotKeyX + buttonHotKeyWidth + 20),buttonModeY, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, 4, radiusBuffer.data, mouse_dd, ed_figure_only, edMax, edMax
|
||
|
||
align 4
|
||
import_proclib:
|
||
OpenDialog_Init dd aOpenDialog_Init
|
||
OpenDialog_Start dd aOpenDialog_Start
|
||
dd 0,0
|
||
aOpenDialog_Init db 'OpenDialog_init',0
|
||
aOpenDialog_Start db 'OpenDialog_start',0
|
||
|
||
align 4
|
||
import_libkmenu:
|
||
kmenu_init dd akmenu_init
|
||
kmainmenu_draw dd akmainmenu_draw
|
||
kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent
|
||
ksubmenu_new dd aksubmenu_new
|
||
ksubmenu_delete dd aksubmenu_delete
|
||
ksubmenu_draw dd aksubmenu_draw
|
||
ksubmenu_add dd aksubmenu_add
|
||
kmenuitem_new dd akmenuitem_new
|
||
kmenuitem_delete dd akmenuitem_delete
|
||
kmenuitem_draw dd akmenuitem_draw
|
||
dd 0,0
|
||
akmenu_init db 'kmenu_init',0
|
||
akmainmenu_draw db 'kmainmenu_draw',0
|
||
akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0
|
||
aksubmenu_new db 'ksubmenu_new',0
|
||
aksubmenu_delete db 'ksubmenu_delete',0
|
||
aksubmenu_draw db 'ksubmenu_draw',0
|
||
aksubmenu_add db 'ksubmenu_add',0
|
||
akmenuitem_new db 'kmenuitem_new',0
|
||
akmenuitem_delete db 'kmenuitem_delete',0
|
||
akmenuitem_draw db 'kmenuitem_draw',0
|
||
|
||
sc system_colors
|
||
mouse_dd rd 1
|
||
|
||
sizeStyle: rb 1 ;ЁрчьхЁ ЄхъёЄр ш юёЄры№э√ї ¤ыхьхэЄют юъэр
|
||
mysize: rb 1 ;rd 1
|
||
radiusBuffer: ;сєЇхЁ фы▀ яюы▀ Ёрфшєёр цхёЄр
|
||
.data: rb 6
|
||
.size: rd 1
|
||
radiusBufferEnd:
|
||
|
||
button_press rd 0 ;for kmenu
|
||
|
||
sys_path: rb 4096
|
||
file_name: rb 4096
|
||
plugin_path: rb 4096
|
||
openfile_path: rb 4096
|
||
filename_area: rb 256
|
||
rb 1024
|
||
pi process_information
|
||
|
||
keyscan: rb 1
|
||
keystr:
|
||
.data: rb 4 ;ёЄЁюър ёю чэрўхэшхь ёърэъюфр ръЄштрЎшюээющ ъыртш°ш
|
||
.size: rd 1 ;ЁрчьхЁ ёюфхЁцшьюую ёЄЁюъш схч яюёыхфэхую эєы▀
|
||
|
||
dataBuffer:
|
||
.1: rb 512
|
||
.2: rb 512
|
||
.3: rb 512
|
||
.4: rb 512
|
||
.size1: rd 1
|
||
.size2: rd 1
|
||
.size3: rd 1
|
||
.size4: rd 1
|
||
;255+255+2 = 512
|
||
;фтр чрярёэ√ї срщЄр эхюсїюфшь√ фы▀ Єюую ўЄю с√ эх яхяхЁхяшёрЄ№ ёыхфє■∙шхщ срщЄ√, т ъюэЎх сєЇхЁр 0
|
||
dataBufferEnd:
|
||
|
||
|
||
I_END:
|
||
rb 4096
|
||
align 16
|
||
STACKTOP:
|
||
|
||
MEM:
|