Subversion Repositories Kolibri OS

Rev

Rev 7397 | Rev 7408 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7397 Rev 7402
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
; Compile with FASM
4
; Compile with FASM
5
; Version 0.2: Sep 19, 2018
5
; Version 0.3: Sep 22, 2018
6
 
6
 
7
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
7
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
8
; All rights reserved.
8
; All rights reserved.
9
; Redistribution and use in source and binary forms, with or without modification,
9
; Redistribution and use in source and binary forms, with or without modification,
10
; are permitted provided that the following conditions are met:
10
; are permitted provided that the following conditions are met:
11
;    * Redistributions of source code must retain the above copyright notice, this
11
;    * Redistributions of source code must retain the above copyright notice, this
12
;    list of conditions and the following disclaimer.
12
;    list of conditions and the following disclaimer.
13
;    * Redistributions in binary form must reproduce the above copyright  notice,
13
;    * Redistributions in binary form must reproduce the above copyright  notice,
14
;    this list of conditions and the following disclaimer in the documentation and/or
14
;    this list of conditions and the following disclaimer in the documentation and/or
15
;    other materials provided with the distribution.
15
;    other materials provided with the distribution.
16
;    * Neither the name of the  nor the names of its contributors may
16
;    * Neither the name of the  nor the names of its contributors may
17
;    be used to endorse or promote products derived from this software without
17
;    be used to endorse or promote products derived from this software without
18
;    specific prior written permission.
18
;    specific prior written permission.
19
 
19
 
20
; THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
20
; THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21
; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
21
; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
22
; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24
; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25
; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
; --------------------------------------------------------------------------------------
26
; --------------------------------------------------------------------------------------
27
 
27
 
28
;P.S. Êîä ñûðîé, òðåáóåòñÿ îïòèìèçàöèÿ è äîðàáîòêà (ñì. òåìó ôîðóìà)
28
;P.S. Êîä ñûðîé, òðåáóåòñÿ îïòèìèçàöèÿ è äîðàáîòêà (ñì. òåìó ôîðóìà)
29
format binary as ""     ; Binary file format without extension
29
format binary as ""     ; Binary file format without extension
30
use32                   ; Tell compiler to use 32 bit instructions
30
use32                   ; Tell compiler to use 32 bit instructions
31
org 0                   ; the base address of code, always 0x0
31
org 0                   ; the base address of code, always 0x0
32
 
32
 
33
; Çàãîëîâîê èñïîëíÿåìîãî ôàéëà Êîëèáðè ÎÑ
33
; Çàãîëîâîê èñïîëíÿåìîãî ôàéëà Êîëèáðè ÎÑ
34
db 'MENUET01'
34
db 'MENUET01'
35
dd 1
35
dd 1
36
dd START
36
dd START
37
dd I_END
37
dd I_END
38
dd MEM
38
dd MEM
39
dd STACKTOP
39
dd STACKTOP
40
dd 0, 0
40
dd 0, 0
41
 
41
 
42
; Íà÷àëî îáëàñòè êîäà
42
; Íà÷àëî îáëàñòè êîäà
43
include 'lang.inc'       ;ïîääåðæêà ÿçûêîâ ïðè êîìïèëÿöèè
43
include 'lang.inc'       ;ïîääåðæêà ÿçûêîâ ïðè êîìïèëÿöèè
44
include '../../macros.inc'
44
include '../../macros.inc'
-
 
45
include '../../proc32.inc'
-
 
46
include '../../dll.inc'
-
 
47
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
45
include 'editbox.inc'
48
;;include 'editbox.inc'
46
use_edit_box
49
;;use_edit_box
47
include 'check.inc'      ;âêëþ÷èòü ôàéë check.inc
50
;;include 'check.inc'      ;âêëþ÷èòü ôàéë check.inc
48
version_ch1              ;íåîáõîäèìûé ìàêðîñ äëÿ âêëþ÷åíèÿ new âåðñèè check_box1
51
;;version_ch1              ;íåîáõîäèìûé ìàêðîñ äëÿ âêëþ÷åíèÿ new âåðñèè check_box1
49
use_check_box            ;èñïîëüçóÿ ìàêðîñû, âíåñòè ïðîöåäóðû äëÿ ðèñîâàíèÿ ÷åê áîêñà
52
;;use_check_box            ;èñïîëüçóÿ ìàêðîñû, âíåñòè ïðîöåäóðû äëÿ ðèñîâàíèÿ ÷åê áîêñà
50
 
53
 
51
Otstup = 30
54
Otstup = 30
52
 
55
 
53
START:
56
START:
54
    call copyKill        ;ïðîñòåéøàÿ çàùèòà îò çàïóñêà âòîðîé êîïèè ïðèëîæåíèÿ
57
    call copyKill        ;ïðîñòåéøàÿ çàùèòà îò çàïóñêà âòîðîé êîïèè ïðèëîæåíèÿ
55
    mcall  68, 11        ;èíèöèàëèçàöèÿ êó÷è
58
    mcall  68, 11        ;èíèöèàëèçàöèÿ êó÷è
56
 
59
 
57
    mov  eax,48          ;ïîëó÷èòü ñèñòåìíûå öâåòà
60
    mov  eax,48          ;ïîëó÷èòü ñèñòåìíûå öâåòà
58
    mov  ebx,3
61
    mov  ebx,3
59
    mov  ecx, sc
62
    mov  ecx, sc
60
    mov  edx, sizeof.system_colors
63
    mov  edx, sizeof.system_colors
61
    mcall
64
    mcall
-
 
65
 
-
 
66
 
-
 
67
    stdcall dll.Load, @IMPORT
-
 
68
    or      eax, eax
-
 
69
    jnz     exit
-
 
70
 
-
 
71
    invoke  init_checkbox, ch1
62
 
72
 
63
    mov  eax,40          ;óñòàíîâèòü ìàñêó äëÿ îæèäàåìûõ ñîáûòèé
73
    mov  eax,40          ;óñòàíîâèòü ìàñêó äëÿ îæèäàåìûõ ñîáûòèé
64
    mov  ebx,0x27        ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåë¸ííàÿ ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè)
74
    mov  ebx,0x27        ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåë¸ííàÿ ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè)
65
    mcall
75
    mcall
66
 
76
 
67
    call  loadConfig     ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëÿåì ïàðàìåòðû ïî óìîë÷àíèþ
77
    call  loadConfig     ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëÿåì ïàðàìåòðû ïî óìîë÷àíèþ
68
    call  draw_window    ;îòðèñîâàòü îêíî ïðèëîæåíèÿ
78
    call  draw_window    ;îòðèñîâàòü îêíî ïðèëîæåíèÿ
69
 
79
 
70
; Îáðàáîòêà öèêëà ñîáûòèé
80
; Îáðàáîòêà öèêëà ñîáûòèé
71
event_wait:
81
event_wait:
72
    mov     eax, 10      ; function 10 : wait until event
82
    mov     eax, 10      ; function 10 : wait until event
73
    mcall                ; event type is returned in eax
83
    mcall                ; event type is returned in eax
74
 
84
 
75
    cmp     eax, 1       ; Event redraw request ?
85
    cmp     eax, 1       ; Event redraw request ?
76
    je      red          ; Expl.: there has been activity on screen and
86
    je      red          ; Expl.: there has been activity on screen and
77
                         ; parts of the applications has to be redrawn.
87
                         ; parts of the applications has to be redrawn.
78
 
88
 
79
    cmp     eax, 2       ; Event key in buffer ?
89
    cmp     eax, 2       ; Event key in buffer ?
80
    je      key          ; Expl.: User has pressed a key while the
90
    je      key          ; Expl.: User has pressed a key while the
81
                         ; app is at the top of the window stack.
91
                         ; app is at the top of the window stack.
82
 
92
 
83
    cmp     eax, 3       ; Event button in buffer ?
