Subversion Repositories Kolibri OS

Rev

Rev 7443 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7443 Rev 7459
Line 1... Line 1...
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
; Compile with FASM
4
; Compile with FASM
5
; Version 0.3.6: Oct 9, 2018
5
; Version 0.3.7: Oct 14, 2018
Line 6... Line 6...
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,
Line 29... Line 29...
29
use32
29
use32
30
org 0x0    ; áàçîâûé àäðåñ ðàçìåùåíèÿ êîäà, âñåãäà 0x0
30
org 0x0    ; áàçîâûé àäðåñ ðàçìåùåíèÿ êîäà, âñåãäà 0x0
Line 31... Line 31...
31
 
31
 
32
UNLOCKd = 0
32
UNLOCKd = 0
-
 
33
LOCKd   = 1
Line 33... Line 34...
33
LOCKd   = 1
34
SUPERLOCKd = 2
34
 
35
 
35
; çàãîëîâîê
36
; çàãîëîâîê
36
db 'MENUET01'     ;ìàãè÷åñêèé èäåíòèôèêàòîð
37
db 'MENUET01'     ;ìàãè÷åñêèé èäåíòèôèêàòîð
Line 116... Line 117...
116
   jne hotkey.end
117
   jne hotkey.end
Line 117... Line 118...
117
 
118
 
118
   cmp ah, byte[keyActivate]   ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà
119
   cmp ah, byte[keyActivate]   ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà
Line -... Line 120...
-
 
120
   jne @f
-
 
121
 
119
   jne @f
122
   ;ïðîâåðêè äëÿ mode 3
120
 
123
   cmp byte[state], SUPERLOCKd
121
;for mode 3 [
124
   je hotkey.end
Line 122... Line 125...
122
   cmp byte[keyState], 1
125
   cmp byte[keyState], 1
123
   je hotkey.e
126
   je hotkey.end
124
 
127
 
125
   push eax ebx
128
   push eax ebx
Line 130... Line 133...
130
   mov word[o.x], ax
133
   mov word[o.x], ax
131
   pop ebx eax
134
   pop ebx eax
Line 132... Line 135...
132
 
135
 
133
   mov byte[keyState], 1
136
   mov byte[keyState], 1
134
   mov byte[state], UNLOCKd
-
 
135
.e:
-
 
136
;]
-
 
137
   ;mov byte[state], UNLOCKd
137
   mov byte[state], UNLOCKd
138
   jmp hotkey.end
138
   jmp hotkey.end
139
@@:
139
@@:
140
   push edx
140
   push edx
141
   xor edx, edx
141
   xor edx, edx
142
   mov dl, byte[keyActivate]
142
   mov dl, byte[keyActivate]
143
   add dl, 128
143
   add dl, 128
144
   cmp ah, dl   ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà
144
   cmp ah, dl   ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà
145
   jne @f       ;hotkey.end
-
 
146
   ;mov ecx, 0  ;ñòðîêè äëÿ îòëàäêè è òåñòà
-
 
-
 
145
   jne @f       ;hotkey.end
147
   ;call run_command
146
 
148
   mov byte[keyState], 0
147
   mov byte[keyState], 0
149
   mov byte[state], LOCKd
148
   mov byte[state], LOCKd
150
@@:
149
@@:
151
   pop edx
150
   pop edx
Line 245... Line 244...
245
;çàïóñê ïðèëîæåíèÿ: ecx - àêòèâíûé óãîë: lu=0, ld=1, ru=2, rd=3
244
;çàïóñê ïðèëîæåíèÿ: ecx - àêòèâíûé óãîë: lu=0, ld=1, ru=2, rd=3
246
run_command:
245
run_command:
247
   cmp byte[state], UNLOCKd
246
   cmp byte[state], UNLOCKd
248
   jne run_command.end
247
   jne run_command.end
Line 249... Line -...
249
 
-
 
250
;   cmp byte[mode], 2     ;åñëè ðåæèì âòîðîé
-
 
251
;   jne @f
-
 
252
 
248
 
Line 253... Line 249...
253
   push eax ebx ecx
249
   push eax ebx ecx
254
 
250
 
255
   cmp ecx, 0
251
   cmp ecx, 0
-
 
252
   jne @f
-
 
253
   mov eax, apps.path1 ;dword[newData.lu]
256
   jne @f
254
   cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0
-
 
255
   je .set0
-
 
256
   mov dword[struct70.path_adr], eax
257
   mov eax, dword[newData.lu]
257
   mov eax, apps.param1
258
   mov dword[struct70.path_adr], eax
258
   mov dword[struct70.param_adr], eax
259
   jmp .end_set_path
259
   jmp .end_set_path
260
@@:
260
@@:
261
   cmp ecx, 1
261
   cmp ecx, 1
