Subversion Repositories Kolibri OS

Rev

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

Rev 7389 Rev 7416
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.1: Sep 18, 2018
5
; Version 0.3.3: Sep 25, 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 182... Line 182...
182
.end_set_path:
182
.end_set_path:
Line 183... Line 183...
183
 
183
 
184
   ;ïàðàìåòðû
184
   ;ïàðàìåòðû
Line 185... Line 185...
185
   ;mov dword[struct.adr],
185
   ;mov dword[struct.adr],
186
 
186
 
187
;ýòîò êîä çàìåíèòü - åñëè àäðåñ 0, òî íè÷åãî íå äåëàòü
187
;åñëè àäðåñ 0, òî íè÷åãî íå äåëàòü
188
   cmp dword[struct70.path_adr], 0
188
   cmp dword[struct70.path_adr], 0
189
   jne .next
189
   jne .next
-
 
190
   ;mov eax, testData.ld
190
   mov eax, testData.ld    ;
191
   ;mov dword[struct70.path_adr], eax
191
   mov dword[struct70.path_adr], eax
192
   jmp @f
Line 192... Line 193...
192
.next:
193
.next:
-
 
194
;êîíåö êîäà äëÿ çàìåíû
193
;êîíåö êîäà äëÿ çàìåíû
195
 
Line 194... Line 196...
194
 
196
   mcall 70, struct70
195
   mcall 70, struct70
197
@@:
196
   mov byte[state], LOCKd
198
   mov byte[state], LOCKd
Line 205... Line 207...
205
  .func       dd 7 ; íîìåð ïîäôóíêöèè
207
  .func       dd 7 ; íîìåð ïîäôóíêöèè
206
  .mask       dd 0
208
  .mask       dd 0
207
  .param_adr  dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè
209
  .param_adr  dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè
208
  .other      dd 0, 0
210
  .other      dd 0, 0
209
  .path       db 0 ; "/rd/1/TINYPAD",0 ; ïóòü
211
  .path       db 0 ; "/rd/1/TINYPAD",0 ; ïóòü
210
  .path_adr   dd 0 ;testData.lu ;0
212
  .path_adr   dd 0 ;testData.lu
Line 211... Line 213...
211
 
213
 
-
 
214
 
Line 212... Line 215...
212
 
215
state: db 0 ; 0=unlock, 1=lock
213
state: db 0 ; 0=unlock, 1=lock
216
mode: db 0  ;ðåæèì ðàáîòû (äëÿ áóäóùåãî ðàñøèðåíèÿ ôóíêöèîíàëà)
214
 
217
 
215
testData:
218
;testData:
216
  .lu db '/rd/1/SHELL', 0
219
;  .lu db '/rd/1/SHELL', 0
Line 217... Line 220...
217
  .ld db '/rd/1/RUN', 0
220
;  .ld db '/rd/1/RUN', 0
218
  .ru db "/rd/1/TINYPAD", 0
221
;  .ru db "/rd/1/TINYPAD", 0
219
  .rd db '/rd/1/File Managers/EOLITE', 0
222
;  .rd db '/rd/1/File Managers/EOLITE', 0
220
 
223
 
221
newData:  ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê
224
newData:  ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê
222
  .lu dd 0
225
  .lu dd 0
Line 223... Line 226...
223
  .ld dd 0
226
  .ld dd 0
224
  .ru dd 0
227
  .ru dd 0
Line 225... Line 228...
225
  .rd dd 0
228
  .rd dd 0
226
newDataEnd:
-
 
227
 
-
 
228
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
-
 
229
fileName: db 'SETTINGS/HOTANGLES.CFG', 0  ;'ha.cfg', 0
229
newDataEnd:
230
 
230
 
231
loadConfig:
231
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
232
   push eax
232
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
233
   push ebx
233
 
234
   push ecx
234
loadConfig:
Line 256... Line 256...
256
   cmp byte[esi], 10         ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû
256
   cmp byte[esi], 10         ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû
257
   je loadConfig.propusk     ;äî ïåðâîãî îòëè÷íîãî îò íèõ
257
   je loadConfig.propusk     ;äî ïåðâîãî îòëè÷íîãî îò íèõ
258
   cmp byte[esi], 13
258
   cmp byte[esi], 13
259
   je loadConfig.propusk
259
   je loadConfig.propusk
Line 260... Line 260...
260
 
260
 
261
   ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - çàïîìèíàåì åãî
261
   ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - åñëè ýòî íà çíàê ìèíóñ, òî çàïîìèíàåì åãî
262
   mov dword[edi], esi
262
   mov dword[edi], esi
Line 263... Line 263...
263
   add edi, 4
263
   add edi, 4
264
 
264
 
Line 274... Line 274...
274
   cmp byte[esi], 13
274
   cmp byte[esi], 13
275
   jne loadConfig.while
275
   jne loadConfig.while
276
.ura:
276
.ura:
277
   mov byte[esi], 0
277
   mov byte[esi], 0
Line -... Line 278...
-
 
278
 
-
 
279
   ;cmp byte[esi-1], '-'
-
 
280
   ;jne @f
-
 
281
   push esi  ;åñëè ýòî áûë çíàê ìèíóñ, òî ìåíÿåì àäðåñ íà íîëü
-
 
282
   mov esi, dword[edi-4]
-
 
283
   cmp byte[esi], '-'
-
 
284
   jne @f
-
 
285
   cmp byte[esi+1], 0
-
 
286
   jne @f
-
 
287
   mov dword[edi-4], 0
-
 
288
@@:
-
 
289
   pop esi
278
 
290
 
279
   cmp edi, newDataEnd ;newData.end      ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà
291
   cmp edi, newDataEnd ;newData.end      ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà
280
   jb loadConfig.block
292
   jb loadConfig.block
Line 281... Line 293...
281
.fileend:
293
.fileend:
Line 287... Line 299...
287
 
299
 
288
.propusk:
300
.propusk:
289
   mov byte[esi], 0
301
   mov byte[esi], 0
290
   jmp loadConfig.block
302
   jmp loadConfig.block
291
.exit:
-
 
292
   pop edx
-
 
293
   pop ecx
-
 
294
   pop ebx
303
.exit:
295
   pop eax
304
   pop edx ecx ebx eax
296
   mcall -1 ;çàêðûòü ýòó ïðîãðàììó
305
   mcall -1 ;çàêðûòü ýòó ïðîãðàììó
297
.end:
-
 
298
   pop edx
-
 
299
   pop ecx
-
 
300
   pop ebx
306
.end:
301
   pop eax
307
   pop edx ecx ebx eax