93
    cmp     eax, 3       ; Event button in buffer ?
84
    je      button       ; Expl.: User has pressed one of the
94
    je      button       ; Expl.: User has pressed one of the
85
                         ; applications buttons.
95
                         ; applications buttons.
86
 
96
 
87
    mouse_edit_boxes editboxes,editboxes_end
97
    ;mouse_edit_boxes editboxes,editboxes_end
-
 
98
    ;mouse_check_boxes check_boxes,check_boxes_end  ;ïðîâåðêà ÷åê áîêñà
-
 
99
    invoke  edit_box_mouse, editLU
-
 
100
    invoke  edit_box_mouse, editLD
-
 
101
    invoke  edit_box_mouse, editRU
-
 
102
    invoke  edit_box_mouse, editRD
-
 
103
    invoke  check_box_mouse, ch1  ;ïðîâåðêà ÷åê áîêñà
88
    mouse_check_boxes check_boxes,check_boxes_end  ;ïðîâåðêà ÷åê áîêñà
104
 
89
    jmp     event_wait
105
    jmp     event_wait
90
 
106
 
91
 
107
 
92
red:                     ;îáðàáîòêà ñîáûòèÿ ïåðåðèñîâêè îêíà
108
red:                     ;îáðàáîòêà ñîáûòèÿ ïåðåðèñîâêè îêíà
93
   call    draw_window
109
   call    draw_window
94
   jmp     event_wait
110
   jmp     event_wait
95
 
111
 
96
key:                                    ; Keypress event handler
112
key:                                    ; Keypress event handler
97
        mov     eax, 2                  ; The key is returned in ah. The key must be
113
        mov     eax, 2                  ; The key is returned in ah. The key must be
98
        mcall                           ; read and cleared from the system queue.
114
        mcall                           ; read and cleared from the system queue.
99
        key_edit_boxes editboxes,editboxes_end
115
        ;key_edit_boxes editboxes,editboxes_end
-
 
116
        invoke  edit_box_key, editLU
-
 
117
        invoke  edit_box_key, editLD
-
 
118
        invoke  edit_box_key, editRU
-
 
119
        invoke  edit_box_key, editRD
100
        jmp     event_wait              ; Just read the key, ignore it and jump to event_wait.
120
        jmp     event_wait              ; Just read the key, ignore it and jump to event_wait.
101
 
121
 
102
button:                                 ; Buttonpress event handler
122
button:                                 ; Buttonpress event handler
103
    mov     eax,17                  ; The button number defined in window_draw
123
    mov     eax,17                  ; The button number defined in window_draw
104
    mcall                           ; is returned to ah.
124
    mcall                           ; is returned to ah.
105
 
125
 
106
    cmp     ah,1                    ; button id=1 ?
126
    cmp     ah,1                    ; button id=1 ?
107
    jne     noclose
127
    jne     noclose
-
 
128
exit:
108
    mov     eax,-1                  ; Function -1 : close this program
129
    mov     eax,-1                  ; Function -1 : close this program
109
    mcall
130
    mcall
110
noclose:
131
noclose:
111
    cmp  ah, 2         ;êíîïêà "Ïðèìåíèòü"
132
    cmp  ah, 2         ;êíîïêà "Ïðèìåíèòü"
112
    jne  butend
133
    jne  butend
113
    call applyButton   ;âûçîâ íàøåãî îáðàáîò÷èêà íàæàòèÿ êíîïêè
134
    call applyButton   ;âûçîâ íàøåãî îáðàáîò÷èêà íàæàòèÿ êíîïêè
114
butend:
135
butend:
115
    jmp  event_wait    ;this is for ignored events, useful at development
136
    jmp  event_wait    ;this is for ignored events, useful at development
116
 
137
 
117
 
138
 
118
 
139
 
119
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
140
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
120
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
141
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
121
 
142
 
122
;ñòðóêòóðà äëÿ ñîçäàíèÿ/ïåðåçàïèñè ôàéëà
143
;ñòðóêòóðà äëÿ ñîçäàíèÿ/ïåðåçàïèñè ôàéëà
123
createFile:
144
createFile:
124
  .func     dd 2    ;íîìåð ïîäôóíêöèè
145
  .func     dd 2    ;íîìåð ïîäôóíêöèè
125
  .re       dd 0, 0 ;çàðåçåðâèðîâàíî
146
  .re       dd 0, 0 ;çàðåçåðâèðîâàíî
126
  .size     dd 0    ;ñêîëüêî áàéò ïèñàòü
147
  .size     dd 0    ;ñêîëüêî áàéò ïèñàòü
127
  .data_adr dd 0    ;óêàçàòåëü íà äàííûå
148
  .data_adr dd 0    ;óêàçàòåëü íà äàííûå
128
  .path     db 0
149
  .path     db 0
129
  .path_adr dd fileName    ;ïóòü
150
  .path_adr dd fileName    ;ïóòü
130
 
151
 
131
;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è å¸ ðàçìåð
152
;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è å¸ ðàçìåð
132
defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10
153
defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10
133
defaultDataSize = 48+19
154
defaultDataSize = 48+19
134
 
155
 
135
 
156
 
136
copyParam:  ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå)
157
copyParam:  ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå)
137
   push esi ebx ecx
158
   push esi ebx ecx
138
   mov ecx, dword[ebx] ;÷èòàåì ðàçìåð ñòðîêè
159
   mov ecx, dword[ebx] ;÷èòàåì ðàçìåð ñòðîêè
139
.copy:  ;êîïèðóåì ñèìâîëû
160
.copy:  ;êîïèðóåì ñèìâîëû
140
   cmp ecx, 0
161
   cmp ecx, 0
141
   je copyParam.copyEnd
162
   je copyParam.copyEnd
142
   mov bl, byte[esi]
163
   mov bl, byte[esi]
143
   mov byte[eax], bl
164
   mov byte[eax], bl
144
   dec ecx
165
   dec ecx
145
   inc eax
166
   inc eax
146
   inc esi
167
   inc esi
147
   jmp copyParam.copy
168
   jmp copyParam.copy
148
.copyEnd:
169
.copyEnd:
149
   pop ecx ebx esi
170
   pop ecx ebx esi
150
   ret
171
   ret
151
 
172
 
152
 
173
 
153
addPerenos:  ;äîáàâëÿåò ïåðåíîñ ñòðîêè â áóôåð
174
addPerenos:  ;äîáàâëÿåò ïåðåíîñ ñòðîêè â áóôåð
154
   mov byte[eax], 13
175
   mov byte[eax], 13
155
   inc eax
176
   inc eax
156
   mov byte[eax], 10
177
   mov byte[eax], 10
157
   inc eax
178
   inc eax
158
   ret
179
   ret
159
 
180
 
160
;îáðàáîò÷èê êíîïêè "Ïðèìåíèòü"
181
;îáðàáîò÷èê êíîïêè "Ïðèìåíèòü"
161
applyButton:
182
applyButton:
162
    push eax ebx ecx
183
    push eax ebx ecx
163
        ;mov dword[createFile.data_adr], defaultDataForConfig
184
        ;mov dword[createFile.data_adr], defaultDataForConfig
164
        ;mov dword[createFile.size], defaultDataSize
185
        ;mov dword[createFile.size], defaultDataSize
165
 
186
 
166
        ;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ
187
        ;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ
167
        mov ecx, 5*2+1 ;1 áàéò íà ñîñòîÿíèå àêòèâíîñòè è 5 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10)
188
        mov ecx, 5*2+1 ;1 áàéò íà ñîñòîÿíèå àêòèâíîñòè è 5 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10)
168
        add ecx, dword[editLU.size] ;dataBuffer.size1]      ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ
189
        add ecx, dword[editLU.size] ;dataBuffer.size1]      ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ
169
        add ecx, dword[editLD.size] ;dataBuffer.size2]
190
        add ecx, dword[editLD.size] ;dataBuffer.size2]