-
 
262
   jne @f
-
 
263
   mov eax, apps.path2 ;dword[newData.ld]
262
   jne @f
264
   cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0
-
 
265
   je .set0
-
 
266
   mov dword[struct70.path_adr], eax
263
   mov eax, dword[newData.ld]
267
   mov eax, apps.param2
264
   mov dword[struct70.path_adr], eax
268
   mov dword[struct70.param_adr], eax
265
   jmp .end_set_path
269
   jmp .end_set_path
266
@@:
270
@@:
267
   cmp ecx, 2
271
   cmp ecx, 2
-
 
272
   jne @f
-
 
273
   mov eax, apps.path3 ;dword[newData.ru]
268
   jne @f
274
   cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0
-
 
275
   je .set0
-
 
276
   mov dword[struct70.path_adr], eax
269
   mov eax, dword[newData.ru]
277
   mov eax, apps.param3
270
   mov dword[struct70.path_adr], eax
278
   mov dword[struct70.param_adr], eax
271
   jmp .end_set_path
279
   jmp .end_set_path
272
@@:
280
@@:
273
   cmp ecx, 3
281
   cmp ecx, 3
-
 
282
   jne .set0 ;.end_set_path
-
 
283
   mov eax, apps.path4 ;dword[newData.rd]
274
   jne .end_set_path
284
   cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0
-
 
285
   je .set0
-
 
286
   mov dword[struct70.path_adr], eax
275
   mov eax, dword[newData.rd]
287
   mov eax, apps.param4
276
   mov dword[struct70.path_adr], eax
288
   mov dword[struct70.param_adr], eax
277
   jmp .end_set_path
-
 
278
.end_set_path:
-
 
279
 
-
 
280
   ;ïàðàìåòðû
-
 
281
   ;mov dword[struct.adr],
-
 
282
 
289
   jmp .end_set_path
283
;åñëè àäðåñ 0, òî íè÷åãî íå äåëàòü
-
 
284
   cmp dword[struct70.path_adr], 0
-
 
285
   jne .next
290
.set0:
286
   ;mov eax, testData.ld
291
   ;mov dword[struct70.path_adr], 0
287
   ;mov dword[struct70.path_adr], eax
292
   ;mov dword[struct70.param_adr], 0
288
   jmp @f
-
 
289
.next:
-
 
290
;êîíåö êîäà äëÿ çàìåíû
293
   jmp @f
291
 
294
.end_set_path:
292
   mcall 70, struct70
295
   mcall 70, struct70
293
@@:
296
@@:
294
   mov byte[state], LOCKd
-
 
295
   ;mov byte[keyState], 0
297
   mov byte[state], LOCKd
296
 
298
   ;mov byte[keyState], 0
297
   pop ecx ebx eax
299
   pop ecx ebx eax
Line 298... Line 300...
298
.end:
300
.end:
299
   ret
301
   ret
300
 
302
 
301
struct70: ;Ôîðìàò èíôîðìàöèîííîé ñòðóêòóðû
303
struct70: ;Ôîðìàò èíôîðìàöèîííîé ñòðóêòóðû
302
  .func       dd 7 ; íîìåð ïîäôóíêöèè
304
  .func       dd 7 ; íîìåð ïîäôóíêöèè
303
  .mask       dd 0
305
  .mask       dd 0
304
  .param_adr  dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè
306
  .param_adr  dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè
Line 305... Line 307...
305
  .other      dd 0, 0
307
  .other      dd 0, 0
306
  .path       db 0 ; "/rd/1/TINYPAD",0 ; ïóòü
308
  .path       db 0
Line -... Line 309...
-
 
309
  .path_adr   dd 0 ; óêàçàòåëü íà ñòðîêó ñ ïóò¸ì
-
 
310
 
-
 
311
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
-
 
312
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
-
 
313
 
-
 
314
 
-
 
315
;ïðîõîäèì äî êîíöà òåêóùåé ñòðîêè
-
 
316
gotoEndString:
-
 
317
   cmp eax, edx  ;åñëè ôàéë çàêîí÷èëñÿ, òî
-
 
318
   ja @f         ;âûõîäèì
-
 
319
   cmp byte[eax], 10
-
 
320
   je @f
-
 
321
   cmp byte[eax], 0
-
 
322
   je @f
-
 
323
   cmp byte[eax], 13
-
 
324
   je @f
-
 
325
   ;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë
-
 
326
   inc eax
-
 
327
   jmp gotoEndString
-
 
328
@@:
-
 
329
   ret
-
 
330
 
-
 
331
;ïðîïóñêàåì ïåðåíîñû â íà÷àëå ñòðîêè äî ïåðâîãî àäåêâàòíîãî ñèìâîëà
-
 
332
gotoStartString:
-
 
