2,7 → 2,7 |
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; Compile with FASM |
; Version 0.3.6: Oct 9, 2018 |
; Version 0.3.7: Oct 14, 2018 |
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
; All rights reserved. |
31,6 → 31,7 |
|
UNLOCKd = 0 |
LOCKd = 1 |
SUPERLOCKd = 2 |
|
; çàãîëîâîê |
db 'MENUET01' ;ìàãè÷åñêèé èäåíòèôèêàòîð |
118,9 → 119,11 |
cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà |
jne @f |
|
;for mode 3 [ |
;ïðîâåðêè äëÿ mode 3 |
cmp byte[state], SUPERLOCKd |
je hotkey.end |
cmp byte[keyState], 1 |
je hotkey.e |
je hotkey.end |
|
push eax ebx |
mcall 37, 0 ;çàïîìèíàåì òåêóùèå(íà÷àëüíûå) êîîðäèíàòû ìûøè |
132,9 → 135,6 |
|
mov byte[keyState], 1 |
mov byte[state], UNLOCKd |
.e: |
;] |
;mov byte[state], UNLOCKd |
jmp hotkey.end |
@@: |
push edx |
143,8 → 143,7 |
add dl, 128 |
cmp ah, dl ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà |
jne @f ;hotkey.end |
;mov ecx, 0 ;ñòðîêè äëÿ îòëàäêè è òåñòà |
;call run_command |
|
mov byte[keyState], 0 |
mov byte[state], LOCKd |
@@: |
247,53 → 246,56 |
cmp byte[state], UNLOCKd |
jne run_command.end |
|
; cmp byte[mode], 2 ;åñëè ðåæèì âòîðîé |
; jne @f |
|
push eax ebx ecx |
|
cmp ecx, 0 |
jne @f |
mov eax, dword[newData.lu] |
mov eax, apps.path1 ;dword[newData.lu] |
cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
je .set0 |
mov dword[struct70.path_adr], eax |
mov eax, apps.param1 |
mov dword[struct70.param_adr], eax |
jmp .end_set_path |
@@: |
cmp ecx, 1 |
jne @f |
mov eax, dword[newData.ld] |
mov eax, apps.path2 ;dword[newData.ld] |
cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
je .set0 |
mov dword[struct70.path_adr], eax |
mov eax, apps.param2 |
mov dword[struct70.param_adr], eax |
jmp .end_set_path |
@@: |
cmp ecx, 2 |
jne @f |
mov eax, dword[newData.ru] |
mov eax, apps.path3 ;dword[newData.ru] |
cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
je .set0 |
mov dword[struct70.path_adr], eax |
mov eax, apps.param3 |
mov dword[struct70.param_adr], eax |
jmp .end_set_path |
@@: |
cmp ecx, 3 |
jne .end_set_path |
mov eax, dword[newData.rd] |
jne .set0 ;.end_set_path |
mov eax, apps.path4 ;dword[newData.rd] |
cmp byte[eax], 0 ;åñëè ïî àäðåñó ïóñòî (èëè ëåæàë ñèìâîë '-'), òî àäðåñ 0 |
je .set0 |
mov dword[struct70.path_adr], eax |
mov eax, apps.param4 |
mov dword[struct70.param_adr], eax |
jmp .end_set_path |
.set0: |
;mov dword[struct70.path_adr], 0 |
;mov dword[struct70.param_adr], 0 |
jmp @f |
.end_set_path: |
|
;ïàðàìåòðû |
;mov dword[struct.adr], |
|
;åñëè àäðåñ 0, òî íè÷åãî íå äåëàòü |
cmp dword[struct70.path_adr], 0 |
jne .next |
;mov eax, testData.ld |
;mov dword[struct70.path_adr], eax |
jmp @f |
.next: |
;êîíåö êîäà äëÿ çàìåíû |
|
mcall 70, struct70 |
@@: |
mov byte[state], LOCKd |
;mov byte[keyState], 0 |
|
pop ecx ebx eax |
.end: |
ret |
303,15 → 305,106 |
.mask dd 0 |
.param_adr dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè |
.other dd 0, 0 |
.path db 0 ; "/rd/1/TINYPAD",0 ; ïóòü |
.path_adr dd 0 ;testData.lu |
.path db 0 |
.path_adr dd 0 ; óêàçàòåëü íà ñòðîêó ñ ïóò¸ì |
|
;èìÿ êîíôèãóðàöèîííîãî ôàéëà |
fileName: db 'SETTINGS/HOTANGLES.CFG', 0 |
|
|
;ïðîõîäèì äî êîíöà òåêóùåé ñòðîêè |
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 |
|
;ïðîïóñêàåì ïåðåíîñû â íà÷àëå ñòðîêè äî ïåðâîãî àäåêâàòíîãî ñèìâîëà |
gotoStartString: |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
ja @f ;âûõîäèì |
cmp byte[eax], 10 |
je .next |
cmp byte[eax], 0 |
je .next |
cmp byte[eax], 13 |
je .next |
jmp @f ;åñëè ýòî äðóãîé ñèìâîë, òî âûõîäèì |
.next: ;ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
inc eax |
jmp gotoStartString |
@@: |
ret |
|
|
sep: db '|' ;ñèìâîë ðàçäåëèòåëü ñòðîêè ïóòè + ïàðàìåòðû çàïóñêà |
readPath: |
push ebx esi edi |
mov bh, 0 ; 0 - çíàê òîãî, ÷òî ïàðàìåòðû åù¸ íå âñòðå÷àëèñü |
mov byte[esi], 0 ;ïðîèíèöèàëèçèðóåì áóôåðû-ñòðîêè ïóñòîòîé (íà âñÿêèé ñëó÷àé) |
mov byte[edi], 0 |
@@: |
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî |
ja @f ;âûõîäèì |
mov bl, byte[eax] |
;åñëè î÷åðåäíîé ñèìâîë íå êîíåö ñòðîêè |
cmp bl, 10 |
je @f ;èíà÷å âûõîä |
cmp bl, 0 |
je @f |
cmp bl, 13 |
je @f |
;è íå íà÷àëî ïàðàìåòðîâ |
cmp bl, byte[sep] |
jne .read |
;åñëè sep óæå âñòðå÷àëè ðàíåå, òî |
cmp bh, 0 |
jne .read ;ïðîñòî ïðîäîëæàåì ñ÷èòûâàòü ïàðàìåòðû äàëüøå (â íèõ ìîæåò áûòü ÷òî óãîäíî) |
;èíà÷å êëàä¸ì çàâåðøàþùèé 0 è ïåðåõîäèì ê áóôåðó ñ ïàðàìåòðàìè |
mov byte[esi], 0 |
call trim ;åù¸ íå çàáóäåì óáðàòü ëèøíèå òàáóëÿöèè è ïðîáåëû íà êîíöå íàøåé ñòðîêè |
mov esi, edi |
mov bh, 1 |
inc eax |
jmp @b |
.read: ;òî çàïèñûâàåì ñèìâîë â íàø áóôåð è ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
mov byte[esi], bl |
inc esi |
inc eax |
jmp @b |
@@: |
mov byte[esi], 0 ;êëàä¸ì çàâåðøàþùèé íîëü |
pop edi esi ebx |
ret |
|
trim: ;esi - ïîñëåäíèé íóëåâîé ñèìâîë ñòðîêè |
;push esi |
mov byte[esi], 0 |
dec esi |
cmp byte[esi], 8 |
je trim |
cmp byte[esi], 32 |
je trim |
inc esi |
;pop esi |
ret |
|
|
cfgFileAdr: dd 0 ;àäðåñ êîíôèãóðàöèîííîãî ôàéëà â ïàìÿòè |
|
loadConfig: |
push eax ebx ecx edx |
mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ |
mov dword[cfgFileAdr], eax |
cmp eax, 0 |
je loadConfig.exit ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ |
;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx |
321,12 → 414,22 |
add edx, eax ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà |
|
mov byte[mode], 0 |
cmp byte[eax], '0' ;121 ;'y' ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî |
cmp byte[eax], '0' ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî |
je loadConfig.exit ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ |
cmp byte[eax], 110 ;'n' |
je loadConfig.exit |
|
;èíà÷å âûñòàâëÿåì ðåæèì |
cmp byte[eax], 121 ;'y' ;êëàññè÷åñêèé ðåæèì |
jne @f |
mov byte[mode], 1 |
jmp loadConfig.modeEnd |
@@: |
cmp byte[eax], '1' ;êëàññè÷åñêèé ðåæèì |
jne @f |
mov byte[mode], 1 |
jmp loadConfig.modeEnd |
@@: |
cmp byte[eax], '2' ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå |
jne @f |
mov byte[mode], 2 |
337,74 → 440,292 |
mov byte[mode], 3 |
jmp loadConfig.modeEnd |
@@: |
mov byte[mode], 1 ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - êëàññè÷åñêèé ðåæèì |
mov byte[mode], 0 ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - îòêëþ÷åíî |
jmp loadConfig.exit |
.modeEnd: |
|
push edi |
push esi |
; ñîõðàíÿåì â edi óêàçàòåëü íà íà÷àëî òàáëèöû àäðåñîâ íàøèõ êîìàíä |
mov edi, newData |
; ñîõðàíÿåì àäðåñà ñòðîê è äîáàâëÿåì 0 â êîíöå |
mov esi, eax |
.block: |
inc esi |
cmp byte[esi], 10 ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû |
je loadConfig.propusk ;äî ïåðâîãî îòëè÷íîãî îò íèõ |
cmp byte[esi], 13 |
je loadConfig.propusk |
;èä¸ì äî êîíöà ýòîé ñòðîêè |
call gotoEndString |
;íàõîäèì íà÷àëî ñëåäóþùåé ñòðîêè |
call gotoStartString |
|
; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - åñëè ýòî íà çíàê ìèíóñ, òî çàïîìèíàåì åãî |
mov dword[edi], esi |
add edi, 4 |
push esi edi |
|
;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end |
.while: |
inc esi |
cmp esi, edx ;òóò áóäåò ïðîáëåìà - òê ôàéë çàêîí÷èëñÿ, à íóëÿ íå áûëî !!! èñïðàâèòü |
jae loadConfig.fileend |
cmp byte[esi], 10 |
je loadConfig.ura |
cmp byte[esi], 0 |
je loadConfig.ura |
cmp byte[esi], 13 |
jne loadConfig.while |
.ura: |
mov byte[esi], 0 |
;ñ÷èòûâàåì ïóòü äëÿ ëåâîãî âåðõíåãî óãëà |
mov esi, apps.path1 |
mov edi, apps.param1 |
call readPath |
call gotoStartString ;íàõîäèì íà÷àëî ñëåäóþùåé ñòðîêè |
|
;cmp byte[esi-1], '-' |
;jne @f |
push esi ;åñëè ýòî áûë çíàê ìèíóñ, òî ìåíÿåì àäðåñ íà íîëü |
mov esi, dword[edi-4] |
cmp byte[esi], '-' |
jne @f |
cmp byte[esi+1], 0 |
jne @f |
mov dword[edi-4], 0 |
@@: |
pop esi |
;ñ÷èòûâàåì ïóòü äëÿ ëåâîãî íèæíåãî óãëà |
mov esi, apps.path2 |
mov edi, apps.param2 |
call readPath |
call gotoStartString |
|
cmp edi, newDataEnd ;newData.end ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà |
jb loadConfig.block |
.fileend: |
;ñ÷èòûâàåì ïóòü äëÿ ïðàâîãî âåðõíåãî óãëà |
mov esi, apps.path3 |
mov edi, apps.param3 |
call readPath |
call gotoStartString |
|
pop esi |
pop edi |
;ñ÷èòûâàåì ïóòü äëÿ ïðàâîãî íèæíåãî óãëà |
mov esi, apps.path4 |
mov edi, apps.param4 |
call readPath |
call gotoStartString |
|
jmp loadConfig.end |
;call checkAdr ;ïðîâåðèì ñòðîêè íà '-' è ïóñòîòó è âûñòàâèì áèòîâóþ ìàñêó |
call checkPathAdr |
|
.propusk: |
mov byte[esi], 0 |
jmp loadConfig.block |
pop edi esi |
|
;ïðîïóñêàåì ñòðîêó ñ èìåíåì êëàâèøè |
call gotoEndString |
call gotoStartString |
|
;ñ÷èòûâàåì ñêàíêîä àêòèâàöèîííîé êëàâèøè |
;call readKey |
;call gotoEndString |
push esi edi ecx |
mov esi, keystr |
mov edi, keystr |
call readPath |
;ïðåîáðàçóåì ñòðîêó â ÷èñëî |
mov esi, keystr |
call strToInteger |
mov byte[keyActivate], cl |
pop ecx edi esi |
call gotoStartString |
|
;ñ÷èòûâàåì ðàäèóñ |
push esi edi ecx |
mov esi, radstr |
mov edi, radstr |
call readPath |
;ïðåîáðàçóåì ñòðîêó â ÷èñëî |
mov esi, radstr |
call strToInteger |
;òåïåðü ecx - çíà÷åíèå ðàäèóñà |
;!!! äîáàâèòü ïðîâåðêó, ÷òîáû ÷èñëî íå áûëî áîëüøå îáëàñòè ýêðàíà |
;íàñ èíòåðåñóåò êâàäðàò ÷èñëà |
push eax edx |
mov eax, ecx ;dword[radius2] |
mul ecx |
mov dword[radius2], eax |
pop edx eax |
|
pop ecx edi esi |
|
;ñ÷èòûâàòü ðàçìåð ýëåìåíòîâ èíòåðôåéñà íàì íå íóæíî (ïîêà ÷òî ýòîò ïàðàìåòð òîëüêî äëÿ êîíôèãà) |
jmp .end |
.exit: |
pop edx ecx ebx eax |
mcall -1 ;çàêðûòü ýòó ïðîãðàììó |
.end: |
mov ecx, dword[cfgFileAdr] ;åñëè ôàéë áûë çàãðóæåí, òî |
cmp ecx, 0 |
je @f |
mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìÿòè |
@@: |
pop edx ecx ebx eax |
ret |
|
|
;readKey: |
;÷èòàåì êëàâèøó è âûõîäèì |
; cmp dword[eax], 'Ctrl' |
; jne .notCtrl |
; mov byte[keyActivate], 3 |
; jmp .end |
;.notCtrl: |
; cmp dword[eax], 'Shif' |
; jne .notShift |
; mov byte[keyActivate], 2 |
; jmp .end |
;.notShift: |
; cmp dword[eax], 'Spac' |
; jne .notSpace |
; mov byte[keyActivate], 32 |
; jmp .end |
;.notSpace: |
; cmp word[eax], 'Al' |
; jne .notAlt |
; mov byte[keyActivate], 1 |
; 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[keyActivate], bl |
; pop ebx |
|
; jmp .end |
;.default: |
; mcall -1 |
; ;mov byte[keyActivate], 2 |
;.end: |
; ret |
|
|
checkPathAdr: |
push eax ebx |
xor eax, eax |
|
mov ebx, apps.path1 |
cmp byte[ebx], '-' |
jne @f |
;cmp byte[ebx+1], 0 |
;jne @f |
mov byte[ebx], 0 |
@@: |
mov ebx, apps.path2 |
cmp byte[ebx], '-' |
jne @f |
;cmp byte[ebx+1], 0 |
;jne @f |
mov byte[ebx], 0 |
@@: |
mov ebx, apps.path3 |
cmp byte[ebx], '-' |
jne @f |
;cmp byte[ebx+1], 0 |
;jne @f |
mov byte[ebx], 0 |
@@: |
mov ebx, apps.path4 |
cmp byte[ebx], '-' |
jne @f |
;cmp byte[ebx+1], 0 |
;jne @f |
mov byte[ebx], 0 |
@@: |
pop ebx eax |
ret |
|
|
checkAdr: |
push eax ebx |
xor eax, eax |
|
mov ebx, apps.path1 |
cmp byte[ebx], '-' |
jne @f |
inc eax |
@@: |
mov ebx, apps.path2 |
cmp byte[ebx], '-' |
jne @f |
add eax, 2 |
@@: |
mov ebx, apps.path3 |
cmp byte[ebx], '-' |
jne @f |
add eax, 4 |
@@: |
mov ebx, apps.path4 |
cmp byte[ebx], '-' |
jne @f |
add eax, 8 |
@@: |
|
mov ebx, apps.param1 |
cmp byte[ebx], '-' |
jne @f |
add eax, 16 |
@@: |
mov ebx, apps.param2 |
cmp byte[ebx], '-' |
jne @f |
add eax, 32 |
@@: |
mov ebx, apps.param3 |
cmp byte[ebx], '-' |
jne @f |
add eax, 64 |
@@: |
mov ebx, apps.param4 |
cmp byte[ebx], '-' |
jne @f |
add eax, 128 |
@@: |
|
mov byte[apps.bits], al |
pop ebx eax |
ret |
|
|
|
;ïðåîáðàçîâàíèå ñòðîêè â öåëîå ÷èñëî |
strToInteger: ;âõîä: esi - óêàçàòåëü íà ñòðîêó ñ äåñÿòè÷íîé çàïèñüþ ÷èñëà, âûõîä: eñx - ÷èñëî |
push eax ebx edx edi |
xor eax, eax ;îáíóëÿåì eax |
xor ecx, ecx |
mov edi, esi |
.get_last_symbol: |
;÷èòàåì î÷åðåäíîé ñèìâîë |
mov al, byte[edi] |
|
;åñëè ýòî íîëü, òî ñòðîêà çàêîí÷èëàñü |
cmp al, 0 |
je @f |
|
;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
inc edi |
jmp .get_last_symbol |
@@: ;äîøëè äî ïîñëåäíåãî ñèìâîëà è êëàä¸ì àäðåñ íà íåãî â edi |
dec edi |
|
cmp edi, esi ;àäðåñ ïîñëåäíåãî ñèìâîëà äîëæåí áûòü äàëüøå àäðåñà ïåðâîãî ñèìâîëà |
jae @f |
jmp .error ;èíà÷å îøèáêà |
@@: |
;òåïåðü â edi ïîñëåäíèé ñèìâîë, à esi óêàçûâàåò íà íà÷àëî ñòðîêè (íà ïåðâé ñèìâîë ñòðîêè) |
mov cl, byte[edi] |
sub cl, 48 ;0x30 ;'0' |
dec edi ;ïåðåõîäèì íà ñëåä ñèìâîë îò êîíöà |
mov ebx, 10 ;ìíîæèòåëü ñòåïåíè |
.tranform_cicle: |
cmp edi, esi ;åñëè áîëüøå íåò ñèìâîëîâ ñòðîêå, òî ÷èñëî ïðåîáðàçîâàëè - âûõîäèì |
jb .end |
|
mov eax, 0 |
mov al, byte[edi] |
sub al, 48 ;'0' |
cmp al, 9 ;0x39 ;åñëè ÷èñëî áîëüøå 9, òî âèäèìî â ñòðîêå áûëî ÷òî-òî íå òàê |
ja .error |
cmp al, 0 ;0x30 ;åñëè ÷èñëî ìåíüøå 0, òî âèäèìî â ñòðîêå áûëî ÷òî-òî íå òàê |
jb .error |
mov edx, 0 |
mul ebx |
|
add ecx, eax |
|
dec edi |
mov edx, 0 |
mov eax, 10 |
mul ebx |
mov ebx, eax |
jmp .tranform_cicle |
.error: |
mov ecx, 0 |
.end: |
pop edi edx ebx eax |
ret |
|
|
;Âûíåñòè êîä íèæå â îòäåëüíûé îáùèé ìîäóëü |
selfName db '@HOTANGLES',0 |
selfNameSize = 10 ;äî 11 byte |
474,7 → 795,7 |
|
;MODE 3 |
init03: |
mov dword[radius2], 100; 10*10 |
;mov dword[radius2], 100; 10*10 |
mov dword[backAdr], mode03 |
call setHotKey |
mode03: |
496,6 → 817,9 |
cmp byte[state], LOCKd ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû |
je mouse03.updateCoord |
|
cmp byte[state], SUPERLOCKd ;åñëè äåéñòâèå áûëî âûïîëíåíî è ïîëó÷èëè áëîêèðîâêó, òî æä¸ì îòïóñêàíèÿ êëàâèøè àêòèâàöèè |
je @f |
|
call checkPointInCircle ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà |
jmp @f |
.updateCoord: |
589,7 → 913,7 |
mov ecx, 1 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
mov byte[state], SUPERLOCKd |
jmp activateCorner.end |
|
.leftup: |
597,7 → 921,7 |
mov ecx, 0 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
mov byte[state], SUPERLOCKd |
jmp activateCorner.end |
|
.right: ;ïðàâàÿ ñòîðîíà ýêðàíà |
610,7 → 934,7 |
mov ecx, 3 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
mov byte[state], SUPERLOCKd |
jmp activateCorner.end |
|
.rightup: |
618,7 → 942,7 |
mov ecx, 2 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
mov byte[state], SUPERLOCKd |
jmp activateCorner.end |
|
.end: |
631,10 → 955,6 |
keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà |
|
backAdr rd 1 ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè |
|
;slotMax dd 0 |
;selfPID dd 0 |
;buf db 1024 dup(0) |
slotMax rd 1 |
selfPID rd 1 |
buf rb 1024 |
644,14 → 964,23 |
.width rw 1 |
.height rw 1 |
|
state: rb 1 ;ñîñòîÿíèå: 0=unlock, 1=lock |
state: rb 1 ;ñîñòîÿíèå: 0=unlock, 1=lock, 2=superlock for mode 3 |
mode: rb 1 ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå |
|
newData: ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê |
.lu rd 1 |
.ld rd 1 |
.ru rd 1 |
.rd rd 1 |
newDataEnd: |
|
keystr: rb 4 ;ñòðîêà ñî çíà÷åíèåì ñêàíêîäà àêòèâàöèîííîé êëàâèøè |
radstr: rb 5 ;ñòðîêà ñî çíà÷åíèåì ðàäèóñà |
apps: |
.bits: rb 1 |
.path1: rb 512 |
.path2: rb 512 |
.path3: rb 512 |
.path4: rb 512 |
.param1: rb 512 |
.param2: rb 512 |
.param3: rb 512 |
.param4: rb 512 |
appsEnd: |
|
|
I_END: |