170
        add ecx, dword[editRU.size] ;dataBuffer.size3]
191
        add ecx, dword[editRU.size] ;dataBuffer.size3]
171
        add ecx, dword[editRD.size] ;dataBuffer.size4]
192
        add ecx, dword[editRD.size] ;dataBuffer.size4]
172
        ;òåïåðü ðàçìåð ôàéëà êîíôèãóðàöèè â ecx
193
        ;òåïåðü ðàçìåð ôàéëà êîíôèãóðàöèè â ecx
173
        mov dword[createFile.size], ecx ;ïîëîæèì ðàçìåð áàéò â ñòðóêòóðó ñîçäàíèÿ/ïåðåçàïèñè ôàéëà
194
        mov dword[createFile.size], ecx ;ïîëîæèì ðàçìåð áàéò â ñòðóêòóðó ñîçäàíèÿ/ïåðåçàïèñè ôàéëà
174
        mcall 68, 12, ecx ;âûäåëÿåì áëîê ïàìÿòè ïîä áóôåð ñîäåðæèìîãî
195
        mcall 68, 12, ecx ;âûäåëÿåì áëîê ïàìÿòè ïîä áóôåð ñîäåðæèìîãî
175
        mov dword[createFile.data_adr], eax ;ñîõðàíÿåì àäðåñ áóôåðà â ñòðóêòóðó
196
        mov dword[createFile.data_adr], eax ;ñîõðàíÿåì àäðåñ áóôåðà â ñòðóêòóðó
176
 
197
 
177
        ;çàïîëíèì áóôåð ñîäåðæèìîãî:
198
        ;çàïîëíèì áóôåð ñîäåðæèìîãî:
178
        mov byte[eax], 110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò
199
        mov byte[eax], 110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò
179
        cmp word[ch1.flags], ch_flag_en   ;âûñòàâëåí checkBox èëè íåò?
200
        cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;110b ;ch_flag_en   ;âûñòàâëåí checkBox èëè íåò?
180
        jne applyButton.no
201
        jne applyButton.no
181
        mov byte[eax], 121 ;èíà÷å êëàä¸ì 'y'
202
        mov byte[eax], 121 ;èíà÷å êëàä¸ì 'y'
182
.no:
203
.no:
183
        inc eax
204
        inc eax
184
        call addPerenos
205
        call addPerenos
185
 
206
 
186
        push esi ebx
207
        push esi ebx
187
        call UpdateEditsSizes ;îáíîâèòü ðàçìåðû òåêñòà â edit'àõ
208
        call UpdateEditsSizes ;îáíîâèòü ðàçìåðû òåêñòà â edit'àõ
188
 
209
 
189
        mov esi, dataBuffer.1 ;editLU.text
210
        mov esi, dataBuffer.1 ;editLU.text
190
        mov ebx, dataBuffer.size1 ;editLU.size
211
        mov ebx, dataBuffer.size1 ;editLU.size
191
        call copyParam
212
        call copyParam
192
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
213
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
193
 
214
 
194
        mov esi, dataBuffer.2 ;editLD.text
215
        mov esi, dataBuffer.2 ;editLD.text
195
        mov ebx, dataBuffer.size2 ;editLD.size
216
        mov ebx, dataBuffer.size2 ;editLD.size
196
        call copyParam
217
        call copyParam
197
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
218
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
198
 
219
 
199
        mov esi, dataBuffer.3
220
        mov esi, dataBuffer.3
200
        mov ebx, dataBuffer.size3
221
        mov ebx, dataBuffer.size3
201
        call copyParam
222
        call copyParam
202
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
223
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
203
 
224
 
204
        mov esi, dataBuffer.4
225
        mov esi, dataBuffer.4
205
        mov ebx, dataBuffer.size4
226
        mov ebx, dataBuffer.size4
206
        call copyParam
227
        call copyParam
207
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
228
        call addPerenos     ;äîáàâëÿåì ïåðåíîñ ñòðîêè
208
 
229
 
209
        pop ebx esi
230
        pop ebx esi
210
 
231
 
211
 
232
 
212
    mov ebx, createFile
233
    mov ebx, createFile
213
    mcall 70
234
    mcall 70
214
        cmp eax, 0
235
        cmp eax, 0
215
        je .end
236
        je .end
216
        ;èíà÷å çäåñü íóæíî âûâåñòè îêíî ñ îøèáêîé !!!
237
        ;èíà÷å çäåñü íóæíî âûâåñòè îêíî ñ îøèáêîé !!!
217
.end:
238
.end:
218
        mcall 68, 13, dword[createFile.data_adr]  ;îñâîáîæäàåì ïàìÿòü ïîä áóôåð
239
        mcall 68, 13, dword[createFile.data_adr]  ;îñâîáîæäàåì ïàìÿòü ïîä áóôåð
219
        call restartHotAnglesApp ;ïåðåçàïóñêàåì @HOTANGLES
240
        call restartHotAnglesApp ;ïåðåçàïóñêàåì @HOTANGLES
220
        pop ecx ebx eax
241
        pop ecx ebx eax
221
    ret
242
    ret
222
 
243
 
223
 
244
 
224
 
245
 
225
 
246
 
226
 
247
 
227
 
248
 
228
compareBytes2:
249
compareBytes2:
229
   push edi esi ecx ebx
250
   push edi esi ecx ebx
230
   xor eax, eax
251
   xor eax, eax
231
   mov ecx, 10  ;max ðàçìåð ñòðîê 11
252
   mov ecx, 10  ;max ðàçìåð ñòðîê 11
232
@@:
253
@@:
233
   mov bl, byte[edi]
254
   mov bl, byte[edi]
234
   cmp bl, byte[esi]
255
   cmp bl, byte[esi]
235
   jne compareBytes.no
256
   jne compareBytes.no
236
   inc edi
257
   inc edi
237
   inc esi
258
   inc esi
238
   cmp ecx, 0
259
   cmp ecx, 0
239
   je @f
260
   je @f
240
   dec ecx
261
   dec ecx
241
   jmp @b
262
   jmp @b
242
.no:
263
.no:
243
   mov eax, 1
264
   mov eax, 1
244
@@:
265
@@:
245
   pop ebx ecx esi edi
266
   pop ebx ecx esi edi
246
   ret
267
   ret
247
 
268
 
248
 
269
 
249
restartHotAnglesApp:   ;!!!
270
restartHotAnglesApp:   ;!!!
250
   ;íàõîäèì âñå êîïèè ïðèëîæåíèÿ ïî èìåíè è çàâåðøàåì èõ
271
   ;íàõîäèì âñå êîïèè ïðèëîæåíèÿ ïî èìåíè è çàâåðøàåì èõ
251
   push eax ebx ecx esi edi
272
   push eax ebx ecx esi edi
252
   ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ:
273
   ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ:
253
   mov esi, startAppData.file_name       ;ïåðâàÿ ñòðîêà - èñêîìîå èìÿ ïðèëîæåíèÿ
274
   mov esi, startAppData.file_name       ;ïåðâàÿ ñòðîêà - èñêîìîå èìÿ ïðèëîæåíèÿ
254
   mov edi, buf            ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà
275
   mov edi, buf            ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà
255
   add edi, 10
276
   add edi, 10
256
 
277
 
257
   mov ecx, 1
278
   mov ecx, 1
258
@@:
279
@@:
259
   mcall 9, buf, ecx              ;ïîëó÷àåì äàííûå î÷åðåäíîãî ñëîòà
280
   mcall 9, buf, ecx              ;ïîëó÷àåì äàííûå î÷åðåäíîãî ñëîòà
260
   mov dword[slotMax], eax
281
   mov dword[slotMax], eax
261
 
282
 
262
   call compareBytes2 ;ñðàâíèâàåì èìÿ
283
   call compareBytes2 ;ñðàâíèâàåì èìÿ
263
   cmp eax, 0
284
   cmp eax, 0