333
   cmp eax, edx  ;åñëè ôàéë çàêîí÷èëñÿ, òî
-
 
334
   ja @f         ;âûõîäèì
-
 
335
   cmp byte[eax], 10
-
 
336
   je .next
-
 
337
   cmp byte[eax], 0
-
 
338
   je .next
-
 
339
   cmp byte[eax], 13
-
 
340
   je .next
-
 
341
   jmp @f ;åñëè ýòî äðóãîé ñèìâîë, òî âûõîäèì
-
 
342
.next:   ;ïåðåõîäèì íà ñëåäóþùèé ñèìâîë
-
 
343
   inc eax
-
 
344
   jmp gotoStartString
-
 
345
@@:
-
 
346
   ret
-
 
347
 
-
 
348
 
-
 
349
sep: db '|' ;ñèìâîë ðàçäåëèòåëü ñòðîêè ïóòè + ïàðàìåòðû çàïóñêà
-
 
350
readPath:
-
 
351
   push ebx esi edi
-
 
352
   mov bh, 0 ; 0 -  çíàê òîãî, ÷òî ïàðàìåòðû åù¸ íå âñòðå÷àëèñü
-
 
353
   mov byte[esi], 0   ;ïðîèíèöèàëèçèðóåì áóôåðû-ñòðîêè ïóñòîòîé (íà âñÿêèé ñëó÷àé)
-
 
354
   mov byte[edi], 0
-
 
355
@@:
-
 
356
   cmp eax, edx  ;åñëè ôàéë çàêîí÷èëñÿ, òî
-
 
357
   ja @f         ;âûõîäèì
-
 
358
   mov bl, byte[eax]
-
 
359
   ;åñëè î÷åðåäíîé ñèìâîë íå êîíåö ñòðîêè
-
 
360
   cmp bl, 10
-
 
361
   je @f  ;èíà÷å âûõîä
-
 
362
   cmp bl, 0
-
 
363
   je @f
-
 
364
   cmp bl, 13
-
 
365
   je @f
-
 
366
   ;è íå íà÷àëî ïàðàìåòðîâ
-
 
367
   cmp bl, byte[sep]
-
 
368
   jne .read
-
 
369
   ;åñëè sep óæå âñòðå÷àëè ðàíåå, òî
-
 
370
   cmp bh, 0
-
 
371
   jne .read ;ïðîñòî ïðîäîëæàåì ñ÷èòûâàòü ïàðàìåòðû äàëüøå  (â íèõ ìîæåò áûòü ÷òî óãîäíî)
-
 
372
   ;èíà÷å êëàä¸ì çàâåðøàþùèé 0 è ïåðåõîäèì ê áóôåðó ñ ïàðàìåòðàìè
-
 
373
   mov byte[esi], 0
-
 
374
   call trim ;åù¸ íå çàáóäåì óáðàòü ëèøíèå òàáóëÿöèè è ïðîáåëû íà êîíöå íàøåé ñòðîêè
-
 
375
   mov esi, edi
-
 
376
   mov bh, 1
-
 
377
   inc eax
-
 
378
   jmp @b
-
 
379
.read: ;òî çàïèñûâàåì ñèìâîë â íàø áóôåð è ïåðåõîäèì íà ñëåäóþùèé ñèìâîë
-
 
380
   mov byte[esi], bl
-
 
381
   inc esi
-
 
382
   inc eax
-
 
383
   jmp @b
-
 
384
@@:
-
 
385
   mov byte[esi], 0 ;êëàä¸ì çàâåðøàþùèé íîëü
-
 
386
   pop edi esi ebx
-
 
387
   ret
-
 
388
 
-
 
389
trim:  ;esi - ïîñëåäíèé íóëåâîé ñèìâîë ñòðîêè
-
 
390
   ;push esi
-
 
391
   mov byte[esi], 0
-
 
392
   dec esi
-
 
393
   cmp byte[esi], 8
-
 
394
   je trim
-
 
395
   cmp byte[esi], 32
-
 
396
   je trim
-
 
397
   inc esi
-
 
398
   ;pop esi
307
  .path_adr   dd 0 ;testData.lu
399
   ret
308
 
400
 
309
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
401
 
-
 
402
cfgFileAdr: dd 0     ;àäðåñ êîíôèãóðàöèîííîãî ôàéëà â ïàìÿòè
310
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
403
 
311
 
404
loadConfig:
312
loadConfig:
405
   push eax ebx ecx edx
313
   push eax ebx ecx edx
406
   mcall 68, 27, fileName   ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ
314
   mcall 68, 27, fileName   ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ
407
   mov dword[cfgFileAdr], eax
Line 315... Line 408...
315
   cmp eax, 0
408
   cmp eax, 0
