@HOTANGLES: Reducing the size and correct processing of the minus sign (in cfg)

git-svn-id: svn://kolibrios.org@7416 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
theonlymirage 2018-09-25 02:31:37 +00:00
parent f1c476beb9
commit 741a437da5
2 changed files with 31 additions and 25 deletions

View File

@ -2,7 +2,7 @@
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Compile with FASM ; Compile with FASM
; Version 0.1: Sep 18, 2018 ; Version 0.3.3: Sep 25, 2018
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
; All rights reserved. ; All rights reserved.
@ -184,15 +184,17 @@ run_command:
;ïàðàìåòðû ;ïàðàìåòðû
;mov dword[struct.adr], ;mov dword[struct.adr],
;ýòîò êîä çàìåíèòü - åñëè àäðåñ 0, òî íè÷åãî íå äåëàòü ;если адрес 0, то ничего не делать
cmp dword[struct70.path_adr], 0 cmp dword[struct70.path_adr], 0
jne .next jne .next
mov eax, testData.ld ; ;mov eax, testData.ld
mov dword[struct70.path_adr], eax ;mov dword[struct70.path_adr], eax
jmp @f
.next: .next:
;êîíåö êîäà äëÿ çàìåíû ;êîíåö êîäà äëÿ çàìåíû
mcall 70, struct70 mcall 70, struct70
@@:
mov byte[state], LOCKd mov byte[state], LOCKd
pop ecx pop ecx
@ -207,16 +209,17 @@ struct70: ;
.param_adr dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè .param_adr dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè
.other dd 0, 0 .other dd 0, 0
.path db 0 ; "/rd/1/TINYPAD",0 ; ïóòü .path db 0 ; "/rd/1/TINYPAD",0 ; ïóòü
.path_adr dd 0 ;testData.lu ;0 .path_adr dd 0 ;testData.lu
state: db 0 ; 0=unlock, 1=lock state: db 0 ; 0=unlock, 1=lock
mode: db 0 ;режим работы (для будущего расширения функционала)
testData: ;testData:
.lu db '/rd/1/SHELL', 0 ; .lu db '/rd/1/SHELL', 0
.ld db '/rd/1/RUN', 0 ; .ld db '/rd/1/RUN', 0
.ru db "/rd/1/TINYPAD", 0 ; .ru db "/rd/1/TINYPAD", 0
.rd db '/rd/1/File Managers/EOLITE', 0 ; .rd db '/rd/1/File Managers/EOLITE', 0
newData: ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê newData: ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê
.lu dd 0 .lu dd 0
@ -226,13 +229,10 @@ newData: ;
newDataEnd: newDataEnd:
;èìÿ êîíôèãóðàöèîííîãî ôàéëà ;èìÿ êîíôèãóðàöèîííîãî ôàéëà
fileName: db 'SETTINGS/HOTANGLES.CFG', 0 ;'ha.cfg', 0 fileName: db 'SETTINGS/HOTANGLES.CFG', 0
loadConfig: loadConfig:
push eax push eax ebx ecx edx
push ebx
push ecx
push edx
mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ
cmp eax, 0 cmp eax, 0
je loadConfig.exit ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ je loadConfig.exit ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
@ -258,7 +258,7 @@ loadConfig:
cmp byte[esi], 13 cmp byte[esi], 13
je loadConfig.propusk je loadConfig.propusk
; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - çàïîìèíàåì åãî ; символ отличен от переноса строки и возврата каретки - если это на знак минус, то запоминаем его
mov dword[edi], esi mov dword[edi], esi
add edi, 4 add edi, 4
@ -276,6 +276,18 @@ loadConfig:
.ura: .ura:
mov byte[esi], 0 mov byte[esi], 0
;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
cmp edi, newDataEnd ;newData.end ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà cmp edi, newDataEnd ;newData.end ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà
jb loadConfig.block jb loadConfig.block
.fileend: .fileend:
@ -289,16 +301,10 @@ loadConfig:
mov byte[esi], 0 mov byte[esi], 0
jmp loadConfig.block jmp loadConfig.block
.exit: .exit:
pop edx pop edx ecx ebx eax
pop ecx
pop ebx
pop eax
mcall -1 ;çàêðûòü ýòó ïðîãðàììó mcall -1 ;çàêðûòü ýòó ïðîãðàììó
.end: .end:
pop edx pop edx ecx ebx eax
pop ecx
pop ebx
pop eax
ret ret

View File

@ -34,7 +34,7 @@ Hot Angles
[+] отсутствие русского языка; [+] отсутствие русского языка;
[-] используется маленький шрифт текста; [-] используется маленький шрифт текста;
[-] нет возможности запуска приложения с параметрами; [-] нет возможности запуска приложения с параметрами;
[-] знак минус не влияет на попытку запуска в конкретном углу; [+] знак минус не влияет на попытку запуска в конкретном углу;
[+] пустое поле в конфигураторе и пустая строка в конфигурационном файле неверно обрабатываются; [+] пустое поле в конфигураторе и пустая строка в конфигурационном файле неверно обрабатываются;
[-] повреждение файла конфигурации после многократного вкл./выкл. опции Hot Angles; [-] повреждение файла конфигурации после многократного вкл./выкл. опции Hot Angles;
[-] режим явной команды клавишей активации: зажимаем горячую клавишу (например, shift), наводим курсор в угол - происходит реакция; [-] режим явной команды клавишей активации: зажимаем горячую клавишу (например, shift), наводим курсор в угол - происходит реакция;