264
   jne restartHotAnglesApp.next   ;åñëè íå ñîâïàëî, òî ïåðåõîäèì íà ñëåäóþùèé ñëîò
285
   jne restartHotAnglesApp.next   ;åñëè íå ñîâïàëî, òî ïåðåõîäèì íà ñëåäóþùèé ñëîò
265
 
286
 
266
   ;push eax ebx ecx
287
   ;push eax ebx ecx
267
   mcall 18, 2, ecx               ;èíà÷å çàâåðøàåì ñëîò
288
   mcall 18, 2, ecx               ;èíà÷å çàâåðøàåì ñëîò
268
   ;pop ecx ebx eax
289
   ;pop ecx ebx eax
269
 
290
 
270
.next:
291
.next:
271
   inc  ecx
292
   inc  ecx
272
   cmp ecx, dword[slotMax]
293
   cmp ecx, dword[slotMax]
273
   ja @f
294
   ja @f
274
   jmp @b
295
   jmp @b
275
@@:
296
@@:
276
   pop edi esi ecx ebx eax
297
   pop edi esi ecx ebx eax
277
 
298
 
278
   ;çàïóñêàåì ïðèëîæåíèå çàíîâî
299
   ;çàïóñêàåì ïðèëîæåíèå çàíîâî
279
   push eax ebx
300
   push eax ebx
280
   mcall 70, startAppData
301
   mcall 70, startAppData
281
   cmp eax, 0
302
   cmp eax, 0
282
   ja @f       ;åñëè eax>0, òî óñïåøíî çàïóùåíî
303
   ja @f       ;åñëè eax>0, òî óñïåøíî çàïóùåíî
283
   ;!!! èíà÷å òóò ïå÷àòàåì îøèáêó
304
   ;!!! èíà÷å òóò ïå÷àòàåì îøèáêó
284
@@:
305
@@:
285
   pop ebx eax
306
   pop ebx eax
286
   ret
307
   ret
287
 
308
 
288
startAppData:
309
startAppData:
289
    .subfunction dd   7
310
    .subfunction dd   7
290
    .flags       dd   0
311
    .flags       dd   0
291
    .param       dd   0
312
    .param       dd   0
292
    .rezerv      dd   0, 0
313
    .rezerv      dd   0, 0
293
    .full_name   db   '/rd/1/'
314
    .full_name   db   '/rd/1/'
294
    .file_name   db   '@HOTANGLES', 0
315
    .file_name   db   '@HOTANGLES', 0
295
    ;db 0
316
    ;db 0
296
    ;.name: dd HotAnglesAppName
317
    ;.name: dd HotAnglesAppName
297
;HotAnglesAppName db '@HOTANGLES', 0
318
;HotAnglesAppName db '@HOTANGLES', 0
298
 
319
 
299
 
320
 
300
UpdateEditsSizes:
321
UpdateEditsSizes:
301
   push eax
322
   push eax
302
   mov eax, dword[editLU.size]
323
   mov eax, dword[editLU.size]
303
   mov dword[dataBuffer.size1], eax
324
   mov dword[dataBuffer.size1], eax
304
 
325
 
305
   mov eax, dword[editLD.size]
326
   mov eax, dword[editLD.size]
306
   mov dword[dataBuffer.size2], eax
327
   mov dword[dataBuffer.size2], eax
307
 
328
 
308
   mov eax, dword[editRU.size]
329
   mov eax, dword[editRU.size]
309
   mov dword[dataBuffer.size3], eax
330
   mov dword[dataBuffer.size3], eax
310
 
331
 
311
   mov eax, dword[editRD.size]
332
   mov eax, dword[editRD.size]
312
   mov dword[dataBuffer.size4], eax
333
   mov dword[dataBuffer.size4], eax
313
 
334
 
314
   pop eax
335
   pop eax
315
   ret
336
   ret
316
 
337
 
317
fileAdr dd 0
338
fileAdr dd 0
318
 
339
 
319
loadConfig:
340
loadConfig:
320
   push eax ebx ecx edx
341
   push eax ebx ecx edx
321
   mcall 68, 27, fileName   ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ
342
   mcall 68, 27, fileName   ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ
322
   mov dword[fileAdr], eax  ;ñîõðàíÿåì àäðåñ áëîêà ïàìÿòè ôàéëà
343
   mov dword[fileAdr], eax  ;ñîõðàíÿåì àäðåñ áëîêà ïàìÿòè ôàéëà
323
   cmp eax, 0
344
   cmp eax, 0
324
   je loadConfig.default       ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ
345
   je loadConfig.default       ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ
325
   ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx
346
   ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx
326
   cmp edx, 0               ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ
347
   cmp edx, 0               ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ
327
   je loadConfig.default
348
   je loadConfig.default
328
.start:
349
.start:
329
   add edx, eax             ;êëàä¸ì â edx - àäðåñ êîíöà êîíôèã.äàííûõ
350
   add edx, eax             ;êëàä¸ì â edx - àäðåñ êîíöà êîíôèã.äàííûõ
330
 
351
 
331
.chStart:
352
.chStart:
332
   cmp byte[eax], 121 ;'y'  ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ
353
   cmp byte[eax], 121 ;'y'  ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ
333
   jne loadConfig.no
354
   jne loadConfig.no
334
.yes:
355
.yes:
335
   mov word[ch1.flags], ch_flag_en
356
   mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;110b ;ch_flag_en
336
   jmp loadConfig.chEnd
357
   jmp loadConfig.chEnd
337
.no:
358
.no:
338
   mov word[ch1.flags], 0
359
   mov word[ch1.flags], 100b ;0 and ch_flag_middle ;100b
339
.chEnd:
360
.chEnd:
340
   ;jmp loadConfig.end   ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê
361
   ;jmp loadConfig.end   ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê
341
 
362
 
342
   ;êîïèðóåì ñîäåðæèìîå ñòðîê â áóôåð
363
   ;êîïèðóåì ñîäåðæèìîå ñòðîê â áóôåð
343
   push edi esi ecx ebx eax
364
   push edi esi ecx ebx eax
344
   ;èíèöèàëèçèðóåì óêàçàòåëè íà àäðåñà áóôåðà ñòðîêè è å¸ ðàçìåðà
365
   ;èíèöèàëèçèðóåì óêàçàòåëè íà àäðåñà áóôåðà ñòðîêè è å¸ ðàçìåðà
345
   mov edi, dataBuffer.1     ;dword[dataBuffer.1]
366
   mov edi, dataBuffer.1     ;dword[dataBuffer.1]
346
   mov esi, dataBuffer.size1 ;dword[dataBuffer.size1]
367
   mov esi, dataBuffer.size1 ;dword[dataBuffer.size1]
347
   ;ecx - ñ÷¸ò÷èê áàéò â ñòðîêå
368
   ;ecx - ñ÷¸ò÷èê áàéò â ñòðîêå
348
;   mov ecx, 0 ;xor ecx, ecx
369
;   mov ecx, 0 ;xor ecx, ecx
349
.block:
370
.block:
350
   xor ecx, ecx ;îáíóëÿåì ñ÷¸ò÷èê
371
   xor ecx, ecx ;îáíóëÿåì ñ÷¸ò÷èê
351
   inc eax
372
   inc eax
352
   cmp byte[eax], 10         ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû
373
   cmp byte[eax], 10         ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû
353
   je loadConfig.block ;propusk     ;äî ïåðâîãî îòëè÷íîãî îò íèõ
374
   je loadConfig.block ;propusk     ;äî ïåðâîãî îòëè÷íîãî îò íèõ
354
   cmp byte[eax], 13
375
   cmp byte[eax], 13
355
   je loadConfig.block ;propusk
376
   je loadConfig.block ;propusk
356
 
377
 
357
   ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - íà÷èíàåì êîïèðîâàòü îòñþäà â áóôåð
378
   ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - íà÷èíàåì êîïèðîâàòü îòñþäà â áóôåð