Line 316... Line 409...
316
   je loadConfig.exit       ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
409
   je loadConfig.exit       ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
317
   ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx
410
   ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx
318
   cmp edx, 0               ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî çàâåðøàåì ðàáîòó
411
   cmp edx, 0               ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî çàâåðøàåì ðàáîòó
319
   je loadConfig.exit
412
   je loadConfig.exit
320
 
413
 
Line 321... Line 414...
321
   add edx, eax             ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà
414
   add edx, eax             ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà
-
 
415
 
-
 
416
   mov byte[mode], 0
-
 
417
   cmp byte[eax], '0'       ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî
-
 
418
   je loadConfig.exit       ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
-
 
419
   cmp byte[eax], 110 ;'n'
-
 
420
   je loadConfig.exit
-
 
421
 
-
 
422
   ;èíà÷å âûñòàâëÿåì ðåæèì
-
 
423
   cmp byte[eax], 121 ;'y'  ;êëàññè÷åñêèé ðåæèì
-
 
424
   jne @f
322
 
425
   mov byte[mode], 1
323
   mov byte[mode], 0
426
   jmp loadConfig.modeEnd
324
   cmp byte[eax], '0' ;121 ;'y'  ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî
427
@@:
325
   je loadConfig.exit      ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
428
   cmp byte[eax], '1'       ;êëàññè÷åñêèé ðåæèì
326
   cmp byte[eax], 110 ;'n'
429
   jne @f
327
   je loadConfig.exit
430
   mov byte[mode], 1
328
 
431
   jmp loadConfig.modeEnd
329
   ;èíà÷å âûñòàâëÿåì ðåæèì
432
@@:
330
   cmp byte[eax], '2'       ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå
433
   cmp byte[eax], '2'       ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå
331
   jne @f
434
   jne @f
332
   mov byte[mode], 2
435
   mov byte[mode], 2
-
 
436
   jmp loadConfig.modeEnd
333
   jmp loadConfig.modeEnd
437
@@:
Line -... Line 438...
-
 
438
   cmp byte[eax], '3'       ;ðåæèì æåñòà ïðè çàæàòîé êëàâèøå
-
 
439
   jne @f
-
 
440
   mov byte[mode], 3
-
 
441
   jmp loadConfig.modeEnd
-
 
442
@@:
334
@@:
443
   mov byte[mode], 0        ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - îòêëþ÷åíî
-
 
444
   jmp loadConfig.exit
-
 
445
.modeEnd:
-
 
446
 
-
 
447
   ;èä¸ì äî êîíöà ýòîé ñòðîêè
-
 
448
   call gotoEndString
-
 
449
   ;íàõîäèì íà÷àëî ñëåäóþùåé ñòðîêè
-
 
450
   call gotoStartString
-
 
451
 
-
 
452
   push esi edi
-
 
453
 
335
   cmp byte[eax], '3'       ;ðåæèì æåñòà ïðè çàæàòîé êëàâèøå
454
   ;ñ÷èòûâàåì ïóòü äëÿ ëåâîãî âåðõíåãî óãëà
-
 
455
   mov esi, apps.path1
-
 
456
   mov edi, apps.param1
336
   jne @f
457
   call readPath
-
 
458
   call gotoStartString  ;íàõîäèì íà÷àëî ñëåäóþùåé ñòðîêè
337
   mov byte[mode], 3
459
 
-
 
460
   ;ñ÷èòûâàåì ïóòü äëÿ ëåâîãî íèæíåãî óãëà
-
 
461
   mov esi, apps.path2
-
 
462
   mov edi, apps.param2
338
   jmp loadConfig.modeEnd
463
   call readPath
339
@@:
464
   call gotoStartString
-
 
465
 
-
 
466
   ;ñ÷èòûâàåì ïóòü äëÿ ïðàâîãî âåðõíåãî óãëà
-
 
467
   mov esi, apps.path3
-
 
468
   mov edi, apps.param3
-
 
469
   call readPath
340
   mov byte[mode], 1        ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - êëàññè÷åñêèé ðåæèì
470
   call gotoStartString
-
 
471
 
341
.modeEnd:
472
   ;ñ÷èòûâàåì ïóòü äëÿ ïðàâîãî íèæíåãî óãëà
-
 
473
   mov esi, apps.path4
342
 
474
   mov edi, apps.param4
-
 
475
   call readPath
-
 
476
   call gotoStartString
-
 
477
 
343
   push edi
478
   ;call checkAdr ;ïðîâåðèì ñòðîêè íà '-' è ïóñòîòó è âûñòàâèì áèòîâóþ ìàñêó
-
 
479
   call checkPathAdr
-
 
480
 
-
 
481
   pop edi esi
-
 
482
 
-
 
483
   ;ïðîïóñêàåì ñòðîêó ñ èìåíåì êëàâèøè
