Rev 9771 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
9108 | Doczom | 1 | use32 |
2 | org 0 |
||
3 | |||
4 | db 'MENUET01' |
||
5 | dd 1 |
||
6 | dd START |
||
7 | dd I_END ; а §¬Ґа Їа®Ја ¬¬л |
||
8 | dd MEM ; Є®«ЁзҐбвў® Ї ¬пвЁ |
||
9 | dd STACKTOP |
||
9771 | Doczom | 10 | dd PATH |
9108 | Doczom | 11 | dd 0 |
12 | include '..\..\macros.inc' |
||
13 | include '..\..\KOSfuncs.inc' |
||
9199 | Doczom | 14 | |
9108 | Doczom | 15 | START: |
16 | ;;установка маска событий на получение переписовки и нажатия на кнопку |
||
17 | mcall SF_SET_EVENTS_MASK,0x05 |
||
18 | ;load driver |
||
19 | mcall SF_SYS_MISC, SSF_LOAD_DRIVER_PE, path_drv, 0 |
||
20 | mov dword[drv_struct.handl],eax |
||
21 | test eax,eax ;проверка загрузки |
||
9771 | Doczom | 22 | jz error_drv |
9760 | Doczom | 23 | main: |
24 | mcall SF_SYS_MISC, SSF_CONTROL_DRIVER, drv_struct |
||
9771 | Doczom | 25 | cmp byte[PATH], 0 |
26 | jz still |
||
9760 | Doczom | 27 | call add_file |
9108 | Doczom | 28 | still: ;void main() |
29 | call draw |
||
30 | ;;ожидание события в течении 2000мс |
||
31 | mcall SF_WAIT_EVENT_TIMEOUT,200 ;2 second |
||
32 | dec eax ; redraw request ? |
||
33 | je still |
||
34 | cmp eax,2 ;button |
||
35 | jz button |
||
36 | jmp still |
||
37 | |||
38 | button: |
||
39 | mcall SF_GET_BUTTON |
||
40 | |||
41 | cmp eax,1 |
||
42 | jz still |
||
43 | dec ah |
||
44 | je exit |
||
45 | ;; id button micro_info = 8 |
||
46 | cmp ah,7 ;// ah-1=7 |
||
47 | jnz still |
||
48 | xor byte[flag_micro_info],1 |
||
49 | jmp still |
||
9771 | Doczom | 50 | |
51 | align 4 |
||
9108 | Doczom | 52 | draw: |
53 | mcall SF_REDRAW, SSF_BEGIN_DRAW |
||
9771 | Doczom | 54 | mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors |
9108 | Doczom | 55 | |
56 | mov eax,SF_CREATE_WINDOW |
||
57 | mov ebx,0x00ff013f |
||
58 | mov ecx,0x001500cc |
||
59 | mov edx,0x14000000 |
||
60 | add edx,[sc.work] |
||
61 | mov edi,title |
||
62 | mcall |
||
63 | |||
64 | mcall SF_SYS_MISC, SSF_CONTROL_DRIVER, drv_struct |
||
65 | |||
9771 | Doczom | 66 | cmp byte[PATH], 0 |
67 | jz @f |
||
9760 | Doczom | 68 | dec dword[update_flag] |
9771 | Doczom | 69 | jnz @f |
9760 | Doczom | 70 | call add_new_item |
71 | mov dword[update_flag], 30 |
||
72 | @@: |
||
73 | |||
9108 | Doczom | 74 | cmp byte[flag_micro_info],1 |
75 | mov eax,SF_CHANGE_WINDOW |
||
76 | mov ebx,-1 |
||
77 | mov ecx,ebx;-1 |
||
78 | jz draw.micro |
||
79 | |||
80 | mov esi,0x000000cc |
||
81 | mov edx,0x0000013f |
||
82 | mcall |
||
83 | ;;создание кнопки переключения режима |
||
84 | mov eax,SF_DEFINE_BUTTON |
||
85 | mov ebx,0x01250010 |
||
86 | mov ecx,0x001d0015 |
||
87 | mov edx,0x00000008 |
||
88 | mov esi,[sc.work_button] |
||
89 | mcall |
||
90 | ;;вывод знака на кнопку |
||
91 | ;;так как функция writeText не должна изменять регистры |
||
92 | ;;присвоения в регистры eax и ecx происходят только 1 раз |
||
93 | ;; Далее, так как текст выводится почти всегда с одинаковым |
||
94 | ;; смещением вниз(равным 15) дынные(строки) имеют одинаковый |
||
95 | ;; размер , то используется инструкция add |
||
96 | mov eax,SF_DRAW_TEXT |
||
97 | mov ebx,0x01290020 |
||
98 | mov ecx,0x81000000 |
||
99 | add ecx,[sc.work_text] |
||
100 | mov edx,_up |
||
101 | mcall |
||
102 | |||
103 | ;вывод "Tctl:" |
||
104 | mov ebx,0x000a0020 |
||
105 | mov ecx,0x90000000 |
||
106 | add ecx,[sc.work_text] |
||
107 | mov edx,_Tctl |
||
108 | mcall |
||
109 | |||
110 | ;вывод "Tmax:" |
||
111 | add ebx,0x15 |
||
112 | add edx,7 |
||
113 | mcall |
||
114 | |||
115 | ;вывод "Tcrit:" |
||
116 | add ebx,0x2a |
||
117 | add edx,7 |
||
118 | mcall |
||
119 | |||
120 | ;вывод "Tccd1:" |
||
121 | add ebx,0x19 |
||
122 | add edx,7 |
||
123 | mcall |
||
124 | |||
125 | ;вывод "Tccd2:" |
||
126 | add ebx,0x15 |
||
127 | add edx,7 |
||
128 | mcall |
||
129 | |||
130 | ;вывод "Tccd3:" |
||
131 | add ebx,0x15 |
||
132 | add edx,7 |
||
133 | mcall |
||
134 | |||
135 | ;вывод "Tccd4:" |
||
136 | add ebx,0x15 |
||
137 | add edx,7 |
||
138 | mcall |
||
139 | |||
140 | ;вывод "Tccd5:" |
||
141 | mov ebx,0x00a50078 |
||
142 | add edx,7 |
||
143 | mcall |
||
144 | |||
145 | ;вывод "Tccd6:" |
||
146 | add ebx,0x15 |
||
147 | add edx,7 |
||
148 | mcall |
||
149 | |||
150 | ;вывод "Tccd7:" |
||
151 | add ebx,0x15 |
||
152 | add edx,7 |
||
153 | mcall |
||
154 | |||
155 | ;вывод "Tccd8:" |
||
156 | add ebx,0x15 |
||
157 | add edx,7 |
||
158 | mcall |
||
159 | |||
160 | ;вывод "Tdie:" |
||
161 | mov ebx,0x00a5005f |
||
162 | add edx,7 |
||
163 | mcall |
||
164 | |||
165 | ;вывод "Tcrit hyst:" |
||
166 | mov ebx,0x000a004a |
||
167 | add edx,7 |
||
168 | mcall |
||
169 | ;;;;;;input data driver;;;;;;;;; |
||
170 | mov eax,0x004a0020 |
||
9771 | Doczom | 171 | mov ebx, drv_data.Tctl ;вывод данных от драйвера |
9108 | Doczom | 172 | call write_data |
173 | |||
174 | add eax,0x15 |
||
9858 | Doczom | 175 | mov byte[write_data.defaunt_color], 1 |
9771 | Doczom | 176 | mov ebx, drv_data.Tmax |
9108 | Doczom | 177 | call write_data |
178 | |||
179 | add eax,0x2a |
||
9858 | Doczom | 180 | mov byte[write_data.defaunt_color], 1 |
9771 | Doczom | 181 | mov ebx, drv_data.Tcrit |
9108 | Doczom | 182 | call write_data |
183 | |||
184 | add eax,0x19 |
||
9771 | Doczom | 185 | mov ebx, drv_data.Tccd1 |
9108 | Doczom | 186 | call write_data |
187 | |||
188 | add eax,0x15 |
||
189 | add ebx,4 |
||
190 | call write_data |
||
191 | |||
192 | add eax,0x15 |
||
193 | add ebx,4 |
||
194 | call write_data |
||
195 | |||
196 | add eax,0x15 |
||
197 | add ebx,4 |
||
198 | call write_data |
||
199 | |||
200 | mov eax,0x00E50078 |
||
201 | add ebx,4 |
||
202 | call write_data |
||
203 | |||
204 | add eax,0x15 |
||
205 | add ebx,4 |
||
206 | call write_data |
||
207 | |||
208 | add eax,0x15 |
||
209 | add ebx,4 |
||
210 | call write_data |
||
211 | |||
212 | add eax,0x15 |
||
213 | add ebx,4 |
||
214 | call write_data |
||
215 | |||
216 | mov eax,0x00E5005f |
||
9771 | Doczom | 217 | mov ebx, drv_data.Tdie |
9858 | Doczom | 218 | mov byte[write_data.defaunt_color], 1 |
9108 | Doczom | 219 | call write_data |
220 | |||
221 | mov eax,0x007a004a |
||
9858 | Doczom | 222 | mov byte[write_data.defaunt_color], 1 |
9771 | Doczom | 223 | mov ebx, drv_data.Tcrit_hyst |
9108 | Doczom | 224 | call write_data |
225 | jmp @f |
||
226 | .micro: |
||
227 | mov esi,0x00000035 |
||
228 | mov edx,0x000000c0 |
||
229 | mcall |
||
230 | |||
231 | mov eax,SF_DEFINE_BUTTON |
||
232 | mov ebx,0x00a70010 |
||
233 | mov ecx,0x001d0015 |
||
234 | mov edx,eax;0x00000008 |
||
235 | mov esi,[sc.work_button] |
||
9120 | Doczom | 236 | mcall |
9108 | Doczom | 237 | |
238 | mov eax,SF_DRAW_TEXT;4 |
||
239 | mov ebx,0x000a0020 |
||
240 | mov ecx,0x90000000 |
||
241 | add ecx,[sc.work_text] |
||
242 | mov edx,_Tctl |
||
243 | mcall |
||
244 | |||
245 | add ebx,0x00a00000 |
||
246 | mov ecx,0x81000000 |
||
247 | add ecx,[sc.work_text] |
||
248 | mov edx,_down |
||
249 | mcall |
||
250 | |||
251 | mov eax,0x004a0020 |
||
9771 | Doczom | 252 | mov ebx, drv_data.Tctl |
9108 | Doczom | 253 | call write_data |
254 | @@: |
||
255 | mcall SF_REDRAW, SSF_END_DRAW |
||
256 | ret |
||
257 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
258 | ;; procedure write_data(eax, ebx); |
||
259 | ;; eax=x*65536+y |
||
9858 | Doczom | 260 | ;; ebx = pointer on value |
261 | ;; edx = 1 - set color, 0 - set defaunt color |
||
9108 | Doczom | 262 | ;; ecx register don`t save |
263 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
9771 | Doczom | 264 | align 4 |
9108 | Doczom | 265 | write_data: |
266 | push eax |
||
267 | push ebx |
||
268 | ;mov edx,[ebx] ;edx=value |
||
269 | mov esi,ebx |
||
270 | cmp dword[ebx],-1 ; flag ziro data |
||
271 | mov ecx,0x90000000 |
||
272 | mov ebx,eax |
||
273 | jnz @f |
||
274 | ;write n/a |
||
275 | add ecx,[sc.work_text] |
||
276 | mov eax,SF_DRAW_TEXT |
||
277 | mov edx,_NA |
||
278 | mcall |
||
279 | pop ebx |
||
280 | pop eax |
||
281 | ret |
||
282 | @@: |
||
9858 | Doczom | 283 | ;set color |
284 | push eax |
||
285 | push edx |
||
286 | push ecx |
||
287 | cmp byte[.defaunt_color], 1 |
||
288 | jnz @f |
||
289 | mov dword[.color_text], 0x000000cf ;blue |
||
290 | jmp .end_set_color |
||
291 | @@: |
||
292 | xor edx, edx |
||
293 | mov eax, [esi] |
||
294 | imul eax, 10 |
||
295 | xor edx, edx |
||
296 | div dword[drv_data.Tcrit] |
||
297 | cmp eax, 9 |
||
298 | jb @f |
||
299 | mov dword[.color_text],0x00d50000 ; red |
||
300 | jmp .end_set_color |
||
301 | @@: |
||
302 | cmp eax, 7 |
||
303 | jb @f |
||
304 | mov dword[.color_text],0x00f07000 ; orange |
||
305 | jmp .end_set_color |
||
306 | @@: |
||
307 | mov dword[.color_text],0x0000d000 ; green |
||
308 | .end_set_color: |
||
309 | pop ecx |
||
310 | pop edx |
||
311 | pop eax |
||
9108 | Doczom | 312 | ;write_value |
313 | ; value / 1000 =value_in_1 |
||
314 | ;input value_in_1,koord_start |
||
315 | ; if value >=100 then dot_kord=4 ; =0x20 |
||
316 | ; if value >10 then dot_kord=3; =0x18 |
||
317 | ; dot_kord=2 |
||
318 | ;input ".", koord_start+dot_koord*size_w(char) |
||
319 | ;value-value_in_1 = value_in_2 |
||
320 | ;input value_in_2, koord_start+dot_kord+1*size_w(char=8) |
||
321 | push eax |
||
322 | mov eax,[esi] |
||
323 | xor edx,edx |
||
324 | mov ebx,1000 |
||
325 | div ebx |
||
326 | cmp eax,100 |
||
327 | jae .dot_4 |
||
328 | cmp eax,10 |
||
329 | jae .dot_3 ; ----| |
||
330 | mov edi,0x0c;0x10; | |
||
331 | jmp .write ; | |
||
332 | .dot_4: ; | |
||
333 | mov edi,0x1c;0x20; | |
||
334 | jmp .write ; | |
||
335 | .dot_3: ; <-| |
||
336 | mov edi,0x14;0x18 |
||
337 | .write: |
||
338 | mov ecx,edx |
||
339 | pop edx |
||
340 | push ecx |
||
341 | |||
342 | mov ecx,eax |
||
343 | mov ebx,0x80030000 |
||
344 | mov eax,SF_DRAW_NUMBER |
||
345 | mov esi,0x10000000 |
||
9858 | Doczom | 346 | add esi,[.color_text] |
9108 | Doczom | 347 | mcall |
348 | shl edi,16 |
||
349 | mov eax,SF_DRAW_TEXT |
||
350 | add edx,edi |
||
351 | mov ebx,edx |
||
352 | |||
353 | mov ecx,0x90000000 |
||
9858 | Doczom | 354 | add ecx,[.color_text] |
9108 | Doczom | 355 | mov edx,_dot |
356 | mcall |
||
357 | mov eax,SF_DRAW_NUMBER |
||
358 | mov edx,ebx |
||
359 | mov esi,0x10000000 |
||
9858 | Doczom | 360 | add esi,[.color_text] |
9108 | Doczom | 361 | mov ebx,0x00030000 |
362 | |||
363 | add edx,0x80000 |
||
364 | pop ecx |
||
365 | mcall |
||
366 | mov eax,SF_DRAW_TEXT |
||
367 | mov ebx,edx |
||
368 | mov ecx,0x80000000 |
||
9858 | Doczom | 369 | add ecx,[.color_text] |
9108 | Doczom | 370 | add ebx,0x180000 |
371 | mov edx,_t |
||
372 | mcall |
||
373 | |||
374 | mov ecx,0x90000000 |
||
9858 | Doczom | 375 | add ecx,[.color_text] |
9108 | Doczom | 376 | add ebx,0x60000 |
377 | mov edx,_C |
||
378 | mcall |
||
379 | pop ebx |
||
380 | pop eax |
||
9858 | Doczom | 381 | mov byte[.defaunt_color], 0 |
9108 | Doczom | 382 | ret |
9858 | Doczom | 383 | .color_text: rd 1 ; color input temp |
384 | .defaunt_color: rb 1 ; flag set color |
||
385 | ;; end proc |
||
9108 | Doczom | 386 | |
387 | error_drv: |
||
9199 | Doczom | 388 | mcall SF_FILE,run_notify |
9108 | Doczom | 389 | exit: |
390 | mcall SF_TERMINATE_PROCESS |
||
9760 | Doczom | 391 | |
9771 | Doczom | 392 | align 4 |
9760 | Doczom | 393 | add_file: |
394 | mcall SF_FILE, graph_temp |
||
395 | mov dword[graph_temp], 3 |
||
9771 | Doczom | 396 | mov dword[graph_temp.size], 10 |
9760 | Doczom | 397 | mov dword[graph_temp.str], graph_start.new_data |
398 | mov eax,[drv_data.Tmax] |
||
399 | mov dword[graph_temp.index], 9 |
||
400 | mov ebx, graph_start.new_data |
||
401 | call int_to_str |
||
402 | mcall SF_FILE, graph_temp |
||
403 | |||
9771 | Doczom | 404 | mov dword[graph_temp.index], 19 |
405 | mov dword[graph_temp.size], 20 |
||
9760 | Doczom | 406 | ret |
9771 | Doczom | 407 | align 4 |
9760 | Doczom | 408 | index_item: |
409 | dd 1 |
||
410 | add_new_item: |
||
411 | mov eax,[index_item] |
||
412 | imul eax,1000 |
||
413 | mov ebx, graph_start.new_data |
||
414 | call int_to_str |
||
9771 | Doczom | 415 | mcall SF_FILE, graph_koord_x2 ;save x2=index_item |
9760 | Doczom | 416 | inc dword[index_item] |
9771 | Doczom | 417 | |
9760 | Doczom | 418 | mov eax,[drv_data.Tctl] |
9771 | Doczom | 419 | mov ebx, graph_start.new_data_2 |
9760 | Doczom | 420 | call int_to_str |
421 | mcall SF_FILE, graph_temp |
||
9771 | Doczom | 422 | add dword[graph_temp.index], 20 |
9760 | Doczom | 423 | ret |
424 | |||
425 | ;eax = int value / 1000 |
||
426 | ;ebx = *str |
||
427 | ; из за конкретики данного прилажения(а именно измерение температуры проца), сомниваюсь |
||
428 | ; что потребуется больше 3 цифр на значение(ххх.ххх) так что будет костыль |
||
9771 | Doczom | 429 | align 4 |
9760 | Doczom | 430 | int_to_str: |
431 | push ecx edx esi |
||
432 | mov ecx, '0000' |
||
433 | mov [ebx], ecx |
||
434 | mov [ebx+5], ecx |
||
435 | |||
436 | xor edx, edx |
||
437 | mov esi, 1000 |
||
438 | div esi |
||
439 | push edx |
||
440 | mov esi, 10 |
||
441 | push ebx |
||
442 | add ebx, 3 |
||
9771 | Doczom | 443 | and eax, 0x3ff ; 1023 |
9760 | Doczom | 444 | .loop: |
445 | test eax, eax |
||
446 | jz @f |
||
447 | xor edx, edx |
||
448 | div esi |
||
449 | add edx, '0' |
||
450 | mov byte[ebx], dl |
||
451 | dec ebx |
||
452 | jmp .loop |
||
453 | @@: |
||
454 | pop ebx |
||
455 | add ebx, 8;4 |
||
456 | pop edx |
||
457 | test edx, edx |
||
458 | jz @f |
||
459 | mov eax, edx |
||
460 | imul eax, 10 |
||
461 | xor edx, edx |
||
462 | push edx |
||
463 | push ebx |
||
464 | jmp .loop |
||
465 | @@: |
||
466 | pop esi edx ecx |
||
467 | ret |
||
9108 | Doczom | 468 | ;Data_program; |
9116 | Doczom | 469 | title db 'AMDtemp',0 |
9120 | Doczom | 470 | path_drv db '/kolibrios/drivers/sensors/k10temp.sys',0 |
9199 | Doczom | 471 | Error_text db '"Error load driver\nk10temp.sys was not found or is faulty " -tdE ',0 |
9108 | Doczom | 472 | _NA db 'N/A',0 |
473 | _dot db '.',0 |
||
474 | _t db 0x1d,0x00 |
||
475 | _C db 'C',0x00 |
||
476 | _down db 0x1f,0x00 |
||
477 | _up db 0x1e,0x00 |
||
478 | |||
479 | |||
480 | _Tctl db 'Tctl: ',0 |
||
481 | _Tmax db 'Tmax: ',0 |
||
482 | _Tcrit db 'Tcrit:',0 |
||
483 | _Tccd1 db 'Tccd1:',0 |
||
484 | _Tccd2 db 'Tccd2:',0 |
||
485 | _Tccd3 db 'Tccd3:',0 |
||
486 | _Tccd4 db 'Tccd4:',0 |
||
487 | _Tccd5 db 'Tccd5:',0 |
||
488 | _Tccd6 db 'Tccd6:',0 |
||
489 | _Tccd7 db 'Tccd7:',0 |
||
490 | _Tccd8 db 'Tccd8:',0 |
||
491 | _Tdie db 'Tdie: ',0 |
||
492 | _Tcrit_hyst db 'Tcrit hyst:',0 |
||
493 | |||
494 | ;;flag mode input data |
||
495 | flag_micro_info db 1 |
||
496 | drv_data: |
||
497 | .Tctl dd -1 |
||
498 | .Tdie dd -1 |
||
499 | .Tccd1 dd -1 |
||
500 | .Tccd2 dd -1 |
||
501 | .Tccd3 dd -1 |
||
502 | .Tccd4 dd -1 |
||
503 | .Tccd5 dd -1 |
||
504 | .Tccd6 dd -1 |
||
505 | .Tccd7 dd -1 |
||
506 | .Tccd8 dd -1 |
||
507 | |||
508 | .Tmax dd -1 |
||
509 | .Tcrit dd -1 |
||
510 | .Tcrit_hyst dd -1 |
||
9120 | Doczom | 511 | .sizeof = $ - drv_data ; |
9108 | Doczom | 512 | |
9771 | Doczom | 513 | align 4 |
9108 | Doczom | 514 | drv_struct: |
9199 | Doczom | 515 | .handl dd 0 |
516 | dd 0 |
||
517 | dd 0 |
||
518 | dd 0 |
||
519 | dd drv_data |
||
520 | dd drv_data.sizeof;52 ; 13*4 |
||
9771 | Doczom | 521 | align 4 |
9199 | Doczom | 522 | run_notify: |
523 | dd 7 |
||
524 | dd 0 |
||
525 | dd Error_text |
||
526 | dd 0 |
||
527 | dd 0 |
||
9760 | Doczom | 528 | db '/sys/@notify',0 ,0,0,0 ;выравнивание |
9199 | Doczom | 529 | |
9771 | Doczom | 530 | align 4 |
9760 | Doczom | 531 | update_flag: dd 30 ;1 minut |
9771 | Doczom | 532 | graph_start: db '0 0000 0 ' ; 9 byte |
533 | .new_data: db '0000.0000 ' ; 10-19 byte 10 byte |
||
534 | .new_data_2: db '0000.0000 ' ; 20-29 byte 10 byte |
||
535 | |||
536 | align 4 |
||
9760 | Doczom | 537 | graph_temp: |
538 | dd 2 |
||
539 | .index: dd 0 |
||
540 | dd 0 |
||
9771 | Doczom | 541 | .size: dd 19 ;size 4 first value for Graph |
9760 | Doczom | 542 | .str: dd graph_start ; заменить |
9771 | Doczom | 543 | db 0 |
544 | dd PATH |
||
545 | align 4 |
||
546 | graph_koord_x2: |
||
547 | dd 3 |
||
548 | dd 2 ;index for rewrite 2 value |
||
549 | dd 0 |
||
550 | dd 4 |
||
551 | dd graph_start.new_data ; заменить |
||
552 | db 0 |
||
553 | dd PATH |
||
554 | align 4 |
||
555 | PATH: |
||
556 | rb 512 ; buffer for command line. string for save log. |
||
9108 | Doczom | 557 | sc system_colors |
558 | I_END: |
||
559 | rd 256 |
||
560 | STACKTOP: |
||
561 | MEM:-| |