358
   mov bl, byte[eax]
379
   mov bl, byte[eax]
359
   mov byte[edi], bl
380
   mov byte[edi], bl
360
   inc edi
381
   inc edi
361
   inc eax
382
   inc eax
362
   inc ecx ;óâåëè÷èâàåì ñ÷¸ò÷èê ñèìâîëîâ â ñòðîêå
383
   inc ecx ;óâåëè÷èâàåì ñ÷¸ò÷èê ñèìâîëîâ â ñòðîêå
363
 
384
 
364
   ;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end
385
   ;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end
365
.while:     ;è êîïèðóåì âñ¸ â áóôåð
386
.while:     ;è êîïèðóåì âñ¸ â áóôåð
366
   cmp eax, edx           ;ïðîâåðÿåì çàêîí÷èëñÿ ëè ôàéë, à êîíöà ñòðîêè íå áûëî !!!
387
   cmp eax, edx           ;ïðîâåðÿåì çàêîí÷èëñÿ ëè ôàéë, à êîíöà ñòðîêè íå áûëî !!!
367
   ja loadConfig.ura
388
   ja loadConfig.ura
368
   cmp byte[eax], 10
389
   cmp byte[eax], 10
369
   je loadConfig.ura
390
   je loadConfig.ura
370
   cmp byte[eax], 0
391
   cmp byte[eax], 0
371
   je loadConfig.ura
392
   je loadConfig.ura
372
   cmp byte[eax], 13
393
   cmp byte[eax], 13
373
   je loadConfig.ura
394
   je loadConfig.ura
374
 
395
 
375
   mov bl, byte[eax]
396
   mov bl, byte[eax]
376
   mov byte[edi], bl
397
   mov byte[edi], bl
377
   inc edi
398
   inc edi
378
   inc eax
399
   inc eax
379
   inc ecx
400
   inc ecx
380
   cmp ecx, 511
401
   cmp ecx, 511
381
   jae loadConfig.ura
402
   jae loadConfig.ura
382
   jmp loadConfig.while
403
   jmp loadConfig.while
383
.ura:
404
.ura:
384
   mov byte[edi], 0      ;êëàä¸ì çàâåðøàþùèé 0 â ñòðîêó
405
   mov byte[edi], 0      ;êëàä¸ì çàâåðøàþùèé 0 â ñòðîêó
385
   mov dword[esi], ecx   ;ñîõðàíÿåì ðàçìåð ñòðîêè
406
   mov dword[esi], ecx   ;ñîõðàíÿåì ðàçìåð ñòðîêè
386
   add esi, 4            ;ïåðåõîäèì íà ðàçìåð ñëåäóþùåãî áóôåðà
407
   add esi, 4            ;ïåðåõîäèì íà ðàçìåð ñëåäóþùåãî áóôåðà
387
   sub edi, ecx          ;ïåðåõîäèì íà ñëåäóþùèé áóôåð
408
   sub edi, ecx          ;ïåðåõîäèì íà ñëåäóþùèé áóôåð
388
   add edi, 512
409
   add edi, 512
389
;   mov ecx, 0 ;xor ecx, ecx ;îáíóëÿåì ðàçìåð ñòðîêè
410
;   mov ecx, 0 ;xor ecx, ecx ;îáíóëÿåì ðàçìåð ñòðîêè
390
 
411
 
391
   cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì
412
   cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì
392
   jb loadConfig.block
413
   jb loadConfig.block
393
 
414
 
394
   pop eax ebx ecx esi edi
415
   pop eax ebx ecx esi edi
395
 
416
 
396
   jmp loadConfig.end
417
   jmp loadConfig.end
397
.default:
418
.default:
398
   mov eax, defaultDataForConfig
419
   mov eax, defaultDataForConfig
399
   mov edx, defaultDataSize
420
   mov edx, defaultDataSize
400
   jmp loadConfig.start
421
   jmp loadConfig.start
401
.end:
422
.end:
402
   mov ecx, dword[fileAdr]    ;åñëè ôàéë áûë çàãðóæåí, òî
423
   mov ecx, dword[fileAdr]    ;åñëè ôàéë áûë çàãðóæåí, òî
403
   cmp ecx, 0
424
   cmp ecx, 0
404
   je @f
425
   je @f
405
   mcall 68, 13, ecx  ;âûãðóæàåì ôàéë èç ïàìÿòè
426
   mcall 68, 13, ecx  ;âûãðóæàåì ôàéë èç ïàìÿòè
406
@@:
427
@@:
407
   call updateParams ;ïðèìåíÿåì íàñòðîéêè êàæäîãî áóôåðà
428
   call updateParams ;ïðèìåíÿåì íàñòðîéêè êàæäîãî áóôåðà
408
   pop edx ecx ebx eax
429
   pop edx ecx ebx eax
409
   ret
430
   ret
410
 
431
 
411
 
432
 
412
updateParams: ;max, size, pos
433
updateParams: ;max, size, pos
413
   push eax
434
   push eax
414
   mov eax, dword[dataBuffer.size1]
435
   mov eax, dword[dataBuffer.size1]
415
   mov dword[editLU.size], eax
436
   mov dword[editLU.size], eax
416
   mov dword[editLU.pos], eax
437
   mov dword[editLU.pos], eax
417
 
438
 
418
   mov eax, dword[dataBuffer.size2]
439
   mov eax, dword[dataBuffer.size2]
419
   mov dword[editLD.size], eax
440
   mov dword[editLD.size], eax
420
   mov dword[editLD.pos], eax
441
   mov dword[editLD.pos], eax
421
 
442
 
422
   mov eax, dword[dataBuffer.size3]
443
   mov eax, dword[dataBuffer.size3]
423
   mov dword[editRU.size], eax
444
   mov dword[editRU.size], eax
424
   mov dword[editRU.pos], eax
445
   mov dword[editRU.pos], eax
425
 
446
 
426
   mov eax, dword[dataBuffer.size4]
447
   mov eax, dword[dataBuffer.size4]
427
   mov dword[editRD.size], eax
448
   mov dword[editRD.size], eax
428
   mov dword[editRD.pos], eax
449
   mov dword[editRD.pos], eax
429
   pop eax
450
   pop eax
430
   ret
451
   ret
431
 
452
 
432
 
453
 
433
 
454
 
434
selfName db 'HACONFIG', 0 ;'@HOTANGLES',0
455
selfName db 'HACONFIG', 0 ;'@HOTANGLES',0
435
selfNameSize = 8;9 ;äî 11 byte
456
selfNameSize = 8;9 ;äî 11 byte
436
;
457
;
437
compareBytes:
458
compareBytes:
438
   push edi esi ecx ebx
459
   push edi esi ecx ebx
439
   mov eax, 0 ;xor eax, eax
460
   mov eax, 0 ;xor eax, eax
440
   mov ecx, selfNameSize ;11    ;max ðàçìåð ñòðîê 11
461
   mov ecx, selfNameSize ;11    ;max ðàçìåð ñòðîê 11
441
@@:
462
@@:
442
   mov bl, byte[edi]
463
   mov bl, byte[edi]
443
   cmp bl, byte[esi]
464
   cmp bl, byte[esi]
444
   jne compareBytes.no
465
   jne compareBytes.no
445
   inc edi
466
   inc edi
446
   inc esi
467
   inc esi
447
   cmp ecx, 0
468
   cmp ecx, 0
448
   je @f
469
   je @f
449
   dec ecx
470
   dec ecx
450
   jmp @b
471
   jmp @b
451
.no:
472
.no:
452
   mov eax, 1
473
   mov eax, 1
453
@@:
474
@@:
454
   pop ebx ecx esi edi
475
   pop ebx ecx esi edi
455
   ret
476
   ret