-
 
484
   call gotoEndString
-
 
485
   call gotoStartString
-
 
486
 
-
 
487
   ;ñ÷èòûâàåì ñêàíêîä àêòèâàöèîííîé êëàâèøè
344
   push esi
488
   ;call readKey
-
 
489
   ;call gotoEndString
345
   ; ñîõðàíÿåì â edi óêàçàòåëü íà íà÷àëî òàáëèöû àäðåñîâ íàøèõ êîìàíä
490
   push esi edi ecx
346
   mov edi, newData
491
   mov esi, keystr
-
 
492
   mov edi, keystr
-
 
493
   call readPath
-
 
494
   ;ïðåîáðàçóåì ñòðîêó â ÷èñëî
-
 
495
   mov esi, keystr
-
 
496
   call strToInteger
-
 
497
   mov byte[keyActivate], cl
-
 
498
   pop ecx edi esi
-
 
499
   call gotoStartString
-
 
500
 
347
   ; ñîõðàíÿåì àäðåñà ñòðîê è äîáàâëÿåì 0 â êîíöå
501
   ;ñ÷èòûâàåì ðàäèóñ
-
 
502
   push esi edi ecx
-
 
503
   mov esi, radstr
-
 
504
   mov edi, radstr
-
 
505
   call readPath
348
   mov esi, eax
506
   ;ïðåîáðàçóåì ñòðîêó â ÷èñëî
349
.block:
507
   mov esi, radstr
Line 350... Line -...
350
   inc esi
-
 
351
   cmp byte[esi], 10         ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû
-
 
352
   je loadConfig.propusk     ;äî ïåðâîãî îòëè÷íîãî îò íèõ
-
 
353
   cmp byte[esi], 13
-
 
354
   je loadConfig.propusk
-
 
355
 
-
 
356
   ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - åñëè ýòî íà çíàê ìèíóñ, òî çàïîìèíàåì åãî
-
 
357
   mov dword[edi], esi
508
   call strToInteger
358
   add edi, 4
-
 
359
 
-
 
360
   ;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end
-
 
361
.while:
-
 
362
   inc esi
-
 
Line -... Line 509...
-
 
509
   ;òåïåðü ecx - çíà÷åíèå ðàäèóñà
-
 
510
   ;!!! äîáàâèòü ïðîâåðêó, ÷òîáû ÷èñëî íå áûëî áîëüøå îáëàñòè ýêðàíà
-
 
511
   ;íàñ èíòåðåñóåò êâàäðàò ÷èñëà
-
 
512
   push eax edx
-
 
513
   mov eax, ecx ;dword[radius2]
-
 
514
   mul ecx
-
 
515
   mov dword[radius2], eax
-
 
516
   pop edx eax
-
 
517
 
-
 
518
   pop ecx edi esi
-
 
519
 
-
 
520
   ;ñ÷èòûâàòü ðàçìåð ýëåìåíòîâ èíòåðôåéñà íàì íå íóæíî (ïîêà ÷òî ýòîò ïàðàìåòð òîëüêî äëÿ êîíôèãà)
-
 
521
   jmp .end
-
 
522
.exit:
-
 
523
   pop edx ecx ebx eax
-
 
524
   mcall -1 ;çàêðûòü ýòó ïðîãðàììó
-
 
525
.end:
-
 
526
   mov ecx, dword[cfgFileAdr]    ;åñëè ôàéë áûë çàãðóæåí, òî
-
 
527
   cmp ecx, 0
-
 
528
   je @f
-
 
529
   mcall 68, 13, ecx  ;âûãðóæàåì ôàéë èç ïàìÿòè
-
 
530
@@:
-
 
531
   pop edx ecx ebx eax
-
 
532
   ret
-
 
533
 
-
 
534
 
-
 
535
;readKey:
-
 
536
   ;÷èòàåì êëàâèøó è âûõîäèì
-
 
537
;   cmp dword[eax], 'Ctrl'
-
 
538
;   jne .notCtrl
-
 
539
;   mov byte[keyActivate], 3
-
 
540
;   jmp .end
-
 
541
;.notCtrl:
-
 
542
;   cmp dword[eax], 'Shif'
-
 
543
;   jne .notShift
-
 
544
;   mov byte[keyActivate], 2
-
 
545
;   jmp .end
-
 
546
;.notShift:
-
 
547
;   cmp dword[eax], 'Spac'
-
 
548
;   jne .notSpace
-
 
549
;   mov byte[keyActivate], 32
-
 
550
;   jmp .end
-
 
551
;.notSpace:
-
 
552
;   cmp word[eax], 'Al'
-
 
553
;   jne .notAlt
-
 
554
;   mov byte[keyActivate], 1
-
 
555
;   jmp .end
-
 