456
;
477
;
457
slotMax dd 0
478
slotMax dd 0
458
selfPID dd 0
479
selfPID dd 0
459
buf db 1024 dup(0)
480
buf db 1024 dup(0)
460
copyKill:
481
copyKill:
461
   push eax ebx ecx esi edi
482
   push eax ebx ecx esi edi
462
 
483
 
463
   ;ñïåðâà ïðî÷ò¸ì ñâîþ èíôîðìàöèþ
484
   ;ñïåðâà ïðî÷ò¸ì ñâîþ èíôîðìàöèþ
464
   mcall 9, buf, -1
485
   mcall 9, buf, -1
465
   mov eax, dword[buf+30]
486
   mov eax, dword[buf+30]
466
   mov dword[selfPID], eax
487
   mov dword[selfPID], eax
467
 
488
 
468
   ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ:
489
   ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ:
469
   mov esi, selfName       ;ïåðâàÿ ñòðîêà - èìÿ òåêóùåãî ïðèëîæåíèÿ
490
   mov esi, selfName       ;ïåðâàÿ ñòðîêà - èìÿ òåêóùåãî ïðèëîæåíèÿ
470
   mov edi, buf            ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà
491
   mov edi, buf            ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà
471
   add edi, 10
492
   add edi, 10
472
 
493
 
473
   mov ecx, 1
494
   mov ecx, 1
474
@@:
495
@@:
475
   mcall 9, buf, ecx
496
   mcall 9, buf, ecx
476
   mov dword[slotMax], eax
497
   mov dword[slotMax], eax
477
 
498
 
478
   ;åñëè ýòî ìû ñàìè, òî ïðîïóñêàåì ïðîâåðêó
499
   ;åñëè ýòî ìû ñàìè, òî ïðîïóñêàåì ïðîâåðêó
479
   mov eax, dword[buf+30]
500
   mov eax, dword[buf+30]
480
   cmp eax, dword[selfPID]
501
   cmp eax, dword[selfPID]
481
   je copyKill.propusk
502
   je copyKill.propusk
482
 
503
 
483
   call compareBytes   ;ñðàâíèâàåì 11 áàéò ñòðîê, ðåçóëüòàò â eax
504
   call compareBytes   ;ñðàâíèâàåì 11 áàéò ñòðîê, ðåçóëüòàò â eax
484
 
505
 
485
   cmp eax, 0
506
   cmp eax, 0
486
   je copyKill.selfKill
507
   je copyKill.selfKill
487
 
508
 
488
.propusk:
509
.propusk:
489
   inc ecx
510
   inc ecx
490
   cmp ecx, dword[slotMax]
511
   cmp ecx, dword[slotMax]
491
   ja @f
512
   ja @f
492
   jmp @b
513
   jmp @b
493
 
514
 
494
.selfKill:
515
.selfKill:
495
   pop edi esi ecx ebx eax
516
   pop edi esi ecx ebx eax
496
   mcall -1
517
   mcall -1
497
   ret
518
   ret
498
@@:
519
@@:
499
   pop edi esi ecx ebx eax
520
   pop edi esi ecx ebx eax
500
   ret
521
   ret
501
 
522
 
502
 WindowsWidth  = 450
523
 WindowsWidth  = 450
503
 WindowsHeight = 195
524
 WindowsHeight = 195
504
coord:      ;êîîðäèíàòû îêíà ïðèëîæåíèÿ
525
coord:      ;êîîðäèíàòû îêíà ïðèëîæåíèÿ
505
 .y dw 0
526
 .y dw 0
506
 .x dw 0
527
 .x dw 0
507
 
528
 
508
draw_window:
529
draw_window:
509
        ;óäàëÿåì êíîïêó, åñëè åñòü
530
        ;óäàëÿåì êíîïêó, åñëè åñòü
510
        mov edx, 0x80000002
531
        mov edx, 0x80000002
511
        mcall 8
532
        mcall 8
512
 
533
 
513
        mov     eax, 12                 ; function 12: tell os about windowdraw
534
        mov     eax, 12                 ; function 12: tell os about windowdraw
514
        mov     ebx, 1                  ; 1, start of draw
535
        mov     ebx, 1                  ; 1, start of draw
515
        mcall
536
        mcall
516
 
537
 
517
        ;îòîáðàçèì îêíî ïî öåíòðó ýêðàíà äëÿ ýòîãî:
538
        ;îòîáðàçèì îêíî ïî öåíòðó ýêðàíà äëÿ ýòîãî:
518
        mcall 14 ;ïîëó÷èì ðàçìåðû ýêðàíà
539
        mcall 14 ;ïîëó÷èì ðàçìåðû ýêðàíà
519
        mov dword[coord], eax       ;ïîëîæèì ðàçìåðû ýêðàíà â êîîðäèíàòû
540
        mov dword[coord], eax       ;ïîëîæèì ðàçìåðû ýêðàíà â êîîðäèíàòû
520
        shr word[coord.x], 1        ;âåðíåå ïîëîæèì èõ ïîëîâèíó
541
        shr word[coord.x], 1        ;âåðíåå ïîëîæèì èõ ïîëîâèíó
521
        shr word[coord.y], 1
542
        shr word[coord.y], 1
522
 
543
 
523
        ;âû÷èñëÿåì êîîðäèíàòû îêíà, ÷òîáû îêíî áûëî ïî ñåðåäèíå ýêðàíà
544
        ;âû÷èñëÿåì êîîðäèíàòû îêíà, ÷òîáû îêíî áûëî ïî ñåðåäèíå ýêðàíà
524
        sub word[coord.x], WindowsWidth/2
545
        sub word[coord.x], WindowsWidth/2
525
        sub word[coord.y], WindowsHeight/2
546
        sub word[coord.y], WindowsHeight/2
526
 
547
 
527
        mov     eax, 0                  ; function 0 : define and draw window
548
        mov     eax, 0                  ; function 0 : define and draw window
528
        mov     ebx, 0 ;* 65536 + WindowsWidth   ; [x start] *65536 + [x size]
549
        mov     ebx, 0 ;* 65536 + WindowsWidth   ; [x start] *65536 + [x size]
529
        mov bx, word[coord.x]
550
        mov bx, word[coord.x]
530
        shl  ebx, 16
551
        shl  ebx, 16
531
        mov bx, WindowsWidth
552
        mov bx, WindowsWidth
532
 
553
 
533
        mov ecx, 0
554
        mov ecx, 0
534
        mov     cx, word[coord.y] ;* 65536 + WindowsHeight  ; [y start] *65536 + [y size]
555
        mov     cx, word[coord.y] ;* 65536 + WindowsHeight  ; [y start] *65536 + [y size]
535
        shl ecx, 16
556
        shl ecx, 16
536
        mov cx, WindowsHeight
557
        mov cx, WindowsHeight
537
 
558
 
538
        mov     edx, 0x14ffffff         ; color of work area RRGGBB
559
        mov     edx, 0x14ffffff         ; color of work area RRGGBB
539
                                        ; 0x02000000 = window type 4 (fixed size, skinned window)
560
                                        ; 0x02000000 = window type 4 (fixed size, skinned window)
540
        mov     esi, 0x808899ff         ; color of grab bar  RRGGBB
561
        mov     esi, 0x808899ff         ; color of grab bar  RRGGBB
541
                                        ; 0x80000000 = color glide
562
                                        ; 0x80000000 = color glide
542
        mov     edi, title
563
        mov     edi, title
543
        mcall
564
        mcall
544
 
565
 
545
        draw_check_boxes check_boxes,check_boxes_end ;ðèñîâàíèå ÷åêáîêñîâ
566
        ;draw_check_boxes check_boxes,check_boxes_end ;ðèñîâàíèå ÷åêáîêñîâ
-
 
567
        ;draw_edit_boxes editboxes,editboxes_end      ;ðèñîâàíèå edit box'îâ
-
 
568
        invoke  edit_box_draw, editLU  ;ðèñîâàíèå edit box'îâ
-
 
569
        invoke  edit_box_draw, editLD
-
 
570
        invoke  edit_box_draw, editRU
-
 
571
        invoke  edit_box_draw, editRD
-
 
572
 
546
        draw_edit_boxes editboxes,editboxes_end      ;ðèñîâàíèå edit box'îâ
573
        invoke  check_box_draw, ch1    ;ðèñîâàíèå ÷åêáîêñîâ
547
 
574
 
548
        ;ðèñóåì êíîïêó
575
        ;ðèñóåì êíîïêó
549
        mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè
576
        mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè
550
        mov ecx, 160*65536 + 20   ;êîîðäèíàòà Y, âûñîòà êíîïêè
577
        mov ecx, 160*65536 + 20   ;êîîðäèíàòà Y, âûñîòà êíîïêè
551
        mov edx, 0x00000002 ;2    ;íîìåð êíîïêè
578
        mov edx, 0x00000002 ;2    ;íîìåð êíîïêè
552
        mov esi, 0x00AABBCC       ;öâåò êíîïêè
579
        mov esi, 0x00AABBCC       ;öâåò êíîïêè
553
        mcall 8
580
        mcall 8
554
        ;ðèñóåì òåêñò êíîïêè
581
        ;ðèñóåì òåêñò êíîïêè
555
        mov     ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + 166    ;êîîðäèíàòû òåêñòà (x, y)
582
        mov     ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + 166    ;êîîðäèíàòû òåêñòà (x, y)
556
        mov     ecx, 0xFFFFFF     ;áåëûé öâåò òåêñòà
583
        mov     ecx, 0xFFFFFF     ;áåëûé öâåò òåêñòà
557
        mov     edx, buttonText
584
        mov     edx, buttonText
558
        mov     esi, buttonTextSize ;5            ;ðàçìåð òåêñòà â ñèìâîëàõ
585
        mov     esi, buttonTextSize ;5            ;ðàçìåð òåêñòà â ñèìâîëàõ
559
        mcall 4
586
        mcall 4
560
 
587
 
561
        call draw_super_text
588
        call draw_super_text
562
 
589
 
563
        LineLength = 62 ;42
590
        LineLength = 62 ;42
564
        mov     ebx, 40 * 65536 + 36    ; draw info text with function 4 (x, y)
591
        mov     ebx, 40 * 65536 + 36    ; draw info text with function 4 (x, y)
565
        mov     ecx, 0x224466
592
        mov     ecx, 0x224466
566
        mov     edx, text
593
        mov     edx, text
567
        mov     esi, LineLength
594
        mov     esi, LineLength
568
        mov     eax, 4
595
        mov     eax, 4
569
 
596
 
570
  .newline:                             ; text from the DATA AREA
597
  .newline:                             ; text from the DATA AREA
571
        mcall
598
        mcall
572
        add     ebx, 12
599
        add     ebx, 12
573
        add     edx, LineLength
600
        add     edx, LineLength
574
        cmp     byte[edx], 0
601
        cmp     byte[edx], 0
575
        jne     .newline
602
        jne     .newline
576
 
603
 
577
        mov     eax, 12                 ; function 12:tell os about windowdraw
604
        mov     eax, 12                 ; function 12:tell os about windowdraw
578
        mov     ebx, 2                  ; 2, end of draw
605
        mov     ebx, 2                  ; 2, end of draw
579
        mcall
606
        mcall
580
 
607
 
581
        ret
608
        ret
582
 
609
 
583
 
610
 
584
 
611
 
585
 
612
 
-
 
613
align 16
-
 
614
@IMPORT:
-
 
615
 
-
 
616
library box_lib, 'box_lib.obj'
-
 
617
 
-
 
618
import  box_lib,\
-
 
619
        edit_box_draw,          'edit_box',\
-
 
620
        edit_box_key,           'edit_box_key',\
-
 
621
        edit_box_mouse,         'edit_box_mouse',\
-
 
622
        init_checkbox,          'init_checkbox2',\
-
 
623
        check_box_draw,         'check_box_draw2',\
-
 
624
        check_box_mouse,        'check_box_mouse2',\
-
 
625
        option_box_draw,        'option_box_draw',\
-
 
626
        option_box_mouse,       'option_box_mouse'
-
 
627
 
-
 
628
 
586
align 4
629
 
587
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
630
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
588
;DATA äàííûå  äëÿ check_box1 - èñïîëüçóåò ñèñòåìíûå öâåòà
631
;DATA äàííûå  äëÿ check_box1 - èñïîëüçóåò ñèñòåìíûå öâåòà
589
;Ôîðìàò äàííûõ ÷åê áîêñà:
632
;Ôîðìàò äàííûõ ÷åê áîêñà:
590
;   êîîðäèíàòà õ, êîîðäèíàòà ó, óêàçàòåëü íà íà÷àëî ñòðîêè, äëèíà ñòðîêè
633
;   êîîðäèíàòà õ, êîîðäèíàòà ó, óêàçàòåëü íà íà÷àëî ñòðîêè, äëèíà ñòðîêè
591
;ñîñòîÿíèå ðàáîòû óòèëèòû: àêòèâíà/íåò
634
;ñîñòîÿíèå ðàáîòû óòèëèòû: àêòèâíà/íåò
592
check_boxes:
635
;check_boxes:
593
   ch1 check_box1 30,160,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
636
;   ch1 check_box1 30,160,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
594
check_boxes_end:
637
;check_boxes_end:
-
 
638
 
-
 
639
;êîîðäèíàòû (x,y) = (30, 160) ðàçìåð ÷åêáîêñà 12, öâåò òåêñòà 0x224466
-
 
640
ch1     check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle
595
 
641
 
596
 
642
 
597
if lang eq ru  ;åñëè ÿçûê ñáîðêè ðóññêèé
643
if lang eq ru  ;åñëè ÿçûê ñáîðêè ðóññêèé
598
 
644
 
599
text    db  "Š®­ä¨£ãà â®à Hot Angles ®â¢¥ç ¥â §  ­ áâனªã  ªâ¨¢­ëå 㣫®¢. "
645
text    db  "Š®­ä¨£ãà â®à Hot Angles ®â¢¥ç ¥â §  ­ áâனªã  ªâ¨¢­ëå 㣫®¢. "
600
        db  " áâன⥠¯ à ¬¥âàë ¯®¤ á¥¡ï ¨«¨ ®âª«îç¨â¥ íâã ®¯æ¨î.         "
646
        db  " áâன⥠¯ à ¬¥âàë ¯®¤ á¥¡ï ¨«¨ ®âª«îç¨â¥ íâã ®¯æ¨î.         "
601
        db  "                                                              ", 0
647
        db  "                                                              ", 0
602
 hed:
648
 hed:
603
title   db  "Š®­ä¨£ãà â®à ã⨫¨âë Hot Angles", 0
649
title   db  "Š®­ä¨£ãà â®à ã⨫¨âë Hot Angles", 0
604
buttonText db "à¨¬¥­¨âì", 0
650
buttonText db "à¨¬¥­¨âì", 0
605
buttonTextSize = 9
651
buttonTextSize = 9
606
buttonTextXoffset = 12
652
buttonTextXoffset = 12
-
 
653
 
607
 
654
ch_text db '‚ª«îç¨âì/ ªâ¨¢¨à®¢ âì "Hot Angles"', 0
608
ch_text:        ;ñîïðîâîæäàþùèé òåêñò äëÿ ÷åê áîêñîâ
655
;ch_text:        ;ñîïðîâîæäàþùèé òåêñò äëÿ ÷åê áîêñîâ
609
.1 db '‚ª«îç¨âì/ ªâ¨¢¨à®¢ âì "Hot Angles"'
656
;.1 db '‚ª«îç¨âì/ ªâ¨¢¨à®¢ âì "Hot Angles"'
610
.e1:
657
;.e1:
611
 
658
 