556
;.notAlt:
-
 
557
   ;óáåäèìñÿ, ÷òî òàì 1 ñèìâîë, à íå ñòðîêà
-
 
558
;   cmp byte[eax+1], 10
-
 
559
;   je .oneSymb
-
 
560
;   cmp byte[eax+1], 0
-
 
561
;   je .oneSymb
-
 
562
;   cmp byte[eax+1], 13
-
 
563
;   je .oneSymb
-
 
564
;   jmp .default    ;â ëþáîì äðóãîì ñëó÷àå îøèáêà êîíôèãà - âûõîä
-
 
565
;.oneSymb:
-
 
566
   ;ïðîâåðÿåì, ÷òî ñèìâîë ðàçðåø¸ííûé  !!!  äîäåëàòü
-
 
567
 
-
 
568
   ;äîáàâëÿåì ñèìâîë êàê åñòü
-
 
569
;   push ebx
-
 
570
;   ;xor ebx, ebx
-
 
571
;   mov bl, byte[eax]
-
 
572
;   mov byte[keyActivate], bl
-
 
573
;   pop ebx
-
 
574
 
-
 
575
;   jmp .end
-
 
576
;.default:
-
 
577
;   mcall -1
-
 
578
;   ;mov byte[keyActivate], 2
-
 
579
;.end:
-
 
580
;   ret
-
 
581
 
-
 
582
 
-
 
583
checkPathAdr:
363
   cmp esi, edx           ;òóò áóäåò ïðîáëåìà - òê ôàéë çàêîí÷èëñÿ, à íóëÿ íå áûëî !!! èñïðàâèòü
584
   push eax ebx
-
 
585
   xor eax, eax
-
 
586
 
364
   jae loadConfig.fileend
587
   mov ebx, apps.path1
365
   cmp byte[esi], 10
588
   cmp byte[ebx], '-'
-
 
589
   jne @f
366
   je loadConfig.ura
590
   ;cmp byte[ebx+1], 0
367
   cmp byte[esi], 0
591
   ;jne @f
368
   je loadConfig.ura
592
   mov byte[ebx], 0
369
   cmp byte[esi], 13
593
@@:
-
 
594
   mov ebx, apps.path2
-
 
595
   cmp byte[ebx], '-'
-
 
596
   jne @f
-
 
597
   ;cmp byte[ebx+1], 0
-
 
598
   ;jne @f
370
   jne loadConfig.while
599
   mov byte[ebx], 0
-
 
600
@@:
-
 
601
   mov ebx, apps.path3
371
.ura:
602
   cmp byte[ebx], '-'
372
   mov byte[esi], 0
603
   jne @f
373
 
604
   ;cmp byte[ebx+1], 0
-
 
605
   ;jne @f
Line 374... Line -...
374
   ;cmp byte[esi-1], '-'
-
 
375
   ;jne @f
-
 
376
   push esi  ;åñëè ýòî áûë çíàê ìèíóñ, òî ìåíÿåì àäðåñ íà íîëü
-
 
Line -... Line 606...
-
 
606
   mov byte[ebx], 0
377
   mov esi, dword[edi-4]
607
@@:
378
   cmp byte[esi], '-'
608
   mov ebx, apps.path4
Line -... Line 609...
-
 
609
   cmp byte[ebx], '-'
379
   jne @f
610
   jne @f
-
 
611
   ;cmp byte[ebx+1], 0
-
 
612
   ;jne @f
-
 
613
   mov byte[ebx], 0
-
 
614
@@:
-
 
615
   pop ebx eax
-
 
616
   ret
-
 
617
 
-
 
618
 
-
 
619
checkAdr:
-
 
620
   push eax ebx
-
 
621
   xor eax, eax
-
 
622
 
-
 
623
   mov ebx, apps.path1
-
 
624
   cmp byte[ebx], '-'
-
 
625
   jne @f
-
 
626
   inc eax
-
 
627
@@:
-
 
628
   mov ebx, apps.path2
Line -... Line 629...
-
 
629
   cmp byte[ebx], '-'
-
 
630
   jne @f
380
   cmp byte[esi+1], 0
631
   add eax, 2
-
 
632
@@:
-
 
633
   mov ebx, apps.path3
-
 
634
   cmp byte[ebx], '-'
381
   jne @f
635
   jne @f
-
 
636
   add eax, 4
-
 
637
@@:
-
 
638
   mov ebx, apps.path4
-
 
639
   cmp byte[ebx], '-'
382
   mov dword[edi-4], 0
640
   jne @f
-
 
641
   add eax, 8
-
 
642
@@:
383
@@:
643
 
384
   pop esi
644
   mov ebx, apps.param1
385
 
645
   cmp byte[ebx], '-'
-
 
646
   jne @f
-
 
647
   add eax, 16
386
   cmp edi, newDataEnd ;newData.end      ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà
648
@@:
-
 
649
   mov ebx, apps.param2
-
 
650
   cmp byte[ebx], '-'
387
   jb loadConfig.block
651
   jne @f
388
.fileend:
652
   add eax, 32
Line -... Line 653...
-
 
653
@@:
-
 
654
   mov ebx, apps.param3
-
 
655
   cmp byte[ebx], '-'
-
 
656
   jne @f
-
 
657
   add eax, 64
-
 
658
@@:
-
 
659
   mov ebx, apps.param4
-
 
660
   cmp byte[ebx], '-'
-
 
661
   jne @f
-
 
662
   add eax, 128
-
 
663
@@:
-
 
664
 
-
 
665
   mov byte[apps.bits], al
-
 
666
   pop ebx eax
-
 
667
   ret
-
 
668
 
-
 
669
 
-
 
670
 
-
 
671
;ïðåîáðàçîâàíèå ñòðîêè â öåëîå ÷èñëî
-
 
672
strToInteger: ;âõîä: esi - óêàçàòåëü íà ñòðîêó ñ äåñÿòè÷íîé çàïèñüþ ÷èñëà, âûõîä: eñx - ÷èñëî
-
 
673
   push eax ebx edx edi
-
 
674
   xor eax, eax  ;îáíóëÿåì eax
-
 
675
   xor ecx, ecx
-
 
676
   mov edi, esi
-
 
677
.get_last_symbol:
-
 
678
   ;÷èòàåì î÷åðåäíîé ñèìâîë
-
 
679
   mov al, byte[edi]
-
 
680
 
-
 
681
   ;åñëè ýòî íîëü, òî ñòðîêà çàêîí÷èëàñü
-
 
682
   cmp al, 0
-
 
683
   je @f
-
 
684
 
-
 
685
   ;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë
-
 
686
   inc edi
-
 
687
   jmp .get_last_symbol
-
 
688
@@:   ;äîøëè äî ïîñëåäíåãî ñèìâîëà è êëàä¸ì àäðåñ íà íåãî â edi
-
 
689
   dec edi
-
 
690
 
-
 
691
   cmp edi, esi    ;àäðåñ ïîñëåäíåãî ñèìâîëà äîëæåí áûòü äàëüøå àäðåñà ïåðâîãî ñèìâîëà
-
 
692
   jae @f
-
 
693
   jmp .error  ;èíà÷å îøèáêà
-
 
694
@@:
-
 
695
   ;òåïåðü â edi ïîñëåäíèé ñèìâîë, à esi óêàçûâàåò íà íà÷àëî ñòðîêè (íà ïåðâé ñèìâîë ñòðîêè)
-
 
696
   mov cl, byte[edi]
-
 
697
   sub cl, 48 ;0x30 ;'0'
-
 
698
   dec edi         ;ïåðåõîäèì íà ñëåä ñèìâîë îò êîíöà
-
 
699
   mov ebx, 10     ;ìíîæèòåëü ñòåïåíè
-
 
700
.tranform_cicle:
-
 
701
   cmp edi, esi        ;åñëè áîëüøå íåò ñèìâîëîâ ñòðîêå, òî ÷èñëî ïðåîáðàçîâàëè - âûõîäèì
-
 
702
   jb .end
-
 
703
 
-
 
704
   mov eax, 0
-
 
705
   mov al, byte[edi]
-
 
706
   sub al, 48 ;'0'
-
 
707
   cmp al, 9 ;0x39           ;åñëè ÷èñëî áîëüøå 9, òî âèäèìî â ñòðîêå áûëî ÷òî-òî íå òàê
-
 
708
   ja .error
-
 
709
   cmp al, 0 ;0x30           ;åñëè ÷èñëî ìåíüøå 0, òî âèäèìî â ñòðîêå áûëî ÷òî-òî íå òàê
Line 389... Line 710...
389
 
710
   jb .error
390
   pop esi
711
   mov edx, 0
391
   pop edi
712
   mul ebx
392
 
713
 
Line 472... Line 793...
472
   ret
793
   ret
Line 473... Line 794...
473
 
794
 
474
 
795
 
475
;MODE 3
796
;MODE 3
476
init03:
797
init03:
477
   mov dword[radius2], 100; 10*10
798
   ;mov dword[radius2], 100; 10*10
478
   mov dword[backAdr], mode03
799
   mov dword[backAdr], mode03
479
   call setHotKey
800
   call setHotKey
480
mode03:
801
mode03:
Line 494... Line 815...
494
   je mouse03.updateCoord
815
   je mouse03.updateCoord
Line 495... Line 816...
495
 
816
 
496
   cmp byte[state], LOCKd    ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû
817
   cmp byte[state], LOCKd    ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû
Line -... Line 818...
-
 
818
   je mouse03.updateCoord
-
 
819
 
-
 
820
   cmp byte[state], SUPERLOCKd  ;åñëè äåéñòâèå áûëî âûïîëíåíî è ïîëó÷èëè áëîêèðîâêó, òî æä¸ì îòïóñêàíèÿ êëàâèøè àêòèâàöèè
497
   je mouse03.updateCoord
821
   je @f
498
 
822
 
499
   call checkPointInCircle   ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà
823
   call checkPointInCircle   ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà
500
   jmp @f
824
   jmp @f
501
.updateCoord:
825
.updateCoord:
Line 587... Line 911...
587
 
911
 
588
   ;èíà÷å ëåâûé íèæíèé óãîë
912
   ;èíà÷å ëåâûé íèæíèé óãîë
589
   mov ecx, 1
913
   mov ecx, 1
590
   call run_command
914
   call run_command
591
   mov byte[keyState], 0
915
   mov byte[keyState], 0
592
   mov byte[state], LOCKd
916
   mov byte[state], SUPERLOCKd
Line 593... Line 917...
593
   jmp activateCorner.end
917
   jmp activateCorner.end
594
 
918
 
595
.leftup:
919
.leftup:
596
   ;ëåâûé âåðõíèé óãîë
920
   ;ëåâûé âåðõíèé óãîë
597
   mov ecx, 0
921
   mov ecx, 0
598
   call run_command
922
   call run_command
599
   mov byte[keyState], 0
923
   mov byte[keyState], 0
Line 600... Line 924...
600
   mov byte[state], LOCKd
924
   mov byte[state], SUPERLOCKd
601
   jmp activateCorner.end
925
   jmp activateCorner.end
602
 
926
 
Line 608... Line 932...
608
 
932
 
609
   ;èíà÷å ïðàâûé íèæíèé óãîë
933
   ;èíà÷å ïðàâûé íèæíèé óãîë
610
   mov ecx, 3
934
   mov ecx, 3
611
   call run_command
935
   call run_command
612
   mov byte[keyState], 0
936
   mov byte[keyState], 0
613
   mov byte[state], LOCKd
937
   mov byte[state], SUPERLOCKd
Line 614... Line 938...
614
   jmp activateCorner.end
938
   jmp activateCorner.end
615
 
939
 
616
.rightup:
940
.rightup:
617
   ;ïðàâûé âåðõíèé óãîë
941
   ;ïðàâûé âåðõíèé óãîë
618
   mov ecx, 2
942
   mov ecx, 2
619
   call run_command
943
   call run_command
620
   mov byte[keyState], 0
944
   mov byte[keyState], 0
Line 621... Line 945...
621
   mov byte[state], LOCKd
945
   mov byte[state], SUPERLOCKd
622
   jmp activateCorner.end
946
   jmp activateCorner.end
623
 
947
 
Line 629... Line 953...
629
 
953
 
630
keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè
954
keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè
Line 631... Line 955...
631
keyState    db 0  ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà
955
keyState    db 0  ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà
632
 
-
 
633
backAdr rd 1      ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè
-
 
634
 
-
 
635
;slotMax dd 0
-
 
636
;selfPID dd 0
956
 
637
;buf db 1024 dup(0)
957
backAdr rd 1      ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè
638
slotMax rd 1
958
slotMax rd 1
Line 639... Line 959...
639
selfPID rd 1
959
selfPID rd 1
640
buf rb 1024
960
buf rb 1024
641
 
961
 
642
;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà
962
;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà
Line 643... Line 963...
643
screen:
963
screen:
644
  .width  rw 1
964
  .width  rw 1
Line -... Line 965...
-
 
965
  .height rw 1
-
 
966
 
645
  .height rw 1
967
state: rb 1  ;ñîñòîÿíèå: 0=unlock, 1=lock, 2=superlock for mode 3
-
 
968
mode:  rb 1  ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå
646
 
969
 
-
 
970
 
-
 
971
keystr: rb 4 ;ñòðîêà ñî çíà÷åíèåì ñêàíêîäà àêòèâàöèîííîé êëàâèøè
647
state: rb 1  ;ñîñòîÿíèå: 0=unlock, 1=lock
972
radstr: rb 5 ;ñòðîêà ñî çíà÷åíèåì ðàäèóñà
-
 
973
apps:
-
 
974
 .bits: rb 1
648
mode:  rb 1  ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå
975
 .path1: rb 512
-
 
976
 .path2: rb 512
649
 
977
 .path3: rb 512
650
newData:  ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê
978
 .path4: rb 512
-
 
979
 .param1: rb 512
Line 651... Line 980...
651
  .lu rd 1
980
 .param2: rb 512