612
superText:
659
superText:
613
  .lu db 'Š®¬ ­¤  «¥¢®£® ¢¥àå­¥£® 㣫 : ', 0
660
  .lu db 'Š®¬ ­¤  «¥¢®£® ¢¥àå­¥£® 㣫 : ', 0
614
  .ld db 'Š®¬ ­¤  «¥¢®£® ­¨¦­¥£® 㣫 :  ', 0
661
  .ld db 'Š®¬ ­¤  «¥¢®£® ­¨¦­¥£® 㣫 :  ', 0
615
  .ru db 'Š®¬ ­¤  ¯à ¢®£® ¢¥àå­¥£® 㣫 :', 0
662
  .ru db 'Š®¬ ­¤  ¯à ¢®£® ¢¥àå­¥£® 㣫 :', 0
616
  .rd db 'Š®¬ ­¤  ¯à ¢®£® ­¨¦­¥£® 㣫 : ', 0
663
  .rd db 'Š®¬ ­¤  ¯à ¢®£® ­¨¦­¥£® 㣫 : ', 0
617
superTextSize = 30
664
superTextSize = 30
618
 
665
 
619
else  ;èíà÷å àíãëèéñêèé òåêñò
666
else  ;èíà÷å àíãëèéñêèé òåêñò
620
 
667
 
621
text    db  "This is a Hot Angles Configurator.                            "
668
text    db  "This is a Hot Angles Configurator.                            "
622
        db  "Set the parameters bellow for yourself or disable this option."
669
        db  "Set the parameters bellow for yourself or disable this option."
623
        db  "                                                              ", 0
670
        db  "                                                              ", 0
624
 hed:
671
 hed:
625
title   db  "Hot Angles Configurator", 0
672
title   db  "Hot Angles Configurator", 0
626
buttonText db "Apply", 0
673
buttonText db "Apply", 0
627
buttonTextSize = 5
674
buttonTextSize = 5
628
buttonTextXoffset = 0
675
buttonTextXoffset = 0
629
 
676
 
630
ch_text:        ;ñîïðîâîæäàþùèé òåêñò äëÿ ÷åê áîêñîâ
677
ch_text db 'Activate "Hot Angles"',0       ;ñîïðîâîæäàþùèé òåêñò äëÿ ÷åê áîêñà
631
.1 db 'Activate "Hot Angles"'
678
;.1 db 'Activate "Hot Angles"',0
632
.e1:
679
;.e1:
633
 
680
 
634
superText:
681
superText:
635
  .lu db 'Left up angle command:   ', 0
682
  .lu db 'Left up angle command:   ', 0
636
  .ld db 'Left down angle command: ', 0
683
  .ld db 'Left down angle command: ', 0
637
  .ru db 'Right up angle command:  ', 0
684
  .ru db 'Right up angle command:  ', 0
638
  .rd db 'Right down angle command:', 0
685
  .rd db 'Right down angle command:', 0
639
superTextSize = 25
686
superTextSize = 25
640
 
687
 
641
end if
688
end if
642
 
689
 
643
 
690
 
644
draw_super_text:
691
draw_super_text:
645
   push eax ebx ecx edx edi esi
692
   push eax ebx ecx edx edi esi
646
   mov     ebx, Otstup * 65536 + 74    ; draw info text with function 4 (x, y)
693
   mov     ebx, Otstup * 65536 + 74    ; draw info text with function 4 (x, y)
647
   mov     ecx, 0x224466
694
   mov     ecx, 0x224466
648
   mov eax, superText.lu
695
   mov eax, superText.lu
649
   mov     edx, eax
696
   mov     edx, eax
650
   mov     esi, superTextSize ;22
697
   mov     esi, superTextSize ;22
651
   mcall 4
698
   mcall 4
652
 
699
 
653
   mov     ebx, Otstup * 65536 + 109
700
   mov     ebx, Otstup * 65536 + 109
654
   mov     edx, superText.ld
701
   mov     edx, superText.ld
655
   mov     esi, superTextSize ;24
702
   mov     esi, superTextSize ;24
656
   mcall 4
703
   mcall 4
657
 
704
 
658
   mov     ebx, 240 * 65536 + 74
705
   mov     ebx, 240 * 65536 + 74
659
   mov     edx, superText.ru
706
   mov     edx, superText.ru
660
   mov     esi, superTextSize ;23
707
   mov     esi, superTextSize ;23
661
   mcall 4
708
   mcall 4
662
 
709
 
663
   mov     ebx, 240 * 65536 + 109
710
   mov     ebx, 240 * 65536 + 109
664
   mov     edx, superText.rd
711
   mov     edx, superText.rd
665
   mov     esi, superTextSize ;25
712
   mov     esi, superTextSize ;25
666
   mcall 4
713
   mcall 4
667
 
714
 
668
   pop esi edi edx ecx ebx eax
715
   pop esi edi edx ecx ebx eax
669
   ret
716
   ret
670
 
717
 
671
 
718
 
672
edMaxSize = 510
719
edMaxSize = 510 ;òåïåðü ñ íîâûì êîìïîíåíòîì ìîæíî è 511 óêàçàòü
-
 
720
edMax = 0 ;max, size, pos
-
 
721
 
-
 
722
align 4
-
 
723
editLU   edit_box 180,Otstup,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax  ;ed_focus
-
 
724
editLD   edit_box 180,Otstup,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax
-
 
725
editRU   edit_box 180,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax
673
edMax = 0 ;max, size, pos
726
editRD   edit_box 180,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax
674
 
727
 
675
editboxes:
728
;editboxes:
676
editLU edit_box 180,Otstup,85,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.1,ed_focus,edMax,edMax
729
;editLU edit_box 180,Otstup,85,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.1,ed_focus,edMax,edMax
677
editLD edit_box 180,Otstup,120,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.2,0,edMax,edMax
730
;editLD edit_box 180,Otstup,120,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.2,0,edMax,edMax
678
editRU edit_box 180,240,85,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.3,0,edMax,edMax
731
;editRU edit_box 180,240,85,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.3,0,edMax,edMax
679
editRD edit_box 180,240,120,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.4,0,edMax,edMax
732
;editRD edit_box 180,240,120,0xffffff,0x6a9480,0,0xAABBCC,0,edMaxSize,dataBuffer.4,0,edMax,edMax
680
editboxes_end:
733
;editboxes_end:
681
 
734
 
682
data_of_code dd 0
735
;data_of_code dd 0
683
mouse_flag dd 0x0
736
;mouse_flag dd 0x0
684
 
737
 
685
dataBuffer:
738
dataBuffer:
686
.1: rb 512
739
.1: rb 512
687
.2: rb 512
740
.2: rb 512
688
.3: rb 512
741
.3: rb 512
689
.4: rb 512
742
.4: rb 512
690
.size1: rd 1
743
.size1: rd 1
691
.size2: rd 1
744
.size2: rd 1
692
.size3: rd 1
745
.size3: rd 1
693
.size4: rd 1
746
.size4: rd 1
694
;255+255+2
747
;255+255+2
695
;äâà çàïàñíûõ áàéòà íåîáõîäèìû äëÿ òîãî ÷òî áû íå ïåïåðåïèñàòü ñëåäóþùèåé áàéòû, â êîíöå áóôåðà 0
748
;äâà çàïàñíûõ áàéòà íåîáõîäèìû äëÿ òîãî ÷òî áû íå ïåïåðåïèñàòü ñëåäóþùèåé áàéòû, â êîíöå áóôåðà 0
696
dataBufferEnd:
749
dataBufferEnd:
-
 
750
 
697
 
751
mouse_dd  dd ?
698
sc  system_colors
752
sc  system_colors
699
 
753
 
700
I_END:
754
I_END:
701
        rb 4096
755
        rb 4096
702
align 16
756
align 16
703
STACKTOP:
757
STACKTOP:
704
 
758
 
705
MEM:
759
MEM: